From afd8a68b885a9652863fddac229dd63759369914 Mon Sep 17 00:00:00 2001 From: Sebastian Florek Date: Mon, 10 Apr 2023 21:35:18 +0200 Subject: [PATCH] feat: Add embedded UI with app installer wizard (#371) * Initial wails setup * Update makefile * Test goreleaser build workflow * Update action * Update action * Update action * Update action * Update action * Update action * Update action * Update action * Update action * Update action * Update action * Drop the embedded UI from linux/arm64 and Docker images * Simplify goreleaser builds * Update GitHub CD action * Manually dispatch CD workflow for now * Remove unused files * Add basic client proxy to the UI * Add generic client for the backend API access * Multiple changes to make the installer work * Simplify root path * Handle wizard install logic * Reorder install logic * Update next steps and expose copy to clipboard logic * Update bindings and change ui command to install * Make build-cli-ui run build-web target * Remove unused button * Linting * Update github action * Fix wails dev config * Install app recipe in the API * Update make targets, next steps view and bump design system * Bump DS and update imports * Fix some todos * Update UI command usage description * Update GH action and some comments * Update bindings * Center text * Update makefile * Run gen mock client * Update context unit test * Update create cluster action * Update create cluster action * Update create cluster action * Update create cluster action * Set up CGO_LDFLAGS conditionally when building on darwin * Simplify build.mk --------- Co-authored-by: michaeljguarino --- .github/workflows/e2e.yaml | 2 +- .github/workflows/goreleaser-cd.yml | 230 + .github/workflows/goreleaser-ci.yml | 262 - .gitignore | 8 + .goreleaser.yaml | 60 +- Dockerfile | 20 +- Makefile | 125 +- cmd/plural/api.go | 2 +- cmd/plural/api_test.go | 2 +- cmd/plural/app.go | 2 +- cmd/plural/bundle.go | 2 +- cmd/plural/bundle_test.go | 2 +- cmd/plural/clusters.go | 2 +- cmd/plural/config.go | 2 +- cmd/plural/config_test.go | 2 +- cmd/plural/constants.go | 2 +- cmd/plural/crypto.go | 2 +- cmd/plural/crypto_test.go | 2 +- cmd/plural/dependencies.go | 2 +- cmd/plural/dependencies_test.go | 2 +- cmd/plural/deploy.go | 2 +- cmd/plural/deploy_test.go | 2 +- cmd/plural/errors.go | 2 +- cmd/plural/git.go | 2 +- cmd/plural/help.go | 2 +- cmd/plural/init.go | 2 +- cmd/plural/link.go | 2 +- cmd/plural/logs.go | 2 +- cmd/plural/logs_test.go | 2 +- cmd/plural/ops.go | 2 +- cmd/plural/ops_test.go | 2 +- cmd/plural/output.go | 2 +- cmd/plural/packages.go | 2 +- cmd/plural/plural.go | 27 +- cmd/plural/proxy.go | 2 +- cmd/plural/proxy_test.go | 2 +- cmd/plural/push.go | 2 +- cmd/plural/repos.go | 2 +- cmd/plural/repos_test.go | 2 +- cmd/plural/scaffold.go | 2 +- cmd/plural/shell.go | 2 +- cmd/plural/template.go | 2 +- cmd/plural/ui.go | 22 + cmd/plural/ui_stub.go | 11 + cmd/plural/utils.go | 2 +- cmd/plural/utils_test.go | 2 +- cmd/plural/validation.go | 9 +- cmd/plural/version.go | 21 +- cmd/plural/vpn.go | 2 +- cmd/plural/vpn_test.go | 2 +- cmd/plural/workspace.go | 2 +- cmd/plural/workspace_test.go | 2 +- dockerfiles/Dockerfile.cloud | 12 +- go.mod | 21 +- go.sum | 48 +- hack/include/build.mk | 9 + hack/include/help.mk | 2 + hack/include/tools.mk | 33 + main.go | 27 + pkg/api/client.go | 2 + pkg/api/recipes.go | 86 + pkg/bundle/installer.go | 5 +- pkg/bundle/oidc.go | 3 +- pkg/manifest/context.go | 34 +- pkg/manifest/types.go | 32 +- pkg/server/context_test.go | 9 +- pkg/test/mocks/Client.go | 26 + pkg/ui/bindings.go | 16 + pkg/ui/client.go | 188 + pkg/ui/ui.go | 41 + pkg/ui/web/.eslintrc | 3 + pkg/ui/web/.gitignore | 9 + pkg/ui/web/.graphqlconfig | 15 + pkg/ui/web/.yarn/releases/yarn-3.4.1.cjs | 873 ++ pkg/ui/web/.yarnrc.yml | 2 + pkg/ui/web/codegen.yml | 20 + pkg/ui/web/index.html | 17 + pkg/ui/web/package-lock.json | 1483 ++ pkg/ui/web/package.json | 60 + pkg/ui/web/package.json.md5 | 1 + pkg/ui/web/public/favicon.ico | Bin 0 -> 15406 bytes .../fonts/ABCMonumentGroteskMono-Heavy.woff | Bin 0 -> 52128 bytes .../fonts/ABCMonumentGroteskMono-Medium.woff | Bin 0 -> 50460 bytes .../fonts/ABCMonumentGroteskMono-Regular.woff | Bin 0 -> 48756 bytes .../ABCMonumentGroteskSemi-Mono-Heavy.woff | Bin 0 -> 75136 bytes .../ABCMonumentGroteskSemi-Mono-Medium.woff | Bin 0 -> 65432 bytes .../ABCMonumentGroteskSemi-Mono-Regular.woff | Bin 0 -> 58548 bytes .../public/fonts/monument-bold-italic.woff | Bin 0 -> 68804 bytes pkg/ui/web/public/fonts/monument-bold.woff | Bin 0 -> 66320 bytes pkg/ui/web/public/fonts/monument-bold.woff2 | Bin 0 -> 50112 bytes .../public/fonts/monument-medium-italic.woff | Bin 0 -> 71344 bytes pkg/ui/web/public/fonts/monument-medium.woff | Bin 0 -> 69176 bytes .../public/fonts/monument-regular-italic.woff | Bin 0 -> 67540 bytes pkg/ui/web/public/fonts/monument-regular.otf | Bin 0 -> 95076 bytes pkg/ui/web/public/fonts/monument-regular.woff | Bin 0 -> 48756 bytes .../public/logos/plural-full-logo-black.svg | 1 + .../public/logos/plural-full-logo-white.svg | 1 + .../logos/plural-logomark-only-black.svg | 1 + .../logos/plural-logomark-only-white.svg | 1 + .../logos/plural-logotype-only-black.svg | 1 + .../logos/plural-logotype-only-white.svg | 1 + pkg/ui/web/schema/schema.graphql | 3144 +++++ pkg/ui/web/src/Plural.tsx | 46 + pkg/ui/web/src/components/loader/Loader.tsx | 20 + pkg/ui/web/src/context/wails.ts | 17 + pkg/ui/web/src/graphql/account.graphql | 64 + pkg/ui/web/src/graphql/artifacts.graphql | 32 + pkg/ui/web/src/graphql/charts.graphql | 91 + pkg/ui/web/src/graphql/dns.graphql | 28 + pkg/ui/web/src/graphql/docker.graphql | 44 + pkg/ui/web/src/graphql/domains.graphql | 5 + pkg/ui/web/src/graphql/generated/graphql.ts | 9949 ++++++++++++++ pkg/ui/web/src/graphql/groups.graphql | 55 + pkg/ui/web/src/graphql/incidents.graphql | 82 + pkg/ui/web/src/graphql/installations.graphql | 38 + pkg/ui/web/src/graphql/integrations.graphql | 27 + pkg/ui/web/src/graphql/invite.graphql | 28 + pkg/ui/web/src/graphql/metrics.graphql | 5 + pkg/ui/web/src/graphql/misc.graphql | 4 + pkg/ui/web/src/graphql/oauth.graphql | 24 + pkg/ui/web/src/graphql/payments.graphql | 142 + pkg/ui/web/src/graphql/recipes.graphql | 134 + pkg/ui/web/src/graphql/repos.graphql | 160 + pkg/ui/web/src/graphql/scaffolds.graphql | 10 + pkg/ui/web/src/graphql/shells.graphql | 31 + pkg/ui/web/src/graphql/terraforms.graphql | 47 + pkg/ui/web/src/graphql/tests.graphql | 40 + pkg/ui/web/src/graphql/upgrades.graphql | 33 + pkg/ui/web/src/graphql/users.graphql | 278 + pkg/ui/web/src/graphql/versions.graphql | 23 + pkg/ui/web/src/grommet/fileInputTheme.tsx | 56 + pkg/ui/web/src/hooks/useWails.ts | 89 + pkg/ui/web/src/layout/Header.tsx | 45 + pkg/ui/web/src/main.tsx | 9 + .../web/src/routes/installer/Application.tsx | 138 + .../src/routes/installer/Configuration.tsx | 111 + .../installer/ConfigurationFileInput.tsx | 51 + .../routes/installer/ConfigurationItem.tsx | 183 + pkg/ui/web/src/routes/installer/Installer.tsx | 113 + pkg/ui/web/src/routes/installer/helpers.tsx | 121 + pkg/ui/web/src/routes/installer/route.tsx | 12 + pkg/ui/web/src/routes/nextsteps/NextSteps.tsx | 87 + pkg/ui/web/src/routes/nextsteps/route.tsx | 14 + pkg/ui/web/src/routes/root.tsx | 51 + pkg/ui/web/src/routes/router.tsx | 15 + pkg/ui/web/src/routes/routes.ts | 6 + pkg/ui/web/src/services/apollo.ts | 46 + pkg/ui/web/src/services/wails.ts | 59 + pkg/ui/web/src/styled/fonts.ts | 87 + pkg/ui/web/src/styled/global.ts | 22 + pkg/ui/web/src/styled/scrollbar.ts | 5 + pkg/ui/web/src/styled/theme.ts | 11 + pkg/ui/web/src/types/client.d.ts | 31 + pkg/ui/web/src/types/styled.d.ts | 13 + pkg/ui/web/src/vite-env.d.ts | 1 + pkg/ui/web/style.css | 3 + pkg/ui/web/tsconfig.json | 32 + pkg/ui/web/tsconfig.node.json | 11 + pkg/ui/web/vite.config.ts | 7 + pkg/ui/web/wailsjs/go/models.ts | 77 + pkg/ui/web/wailsjs/go/ui/Client.d.ts | 11 + pkg/ui/web/wailsjs/go/ui/Client.js | 19 + pkg/ui/web/wailsjs/go/ui/Window.d.ts | 6 + pkg/ui/web/wailsjs/go/ui/Window.js | 11 + pkg/ui/web/wailsjs/runtime/package.json | 24 + pkg/ui/web/wailsjs/runtime/runtime.d.ts | 235 + pkg/ui/web/wailsjs/runtime/runtime.js | 202 + pkg/ui/web/yarn.lock | 11336 ++++++++++++++++ pkg/ui/window.go | 48 + wails.json | 15 + 170 files changed, 31553 insertions(+), 421 deletions(-) create mode 100644 .github/workflows/goreleaser-cd.yml delete mode 100644 .github/workflows/goreleaser-ci.yml create mode 100644 cmd/plural/ui.go create mode 100644 cmd/plural/ui_stub.go create mode 100644 hack/include/build.mk create mode 100644 hack/include/help.mk create mode 100644 hack/include/tools.mk create mode 100644 main.go create mode 100644 pkg/ui/bindings.go create mode 100644 pkg/ui/client.go create mode 100644 pkg/ui/ui.go create mode 100644 pkg/ui/web/.eslintrc create mode 100644 pkg/ui/web/.gitignore create mode 100644 pkg/ui/web/.graphqlconfig create mode 100755 pkg/ui/web/.yarn/releases/yarn-3.4.1.cjs create mode 100644 pkg/ui/web/.yarnrc.yml create mode 100644 pkg/ui/web/codegen.yml create mode 100644 pkg/ui/web/index.html create mode 100644 pkg/ui/web/package-lock.json create mode 100644 pkg/ui/web/package.json create mode 100755 pkg/ui/web/package.json.md5 create mode 100644 pkg/ui/web/public/favicon.ico create mode 100644 pkg/ui/web/public/fonts/ABCMonumentGroteskMono-Heavy.woff create mode 100644 pkg/ui/web/public/fonts/ABCMonumentGroteskMono-Medium.woff create mode 100644 pkg/ui/web/public/fonts/ABCMonumentGroteskMono-Regular.woff create mode 100644 pkg/ui/web/public/fonts/ABCMonumentGroteskSemi-Mono-Heavy.woff create mode 100644 pkg/ui/web/public/fonts/ABCMonumentGroteskSemi-Mono-Medium.woff create mode 100644 pkg/ui/web/public/fonts/ABCMonumentGroteskSemi-Mono-Regular.woff create mode 100644 pkg/ui/web/public/fonts/monument-bold-italic.woff create mode 100644 pkg/ui/web/public/fonts/monument-bold.woff create mode 100644 pkg/ui/web/public/fonts/monument-bold.woff2 create mode 100644 pkg/ui/web/public/fonts/monument-medium-italic.woff create mode 100644 pkg/ui/web/public/fonts/monument-medium.woff create mode 100644 pkg/ui/web/public/fonts/monument-regular-italic.woff create mode 100644 pkg/ui/web/public/fonts/monument-regular.otf create mode 100644 pkg/ui/web/public/fonts/monument-regular.woff create mode 100644 pkg/ui/web/public/logos/plural-full-logo-black.svg create mode 100644 pkg/ui/web/public/logos/plural-full-logo-white.svg create mode 100644 pkg/ui/web/public/logos/plural-logomark-only-black.svg create mode 100644 pkg/ui/web/public/logos/plural-logomark-only-white.svg create mode 100644 pkg/ui/web/public/logos/plural-logotype-only-black.svg create mode 100644 pkg/ui/web/public/logos/plural-logotype-only-white.svg create mode 100644 pkg/ui/web/schema/schema.graphql create mode 100644 pkg/ui/web/src/Plural.tsx create mode 100644 pkg/ui/web/src/components/loader/Loader.tsx create mode 100644 pkg/ui/web/src/context/wails.ts create mode 100644 pkg/ui/web/src/graphql/account.graphql create mode 100644 pkg/ui/web/src/graphql/artifacts.graphql create mode 100644 pkg/ui/web/src/graphql/charts.graphql create mode 100644 pkg/ui/web/src/graphql/dns.graphql create mode 100644 pkg/ui/web/src/graphql/docker.graphql create mode 100644 pkg/ui/web/src/graphql/domains.graphql create mode 100644 pkg/ui/web/src/graphql/generated/graphql.ts create mode 100644 pkg/ui/web/src/graphql/groups.graphql create mode 100644 pkg/ui/web/src/graphql/incidents.graphql create mode 100644 pkg/ui/web/src/graphql/installations.graphql create mode 100644 pkg/ui/web/src/graphql/integrations.graphql create mode 100644 pkg/ui/web/src/graphql/invite.graphql create mode 100644 pkg/ui/web/src/graphql/metrics.graphql create mode 100644 pkg/ui/web/src/graphql/misc.graphql create mode 100644 pkg/ui/web/src/graphql/oauth.graphql create mode 100644 pkg/ui/web/src/graphql/payments.graphql create mode 100644 pkg/ui/web/src/graphql/recipes.graphql create mode 100644 pkg/ui/web/src/graphql/repos.graphql create mode 100644 pkg/ui/web/src/graphql/scaffolds.graphql create mode 100644 pkg/ui/web/src/graphql/shells.graphql create mode 100644 pkg/ui/web/src/graphql/terraforms.graphql create mode 100644 pkg/ui/web/src/graphql/tests.graphql create mode 100644 pkg/ui/web/src/graphql/upgrades.graphql create mode 100644 pkg/ui/web/src/graphql/users.graphql create mode 100644 pkg/ui/web/src/graphql/versions.graphql create mode 100644 pkg/ui/web/src/grommet/fileInputTheme.tsx create mode 100644 pkg/ui/web/src/hooks/useWails.ts create mode 100644 pkg/ui/web/src/layout/Header.tsx create mode 100644 pkg/ui/web/src/main.tsx create mode 100644 pkg/ui/web/src/routes/installer/Application.tsx create mode 100644 pkg/ui/web/src/routes/installer/Configuration.tsx create mode 100644 pkg/ui/web/src/routes/installer/ConfigurationFileInput.tsx create mode 100644 pkg/ui/web/src/routes/installer/ConfigurationItem.tsx create mode 100644 pkg/ui/web/src/routes/installer/Installer.tsx create mode 100644 pkg/ui/web/src/routes/installer/helpers.tsx create mode 100644 pkg/ui/web/src/routes/installer/route.tsx create mode 100644 pkg/ui/web/src/routes/nextsteps/NextSteps.tsx create mode 100644 pkg/ui/web/src/routes/nextsteps/route.tsx create mode 100644 pkg/ui/web/src/routes/root.tsx create mode 100644 pkg/ui/web/src/routes/router.tsx create mode 100644 pkg/ui/web/src/routes/routes.ts create mode 100644 pkg/ui/web/src/services/apollo.ts create mode 100644 pkg/ui/web/src/services/wails.ts create mode 100644 pkg/ui/web/src/styled/fonts.ts create mode 100644 pkg/ui/web/src/styled/global.ts create mode 100644 pkg/ui/web/src/styled/scrollbar.ts create mode 100644 pkg/ui/web/src/styled/theme.ts create mode 100644 pkg/ui/web/src/types/client.d.ts create mode 100644 pkg/ui/web/src/types/styled.d.ts create mode 100644 pkg/ui/web/src/vite-env.d.ts create mode 100644 pkg/ui/web/style.css create mode 100644 pkg/ui/web/tsconfig.json create mode 100644 pkg/ui/web/tsconfig.node.json create mode 100644 pkg/ui/web/vite.config.ts create mode 100755 pkg/ui/web/wailsjs/go/models.ts create mode 100755 pkg/ui/web/wailsjs/go/ui/Client.d.ts create mode 100755 pkg/ui/web/wailsjs/go/ui/Client.js create mode 100755 pkg/ui/web/wailsjs/go/ui/Window.d.ts create mode 100755 pkg/ui/web/wailsjs/go/ui/Window.js create mode 100755 pkg/ui/web/wailsjs/runtime/package.json create mode 100755 pkg/ui/web/wailsjs/runtime/runtime.d.ts create mode 100755 pkg/ui/web/wailsjs/runtime/runtime.js create mode 100644 pkg/ui/web/yarn.lock create mode 100644 pkg/ui/window.go create mode 100644 wails.json diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index 70c3f0e2..0ab80652 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -19,7 +19,7 @@ jobs: sudo apt-get update sudo apt-get install -y terraform - run: | - make install + GOBIN="$HOME"/bin make install cp "$HOME"/bin/plural /usr/local/bin/ chmod 755 /usr/local/bin/plural - run: hack/e2e/setup-plural.sh diff --git a/.github/workflows/goreleaser-cd.yml b/.github/workflows/goreleaser-cd.yml new file mode 100644 index 00000000..f7bc1c74 --- /dev/null +++ b/.github/workflows/goreleaser-cd.yml @@ -0,0 +1,230 @@ +name: CD / CLI +on: + push: + tags: + - 'v*.*.*' + +jobs: + # Build binaries with GoReleaser + prepare: + strategy: + matrix: + os: [ ubuntu-latest, macos-latest, windows-latest ] + include: + - os: ubuntu-latest + goos: linux + - os: macos-latest + goos: darwin + - os: windows-latest + goos: windows + runs-on: ${{ matrix.os }} + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Setup Go + uses: actions/setup-go@v3 + with: + go-version: 1.19 + cache: true + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 16.18.1 + - name: Setup SHA variable + shell: bash + run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_ENV + - name: Setup Cache + uses: actions/cache@v3.2.3 + with: + path: dist/${{ matrix.goos }} + key: ${{ matrix.goos }}-${{ env.sha_short }} + enableCrossOsArchive: true + - name: Install Dependencies + if: matrix.goos == 'linux' + shell: bash + run: sudo apt install -y libwebkit2gtk-4.0-dev libgtk-3-dev + - name: Build web + shell: bash + run: make build-web + - name: GoReleaser (Build) + uses: goreleaser/goreleaser-action@v4 + with: + distribution: goreleaser-pro + version: latest + args: release --clean --split + env: + CGO_LDFLAGS: "${{ matrix.goos == 'darwin' && '-framework UniformTypeIdentifiers' || '' }}" + GOOS: ${{ matrix.GOOS }} + GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }} + + # Release binaries with GoReleaser + release: + runs-on: ubuntu-latest + needs: prepare + env: + DOCKER_CLI_EXPERIMENTAL: "enabled" + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - uses: actions/setup-go@v3 + with: + go-version: 1.19 + cache: true + - name: Copy Cache From Previous Job + shell: bash + run: | + echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_ENV + - name: Restore Linux Cache + uses: actions/cache@v3.2.3 + with: + path: dist/linux + key: linux-${{ env.sha_short }} + - name: Restore Darwin Cache + uses: actions/cache@v3.2.3 + with: + path: dist/darwin + key: darwin-${{ env.sha_short }} + - name: Restore Windows Cache + uses: actions/cache@v3.2.3 + with: + path: dist/windows + key: windows-${{ env.sha_short }} + enableCrossOsArchive: true + - name: GoReleaser (Release) + uses: goreleaser/goreleaser-action@v4 + if: steps.cache.outputs.cache-hit != 'true' # do not run if cache hit + with: + distribution: goreleaser-pro + version: latest + args: continue --merge + env: + GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITLAB_CLIENT_SECRET: ${{ secrets.GITLAB_CLIENT_SECRET }} + HOMEBREW_TAP_GITHUB_TOKEN: ${{ secrets.HOMEBREW_TAP_GITHUB_TOKEN }} + + # Publish CLI / Cloud CLI container images + publish: + strategy: + matrix: + image: [ plural-cli, plural-cli-cloud ] + include: + - image: plural-cli + dockerfile: ./Dockerfile + - image: plural-cli-cloud + dockerfile: ./dockerfiles/Dockerfile.cloud + runs-on: ubuntu-latest + needs: release + permissions: + contents: 'read' + id-token: 'write' + packages: 'write' + security-events: write + actions: read + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-region: us-east-2 + role-to-assume: arn:aws:iam::312272277431:role/github-actions/buildx-deployments + role-session-name: PluralCLI + - name: Setup kubectl + uses: azure/setup-kubectl@v3 + - name: Get EKS credentials + run: aws eks update-kubeconfig --name pluraldev + - name: Docker meta + id: meta + uses: docker/metadata-action@v4 + with: + # list of Docker images to use as base name for tags + images: | + ghcr.io/pluralsh/${{ matrix.image }} + gcr.io/pluralsh/${{ matrix.image }} + # generate Docker tags based on the following events/attributes + tags: | + type=semver,pattern={{version}} + - name: Set up Docker Buildx + id: builder + uses: docker/setup-buildx-action@v2 + with: + driver: kubernetes + platforms: linux/amd64 + driver-opts: | + namespace=buildx + requests.cpu=1.5 + requests.memory=3.5Gi + "nodeselector=plural.sh/scalingGroup=buildx-spot-x86" + "tolerations=key=plural.sh/capacityType,value=SPOT,effect=NoSchedule;key=plural.sh/reserved,value=BUILDX,effect=NoSchedule" + - name: Append ARM buildx builder from AWS + run: | + docker buildx create \ + --append \ + --bootstrap \ + --name ${{ steps.builder.outputs.name }} \ + --driver=kubernetes \ + --platform linux/arm64 \ + --node=${{ steps.builder.outputs.name }}-arm64 \ + --buildkitd-flags "--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host" \ + --driver-opt namespace=buildx \ + --driver-opt requests.cpu=1.5 \ + --driver-opt requests.memory=3.5Gi \ + '--driver-opt="nodeselector=plural.sh/scalingGroup=buildx-spot-arm64"' \ + '--driver-opt="tolerations=key=plural.sh/capacityType,value=SPOT,effect=NoSchedule;key=plural.sh/reserved,value=BUILDX,effect=NoSchedule"' + - uses: google-github-actions/auth@v1 + with: + workload_identity_provider: 'projects/${{ secrets.GOOGLE_PROJECT_ID }}/locations/global/workloadIdentityPools/github/providers/github' + service_account: 'terraform@pluralsh.iam.gserviceaccount.com' + token_format: 'access_token' + create_credentials_file: true + - uses: google-github-actions/setup-gcloud@v1.0.1 + - name: Login to gcr + run: gcloud auth configure-docker -q + - name: Login to plural registry + uses: docker/login-action@v2 + with: + registry: dkr.plural.sh + username: mjg@plural.sh + password: ${{ secrets.PLURAL_ACCESS_TOKEN }} + - name: Login to GHCR + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Get current date + id: date + run: echo "date=$(date -u +'%Y-%m-%dT%H:%M:%S%z')" >> $GITHUB_OUTPUT + - name: Build and push + uses: docker/build-push-action@v4 + with: + context: "." + file: "${{ matrix.dockerfile }}" + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + platforms: linux/amd64,linux/arm64 + build-args: | + APP_VSN=${{ github.ref_name }} + APP_COMMIT=${{ github.sha }} + APP_DATE=${{ steps.date.outputs.date }} + - name: Run Trivy vulnerability scanner on image + uses: aquasecurity/trivy-action@master + with: + scan-type: 'image' + image-ref: ${{ fromJSON(steps.meta.outputs.json).tags[0] }} + hide-progress: false + format: 'sarif' + output: 'trivy-results.sarif' + scanners: 'vuln' + timeout: 10m + ignore-unfixed: true + - name: Upload Trivy scan results to GitHub Security tab + uses: github/codeql-action/upload-sarif@v2 + with: + sarif_file: 'trivy-results.sarif' diff --git a/.github/workflows/goreleaser-ci.yml b/.github/workflows/goreleaser-ci.yml deleted file mode 100644 index 1178cab0..00000000 --- a/.github/workflows/goreleaser-ci.yml +++ /dev/null @@ -1,262 +0,0 @@ -name: goreleaser -on: - push: - tags: - - 'v*.*.*' -jobs: - goreleaser: - runs-on: ubuntu-latest - outputs: - metadata: ${{ steps.goreleaser-step.outputs.metadata }} - artifacts: ${{ steps.goreleaser-step.outputs.artifacts }} - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - name: Set up Go - uses: actions/setup-go@v3 - with: - go-version: '>=1.18.0' - - name: Run GoReleaser - id: goreleaser-step - uses: goreleaser/goreleaser-action@v4 - with: - distribution: goreleaser - version: latest - args: release --rm-dist - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - GITLAB_CLIENT_SECRET: ${{ secrets.GITLAB_CLIENT_SECRET }} - HOMEBREW_TAP_GITHUB_TOKEN: ${{ secrets.HOMEBREW_TAP_GITHUB_TOKEN }} - publish: - name: Build and push CLI container - runs-on: ubuntu-latest - permissions: - contents: 'read' - id-token: 'write' - packages: 'write' - security-events: write - actions: read - steps: - - name: Checkout - uses: actions/checkout@v3 - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 - with: - aws-region: us-east-2 - role-to-assume: arn:aws:iam::312272277431:role/github-actions/buildx-deployments - role-session-name: PluralCLI - - name: setup kubectl - uses: azure/setup-kubectl@v3 - - name: Get EKS credentials - run: aws eks update-kubeconfig --name pluraldev - - name: Docker meta - id: meta - uses: docker/metadata-action@v4 - with: - # list of Docker images to use as base name for tags - images: | - ghcr.io/pluralsh/plural-cli - gcr.io/pluralsh/plural-cli - # dkr.plural.sh/plural/plural-cli - # generate Docker tags based on the following events/attributes - tags: | - type=semver,pattern={{version}} - - name: Set up Docker Buildx - id: builder - uses: docker/setup-buildx-action@v2 - with: - driver: kubernetes - platforms: linux/amd64 - driver-opts: | - namespace=buildx - requests.cpu=1.5 - requests.memory=3.5Gi - "nodeselector=plural.sh/scalingGroup=buildx-spot-x86" - "tolerations=key=plural.sh/capacityType,value=SPOT,effect=NoSchedule;key=plural.sh/reserved,value=BUILDX,effect=NoSchedule" - - name: Append ARM buildx builder from AWS - run: | - docker buildx create \ - --append \ - --bootstrap \ - --name ${{ steps.builder.outputs.name }} \ - --driver=kubernetes \ - --platform linux/arm64 \ - --node=${{ steps.builder.outputs.name }}-arm64 \ - --buildkitd-flags "--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host" \ - --driver-opt namespace=buildx \ - --driver-opt requests.cpu=1.5 \ - --driver-opt requests.memory=3.5Gi \ - '--driver-opt="nodeselector=plural.sh/scalingGroup=buildx-spot-arm64"' \ - '--driver-opt="tolerations=key=plural.sh/capacityType,value=SPOT,effect=NoSchedule;key=plural.sh/reserved,value=BUILDX,effect=NoSchedule"' - - uses: google-github-actions/auth@v1 - with: - workload_identity_provider: 'projects/${{ secrets.GOOGLE_PROJECT_ID }}/locations/global/workloadIdentityPools/github/providers/github' - service_account: 'terraform@pluralsh.iam.gserviceaccount.com' - token_format: 'access_token' - create_credentials_file: true - - uses: google-github-actions/setup-gcloud@v1.0.1 - - name: Login to gcr - run: gcloud auth configure-docker -q - - name: Login to plural registry - uses: docker/login-action@v2 - with: - registry: dkr.plural.sh - username: mjg@plural.sh - password: ${{ secrets.PLURAL_ACCESS_TOKEN }} - - name: Login to GHCR - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - name: Get current date - id: date - run: echo "date=$(date -u +'%Y-%m-%dT%H:%M:%S%z')" >> $GITHUB_OUTPUT - - name: Build and push - uses: docker/build-push-action@v4 - with: - context: "." - file: "./Dockerfile" - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - platforms: linux/amd64,linux/arm64 - # cache-from: type=gha - # cache-to: type=gha,mode=max - build-args: | - APP_VSN=${{ github.ref_name }} - APP_COMMIT=${{ github.sha }} - APP_DATE=${{ steps.date.outputs.date }} - - name: Run Trivy vulnerability scanner on cli image - uses: aquasecurity/trivy-action@master - with: - scan-type: 'image' - image-ref: ${{ fromJSON(steps.meta.outputs.json).tags[0] }} - hide-progress: false - format: 'sarif' - output: 'trivy-results.sarif' - scanners: 'vuln' - ignore-unfixed: true - #severity: 'CRITICAL,HIGH' - - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@v2 - with: - sarif_file: 'trivy-results.sarif' - publish-cloud: - name: Build and push CLI cloud container - runs-on: ubuntu-latest - permissions: - contents: 'read' - id-token: 'write' - packages: 'write' - security-events: write - actions: read - steps: - - name: Checkout - uses: actions/checkout@v3 - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 - with: - aws-region: us-east-2 - role-to-assume: arn:aws:iam::312272277431:role/github-actions/buildx-deployments - role-session-name: PluralCLI - - name: setup kubectl - uses: azure/setup-kubectl@v3 - - name: Get EKS credentials - run: aws eks update-kubeconfig --name pluraldev - - name: Docker meta - id: meta - uses: docker/metadata-action@v4 - with: - # list of Docker images to use as base name for tags - images: | - ghcr.io/pluralsh/plural-cli-cloud - gcr.io/pluralsh/plural-cli-cloud - # dkr.plural.sh/plural/plural-cli-cloud - # generate Docker tags based on the following events/attributes - tags: | - type=semver,pattern={{version}} - - name: Set up Docker Buildx - id: builder - uses: docker/setup-buildx-action@v2 - with: - driver: kubernetes - platforms: linux/amd64 - driver-opts: | - namespace=buildx - requests.cpu=1.5 - requests.memory=3.5Gi - "nodeselector=plural.sh/scalingGroup=buildx-spot-x86" - "tolerations=key=plural.sh/capacityType,value=SPOT,effect=NoSchedule;key=plural.sh/reserved,value=BUILDX,effect=NoSchedule" - - name: Append ARM buildx builder from AWS - run: | - docker buildx create \ - --append \ - --bootstrap \ - --name ${{ steps.builder.outputs.name }} \ - --driver=kubernetes \ - --platform linux/arm64 \ - --node=${{ steps.builder.outputs.name }}-arm64 \ - --buildkitd-flags "--allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host" \ - --driver-opt namespace=buildx \ - --driver-opt requests.cpu=1.5 \ - --driver-opt requests.memory=3.5Gi \ - '--driver-opt="nodeselector=plural.sh/scalingGroup=buildx-spot-arm64"' \ - '--driver-opt="tolerations=key=plural.sh/capacityType,value=SPOT,effect=NoSchedule;key=plural.sh/reserved,value=BUILDX,effect=NoSchedule"' - - uses: google-github-actions/auth@v1 - with: - workload_identity_provider: 'projects/${{ secrets.GOOGLE_PROJECT_ID }}/locations/global/workloadIdentityPools/github/providers/github' - service_account: 'terraform@pluralsh.iam.gserviceaccount.com' - token_format: 'access_token' - create_credentials_file: true - - uses: google-github-actions/setup-gcloud@v1.0.1 - - name: Login to gcr - run: gcloud auth configure-docker -q - - name: Login to plural registry - uses: docker/login-action@v2 - with: - registry: dkr.plural.sh - username: mjg@plural.sh - password: ${{ secrets.PLURAL_ACCESS_TOKEN }} - - name: Login to GHCR - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - name: Get current date - id: date - run: echo "date=$(date -u +'%Y-%m-%dT%H:%M:%S%z')" >> $GITHUB_OUTPUT - - name: Build and push - uses: docker/build-push-action@v4 - with: - context: "." - file: "./dockerfiles/Dockerfile.cloud" - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - platforms: linux/amd64,linux/arm64 - # cache-from: type=gha - # cache-to: type=gha,mode=max - build-args: | - APP_VSN=${{ github.ref_name }} - APP_COMMIT=${{ github.sha }} - APP_DATE=${{ steps.date.outputs.date }} - - name: Run Trivy vulnerability scanner on cli cloud image - uses: aquasecurity/trivy-action@master - with: - scan-type: 'image' - image-ref: ${{ fromJSON(steps.meta.outputs.json).tags[0] }} - hide-progress: false - format: 'sarif' - output: 'trivy-results.sarif' - scanners: 'vuln' - timeout: 10m - ignore-unfixed: true - #severity: 'CRITICAL,HIGH' - - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@v2 - with: - sarif_file: 'trivy-results.sarif' diff --git a/.gitignore b/.gitignore index b637ccd6..5140c33f 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,12 @@ plural*.o # Dependency directories (remove the comment below to include it) # vendor/ +# IDE dirs +.idea/ + dist/ +build/ + +# Testing files +context.yaml +workspace.yaml \ No newline at end of file diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 034e4385..90abe304 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -1,26 +1,56 @@ # This is an example .goreleaser.yml file with some sensible defaults. # Make sure to check the documentation at https://goreleaser.com + +# Requires a GoReleaser Pro to run +partial: + by: goos + before: hooks: - go mod tidy + builds: - - env: - - CGO_ENABLED=0 + - id: plural-cli + targets: + - linux_amd64 + - linux_arm64 + - windows_amd64 + - windows_arm64 + - darwin_amd64 + - darwin_arm64 + env: + - CGO_ENABLED=1 ldflags: - - "-s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}} -X github.com/pluralsh/plural/pkg/scm.GitlabClientSecret={{ .Env.GITLAB_CLIENT_SECRET }}" - goos: - - linux - - windows - - darwin - main: ./cmd/plural + - -s + - -w + - -X "github.com/pluralsh/plural/cmd/plural.Version={{.Version}}" + - -X "github.com/pluralsh/plural/cmd/plural.Commit={{.Commit}}" + - -X "github.com/pluralsh/plural/cmd/plural.Date={{.Date}}" + - -X "github.com/pluralsh/plural/pkg/scm.GitlabClientSecret={{.Env.GITLAB_CLIENT_SECRET}}" + tags: + - desktop + - production + - ui binary: plural + # Do not embed UI into linux/arm64 and windows/arm64 binaries + overrides: + - goos: linux + goarch: arm64 + tags: [linux] + env: + - CGO_ENABLED=0 + - goos: windows + goarch: arm64 + tags: [windows] + env: + - CGO_ENABLED=0 + archives: - - replacements: - darwin: Darwin - linux: Linux - windows: Windows - 386: i386 - amd64: amd64 + - name_template: >- + {{ .ProjectName }}_{{ .Version }}_ + {{- title .Os }}_ + {{- if eq .Arch "386" }}i386 + {{- else }}{{ .Arch }}{{ end }} checksum: name_template: 'checksums.txt' snapshot: @@ -32,6 +62,7 @@ changelog: exclude: - '^docs:' - '^test:' + release: name_template: "{{.ProjectName}}-v{{.Version}}" header: | @@ -40,6 +71,7 @@ release: footer: | ## Thanks! We'd like to thank all contributors for helping with improving our CLI! + brews: - name: plural tap: diff --git a/Dockerfile b/Dockerfile index e57eb089..3a358c14 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,7 @@ FROM ubuntu:22.10 as user # Create a nonroot user for final image RUN useradd -u 10001 nonroot -FROM golang:1.18.8-alpine3.15 AS builder +FROM golang:1.20-alpine3.17 AS builder WORKDIR /workspace @@ -15,6 +15,7 @@ COPY go.sum go.sum RUN go mod download # Copy the go source +COPY main.go main.go COPY cmd/ cmd/ COPY pkg/ pkg/ @@ -25,20 +26,23 @@ ARG APP_DATE ARG TARGETARCH RUN CGO_ENABLED=0 GOOS=linux GOARCH=${TARGETARCH} \ - go build -ldflags "-s -w -X main.version=${APP_VSN} -X main.commit=${APP_COMMIT} -X main.date=${APP_DATE}" \ - -o plural ./cmd/plural/ + go build -ldflags '-s -w \ + -X "github.com/pluralsh/plural/cmd/plural.Version=${APP_VSN}" \ + -X "github.com/pluralsh/plural/cmd/plural.Commit=${APP_COMMIT}" \ + -X "github.com/pluralsh/plural/cmd/plural.Date=${APP_DATE}"' \ + -o plural . -FROM golang:1.18.8-alpine3.15 +FROM golang:1.20-alpine3.17 WORKDIR / RUN apk update && apk add --no-cache git build-base -COPY --from=builder /workspace/plural /go/bin/ - # Copy nonroot user and switch to it COPY --from=user /etc/passwd /etc/passwd USER nonroot -RUN /go/bin/plural --help -RUN /go/bin/plural version +COPY --chown=nonroot --from=builder /workspace/plural /go/bin/ +RUN chmod a+x /go/bin/plural + +ENTRYPOINT ["/go/bin/plural"] diff --git a/Makefile b/Makefile index 8ed42ad8..7ab6ae7c 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,8 @@ -.PHONY: # ignore +ROOT_DIRECTORY := $(shell dirname $(realpath $(firstword $(MAKEFILE_LIST)))) + +include $(ROOT_DIRECTORY)/hack/include/help.mk +include $(ROOT_DIRECTORY)/hack/include/tools.mk +include $(ROOT_DIRECTORY)/hack/include/build.mk GCP_PROJECT ?= pluralsh APP_NAME ?= plural-cli @@ -7,33 +11,76 @@ APP_DATE ?= $(shell date -u +"%Y-%m-%dT%H:%M:%S%z") BUILD ?= $(shell git rev-parse --short HEAD) DKR_HOST ?= dkr.plural.sh GOOS ?= darwin -GOARCH ?= amd64 -BASE_LDFLAGS ?= -X main.version=$(APP_VSN) -X main.commit=$(BUILD) -X main.date=$(APP_DATE) -X github.com/pluralsh/plural/pkg/scm.GitlabClientSecret=${GITLAB_CLIENT_SECRET} -X github.com/pluralsh/plural/pkg/scm.BitbucketClientSecret=${BITBUCKET_CLIENT_SECRET} +GOARCH ?= arm64 +GOLANG_CROSS_VERSION ?= v1.20.2 +PACKAGE ?= github.com/pluralsh/plural +BASE_LDFLAGS ?= -s -w +LDFLAGS ?= $(BASE_LDFLAGS) $\ + -X "$(PACKAGE)/cmd/plural.Version=$(APP_VSN)" $\ + -X "$(PACKAGE)/cmd/plural.Commit=$(BUILD)" $\ + -X "$(PACKAGE)/cmd/plural.Date=$(APP_DATE)" $\ + -X "$(PACKAGE)/pkg/scm.GitlabClientSecret=${GITLAB_CLIENT_SECRET}" $\ + -X "$(PACKAGE)/pkg/scm.BitbucketClientSecret=${BITBUCKET_CLIENT_SECRET}" +WAILS_TAGS ?= desktop,production,ui +WAILS_BINDINGS_TAGS ?= bindings,generate +WAILS_BINDINGS_BINARY_NAME ?= wailsbindings +TAGS ?= $(WAILS_TAGS) OUTFILE ?= plural.o -help: - @perl -nle'print $& if m{^[a-zA-Z_-]+:.*?## .*$$}' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' +# Targets to run before other targets +# install-tools - Install binaries required to run targets +PRE := install-tools -git-push: .PHONY +.PHONY: git-push +git-push: git pull --rebase git push -install: .PHONY - GOBIN=~/bin go install -ldflags '-s -w $(BASE_LDFLAGS)' ./cmd/plural/ - -build-cli: .PHONY - GOBIN=~/bin go build -ldflags '-s -w $(BASE_LDFLAGS)' -o $(OUTFILE) ./cmd/plural/ - -release: .PHONY - GOOS=$(GOOS) GOARCH=$(GOARCH) go build -ldflags '-s -w $(BASE_LDFLAGS)' -o plural.o ./cmd/plural/ - -setup: .PHONY ## sets up your local env (for mac only) +.PHONY: install +install: + go install -ldflags '$(LDFLAGS)' . + +.PHONY: build-cli +build-cli: ## Build a CLI binary for the host architecture without embedded UI + go build -ldflags='$(LDFLAGS)' -o $(OUTFILE) . + +.PHONY: build-cli-ui +build-cli-ui: $(PRE) generate-bindings ## Build a CLI binary for the host architecture with embedded UI + CGO_LDFLAGS=$(CGO_LDFLAGS) go build -tags $(WAILS_TAGS) -ldflags='$(LDFLAGS)' -o $(OUTFILE) . + +.PHONY: build-web +build-web: ## Build just the embedded UI + cd pkg/ui/web && yarn --immutable && yarn build + +.PHONY: run-web +run-web: $(PRE) ## Run the UI for development + @CGO_LDFLAGS=$(CGO_LDFLAGS) wails dev -tags ui -browser -skipbindings + +# This is somewhat an equivalent of wails `GenerateBindings` method. +# Ref: https://github.com/wailsapp/wails/blob/master/v2/pkg/commands/bindings/bindings.go#L28 +.PHONY: generate-bindings +generate-bindings: build-web ## Generate backend bindings for the embedded UI + @echo Building bindings binary + @CGO_LDFLAGS=$(CGO_LDFLAGS) go build -tags $(WAILS_BINDINGS_TAGS) -ldflags='$(LDFLAGS)' -o $(WAILS_BINDINGS_BINARY_NAME) . + @echo Generating bindings + @./$(WAILS_BINDINGS_BINARY_NAME) > /dev/null 2>&1 + @echo Cleaning up + @rm $(WAILS_BINDINGS_BINARY_NAME) + +.PHONY: release +release: + GOOS=$(GOOS) GOARCH=$(GOARCH) go build -ldflags='$(LDFLAGS)' -o $(OUTFILE) . + +.PHONY: setup +setup: ## sets up your local env (for mac only) brew install golangci-lint -plural: .PHONY ## uploads to plural +.PHONY: plural +plural: ## uploads to plural plural apply -f plural/Pluralfile -build: .PHONY ## Build the Docker image +.PHONY: build +build: ## Build the Docker image docker build --build-arg APP_NAME=$(APP_NAME) \ --build-arg APP_VSN=$(APP_VSN) \ --build-arg APP_DATE=$(APP_DATE) \ @@ -43,7 +90,8 @@ build: .PHONY ## Build the Docker image -t gcr.io/$(GCP_PROJECT)/$(APP_NAME):$(APP_VSN) \ -t $(DKR_HOST)/plural/$(APP_NAME):$(APP_VSN) . -build-cloud: .PHONY ## build the cloud docker image +.PHONY: build-cloud +build-cloud: ## build the cloud docker image docker build --build-arg APP_NAME=$(APP_NAME) \ --build-arg APP_VSN=$(APP_VSN) \ --build-arg APP_DATE=$(APP_DATE) \ @@ -53,31 +101,39 @@ build-cloud: .PHONY ## build the cloud docker image -t gcr.io/$(GCP_PROJECT)/$(APP_NAME)-cloud:$(APP_VSN) \ -t $(DKR_HOST)/plural/$(APP_NAME)-cloud:$(APP_VSN) -f dockerfiles/Dockerfile.cloud . -push: .PHONY ## push to gcr +.PHONY: push +push: ## push to gcr docker push gcr.io/$(GCP_PROJECT)/$(APP_NAME):$(APP_VSN) docker push $(DKR_HOST)/plural/${APP_NAME}:$(APP_VSN) -push-cloud: .PHONY ## push to gcr +.PHONY: push-cloud +push-cloud: ## push to gcr docker push gcr.io/$(GCP_PROJECT)/$(APP_NAME):$(APP_VSN)-cloud docker push $(DKR_HOST)/plural/${APP_NAME}:$(APP_VSN)-cloud -generate: .PHONY +.PHONY: generate +generate: go generate ./... -bake-ami: .PHONY +.PHONY: bake-ami +bake-ami: cd packer && packer build -var "img_name=plural/ubuntu/$(BUILD)" . @echo "baked ami for all regions" -up: .PHONY # spin up local server +.PHONY: up +up: # spin up local server docker-compose up -pull: .PHONY # pulls new server image +.PHONY: pull +pull: # pulls new server image docker-compose pull -serve: build-cloud .PHONY # build cloud version of plural-cli and start plural serve in docker +.PHONY: serve +serve: build-cloud # build cloud version of plural-cli and start plural serve in docker docker kill plural-cli || true docker run --rm --name plural-cli -p 8080:8080 -d plural-cli:latest-cloud +.PHONY: release-vsn release-vsn: # tags and pushes a new release @read -p "Version: " tag; \ git checkout main; \ @@ -85,19 +141,24 @@ release-vsn: # tags and pushes a new release git tag -a $$tag -m "new release"; \ git push origin $$tag -test: .PHONY +.PHONY: test +test: go test -v -race ./pkg/... ./cmd/... -format: .PHONY # formats all go code to prep for linting +.PHONY: format +format: # formats all go code to prep for linting golangci-lint run --fix -genmock: .PHONY # generates mocks before running tests +.PHONY: genmock +genmock: # generates mocks before running tests hack/gen-client-mocks.sh -lint: .PHONY +.PHONY: lint +lint: docker run --rm -v $(PWD):/app -w /app golangci/golangci-lint:v1.50.1 golangci-lint run -delete-tag: .PHONY +.PHONY: delete-tag +delete-tag: @read -p "Version: " tag: \ git tag -d $$tag - git push origin :$$tag \ No newline at end of file + git push origin :$$tag diff --git a/cmd/plural/api.go b/cmd/plural/api.go index 68595945..65a952c5 100644 --- a/cmd/plural/api.go +++ b/cmd/plural/api.go @@ -1,4 +1,4 @@ -package main +package plural import ( "github.com/pluralsh/plural/pkg/api" diff --git a/cmd/plural/api_test.go b/cmd/plural/api_test.go index a08fcc06..0081e938 100644 --- a/cmd/plural/api_test.go +++ b/cmd/plural/api_test.go @@ -1,4 +1,4 @@ -package main_test +package plural_test import ( "os" diff --git a/cmd/plural/app.go b/cmd/plural/app.go index b626a939..d3bcbbb2 100644 --- a/cmd/plural/app.go +++ b/cmd/plural/app.go @@ -1,4 +1,4 @@ -package main +package plural import ( "fmt" diff --git a/cmd/plural/bundle.go b/cmd/plural/bundle.go index 8a9c9a14..21065afb 100644 --- a/cmd/plural/bundle.go +++ b/cmd/plural/bundle.go @@ -1,4 +1,4 @@ -package main +package plural import ( "fmt" diff --git a/cmd/plural/bundle_test.go b/cmd/plural/bundle_test.go index 6da26190..7b1aa96d 100644 --- a/cmd/plural/bundle_test.go +++ b/cmd/plural/bundle_test.go @@ -1,4 +1,4 @@ -package main_test +package plural_test import ( "os" diff --git a/cmd/plural/clusters.go b/cmd/plural/clusters.go index 2553d9ea..ed4c79aa 100644 --- a/cmd/plural/clusters.go +++ b/cmd/plural/clusters.go @@ -1,4 +1,4 @@ -package main +package plural import ( "fmt" diff --git a/cmd/plural/config.go b/cmd/plural/config.go index 09531ca9..218de7a4 100644 --- a/cmd/plural/config.go +++ b/cmd/plural/config.go @@ -1,4 +1,4 @@ -package main +package plural import ( "io" diff --git a/cmd/plural/config_test.go b/cmd/plural/config_test.go index e6b04745..319db08e 100644 --- a/cmd/plural/config_test.go +++ b/cmd/plural/config_test.go @@ -1,4 +1,4 @@ -package main_test +package plural_test import ( "bytes" diff --git a/cmd/plural/constants.go b/cmd/plural/constants.go index fd523e40..62c5c569 100644 --- a/cmd/plural/constants.go +++ b/cmd/plural/constants.go @@ -1,3 +1,3 @@ -package main +package plural const backupMsg = "Would you like to back up your encryption key to plural? If you chose to manage it yourself, you can find it at ~/.plural/key" diff --git a/cmd/plural/crypto.go b/cmd/plural/crypto.go index b4576a33..30802e7e 100644 --- a/cmd/plural/crypto.go +++ b/cmd/plural/crypto.go @@ -1,4 +1,4 @@ -package main +package plural import ( "bytes" diff --git a/cmd/plural/crypto_test.go b/cmd/plural/crypto_test.go index ba759bbc..21841cb3 100644 --- a/cmd/plural/crypto_test.go +++ b/cmd/plural/crypto_test.go @@ -1,4 +1,4 @@ -package main_test +package plural_test import ( "encoding/base64" diff --git a/cmd/plural/dependencies.go b/cmd/plural/dependencies.go index 6c041399..df0550f6 100644 --- a/cmd/plural/dependencies.go +++ b/cmd/plural/dependencies.go @@ -1,4 +1,4 @@ -package main +package plural import ( "fmt" diff --git a/cmd/plural/dependencies_test.go b/cmd/plural/dependencies_test.go index d0a14c42..f75f6a4d 100644 --- a/cmd/plural/dependencies_test.go +++ b/cmd/plural/dependencies_test.go @@ -1,4 +1,4 @@ -package main_test +package plural_test import ( "os" diff --git a/cmd/plural/deploy.go b/cmd/plural/deploy.go index 02fd972c..2b307377 100644 --- a/cmd/plural/deploy.go +++ b/cmd/plural/deploy.go @@ -1,4 +1,4 @@ -package main +package plural import ( "fmt" diff --git a/cmd/plural/deploy_test.go b/cmd/plural/deploy_test.go index 45bc11f4..ea60c5b6 100644 --- a/cmd/plural/deploy_test.go +++ b/cmd/plural/deploy_test.go @@ -1,4 +1,4 @@ -package main_test +package plural_test import ( "os" diff --git a/cmd/plural/errors.go b/cmd/plural/errors.go index 30f1bf62..fbfd2480 100644 --- a/cmd/plural/errors.go +++ b/cmd/plural/errors.go @@ -1,4 +1,4 @@ -package main +package plural import ( "fmt" diff --git a/cmd/plural/git.go b/cmd/plural/git.go index 7ab7aa39..b754b1f8 100644 --- a/cmd/plural/git.go +++ b/cmd/plural/git.go @@ -1,4 +1,4 @@ -package main +package plural import ( "fmt" diff --git a/cmd/plural/help.go b/cmd/plural/help.go index c7ee6d4c..1b766e3c 100644 --- a/cmd/plural/help.go +++ b/cmd/plural/help.go @@ -1,4 +1,4 @@ -package main +package plural import ( "fmt" diff --git a/cmd/plural/init.go b/cmd/plural/init.go index f0d21bee..fc7f5820 100644 --- a/cmd/plural/init.go +++ b/cmd/plural/init.go @@ -1,4 +1,4 @@ -package main +package plural import ( "fmt" diff --git a/cmd/plural/link.go b/cmd/plural/link.go index bebb68c6..24e85afa 100644 --- a/cmd/plural/link.go +++ b/cmd/plural/link.go @@ -1,4 +1,4 @@ -package main +package plural import ( "github.com/pluralsh/plural/pkg/manifest" diff --git a/cmd/plural/logs.go b/cmd/plural/logs.go index 44fa53d8..3560a601 100644 --- a/cmd/plural/logs.go +++ b/cmd/plural/logs.go @@ -1,4 +1,4 @@ -package main +package plural import ( "github.com/pluralsh/plural/pkg/config" diff --git a/cmd/plural/logs_test.go b/cmd/plural/logs_test.go index 3aaf6ee4..d80e9062 100644 --- a/cmd/plural/logs_test.go +++ b/cmd/plural/logs_test.go @@ -1,4 +1,4 @@ -package main_test +package plural_test import ( "os" diff --git a/cmd/plural/ops.go b/cmd/plural/ops.go index ab0f362f..453518b4 100644 --- a/cmd/plural/ops.go +++ b/cmd/plural/ops.go @@ -1,4 +1,4 @@ -package main +package plural import ( "fmt" diff --git a/cmd/plural/ops_test.go b/cmd/plural/ops_test.go index 38630d6a..9a6bd672 100644 --- a/cmd/plural/ops_test.go +++ b/cmd/plural/ops_test.go @@ -1,4 +1,4 @@ -package main_test +package plural_test import ( "os" diff --git a/cmd/plural/output.go b/cmd/plural/output.go index 7b0f63f8..33f5632b 100644 --- a/cmd/plural/output.go +++ b/cmd/plural/output.go @@ -1,4 +1,4 @@ -package main +package plural import ( "path/filepath" diff --git a/cmd/plural/packages.go b/cmd/plural/packages.go index d603db63..df29b2c4 100644 --- a/cmd/plural/packages.go +++ b/cmd/plural/packages.go @@ -1,4 +1,4 @@ -package main +package plural import ( "os" diff --git a/cmd/plural/plural.go b/cmd/plural/plural.go index 31e6287e..b77575a9 100644 --- a/cmd/plural/plural.go +++ b/cmd/plural/plural.go @@ -1,20 +1,17 @@ -package main +package plural import ( - "log" - "math/rand" "os" - "time" - "github.com/fatih/color" + "github.com/urfave/cli" + "helm.sh/helm/v3/pkg/action" + "github.com/pluralsh/plural/pkg/api" "github.com/pluralsh/plural/pkg/config" "github.com/pluralsh/plural/pkg/crypto" "github.com/pluralsh/plural/pkg/kubernetes" "github.com/pluralsh/plural/pkg/manifest" "github.com/pluralsh/plural/pkg/utils" - "github.com/urfave/cli" - "helm.sh/helm/v3/pkg/action" ) func init() { @@ -466,21 +463,7 @@ func (p *Plural) getCommands() []cli.Command { Action: latestVersion(formatDashboard), Category: "Publishing", }, - } -} - -func main() { - rand.Seed(time.Now().UnixNano()) - // init Kube when k8s config exists - plural := &Plural{} - app := CreateNewApp(plural) - if os.Getenv("ENABLE_COLOR") != "" { - color.NoColor = false - } - - err := app.Run(os.Args) - if err != nil { - log.Fatal(err) + p.uiCommands(), } } diff --git a/cmd/plural/proxy.go b/cmd/plural/proxy.go index 679b08ea..93a4fedd 100644 --- a/cmd/plural/proxy.go +++ b/cmd/plural/proxy.go @@ -1,4 +1,4 @@ -package main +package plural import ( "github.com/pluralsh/plural/pkg/config" diff --git a/cmd/plural/proxy_test.go b/cmd/plural/proxy_test.go index 7ff2c302..362431bf 100644 --- a/cmd/plural/proxy_test.go +++ b/cmd/plural/proxy_test.go @@ -1,4 +1,4 @@ -package main_test +package plural_test import ( "os" diff --git a/cmd/plural/push.go b/cmd/plural/push.go index f124c3f5..c56c3683 100644 --- a/cmd/plural/push.go +++ b/cmd/plural/push.go @@ -1,4 +1,4 @@ -package main +package plural import ( "fmt" diff --git a/cmd/plural/repos.go b/cmd/plural/repos.go index 301b8318..ba41065b 100644 --- a/cmd/plural/repos.go +++ b/cmd/plural/repos.go @@ -1,4 +1,4 @@ -package main +package plural import ( "fmt" diff --git a/cmd/plural/repos_test.go b/cmd/plural/repos_test.go index 1ecf2057..81a38408 100644 --- a/cmd/plural/repos_test.go +++ b/cmd/plural/repos_test.go @@ -1,4 +1,4 @@ -package main_test +package plural_test import ( "os" diff --git a/cmd/plural/scaffold.go b/cmd/plural/scaffold.go index 60361fbe..60cc90dc 100644 --- a/cmd/plural/scaffold.go +++ b/cmd/plural/scaffold.go @@ -1,4 +1,4 @@ -package main +package plural import ( "github.com/pluralsh/plural/pkg/api" diff --git a/cmd/plural/shell.go b/cmd/plural/shell.go index a50a14af..621cdeec 100644 --- a/cmd/plural/shell.go +++ b/cmd/plural/shell.go @@ -1,4 +1,4 @@ -package main +package plural import ( "os" diff --git a/cmd/plural/template.go b/cmd/plural/template.go index 4d0a6fb8..8c54751c 100644 --- a/cmd/plural/template.go +++ b/cmd/plural/template.go @@ -1,4 +1,4 @@ -package main +package plural import ( "bytes" diff --git a/cmd/plural/ui.go b/cmd/plural/ui.go new file mode 100644 index 00000000..f84c3846 --- /dev/null +++ b/cmd/plural/ui.go @@ -0,0 +1,22 @@ +//go:build ui || generate + +package plural + +import ( + "github.com/urfave/cli" + + "github.com/pluralsh/plural/pkg/ui" +) + +func (p *Plural) uiCommands() cli.Command { + return cli.Command{ + Name: "install", + Usage: "opens installer UI that simplifies application configuration", + Action: p.run, + } +} + +func (p *Plural) run(c *cli.Context) error { + p.InitPluralClient() + return ui.Run(p.Client, c) +} diff --git a/cmd/plural/ui_stub.go b/cmd/plural/ui_stub.go new file mode 100644 index 00000000..220bbd42 --- /dev/null +++ b/cmd/plural/ui_stub.go @@ -0,0 +1,11 @@ +//go:build !ui && !generate + +package plural + +import ( + "github.com/urfave/cli" +) + +func (p *Plural) uiCommands() cli.Command { + return cli.Command{} +} diff --git a/cmd/plural/utils.go b/cmd/plural/utils.go index 1005d2db..83d80f2a 100644 --- a/cmd/plural/utils.go +++ b/cmd/plural/utils.go @@ -1,4 +1,4 @@ -package main +package plural import ( "bufio" diff --git a/cmd/plural/utils_test.go b/cmd/plural/utils_test.go index 60b8ff4c..856768e5 100644 --- a/cmd/plural/utils_test.go +++ b/cmd/plural/utils_test.go @@ -1,4 +1,4 @@ -package main_test +package plural_test import ( "os" diff --git a/cmd/plural/validation.go b/cmd/plural/validation.go index 8befacea..c6af905d 100644 --- a/cmd/plural/validation.go +++ b/cmd/plural/validation.go @@ -1,10 +1,13 @@ -package main +package plural import ( "fmt" "os" "github.com/AlecAivazis/survey/v2" + "github.com/pluralsh/polly/algorithms" + "github.com/urfave/cli" + "github.com/pluralsh/plural/pkg/api" "github.com/pluralsh/plural/pkg/config" "github.com/pluralsh/plural/pkg/executor" @@ -14,8 +17,6 @@ import ( "github.com/pluralsh/plural/pkg/utils/errors" "github.com/pluralsh/plural/pkg/utils/git" "github.com/pluralsh/plural/pkg/utils/pathing" - "github.com/pluralsh/polly/algorithms" - "github.com/urfave/cli" ) func requireArgs(fn func(*cli.Context) error, args []string) func(*cli.Context) error { @@ -181,7 +182,7 @@ func repoRoot() error { func latestVersion(fn func(*cli.Context) error) func(*cli.Context) error { return func(c *cli.Context) error { if os.Getenv("PLURAL_CONSOLE") != "1" && algorithms.Coinflip(1, 5) { - utils.CheckLatestVersion(version) + utils.CheckLatestVersion(Version) } return fn(c) diff --git a/cmd/plural/version.go b/cmd/plural/version.go index 9c6b7c71..40906de5 100644 --- a/cmd/plural/version.go +++ b/cmd/plural/version.go @@ -1,12 +1,13 @@ -package main +package plural import ( "fmt" "runtime" "strings" - "github.com/pluralsh/plural/pkg/utils" "github.com/urfave/cli" + + "github.com/pluralsh/plural/pkg/utils" ) const ( @@ -14,28 +15,28 @@ const ( ) var ( - version = versionPlaceholder - commit = "" - date = "" + Version = versionPlaceholder + Commit = "" + Date = "" ) func checkRecency() error { - if version == versionPlaceholder || strings.Contains(version, "-") { + if Version == versionPlaceholder || strings.Contains(Version, "-") { utils.Warn("\nThis is a development version, which can be significantly different from official releases") utils.Warn("\nYou can download latest release from https://github.com/pluralsh/plural-cli/releases/latest\n") return nil } - utils.CheckLatestVersion(version) + utils.CheckLatestVersion(Version) return nil } func versionInfo(c *cli.Context) error { fmt.Println("PLURAL CLI:") - fmt.Printf(" version\t%s\n", version) - fmt.Printf(" git commit\t%s\n", commit) - fmt.Printf(" compiled at\t%s\n", date) + fmt.Printf(" version\t%s\n", Version) + fmt.Printf(" git commit\t%s\n", Commit) + fmt.Printf(" compiled at\t%s\n", Date) fmt.Printf(" os/arch\t%s/%s\n", runtime.GOOS, runtime.GOARCH) return checkRecency() diff --git a/cmd/plural/vpn.go b/cmd/plural/vpn.go index 1a0666a3..6829e4df 100644 --- a/cmd/plural/vpn.go +++ b/cmd/plural/vpn.go @@ -1,4 +1,4 @@ -package main +package plural import ( "fmt" diff --git a/cmd/plural/vpn_test.go b/cmd/plural/vpn_test.go index 32cc1ff7..8fbe897e 100644 --- a/cmd/plural/vpn_test.go +++ b/cmd/plural/vpn_test.go @@ -1,4 +1,4 @@ -package main_test +package plural_test import ( "os" diff --git a/cmd/plural/workspace.go b/cmd/plural/workspace.go index 21aeba46..f0d6a7b0 100644 --- a/cmd/plural/workspace.go +++ b/cmd/plural/workspace.go @@ -1,4 +1,4 @@ -package main +package plural import ( "fmt" diff --git a/cmd/plural/workspace_test.go b/cmd/plural/workspace_test.go index 0920a82f..32310332 100644 --- a/cmd/plural/workspace_test.go +++ b/cmd/plural/workspace_test.go @@ -1,4 +1,4 @@ -package main_test +package plural_test import ( "io" diff --git a/dockerfiles/Dockerfile.cloud b/dockerfiles/Dockerfile.cloud index 0c49c0fd..86a9f49e 100644 --- a/dockerfiles/Dockerfile.cloud +++ b/dockerfiles/Dockerfile.cloud @@ -1,4 +1,4 @@ -FROM golang:1.18.8-alpine3.15 AS builder +FROM golang:1.20-alpine3.17 AS builder WORKDIR /workspace @@ -10,6 +10,7 @@ COPY go.sum go.sum RUN go mod download # Copy the go source +COPY main.go main.go COPY cmd/ cmd/ COPY pkg/ pkg/ @@ -20,10 +21,13 @@ ARG APP_DATE ARG TARGETARCH RUN CGO_ENABLED=0 GOOS=linux GOARCH=${TARGETARCH} \ - go build -ldflags "-s -w -X main.version=${APP_VSN} -X main.commit=${APP_COMMIT} -X main.date=${APP_DATE}" \ - -o plural ./cmd/plural/ + go build -ldflags '-s -w \ + -X "github.com/pluralsh/plural/cmd/plural.Version=${APP_VSN}" \ + -X "github.com/pluralsh/plural/cmd/plural.Commit=${APP_COMMIT}" \ + -X "github.com/pluralsh/plural/cmd/plural.Date=${APP_DATE}"' \ + -o plural . -FROM alpine:3.17.1 as tools +FROM alpine:3.17.2 as tools ARG TARGETARCH diff --git a/go.mod b/go.mod index 75a62616..cb11be98 100644 --- a/go.mod +++ b/go.mod @@ -51,10 +51,12 @@ require ( github.com/samber/lo v1.33.0 github.com/thoas/go-funk v0.9.2 github.com/urfave/cli v1.22.10 + github.com/wailsapp/wails/v2 v2.4.1 github.com/xanzy/go-gitlab v0.70.0 github.com/yuin/gopher-lua v0.0.0-20220504180219-658193537a64 go.mercari.io/hcledit v0.0.8 golang.org/x/crypto v0.5.0 + golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 golang.org/x/mod v0.9.0 golang.org/x/oauth2 v0.5.0 gopkg.in/yaml.v2 v2.4.0 @@ -89,24 +91,35 @@ require ( github.com/aws/aws-sdk-go-v2/service/sso v1.11.21 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.3 // indirect github.com/aws/smithy-go v1.13.5 // indirect + github.com/bep/debounce v1.2.1 // indirect github.com/cenkalti/backoff v2.2.1+incompatible // indirect github.com/emicklei/go-restful/v3 v3.9.0 // indirect github.com/fatih/camelcase v1.0.0 // indirect github.com/go-gorp/gorp/v3 v3.1.0 // indirect + github.com/go-ole/go-ole v1.2.6 // indirect github.com/goccy/go-json v0.9.7 // indirect - github.com/golang-jwt/jwt v3.2.1+incompatible // indirect + github.com/golang-jwt/jwt v3.2.2+incompatible // indirect github.com/google/gnostic v0.5.7-v3refs // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect github.com/hashicorp/hcl/v2 v2.13.0 // indirect + github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e // indirect github.com/kylelemons/godebug v1.1.0 // indirect + github.com/labstack/echo/v4 v4.9.0 // indirect + github.com/labstack/gommon v0.3.1 // indirect + github.com/leaanthony/go-ansi-parser v1.0.1 // indirect + github.com/leaanthony/gosod v1.0.3 // indirect + github.com/leaanthony/slicer v1.5.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pelletier/go-toml/v2 v2.0.1 // indirect github.com/pluralsh/controller-reconcile-helper v0.0.4 // indirect github.com/stretchr/objx v0.5.0 // indirect + github.com/tkrajina/go-reflector v0.5.5 // indirect + github.com/valyala/bytebufferpool v1.0.0 // indirect + github.com/valyala/fasttemplate v1.2.1 // indirect github.com/vektah/gqlparser/v2 v2.5.1 // indirect + github.com/wailsapp/mimetype v1.4.1 // indirect github.com/zclconf/go-cty v1.10.0 // indirect - golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect google.golang.org/genproto v0.0.0-20230216225411-c8e22ba71e44 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) @@ -249,10 +262,10 @@ require ( github.com/xlab/treeprint v1.1.0 // indirect go.opencensus.io v0.24.0 // indirect go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5 // indirect - golang.org/x/net v0.6.0 // indirect + golang.org/x/net v0.8.0 // indirect golang.org/x/sync v0.1.0 // indirect golang.org/x/sys v0.6.0 // indirect - golang.org/x/term v0.5.0 + golang.org/x/term v0.6.0 golang.org/x/text v0.8.0 golang.org/x/time v0.0.0-20220411224347-583f2d630306 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect diff --git a/go.sum b/go.sum index d9eec027..5f162cec 100644 --- a/go.sum +++ b/go.sum @@ -236,6 +236,8 @@ github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24 github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bep/debounce v1.2.1 h1:v67fRdBA9UQu2NhLFXrSg0Brw7CexQekrBwDMM8bzeY= +github.com/bep/debounce v1.2.1/go.mod h1:H8yggRPQKLUhUoqrJC1bO2xNya7vanpDl7xR3ISbCJ0= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= @@ -408,6 +410,8 @@ github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbV github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/zapr v0.1.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= +github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= @@ -489,8 +493,9 @@ github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zV github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt v3.2.1+incompatible h1:73Z+4BJcrTC+KczS6WvTPvRGOp1WmfEP4Q1lOd9Z/+c= github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= +github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= +github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.2.0 h1:besgBTC8w8HjP6NzQdxwKH9Z5oQMZ24ThTrHp3cZ8eU= github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= @@ -677,6 +682,8 @@ github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7P github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= +github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e h1:Q3+PugElBCf4PFpxhErSzU3/PY5sFL5Z6rfv4AbGAck= +github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e/go.mod h1:alcuEEnZsY1WQsagKhZDsoPCRoOijYqhZvPwLG0kzVs= github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= @@ -736,10 +743,22 @@ github.com/ktrysmt/go-bitbucket v0.9.55/go.mod h1:y5wrrDHCGUFAtuC43GyLBeFigq7rwr github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/labstack/echo/v4 v4.9.0 h1:wPOF1CE6gvt/kmbMR4dGzWvHMPT+sAEUJOwOTtvITVY= +github.com/labstack/echo/v4 v4.9.0/go.mod h1:xkCDAdFCIf8jsFQ5NnbK7oqaF/yU1A1X20Ltm0OvSks= +github.com/labstack/gommon v0.3.1 h1:OomWaJXm7xR6L1HmEtGyQf26TEn7V6X88mktX9kee9o= +github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM= github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 h1:SOEGU9fKiNWd/HOJuq6+3iTQz8KNCLtVX6idSoTLdUw= github.com/lann/builder v0.0.0-20180802200727-47ae307949d0/go.mod h1:dXGbAdH5GtBTC4WfIxhKZfyBF/HBFgRZSWwZ9g/He9o= github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 h1:P6pPBnrTSX3DEVR4fDembhRWSsG5rVo6hYhAB/ADZrk= github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0/go.mod h1:vmVJ0l/dxyfGW6FmdpVm2joNMFikkuWg0EoCKLGUMNw= +github.com/leaanthony/debme v1.2.1 h1:9Tgwf+kjcrbMQ4WnPcEIUcQuIZYqdWftzZkBr+i/oOc= +github.com/leaanthony/debme v1.2.1/go.mod h1:3V+sCm5tYAgQymvSOfYQ5Xx2JCr+OXiD9Jkw3otUjiA= +github.com/leaanthony/go-ansi-parser v1.0.1 h1:97v6c5kYppVsbScf4r/VZdXyQ21KQIfeQOk2DgKxGG4= +github.com/leaanthony/go-ansi-parser v1.0.1/go.mod h1:7arTzgVI47srICYhvgUV4CGd063sGEeoSlych5yeSPM= +github.com/leaanthony/gosod v1.0.3 h1:Fnt+/B6NjQOVuCWOKYRREZnjGyvg+mEhd1nkkA04aTQ= +github.com/leaanthony/gosod v1.0.3/go.mod h1:BJ2J+oHsQIyIQpnLPjnqFGTMnOZXDbvWtRCSG7jGxs4= +github.com/leaanthony/slicer v1.5.0 h1:aHYTN8xbCCLxJmkNKiLB6tgcMARl4eWmH9/F+S/0HtY= +github.com/leaanthony/slicer v1.5.0/go.mod h1:FwrApmf8gOrpzEWM2J/9Lh79tyq8KTX5AzRtwV7m4AY= github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= @@ -765,11 +784,13 @@ github.com/markbates/oncer v1.0.0 h1:E83IaVAHygyndzPimgUYJjbshhDTALZyXxvk9FOlQRY github.com/markbates/oncer v1.0.0/go.mod h1:Z59JA581E9GP6w96jai+TGqafHPW+cPfRxz2aSZ0mcI= github.com/markbates/safe v1.0.1 h1:yjZkbvRM6IzKj9tlu/zMJLS0n/V351OZWRnF3QfaUxI= github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= -github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A= github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= +github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= +github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= @@ -899,6 +920,8 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pluralsh/controller-reconcile-helper v0.0.4 h1:1o+7qYSyoeqKFjx+WgQTxDz4Q2VMpzprJIIKShxqG0E= github.com/pluralsh/controller-reconcile-helper v0.0.4/go.mod h1:AfY0gtteD6veBjmB6jiRx/aR4yevEf6K0M13/pGan/s= +github.com/pluralsh/gqlclient v1.3.11 h1:58vSsD4xur9isk4WncN9Q9CRENogSeUPv5sThRmpPQI= +github.com/pluralsh/gqlclient v1.3.11/go.mod h1:z1qHnvPeqIN/a+5OzFs40e6HI6tDxzh1+yJuEpvqGy4= github.com/pluralsh/gqlclient v1.3.14 h1:MX3odnIfPSYT9PysegKkC31w/Vn8PZhrT/rZXZck/yU= github.com/pluralsh/gqlclient v1.3.14/go.mod h1:z1qHnvPeqIN/a+5OzFs40e6HI6tDxzh1+yJuEpvqGy4= github.com/pluralsh/gqlclient v1.3.15 h1:QA6VEMDxeG0/e+qXvr7xgorHl45o4/Qg9CwsPyVn2gE= @@ -1043,6 +1066,8 @@ github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69 github.com/thoas/go-funk v0.9.2 h1:oKlNYv0AY5nyf9g+/GhMgS/UO2ces0QRdPKwkhY3VCk= github.com/thoas/go-funk v0.9.2/go.mod h1:+IWnUfUmFO1+WVYQWQtIJHeRRdaIyyYglZN7xzUPe4Q= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/tkrajina/go-reflector v0.5.5 h1:gwoQFNye30Kk7NrExj8zm3zFtrGPqOkzFMLuQZg1DtQ= +github.com/tkrajina/go-reflector v0.5.5/go.mod h1:ECbqLgccecY5kPmPmXg1MrHW585yMcDkVl6IvJe64T4= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= @@ -1052,12 +1077,20 @@ github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95 github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.10 h1:p8Fspmz3iTctJstry1PYS3HVdllxnEzTEsgIgtxTrCk= github.com/urfave/cli v1.22.10/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4= +github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= github.com/vektah/gqlparser/v2 v2.5.1 h1:ZGu+bquAY23jsxDRcYpWjttRZrUz07LbiY77gUOHcr4= github.com/vektah/gqlparser/v2 v2.5.1/go.mod h1:mPgqFBu/woKTVYWyNk8cO3kh4S/f4aRFZrvOnp3hmCs= github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= +github.com/wailsapp/mimetype v1.4.1 h1:pQN9ycO7uo4vsUUuPeHEYoUkLVkaRntMnHJxVwYhwHs= +github.com/wailsapp/mimetype v1.4.1/go.mod h1:9aV5k31bBOv5z6u+QP8TltzvNGJPmNJD4XlAL3U+j3o= +github.com/wailsapp/wails/v2 v2.4.1 h1:Ns7MOKWQM6l0ttBxpd5VcgYrH+GNPOnoDfnsBpbDnzM= +github.com/wailsapp/wails/v2 v2.4.1/go.mod h1:jbOZbcr/zm79PxXxAjP8UoVlDd9wLW3uDs+isIthDfs= github.com/xanzy/go-gitlab v0.70.0 h1:zJ8WukB5psMcfmQctHsiG/PyqLqLIdD05wCLwdPNEBg= github.com/xanzy/go-gitlab v0.70.0/go.mod h1:o4yExCtdaqlM8YGdDJWuZoBmfxBsmA9TPEjs9mx1UO4= github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= @@ -1248,6 +1281,7 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -1255,8 +1289,8 @@ golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= -golang.org/x/net v0.6.0 h1:L4ZwwTvKW9gr0ZMS1yrHD9GZhIuVjOBBnaKH+SPQK0Q= -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/oauth2 v0.0.0-20180227000427-d7d64896b5ff/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1342,6 +1376,7 @@ golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200810151505-1b9f1253b3ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200828194041-157a740278f4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1369,6 +1404,7 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1385,8 +1421,8 @@ golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9sn golang.org/x/term v0.0.0-20210503060354-a79de5458b56/go.mod h1:tfny5GFUkzUvx4ps4ajbZsCe5lw1metzhBm9T3x7oIY= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= -golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/hack/include/build.mk b/hack/include/build.mk new file mode 100644 index 00000000..e9a43fe6 --- /dev/null +++ b/hack/include/build.mk @@ -0,0 +1,9 @@ +# BUILDOS is the host machine OS +BUILDOS ?= $(shell uname -s) + +# CGO_LDFLAGS is required when building on darwin +CGO_LDFLAGS ?= "" + +ifeq ($(BUILDOS),Darwin) + CGO_LDFLAGS="-framework UniformTypeIdentifiers" +endif diff --git a/hack/include/help.mk b/hack/include/help.mk new file mode 100644 index 00000000..8f6b9396 --- /dev/null +++ b/hack/include/help.mk @@ -0,0 +1,2 @@ +help: + @perl -nle'print $& if m{^[a-zA-Z_-]+:.*?## .*$$}' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' diff --git a/hack/include/tools.mk b/hack/include/tools.mk new file mode 100644 index 00000000..df9a8a6a --- /dev/null +++ b/hack/include/tools.mk @@ -0,0 +1,33 @@ +WAILS_BINARY := $(shell which wails) +WAILS_VERSION := v2.4.1 + +GO_BINARY := $(shell which go) +GO_MAJOR_VERSION = $(shell go version | cut -c 14- | cut -d' ' -f1 | cut -d'.' -f1) +GO_MINOR_VERSION = $(shell go version | cut -c 14- | cut -d' ' -f1 | cut -d'.' -f2) +MIN_GO_MAJOR_VERSION = 1 +MIN_GO_MINOR_VERSION = 19 + +.PHONY: install-tools +install-tools: --ensure-go --ensure-wails ## Install required dependencies to run make targets + +.PHONY: --ensure-go +--ensure-go: +ifndef GO_BINARY + $(error "Cannot find go binary") +endif + @if [ $(GO_MAJOR_VERSION) -gt $(MIN_GO_MAJOR_VERSION) ]; then \ + exit 0 ;\ + elif [ $(GO_MAJOR_VERSION) -lt $(MIN_GO_MAJOR_VERSION) ]; then \ + exit 1; \ + elif [ $(GO_MINOR_VERSION) -lt $(MIN_GO_MINOR_VERSION) ] ; then \ + exit 1; \ + fi + +.PHONY: --ensure-wails +--ensure-wails: +ifndef WAILS_BINARY + @echo "[tools] downloading wails..." + @go install github.com/wailsapp/wails/v2/cmd/wails@$(WAILS_VERSION) +else + @echo "[tools] wails already exists" +endif \ No newline at end of file diff --git a/main.go b/main.go new file mode 100644 index 00000000..b7118394 --- /dev/null +++ b/main.go @@ -0,0 +1,27 @@ +package main + +import ( + "log" + "math/rand" + "os" + "time" + + "github.com/fatih/color" + + "github.com/pluralsh/plural/cmd/plural" +) + +func main() { + rand.Seed(time.Now().UnixNano()) + // init Kube when k8s config exists + p := &plural.Plural{} + app := plural.CreateNewApp(p) + if os.Getenv("ENABLE_COLOR") != "" { + color.NoColor = false + } + + err := app.Run(os.Args) + if err != nil { + log.Fatal(err) + } +} diff --git a/pkg/api/client.go b/pkg/api/client.go index 3bb99e8d..6c6dca7a 100644 --- a/pkg/api/client.go +++ b/pkg/api/client.go @@ -8,6 +8,7 @@ import ( rawclient "github.com/Yamashou/gqlgenc/client" "github.com/pkg/errors" "github.com/pluralsh/gqlclient" + "github.com/pluralsh/plural/pkg/config" "github.com/pluralsh/plural/pkg/utils" ) @@ -62,6 +63,7 @@ type Client interface { ResetInstallations() (int, error) CreateRecipe(repoName string, attrs gqlclient.RecipeAttributes) (string, error) GetRecipe(repo string, name string) (*Recipe, error) + GetRecipeByID(id string) (*Recipe, error) ListRecipes(repo string, provider string) ([]*Recipe, error) InstallRecipe(id string) error GetShell() (CloudShell, error) diff --git a/pkg/api/recipes.go b/pkg/api/recipes.go index 09e49077..c29d7391 100644 --- a/pkg/api/recipes.go +++ b/pkg/api/recipes.go @@ -176,6 +176,92 @@ func (client *client) GetRecipe(repo, name string) (*Recipe, error) { return r, nil } +func (client *client) GetRecipeByID(id string) (*Recipe, error) { + resp, err := client.pluralClient.GetRecipeByID(client.ctx, &id) + if err != nil { + return nil, err + } + + r := &Recipe{ + Id: resp.Recipe.ID, + Name: resp.Recipe.Name, + Provider: string(*resp.Recipe.Provider), + Description: utils.ConvertStringPointer(resp.Recipe.Description), + Tests: []*RecipeTest{}, + RecipeSections: []*RecipeSection{}, + RecipeDependencies: []*Recipe{}, + } + if resp.Recipe.OidcSettings != nil { + r.OidcSettings = &OIDCSettings{ + DomainKey: utils.ConvertStringPointer(resp.Recipe.OidcSettings.DomainKey), + UriFormat: utils.ConvertStringPointer(resp.Recipe.OidcSettings.URIFormat), + UriFormats: utils.ConvertStringArrayPointer(resp.Recipe.OidcSettings.URIFormats), + AuthMethod: string(resp.Recipe.OidcSettings.AuthMethod), + } + if resp.Recipe.OidcSettings.Subdomain != nil { + r.OidcSettings.Subdomain = *resp.Recipe.OidcSettings.Subdomain + } + } + if resp.Recipe.Repository != nil { + r.Repository = &Repository{ + Id: resp.Recipe.Repository.ID, + Name: resp.Recipe.Repository.Name, + } + } + if resp.Recipe.Restricted != nil { + r.Restricted = *resp.Recipe.Restricted + } + + for _, dep := range resp.Recipe.RecipeDependencies { + r.RecipeDependencies = append(r.RecipeDependencies, convertRecipe(dep)) + } + + for _, section := range resp.Recipe.RecipeSections { + rs := &RecipeSection{ + Id: fmt.Sprint(section.Index), + Repository: &Repository{ + Id: section.Repository.ID, + Name: section.Repository.Name, + Description: utils.ConvertStringPointer(section.Repository.Description), + Icon: utils.ConvertStringPointer(section.Repository.Icon), + DarkIcon: utils.ConvertStringPointer(section.Repository.DarkIcon), + Notes: utils.ConvertStringPointer(section.Repository.Notes), + }, + RecipeItems: []*RecipeItem{}, + Configuration: []*ConfigurationItem{}, + } + for _, conf := range section.Configuration { + rs.Configuration = append(rs.Configuration, convertConfigurationItem(conf)) + } + for _, recipeItem := range section.RecipeItems { + rs.RecipeItems = append(rs.RecipeItems, convertRecipeItem(recipeItem)) + } + + r.RecipeSections = append(r.RecipeSections, rs) + + } + + for _, test := range resp.Recipe.Tests { + t := &RecipeTest{ + Name: test.Name, + Type: string(test.Type), + Message: utils.ConvertStringPointer(test.Message), + Args: []*TestArgument{}, + } + for _, arg := range test.Args { + t.Args = append(t.Args, &TestArgument{ + Name: arg.Name, + Repo: arg.Repo, + Key: arg.Key, + }) + } + + r.Tests = append(r.Tests, t) + } + + return r, nil +} + func convertRecipeItem(item *gqlclient.RecipeItemFragment) *RecipeItem { ri := &RecipeItem{ Id: utils.ConvertStringPointer(item.ID), diff --git a/pkg/bundle/installer.go b/pkg/bundle/installer.go index a5560f0d..42d425c4 100644 --- a/pkg/bundle/installer.go +++ b/pkg/bundle/installer.go @@ -5,6 +5,7 @@ import ( "os" "github.com/inancgumus/screen" + "github.com/pluralsh/plural/pkg/api" "github.com/pluralsh/plural/pkg/bundle/tests" "github.com/pluralsh/plural/pkg/manifest" @@ -86,13 +87,13 @@ func doInstall(client api.Client, recipe *api.Recipe, repo, name string, refresh } confirm := false - if err := configureOidc(repo, client, recipe, context.Configuration[repo], &confirm); err != nil { + if err := ConfigureOidc(repo, client, recipe, context.Configuration[repo], &confirm); err != nil { return err } for _, r := range recipe.RecipeDependencies { repo := r.Repository.Name - if err := configureOidc(repo, client, r, context.Configuration[repo], &confirm); err != nil { + if err := ConfigureOidc(repo, client, r, context.Configuration[repo], &confirm); err != nil { return err } } diff --git a/pkg/bundle/oidc.go b/pkg/bundle/oidc.go index f4e8a913..d23d3d48 100644 --- a/pkg/bundle/oidc.go +++ b/pkg/bundle/oidc.go @@ -5,6 +5,7 @@ import ( "strings" "github.com/AlecAivazis/survey/v2" + "github.com/pluralsh/plural/pkg/api" "github.com/pluralsh/plural/pkg/manifest" "github.com/pluralsh/plural/pkg/utils" @@ -12,7 +13,7 @@ import ( var oidcConfirmed bool -func configureOidc(repo string, client api.Client, recipe *api.Recipe, ctx map[string]interface{}, confirm *bool) error { +func ConfigureOidc(repo string, client api.Client, recipe *api.Recipe, ctx map[string]interface{}, confirm *bool) error { if recipe.OidcSettings == nil { return nil } diff --git a/pkg/manifest/context.go b/pkg/manifest/context.go index e882b999..42e2e42d 100644 --- a/pkg/manifest/context.go +++ b/pkg/manifest/context.go @@ -5,13 +5,15 @@ import ( "os" "path/filepath" - "github.com/pluralsh/plural/pkg/api" + jsoniter "github.com/json-iterator/go" "gopkg.in/yaml.v2" + + "github.com/pluralsh/plural/pkg/api" ) type Bundle struct { - Repository string - Name string + Repository string `json:"repository"` + Name string `json:"name"` } type SMTP struct { @@ -38,6 +40,28 @@ type Context struct { Configuration map[string]map[string]interface{} } +func (this *Context) MarshalJSON() ([]byte, error) { + json := jsoniter.ConfigCompatibleWithStandardLibrary + + return json.Marshal(&struct { + Bundles []*Bundle `json:"bundles"` + Buckets []string `json:"buckets"` + Domains []string `json:"domains"` + Protect []string `yaml:"protect,omitempty" json:"protect,omitempty"` + SMTP *SMTP `yaml:"smtp,omitempty" json:"smtp"` + Globals *Globals `yaml:"globals,omitempty" json:"globals,omitempty"` + Configuration map[string]map[string]interface{} `json:"configuration"` + }{ + Bundles: this.Bundles, + Buckets: this.Buckets, + Domains: this.Domains, + Protect: this.Protect, + SMTP: this.SMTP, + Globals: this.Globals, + Configuration: this.Configuration, + }) +} + type VersionedContext struct { ApiVersion string `yaml:"apiVersion"` Kind string `yaml:"kind"` @@ -114,8 +138,8 @@ func (c *Context) HasBucket(bucket string) bool { return false } -func (c *Context) AddDomain(bucket string) { - c.Domains = append(c.Domains, bucket) +func (c *Context) AddDomain(domain string) { + c.Domains = append(c.Domains, domain) } func (c *Context) Protected(name string) bool { diff --git a/pkg/manifest/types.go b/pkg/manifest/types.go index 0b521950..8bc5443b 100644 --- a/pkg/manifest/types.go +++ b/pkg/manifest/types.go @@ -1,5 +1,7 @@ package manifest +import jsoniter "github.com/json-iterator/go" + type ChartManifest struct { Id string Name string @@ -44,8 +46,8 @@ type Owner struct { } type NetworkConfig struct { - Subdomain string - PluralDns bool + Subdomain string `json:"subdomain"` + PluralDns bool `json:"pluralDns"` } type ProjectManifest struct { @@ -60,6 +62,32 @@ type ProjectManifest struct { Context map[string]interface{} } +func (this *ProjectManifest) MarshalJSON() ([]byte, error) { + json := jsoniter.ConfigCompatibleWithStandardLibrary + + return json.Marshal(&struct { + Cluster string `json:"cluster"` + Bucket string `json:"bucket"` + Project string `json:"project"` + Provider string `json:"provider"` + Region string `json:"region"` + Owner *Owner `json:"owner"` + Network *NetworkConfig `json:"network"` + BucketPrefix string `yaml:"bucketPrefix" json:"bucketPrefix"` + Context map[string]interface{} `json:"context"` + }{ + Cluster: this.Cluster, + Bucket: this.Bucket, + Project: this.Project, + Provider: this.Provider, + Region: this.Region, + Owner: this.Owner, + Network: this.Network, + BucketPrefix: this.BucketPrefix, + Context: this.Context, + }) +} + type VersionedManifest struct { ApiVersion string `yaml:"apiVersion"` Kind string diff --git a/pkg/server/context_test.go b/pkg/server/context_test.go index a3577939..c0337b6e 100644 --- a/pkg/server/context_test.go +++ b/pkg/server/context_test.go @@ -9,9 +9,10 @@ import ( "strings" "testing" + "github.com/stretchr/testify/assert" + "github.com/pluralsh/plural/pkg/manifest" "github.com/pluralsh/plural/pkg/server" - "github.com/stretchr/testify/assert" ) func TestContextConfiguration(t *testing.T) { @@ -25,19 +26,19 @@ func TestContextConfiguration(t *testing.T) { name: `update configuration console email address`, body: `{"configuration": {"console":{"email":"newEmail@plural.sh"}}}`, expectedHTTPStatus: http.StatusOK, - expectedResponse: `{"Bundles":[],"Buckets":[],"Domains":[],"SMTP":null,"Configuration":{"console":{"email":"newEmail@plural.sh"},"minio":{"host":"minio.plural.sh","url":"https://test.plural.sh"}}}`, + expectedResponse: `{"bundles":[],"buckets":[],"domains":[],"smtp":null,"configuration":{"console":{"email":"newEmail@plural.sh"},"minio":{"host":"minio.plural.sh","url":"https://test.plural.sh"}}}`, }, { name: `add new entry to configuration`, body: `{"configuration": {"newEntry":{"test":"test"}}}`, expectedHTTPStatus: http.StatusOK, - expectedResponse: `{"Bundles":[],"Buckets":[],"Domains":[],"SMTP":null,"Configuration":{"console":{"email":"test@plural.sh","git_user":"test"},"minio":{"host":"minio.plural.sh","url":"https://test.plural.sh"},"newEntry":{"test":"test"}}}`, + expectedResponse: `{"bundles":[],"buckets":[],"domains":[],"smtp":null,"configuration":{"console":{"email":"test@plural.sh","git_user":"test"},"minio":{"host":"minio.plural.sh","url":"https://test.plural.sh"},"newEntry":{"test":"test"}}}`, }, { name: `remove minio url from configuration`, body: `{"configuration": {"console":{"email":"test@plural.sh","git_user":"test"},"minio":{"host":"minio.plural.sh"}}}`, expectedHTTPStatus: http.StatusOK, - expectedResponse: `{"Bundles":[],"Buckets":[],"Domains":[],"SMTP":null,"Configuration":{"console":{"email":"test@plural.sh","git_user":"test"},"minio":{"host":"minio.plural.sh"}}}`, + expectedResponse: `{"bundles":[],"buckets":[],"domains":[],"smtp":null,"configuration":{"console":{"email":"test@plural.sh","git_user":"test"},"minio":{"host":"minio.plural.sh"}}}`, }, } for _, test := range tests { diff --git a/pkg/test/mocks/Client.go b/pkg/test/mocks/Client.go index 00085165..48691bd4 100644 --- a/pkg/test/mocks/Client.go +++ b/pkg/test/mocks/Client.go @@ -649,6 +649,32 @@ func (_m *Client) GetRecipe(repo string, name string) (*api.Recipe, error) { return r0, r1 } +// GetRecipeByID provides a mock function with given fields: id +func (_m *Client) GetRecipeByID(id string) (*api.Recipe, error) { + ret := _m.Called(id) + + var r0 *api.Recipe + var r1 error + if rf, ok := ret.Get(0).(func(string) (*api.Recipe, error)); ok { + return rf(id) + } + if rf, ok := ret.Get(0).(func(string) *api.Recipe); ok { + r0 = rf(id) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*api.Recipe) + } + } + + if rf, ok := ret.Get(1).(func(string) error); ok { + r1 = rf(id) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + // GetRepository provides a mock function with given fields: repo func (_m *Client) GetRepository(repo string) (*api.Repository, error) { ret := _m.Called(repo) diff --git a/pkg/ui/bindings.go b/pkg/ui/bindings.go new file mode 100644 index 00000000..223780f0 --- /dev/null +++ b/pkg/ui/bindings.go @@ -0,0 +1,16 @@ +//go:build generate + +package ui + +import ( + "log" +) + +// Used to generate frontend bindings used to call backend. +// Only needed when 'generate' tag is provided during the build. +func init() { + err := Run(nil, nil) + if err != nil { + log.Fatal(err) + } +} diff --git a/pkg/ui/client.go b/pkg/ui/client.go new file mode 100644 index 00000000..b574ebbd --- /dev/null +++ b/pkg/ui/client.go @@ -0,0 +1,188 @@ +//go:build ui || generate + +package ui + +import ( + "encoding/json" + "fmt" + + "github.com/pluralsh/polly/algorithms" + "github.com/urfave/cli" + "golang.org/x/exp/maps" + + "github.com/pluralsh/plural/pkg/api" + "github.com/pluralsh/plural/pkg/bundle" + "github.com/pluralsh/plural/pkg/config" + "github.com/pluralsh/plural/pkg/manifest" +) + +type Application struct { + Key string `json:"key"` + Label string `json:"label"` + IsDependency bool `json:"isDependency"` + // DependencyOf is a set of application names that this app is a dependency of. + DependencyOf map[string]interface{} `json:"dependencyOf"` + Data map[string]interface{} `json:"data"` +} + +func (this *Application) UnmarshalJSON(data []byte) error { + type Alias struct { + Key string `json:"key"` + Label string `json:"label"` + IsDependency bool `json:"isDependency"` + // Since Set does not exist in Go, we are passing array + // from the frontend and converting it to a map. + DependencyOf []string `json:"dependencyOf"` + Data map[string]interface{} `json:"data"` + } + alias := &Alias{} + if err := json.Unmarshal(data, alias); err != nil { + return fmt.Errorf("error during Application.UnmarshalJSON: %v\n", err) + } + + dependencyOf := map[string]interface{}{} + for _, appName := range alias.DependencyOf { + dependencyOf[appName] = struct{}{} + } + + *this = Application{ + Key: alias.Key, + Label: alias.Label, + IsDependency: alias.IsDependency, + DependencyOf: dependencyOf, + Data: alias.Data, + } + + return nil +} + +// Client struct used by the frontend to access and update backend data. +type Client struct { + ctx *cli.Context + client api.Client +} + +func (this *Client) Token() string { + conf := config.Read() + + return conf.Token +} + +func (this *Client) Project() *manifest.ProjectManifest { + project, err := manifest.FetchProject() + if err != nil { + return nil + } + + return project +} + +func (this *Client) Context() *manifest.Context { + context, err := manifest.FetchContext() + if err != nil { + return nil + } + + return context +} + +func (this *Client) Install(applications []Application, domains, buckets []string) error { + path := manifest.ContextPath() + context, err := manifest.ReadContext(path) + if err != nil { + context = manifest.NewContext() + } + + this.addDomains(context, domains) + this.addBuckets(context, buckets) + + installableApplications := algorithms.Filter(applications, func(app Application) bool { + return !app.IsDependency + }) + + dependencies := algorithms.Filter(applications, func(app Application) bool { + return app.IsDependency + }) + + for _, dep := range dependencies { + if err = this.doInstall(dep, context); err != nil { + return err + } + } + + for _, app := range installableApplications { + if err = this.doInstall(app, context); err != nil { + return err + } + } + + // Write to context.yaml only if there were no errors + err = context.Write(path) + return err +} + +func (this *Client) doInstall(application Application, context *manifest.Context) error { + recipeID := application.Data["id"].(string) + oidc := application.Data["oidc"].(bool) + configuration := application.Data["context"].(map[string]interface{}) + repoName := application.Label + mergedConfiguration, exists := context.Configuration[repoName] + if !exists { + mergedConfiguration = map[string]interface{}{} + } + + recipe, err := this.client.GetRecipeByID(recipeID) + if err != nil { + return api.GetErrorResponse(err, "GetRecipeByID") + } + + // Merge incoming configuration with existing one and update context + maps.Copy(mergedConfiguration, configuration) + context.Configuration[repoName] = mergedConfiguration + + // Non-dependency apps need some additional handling + if !application.IsDependency { + // Add installed app to the context + context.AddBundle(repoName, recipe.Name) + + // Install app recipe + if err := this.client.InstallRecipe(recipeID); err != nil { + return fmt.Errorf("error: %w", api.GetErrorResponse(err, "InstallRecipe")) + } + } + + // Configure OIDC if enabled + if oidc { + confirm := false + err = bundle.ConfigureOidc(repoName, this.client, recipe, configuration, &confirm) + if err != nil { + return err + } + } + + return nil +} + +func (this *Client) addDomains(context *manifest.Context, domains []string) { + for _, domain := range domains { + if !context.HasDomain(domain) { + context.AddDomain(domain) + } + } +} + +func (this *Client) addBuckets(context *manifest.Context, buckets []string) { + for _, bucket := range buckets { + if !context.HasBucket(bucket) { + context.AddBucket(bucket) + } + } +} + +// NewClient creates a new proxy client struct +func NewClient(client api.Client, ctx *cli.Context) *Client { + return &Client{ + ctx: ctx, + client: client, + } +} diff --git a/pkg/ui/ui.go b/pkg/ui/ui.go new file mode 100644 index 00000000..131d5d7a --- /dev/null +++ b/pkg/ui/ui.go @@ -0,0 +1,41 @@ +//go:build ui || generate + +package ui + +import ( + "embed" + + "github.com/urfave/cli" + "github.com/wailsapp/wails/v2" + "github.com/wailsapp/wails/v2/pkg/options" + "github.com/wailsapp/wails/v2/pkg/options/assetserver" + + "github.com/pluralsh/plural/pkg/api" +) + +//go:embed all:web/dist +var assets embed.FS + +func Run(c api.Client, ctx *cli.Context) error { + // Create an instance of the main window structure + window := NewWindow() + client := NewClient(c, ctx) + + // Create application with options + err := wails.Run(&options.App{ + Title: "Plural", + Frameless: true, + Width: window.width(), + Height: window.height(), + AssetServer: &assetserver.Options{ + Assets: assets, + }, + OnStartup: window.startup, + Bind: []interface{}{ + window, + client, + }, + }) + + return err +} diff --git a/pkg/ui/web/.eslintrc b/pkg/ui/web/.eslintrc new file mode 100644 index 00000000..65710b15 --- /dev/null +++ b/pkg/ui/web/.eslintrc @@ -0,0 +1,3 @@ +extends: ["@pluralsh/eslint-config-typescript"] +globals: + JSX: true diff --git a/pkg/ui/web/.gitignore b/pkg/ui/web/.gitignore new file mode 100644 index 00000000..704b8167 --- /dev/null +++ b/pkg/ui/web/.gitignore @@ -0,0 +1,9 @@ +# dependencies +/node_modules +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions diff --git a/pkg/ui/web/.graphqlconfig b/pkg/ui/web/.graphqlconfig new file mode 100644 index 00000000..4543260f --- /dev/null +++ b/pkg/ui/web/.graphqlconfig @@ -0,0 +1,15 @@ +{ + "name": "Plural API", + "schemaPath": "schema/schema.graphql", + "extensions": { + "endpoints": { + "Default GraphQL Endpoint": { + "url": "https://app.plural.sh/graphiql", + "headers": { + "user-agent": "JS GraphQL" + }, + "introspect": true + } + } + } +} \ No newline at end of file diff --git a/pkg/ui/web/.yarn/releases/yarn-3.4.1.cjs b/pkg/ui/web/.yarn/releases/yarn-3.4.1.cjs new file mode 100755 index 00000000..2bdb752d --- /dev/null +++ b/pkg/ui/web/.yarn/releases/yarn-3.4.1.cjs @@ -0,0 +1,873 @@ +#!/usr/bin/env node +/* eslint-disable */ +//prettier-ignore +(()=>{var Mue=Object.create;var Wb=Object.defineProperty;var Kue=Object.getOwnPropertyDescriptor;var Uue=Object.getOwnPropertyNames;var Hue=Object.getPrototypeOf,Gue=Object.prototype.hasOwnProperty;var J=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+r+'" is not supported')});var Yue=(r,e)=>()=>(r&&(e=r(r=0)),e);var w=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),ut=(r,e)=>{for(var t in e)Wb(r,t,{get:e[t],enumerable:!0})},jue=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Uue(e))!Gue.call(r,n)&&n!==t&&Wb(r,n,{get:()=>e[n],enumerable:!(i=Kue(e,n))||i.enumerable});return r};var Pe=(r,e,t)=>(t=r!=null?Mue(Hue(r)):{},jue(e||!r||!r.__esModule?Wb(t,"default",{value:r,enumerable:!0}):t,r));var _1=w((O7e,X1)=>{X1.exports=V1;V1.sync=uge;var W1=J("fs");function cge(r,e){var t=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!t||(t=t.split(";"),t.indexOf("")!==-1))return!0;for(var i=0;i{tK.exports=$1;$1.sync=gge;var Z1=J("fs");function $1(r,e,t){Z1.stat(r,function(i,n){t(i,i?!1:eK(n,e))})}function gge(r,e){return eK(Z1.statSync(r),e)}function eK(r,e){return r.isFile()&&fge(r,e)}function fge(r,e){var t=r.mode,i=r.uid,n=r.gid,s=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),o=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt("100",8),l=parseInt("010",8),c=parseInt("001",8),u=a|l,g=t&c||t&l&&n===o||t&a&&i===s||t&u&&s===0;return g}});var nK=w((U7e,iK)=>{var K7e=J("fs"),_E;process.platform==="win32"||global.TESTING_WINDOWS?_E=_1():_E=rK();iK.exports=uS;uS.sync=hge;function uS(r,e,t){if(typeof e=="function"&&(t=e,e={}),!t){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){uS(r,e||{},function(s,o){s?n(s):i(o)})})}_E(r,e||{},function(i,n){i&&(i.code==="EACCES"||e&&e.ignoreErrors)&&(i=null,n=!1),t(i,n)})}function hge(r,e){try{return _E.sync(r,e||{})}catch(t){if(e&&e.ignoreErrors||t.code==="EACCES")return!1;throw t}}});var uK=w((H7e,cK)=>{var Ig=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",sK=J("path"),pge=Ig?";":":",oK=nK(),aK=r=>Object.assign(new Error(`not found: ${r}`),{code:"ENOENT"}),AK=(r,e)=>{let t=e.colon||pge,i=r.match(/\//)||Ig&&r.match(/\\/)?[""]:[...Ig?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(t)],n=Ig?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=Ig?n.split(t):[""];return Ig&&r.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},lK=(r,e,t)=>{typeof e=="function"&&(t=e,e={}),e||(e={});let{pathEnv:i,pathExt:n,pathExtExe:s}=AK(r,e),o=[],a=c=>new Promise((u,g)=>{if(c===i.length)return e.all&&o.length?u(o):g(aK(r));let f=i[c],h=/^".*"$/.test(f)?f.slice(1,-1):f,p=sK.join(h,r),C=!h&&/^\.[\\\/]/.test(r)?r.slice(0,2)+p:p;u(l(C,c,0))}),l=(c,u,g)=>new Promise((f,h)=>{if(g===n.length)return f(a(u+1));let p=n[g];oK(c+p,{pathExt:s},(C,y)=>{if(!C&&y)if(e.all)o.push(c+p);else return f(c+p);return f(l(c,u,g+1))})});return t?a(0).then(c=>t(null,c),t):a(0)},dge=(r,e)=>{e=e||{};let{pathEnv:t,pathExt:i,pathExtExe:n}=AK(r,e),s=[];for(let o=0;o{"use strict";var gK=(r={})=>{let e=r.env||process.env;return(r.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(i=>i.toUpperCase()==="PATH")||"Path"};gS.exports=gK;gS.exports.default=gK});var CK=w((Y7e,dK)=>{"use strict";var hK=J("path"),Cge=uK(),mge=fK();function pK(r,e){let t=r.options.env||process.env,i=process.cwd(),n=r.options.cwd!=null,s=n&&process.chdir!==void 0&&!process.chdir.disabled;if(s)try{process.chdir(r.options.cwd)}catch{}let o;try{o=Cge.sync(r.command,{path:t[mge({env:t})],pathExt:e?hK.delimiter:void 0})}catch{}finally{s&&process.chdir(i)}return o&&(o=hK.resolve(n?r.options.cwd:"",o)),o}function Ege(r){return pK(r)||pK(r,!0)}dK.exports=Ege});var mK=w((j7e,hS)=>{"use strict";var fS=/([()\][%!^"`<>&|;, *?])/g;function Ige(r){return r=r.replace(fS,"^$1"),r}function yge(r,e){return r=`${r}`,r=r.replace(/(\\*)"/g,'$1$1\\"'),r=r.replace(/(\\*)$/,"$1$1"),r=`"${r}"`,r=r.replace(fS,"^$1"),e&&(r=r.replace(fS,"^$1")),r}hS.exports.command=Ige;hS.exports.argument=yge});var IK=w((q7e,EK)=>{"use strict";EK.exports=/^#!(.*)/});var wK=w((J7e,yK)=>{"use strict";var wge=IK();yK.exports=(r="")=>{let e=r.match(wge);if(!e)return null;let[t,i]=e[0].replace(/#! ?/,"").split(" "),n=t.split("/").pop();return n==="env"?i:i?`${n} ${i}`:n}});var QK=w((W7e,BK)=>{"use strict";var pS=J("fs"),Bge=wK();function Qge(r){let t=Buffer.alloc(150),i;try{i=pS.openSync(r,"r"),pS.readSync(i,t,0,150,0),pS.closeSync(i)}catch{}return Bge(t.toString())}BK.exports=Qge});var xK=w((z7e,vK)=>{"use strict";var bge=J("path"),bK=CK(),SK=mK(),Sge=QK(),vge=process.platform==="win32",xge=/\.(?:com|exe)$/i,Pge=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function Dge(r){r.file=bK(r);let e=r.file&&Sge(r.file);return e?(r.args.unshift(r.file),r.command=e,bK(r)):r.file}function kge(r){if(!vge)return r;let e=Dge(r),t=!xge.test(e);if(r.options.forceShell||t){let i=Pge.test(e);r.command=bge.normalize(r.command),r.command=SK.command(r.command),r.args=r.args.map(s=>SK.argument(s,i));let n=[r.command].concat(r.args).join(" ");r.args=["/d","/s","/c",`"${n}"`],r.command=process.env.comspec||"cmd.exe",r.options.windowsVerbatimArguments=!0}return r}function Rge(r,e,t){e&&!Array.isArray(e)&&(t=e,e=null),e=e?e.slice(0):[],t=Object.assign({},t);let i={command:r,args:e,options:t,file:void 0,original:{command:r,args:e}};return t.shell?i:kge(i)}vK.exports=Rge});var kK=w((V7e,DK)=>{"use strict";var dS=process.platform==="win32";function CS(r,e){return Object.assign(new Error(`${e} ${r.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${r.command}`,path:r.command,spawnargs:r.args})}function Fge(r,e){if(!dS)return;let t=r.emit;r.emit=function(i,n){if(i==="exit"){let s=PK(n,e,"spawn");if(s)return t.call(r,"error",s)}return t.apply(r,arguments)}}function PK(r,e){return dS&&r===1&&!e.file?CS(e.original,"spawn"):null}function Nge(r,e){return dS&&r===1&&!e.file?CS(e.original,"spawnSync"):null}DK.exports={hookChildProcess:Fge,verifyENOENT:PK,verifyENOENTSync:Nge,notFoundError:CS}});var IS=w((X7e,yg)=>{"use strict";var RK=J("child_process"),mS=xK(),ES=kK();function FK(r,e,t){let i=mS(r,e,t),n=RK.spawn(i.command,i.args,i.options);return ES.hookChildProcess(n,i),n}function Lge(r,e,t){let i=mS(r,e,t),n=RK.spawnSync(i.command,i.args,i.options);return n.error=n.error||ES.verifyENOENTSync(n.status,i),n}yg.exports=FK;yg.exports.spawn=FK;yg.exports.sync=Lge;yg.exports._parse=mS;yg.exports._enoent=ES});var LK=w((_7e,NK)=>{"use strict";function Tge(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function Ml(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Ml)}Tge(Ml,Error);Ml.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g>",ie=me(">>",!1),de=">&",tt=me(">&",!1),Pt=">",It=me(">",!1),Or="<<<",ii=me("<<<",!1),gi="<&",hr=me("<&",!1),fi="<",ni=me("<",!1),Ls=function(m){return{type:"argument",segments:[].concat(...m)}},pr=function(m){return m},Ei="$'",_n=me("$'",!1),oa="'",aA=me("'",!1),eg=function(m){return[{type:"text",text:m}]},Zn='""',AA=me('""',!1),aa=function(){return{type:"text",text:""}},up='"',lA=me('"',!1),cA=function(m){return m},wr=function(m){return{type:"arithmetic",arithmetic:m,quoted:!0}},wl=function(m){return{type:"shell",shell:m,quoted:!0}},tg=function(m){return{type:"variable",...m,quoted:!0}},po=function(m){return{type:"text",text:m}},rg=function(m){return{type:"arithmetic",arithmetic:m,quoted:!1}},gp=function(m){return{type:"shell",shell:m,quoted:!1}},fp=function(m){return{type:"variable",...m,quoted:!1}},vr=function(m){return{type:"glob",pattern:m}},se=/^[^']/,Co=Je(["'"],!0,!1),Dn=function(m){return m.join("")},ig=/^[^$"]/,Qt=Je(["$",'"'],!0,!1),Bl=`\\ +`,kn=me(`\\ +`,!1),$n=function(){return""},es="\\",gt=me("\\",!1),mo=/^[\\$"`]/,At=Je(["\\","$",'"',"`"],!1,!1),an=function(m){return m},S="\\a",Tt=me("\\a",!1),ng=function(){return"a"},Ql="\\b",hp=me("\\b",!1),pp=function(){return"\b"},dp=/^[Ee]/,Cp=Je(["E","e"],!1,!1),mp=function(){return"\x1B"},G="\\f",yt=me("\\f",!1),uA=function(){return"\f"},ji="\\n",bl=me("\\n",!1),Xe=function(){return` +`},Aa="\\r",sg=me("\\r",!1),bE=function(){return"\r"},Ep="\\t",SE=me("\\t",!1),ar=function(){return" "},Rn="\\v",Sl=me("\\v",!1),Ip=function(){return"\v"},Ts=/^[\\'"?]/,la=Je(["\\","'",'"',"?"],!1,!1),An=function(m){return String.fromCharCode(parseInt(m,16))},Te="\\x",og=me("\\x",!1),vl="\\u",Os=me("\\u",!1),xl="\\U",gA=me("\\U",!1),ag=function(m){return String.fromCodePoint(parseInt(m,16))},Ag=/^[0-7]/,ca=Je([["0","7"]],!1,!1),ua=/^[0-9a-fA-f]/,rt=Je([["0","9"],["a","f"],["A","f"]],!1,!1),Eo=nt(),fA="-",Pl=me("-",!1),Ms="+",Dl=me("+",!1),vE=".",yp=me(".",!1),lg=function(m,b,N){return{type:"number",value:(m==="-"?-1:1)*parseFloat(b.join("")+"."+N.join(""))}},wp=function(m,b){return{type:"number",value:(m==="-"?-1:1)*parseInt(b.join(""))}},xE=function(m){return{type:"variable",...m}},kl=function(m){return{type:"variable",name:m}},PE=function(m){return m},cg="*",hA=me("*",!1),Rr="/",DE=me("/",!1),Ks=function(m,b,N){return{type:b==="*"?"multiplication":"division",right:N}},Us=function(m,b){return b.reduce((N,U)=>({left:N,...U}),m)},ug=function(m,b,N){return{type:b==="+"?"addition":"subtraction",right:N}},pA="$((",R=me("$((",!1),q="))",Ce=me("))",!1),Ke=function(m){return m},Re="$(",ze=me("$(",!1),dt=function(m){return m},Ft="${",Fn=me("${",!1),Db=":-",$M=me(":-",!1),e1=function(m,b){return{name:m,defaultValue:b}},kb=":-}",t1=me(":-}",!1),r1=function(m){return{name:m,defaultValue:[]}},Rb=":+",i1=me(":+",!1),n1=function(m,b){return{name:m,alternativeValue:b}},Fb=":+}",s1=me(":+}",!1),o1=function(m){return{name:m,alternativeValue:[]}},Nb=function(m){return{name:m}},a1="$",A1=me("$",!1),l1=function(m){return e.isGlobPattern(m)},c1=function(m){return m},Lb=/^[a-zA-Z0-9_]/,Tb=Je([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),Ob=function(){return T()},Mb=/^[$@*?#a-zA-Z0-9_\-]/,Kb=Je(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),u1=/^[(){}<>$|&; \t"']/,gg=Je(["(",")","{","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),Ub=/^[<>&; \t"']/,Hb=Je(["<",">","&",";"," "," ",'"',"'"],!1,!1),kE=/^[ \t]/,RE=Je([" "," "],!1,!1),Q=0,Me=0,dA=[{line:1,column:1}],d=0,E=[],I=0,k;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function T(){return r.substring(Me,Q)}function _(){return Et(Me,Q)}function te(m,b){throw b=b!==void 0?b:Et(Me,Q),ki([lt(m)],r.substring(Me,Q),b)}function Be(m,b){throw b=b!==void 0?b:Et(Me,Q),Nn(m,b)}function me(m,b){return{type:"literal",text:m,ignoreCase:b}}function Je(m,b,N){return{type:"class",parts:m,inverted:b,ignoreCase:N}}function nt(){return{type:"any"}}function wt(){return{type:"end"}}function lt(m){return{type:"other",description:m}}function it(m){var b=dA[m],N;if(b)return b;for(N=m-1;!dA[N];)N--;for(b=dA[N],b={line:b.line,column:b.column};Nd&&(d=Q,E=[]),E.push(m))}function Nn(m,b){return new Ml(m,null,null,b)}function ki(m,b,N){return new Ml(Ml.buildMessage(m,b),m,b,N)}function CA(){var m,b;return m=Q,b=Mr(),b===t&&(b=null),b!==t&&(Me=m,b=s(b)),m=b,m}function Mr(){var m,b,N,U,ce;if(m=Q,b=Kr(),b!==t){for(N=[],U=He();U!==t;)N.push(U),U=He();N!==t?(U=ga(),U!==t?(ce=ts(),ce===t&&(ce=null),ce!==t?(Me=m,b=o(b,U,ce),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;if(m===t)if(m=Q,b=Kr(),b!==t){for(N=[],U=He();U!==t;)N.push(U),U=He();N!==t?(U=ga(),U===t&&(U=null),U!==t?(Me=m,b=a(b,U),m=b):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;return m}function ts(){var m,b,N,U,ce;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(N=Mr(),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();U!==t?(Me=m,b=l(N),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t;return m}function ga(){var m;return r.charCodeAt(Q)===59?(m=c,Q++):(m=t,I===0&&Qe(u)),m===t&&(r.charCodeAt(Q)===38?(m=g,Q++):(m=t,I===0&&Qe(f))),m}function Kr(){var m,b,N;return m=Q,b=g1(),b!==t?(N=yue(),N===t&&(N=null),N!==t?(Me=m,b=h(b,N),m=b):(Q=m,m=t)):(Q=m,m=t),m}function yue(){var m,b,N,U,ce,Se,ht;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(N=wue(),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();if(U!==t)if(ce=Kr(),ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();Se!==t?(Me=m,b=p(N,ce),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t;return m}function wue(){var m;return r.substr(Q,2)===C?(m=C,Q+=2):(m=t,I===0&&Qe(y)),m===t&&(r.substr(Q,2)===B?(m=B,Q+=2):(m=t,I===0&&Qe(v))),m}function g1(){var m,b,N;return m=Q,b=bue(),b!==t?(N=Bue(),N===t&&(N=null),N!==t?(Me=m,b=D(b,N),m=b):(Q=m,m=t)):(Q=m,m=t),m}function Bue(){var m,b,N,U,ce,Se,ht;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(N=Que(),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();if(U!==t)if(ce=g1(),ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();Se!==t?(Me=m,b=L(N,ce),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t;return m}function Que(){var m;return r.substr(Q,2)===H?(m=H,Q+=2):(m=t,I===0&&Qe(j)),m===t&&(r.charCodeAt(Q)===124?(m=$,Q++):(m=t,I===0&&Qe(V))),m}function FE(){var m,b,N,U,ce,Se;if(m=Q,b=Q1(),b!==t)if(r.charCodeAt(Q)===61?(N=W,Q++):(N=t,I===0&&Qe(Z)),N!==t)if(U=p1(),U!==t){for(ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();ce!==t?(Me=m,b=A(b,U),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t;else Q=m,m=t;if(m===t)if(m=Q,b=Q1(),b!==t)if(r.charCodeAt(Q)===61?(N=W,Q++):(N=t,I===0&&Qe(Z)),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();U!==t?(Me=m,b=ae(b),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t;return m}function bue(){var m,b,N,U,ce,Se,ht,Bt,Jr,hi,rs;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(r.charCodeAt(Q)===40?(N=ge,Q++):(N=t,I===0&&Qe(re)),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();if(U!==t)if(ce=Mr(),ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();if(Se!==t)if(r.charCodeAt(Q)===41?(ht=O,Q++):(ht=t,I===0&&Qe(F)),ht!==t){for(Bt=[],Jr=He();Jr!==t;)Bt.push(Jr),Jr=He();if(Bt!==t){for(Jr=[],hi=Bp();hi!==t;)Jr.push(hi),hi=Bp();if(Jr!==t){for(hi=[],rs=He();rs!==t;)hi.push(rs),rs=He();hi!==t?(Me=m,b=ue(ce,Jr),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t;if(m===t){for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(r.charCodeAt(Q)===123?(N=he,Q++):(N=t,I===0&&Qe(ke)),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();if(U!==t)if(ce=Mr(),ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();if(Se!==t)if(r.charCodeAt(Q)===125?(ht=Fe,Q++):(ht=t,I===0&&Qe(Ne)),ht!==t){for(Bt=[],Jr=He();Jr!==t;)Bt.push(Jr),Jr=He();if(Bt!==t){for(Jr=[],hi=Bp();hi!==t;)Jr.push(hi),hi=Bp();if(Jr!==t){for(hi=[],rs=He();rs!==t;)hi.push(rs),rs=He();hi!==t?(Me=m,b=oe(ce,Jr),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t;if(m===t){for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t){for(N=[],U=FE();U!==t;)N.push(U),U=FE();if(N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();if(U!==t){if(ce=[],Se=h1(),Se!==t)for(;Se!==t;)ce.push(Se),Se=h1();else ce=t;if(ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();Se!==t?(Me=m,b=le(N,ce),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t}else Q=m,m=t}else Q=m,m=t;if(m===t){for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t){if(N=[],U=FE(),U!==t)for(;U!==t;)N.push(U),U=FE();else N=t;if(N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();U!==t?(Me=m,b=we(N),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t}}}return m}function f1(){var m,b,N,U,ce;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t){if(N=[],U=NE(),U!==t)for(;U!==t;)N.push(U),U=NE();else N=t;if(N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();U!==t?(Me=m,b=fe(N),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t;return m}function h1(){var m,b,N;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t?(N=Bp(),N!==t?(Me=m,b=Ae(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t){for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();b!==t?(N=NE(),N!==t?(Me=m,b=Ae(N),m=b):(Q=m,m=t)):(Q=m,m=t)}return m}function Bp(){var m,b,N,U,ce;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();return b!==t?(qe.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(ne)),N===t&&(N=null),N!==t?(U=Sue(),U!==t?(ce=NE(),ce!==t?(Me=m,b=Y(N,U,ce),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m}function Sue(){var m;return r.substr(Q,2)===pe?(m=pe,Q+=2):(m=t,I===0&&Qe(ie)),m===t&&(r.substr(Q,2)===de?(m=de,Q+=2):(m=t,I===0&&Qe(tt)),m===t&&(r.charCodeAt(Q)===62?(m=Pt,Q++):(m=t,I===0&&Qe(It)),m===t&&(r.substr(Q,3)===Or?(m=Or,Q+=3):(m=t,I===0&&Qe(ii)),m===t&&(r.substr(Q,2)===gi?(m=gi,Q+=2):(m=t,I===0&&Qe(hr)),m===t&&(r.charCodeAt(Q)===60?(m=fi,Q++):(m=t,I===0&&Qe(ni))))))),m}function NE(){var m,b,N;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();return b!==t?(N=p1(),N!==t?(Me=m,b=Ae(N),m=b):(Q=m,m=t)):(Q=m,m=t),m}function p1(){var m,b,N;if(m=Q,b=[],N=d1(),N!==t)for(;N!==t;)b.push(N),N=d1();else b=t;return b!==t&&(Me=m,b=Ls(b)),m=b,m}function d1(){var m,b;return m=Q,b=vue(),b!==t&&(Me=m,b=pr(b)),m=b,m===t&&(m=Q,b=xue(),b!==t&&(Me=m,b=pr(b)),m=b,m===t&&(m=Q,b=Pue(),b!==t&&(Me=m,b=pr(b)),m=b,m===t&&(m=Q,b=Due(),b!==t&&(Me=m,b=pr(b)),m=b))),m}function vue(){var m,b,N,U;return m=Q,r.substr(Q,2)===Ei?(b=Ei,Q+=2):(b=t,I===0&&Qe(_n)),b!==t?(N=Fue(),N!==t?(r.charCodeAt(Q)===39?(U=oa,Q++):(U=t,I===0&&Qe(aA)),U!==t?(Me=m,b=eg(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m}function xue(){var m,b,N,U;return m=Q,r.charCodeAt(Q)===39?(b=oa,Q++):(b=t,I===0&&Qe(aA)),b!==t?(N=kue(),N!==t?(r.charCodeAt(Q)===39?(U=oa,Q++):(U=t,I===0&&Qe(aA)),U!==t?(Me=m,b=eg(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m}function Pue(){var m,b,N,U;if(m=Q,r.substr(Q,2)===Zn?(b=Zn,Q+=2):(b=t,I===0&&Qe(AA)),b!==t&&(Me=m,b=aa()),m=b,m===t)if(m=Q,r.charCodeAt(Q)===34?(b=up,Q++):(b=t,I===0&&Qe(lA)),b!==t){for(N=[],U=C1();U!==t;)N.push(U),U=C1();N!==t?(r.charCodeAt(Q)===34?(U=up,Q++):(U=t,I===0&&Qe(lA)),U!==t?(Me=m,b=cA(N),m=b):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;return m}function Due(){var m,b,N;if(m=Q,b=[],N=m1(),N!==t)for(;N!==t;)b.push(N),N=m1();else b=t;return b!==t&&(Me=m,b=cA(b)),m=b,m}function C1(){var m,b;return m=Q,b=w1(),b!==t&&(Me=m,b=wr(b)),m=b,m===t&&(m=Q,b=B1(),b!==t&&(Me=m,b=wl(b)),m=b,m===t&&(m=Q,b=qb(),b!==t&&(Me=m,b=tg(b)),m=b,m===t&&(m=Q,b=Rue(),b!==t&&(Me=m,b=po(b)),m=b))),m}function m1(){var m,b;return m=Q,b=w1(),b!==t&&(Me=m,b=rg(b)),m=b,m===t&&(m=Q,b=B1(),b!==t&&(Me=m,b=gp(b)),m=b,m===t&&(m=Q,b=qb(),b!==t&&(Me=m,b=fp(b)),m=b,m===t&&(m=Q,b=Tue(),b!==t&&(Me=m,b=vr(b)),m=b,m===t&&(m=Q,b=Lue(),b!==t&&(Me=m,b=po(b)),m=b)))),m}function kue(){var m,b,N;for(m=Q,b=[],se.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Co));N!==t;)b.push(N),se.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Co));return b!==t&&(Me=m,b=Dn(b)),m=b,m}function Rue(){var m,b,N;if(m=Q,b=[],N=E1(),N===t&&(ig.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Qt))),N!==t)for(;N!==t;)b.push(N),N=E1(),N===t&&(ig.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Qt)));else b=t;return b!==t&&(Me=m,b=Dn(b)),m=b,m}function E1(){var m,b,N;return m=Q,r.substr(Q,2)===Bl?(b=Bl,Q+=2):(b=t,I===0&&Qe(kn)),b!==t&&(Me=m,b=$n()),m=b,m===t&&(m=Q,r.charCodeAt(Q)===92?(b=es,Q++):(b=t,I===0&&Qe(gt)),b!==t?(mo.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(At)),N!==t?(Me=m,b=an(N),m=b):(Q=m,m=t)):(Q=m,m=t)),m}function Fue(){var m,b,N;for(m=Q,b=[],N=I1(),N===t&&(se.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Co)));N!==t;)b.push(N),N=I1(),N===t&&(se.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Co)));return b!==t&&(Me=m,b=Dn(b)),m=b,m}function I1(){var m,b,N;return m=Q,r.substr(Q,2)===S?(b=S,Q+=2):(b=t,I===0&&Qe(Tt)),b!==t&&(Me=m,b=ng()),m=b,m===t&&(m=Q,r.substr(Q,2)===Ql?(b=Ql,Q+=2):(b=t,I===0&&Qe(hp)),b!==t&&(Me=m,b=pp()),m=b,m===t&&(m=Q,r.charCodeAt(Q)===92?(b=es,Q++):(b=t,I===0&&Qe(gt)),b!==t?(dp.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Cp)),N!==t?(Me=m,b=mp(),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===G?(b=G,Q+=2):(b=t,I===0&&Qe(yt)),b!==t&&(Me=m,b=uA()),m=b,m===t&&(m=Q,r.substr(Q,2)===ji?(b=ji,Q+=2):(b=t,I===0&&Qe(bl)),b!==t&&(Me=m,b=Xe()),m=b,m===t&&(m=Q,r.substr(Q,2)===Aa?(b=Aa,Q+=2):(b=t,I===0&&Qe(sg)),b!==t&&(Me=m,b=bE()),m=b,m===t&&(m=Q,r.substr(Q,2)===Ep?(b=Ep,Q+=2):(b=t,I===0&&Qe(SE)),b!==t&&(Me=m,b=ar()),m=b,m===t&&(m=Q,r.substr(Q,2)===Rn?(b=Rn,Q+=2):(b=t,I===0&&Qe(Sl)),b!==t&&(Me=m,b=Ip()),m=b,m===t&&(m=Q,r.charCodeAt(Q)===92?(b=es,Q++):(b=t,I===0&&Qe(gt)),b!==t?(Ts.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(la)),N!==t?(Me=m,b=an(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Nue()))))))))),m}function Nue(){var m,b,N,U,ce,Se,ht,Bt,Jr,hi,rs,Jb;return m=Q,r.charCodeAt(Q)===92?(b=es,Q++):(b=t,I===0&&Qe(gt)),b!==t?(N=Gb(),N!==t?(Me=m,b=An(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Te?(b=Te,Q+=2):(b=t,I===0&&Qe(og)),b!==t?(N=Q,U=Q,ce=Gb(),ce!==t?(Se=Ln(),Se!==t?(ce=[ce,Se],U=ce):(Q=U,U=t)):(Q=U,U=t),U===t&&(U=Gb()),U!==t?N=r.substring(N,Q):N=U,N!==t?(Me=m,b=An(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===vl?(b=vl,Q+=2):(b=t,I===0&&Qe(Os)),b!==t?(N=Q,U=Q,ce=Ln(),ce!==t?(Se=Ln(),Se!==t?(ht=Ln(),ht!==t?(Bt=Ln(),Bt!==t?(ce=[ce,Se,ht,Bt],U=ce):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t),U!==t?N=r.substring(N,Q):N=U,N!==t?(Me=m,b=An(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===xl?(b=xl,Q+=2):(b=t,I===0&&Qe(gA)),b!==t?(N=Q,U=Q,ce=Ln(),ce!==t?(Se=Ln(),Se!==t?(ht=Ln(),ht!==t?(Bt=Ln(),Bt!==t?(Jr=Ln(),Jr!==t?(hi=Ln(),hi!==t?(rs=Ln(),rs!==t?(Jb=Ln(),Jb!==t?(ce=[ce,Se,ht,Bt,Jr,hi,rs,Jb],U=ce):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t),U!==t?N=r.substring(N,Q):N=U,N!==t?(Me=m,b=ag(N),m=b):(Q=m,m=t)):(Q=m,m=t)))),m}function Gb(){var m;return Ag.test(r.charAt(Q))?(m=r.charAt(Q),Q++):(m=t,I===0&&Qe(ca)),m}function Ln(){var m;return ua.test(r.charAt(Q))?(m=r.charAt(Q),Q++):(m=t,I===0&&Qe(rt)),m}function Lue(){var m,b,N,U,ce;if(m=Q,b=[],N=Q,r.charCodeAt(Q)===92?(U=es,Q++):(U=t,I===0&&Qe(gt)),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Eo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t),N===t&&(N=Q,U=Q,I++,ce=b1(),I--,ce===t?U=void 0:(Q=U,U=t),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Eo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t)),N!==t)for(;N!==t;)b.push(N),N=Q,r.charCodeAt(Q)===92?(U=es,Q++):(U=t,I===0&&Qe(gt)),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Eo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t),N===t&&(N=Q,U=Q,I++,ce=b1(),I--,ce===t?U=void 0:(Q=U,U=t),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Eo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t));else b=t;return b!==t&&(Me=m,b=Dn(b)),m=b,m}function Yb(){var m,b,N,U,ce,Se;if(m=Q,r.charCodeAt(Q)===45?(b=fA,Q++):(b=t,I===0&&Qe(Pl)),b===t&&(r.charCodeAt(Q)===43?(b=Ms,Q++):(b=t,I===0&&Qe(Dl))),b===t&&(b=null),b!==t){if(N=[],qe.test(r.charAt(Q))?(U=r.charAt(Q),Q++):(U=t,I===0&&Qe(ne)),U!==t)for(;U!==t;)N.push(U),qe.test(r.charAt(Q))?(U=r.charAt(Q),Q++):(U=t,I===0&&Qe(ne));else N=t;if(N!==t)if(r.charCodeAt(Q)===46?(U=vE,Q++):(U=t,I===0&&Qe(yp)),U!==t){if(ce=[],qe.test(r.charAt(Q))?(Se=r.charAt(Q),Q++):(Se=t,I===0&&Qe(ne)),Se!==t)for(;Se!==t;)ce.push(Se),qe.test(r.charAt(Q))?(Se=r.charAt(Q),Q++):(Se=t,I===0&&Qe(ne));else ce=t;ce!==t?(Me=m,b=lg(b,N,ce),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;if(m===t){if(m=Q,r.charCodeAt(Q)===45?(b=fA,Q++):(b=t,I===0&&Qe(Pl)),b===t&&(r.charCodeAt(Q)===43?(b=Ms,Q++):(b=t,I===0&&Qe(Dl))),b===t&&(b=null),b!==t){if(N=[],qe.test(r.charAt(Q))?(U=r.charAt(Q),Q++):(U=t,I===0&&Qe(ne)),U!==t)for(;U!==t;)N.push(U),qe.test(r.charAt(Q))?(U=r.charAt(Q),Q++):(U=t,I===0&&Qe(ne));else N=t;N!==t?(Me=m,b=wp(b,N),m=b):(Q=m,m=t)}else Q=m,m=t;if(m===t&&(m=Q,b=qb(),b!==t&&(Me=m,b=xE(b)),m=b,m===t&&(m=Q,b=Rl(),b!==t&&(Me=m,b=kl(b)),m=b,m===t)))if(m=Q,r.charCodeAt(Q)===40?(b=ge,Q++):(b=t,I===0&&Qe(re)),b!==t){for(N=[],U=He();U!==t;)N.push(U),U=He();if(N!==t)if(U=y1(),U!==t){for(ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();ce!==t?(r.charCodeAt(Q)===41?(Se=O,Q++):(Se=t,I===0&&Qe(F)),Se!==t?(Me=m,b=PE(U),m=b):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t}return m}function jb(){var m,b,N,U,ce,Se,ht,Bt;if(m=Q,b=Yb(),b!==t){for(N=[],U=Q,ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();if(ce!==t)if(r.charCodeAt(Q)===42?(Se=cg,Q++):(Se=t,I===0&&Qe(hA)),Se===t&&(r.charCodeAt(Q)===47?(Se=Rr,Q++):(Se=t,I===0&&Qe(DE))),Se!==t){for(ht=[],Bt=He();Bt!==t;)ht.push(Bt),Bt=He();ht!==t?(Bt=Yb(),Bt!==t?(Me=U,ce=Ks(b,Se,Bt),U=ce):(Q=U,U=t)):(Q=U,U=t)}else Q=U,U=t;else Q=U,U=t;for(;U!==t;){for(N.push(U),U=Q,ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();if(ce!==t)if(r.charCodeAt(Q)===42?(Se=cg,Q++):(Se=t,I===0&&Qe(hA)),Se===t&&(r.charCodeAt(Q)===47?(Se=Rr,Q++):(Se=t,I===0&&Qe(DE))),Se!==t){for(ht=[],Bt=He();Bt!==t;)ht.push(Bt),Bt=He();ht!==t?(Bt=Yb(),Bt!==t?(Me=U,ce=Ks(b,Se,Bt),U=ce):(Q=U,U=t)):(Q=U,U=t)}else Q=U,U=t;else Q=U,U=t}N!==t?(Me=m,b=Us(b,N),m=b):(Q=m,m=t)}else Q=m,m=t;return m}function y1(){var m,b,N,U,ce,Se,ht,Bt;if(m=Q,b=jb(),b!==t){for(N=[],U=Q,ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();if(ce!==t)if(r.charCodeAt(Q)===43?(Se=Ms,Q++):(Se=t,I===0&&Qe(Dl)),Se===t&&(r.charCodeAt(Q)===45?(Se=fA,Q++):(Se=t,I===0&&Qe(Pl))),Se!==t){for(ht=[],Bt=He();Bt!==t;)ht.push(Bt),Bt=He();ht!==t?(Bt=jb(),Bt!==t?(Me=U,ce=ug(b,Se,Bt),U=ce):(Q=U,U=t)):(Q=U,U=t)}else Q=U,U=t;else Q=U,U=t;for(;U!==t;){for(N.push(U),U=Q,ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();if(ce!==t)if(r.charCodeAt(Q)===43?(Se=Ms,Q++):(Se=t,I===0&&Qe(Dl)),Se===t&&(r.charCodeAt(Q)===45?(Se=fA,Q++):(Se=t,I===0&&Qe(Pl))),Se!==t){for(ht=[],Bt=He();Bt!==t;)ht.push(Bt),Bt=He();ht!==t?(Bt=jb(),Bt!==t?(Me=U,ce=ug(b,Se,Bt),U=ce):(Q=U,U=t)):(Q=U,U=t)}else Q=U,U=t;else Q=U,U=t}N!==t?(Me=m,b=Us(b,N),m=b):(Q=m,m=t)}else Q=m,m=t;return m}function w1(){var m,b,N,U,ce,Se;if(m=Q,r.substr(Q,3)===pA?(b=pA,Q+=3):(b=t,I===0&&Qe(R)),b!==t){for(N=[],U=He();U!==t;)N.push(U),U=He();if(N!==t)if(U=y1(),U!==t){for(ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();ce!==t?(r.substr(Q,2)===q?(Se=q,Q+=2):(Se=t,I===0&&Qe(Ce)),Se!==t?(Me=m,b=Ke(U),m=b):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;return m}function B1(){var m,b,N,U;return m=Q,r.substr(Q,2)===Re?(b=Re,Q+=2):(b=t,I===0&&Qe(ze)),b!==t?(N=Mr(),N!==t?(r.charCodeAt(Q)===41?(U=O,Q++):(U=t,I===0&&Qe(F)),U!==t?(Me=m,b=dt(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m}function qb(){var m,b,N,U,ce,Se;return m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Fn)),b!==t?(N=Rl(),N!==t?(r.substr(Q,2)===Db?(U=Db,Q+=2):(U=t,I===0&&Qe($M)),U!==t?(ce=f1(),ce!==t?(r.charCodeAt(Q)===125?(Se=Fe,Q++):(Se=t,I===0&&Qe(Ne)),Se!==t?(Me=m,b=e1(N,ce),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Fn)),b!==t?(N=Rl(),N!==t?(r.substr(Q,3)===kb?(U=kb,Q+=3):(U=t,I===0&&Qe(t1)),U!==t?(Me=m,b=r1(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Fn)),b!==t?(N=Rl(),N!==t?(r.substr(Q,2)===Rb?(U=Rb,Q+=2):(U=t,I===0&&Qe(i1)),U!==t?(ce=f1(),ce!==t?(r.charCodeAt(Q)===125?(Se=Fe,Q++):(Se=t,I===0&&Qe(Ne)),Se!==t?(Me=m,b=n1(N,ce),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Fn)),b!==t?(N=Rl(),N!==t?(r.substr(Q,3)===Fb?(U=Fb,Q+=3):(U=t,I===0&&Qe(s1)),U!==t?(Me=m,b=o1(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Fn)),b!==t?(N=Rl(),N!==t?(r.charCodeAt(Q)===125?(U=Fe,Q++):(U=t,I===0&&Qe(Ne)),U!==t?(Me=m,b=Nb(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.charCodeAt(Q)===36?(b=a1,Q++):(b=t,I===0&&Qe(A1)),b!==t?(N=Rl(),N!==t?(Me=m,b=Nb(N),m=b):(Q=m,m=t)):(Q=m,m=t)))))),m}function Tue(){var m,b,N;return m=Q,b=Oue(),b!==t?(Me=Q,N=l1(b),N?N=void 0:N=t,N!==t?(Me=m,b=c1(b),m=b):(Q=m,m=t)):(Q=m,m=t),m}function Oue(){var m,b,N,U,ce;if(m=Q,b=[],N=Q,U=Q,I++,ce=S1(),I--,ce===t?U=void 0:(Q=U,U=t),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Eo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t),N!==t)for(;N!==t;)b.push(N),N=Q,U=Q,I++,ce=S1(),I--,ce===t?U=void 0:(Q=U,U=t),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Eo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t);else b=t;return b!==t&&(Me=m,b=Dn(b)),m=b,m}function Q1(){var m,b,N;if(m=Q,b=[],Lb.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Tb)),N!==t)for(;N!==t;)b.push(N),Lb.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Tb));else b=t;return b!==t&&(Me=m,b=Ob()),m=b,m}function Rl(){var m,b,N;if(m=Q,b=[],Mb.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Kb)),N!==t)for(;N!==t;)b.push(N),Mb.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Kb));else b=t;return b!==t&&(Me=m,b=Ob()),m=b,m}function b1(){var m;return u1.test(r.charAt(Q))?(m=r.charAt(Q),Q++):(m=t,I===0&&Qe(gg)),m}function S1(){var m;return Ub.test(r.charAt(Q))?(m=r.charAt(Q),Q++):(m=t,I===0&&Qe(Hb)),m}function He(){var m,b;if(m=[],kE.test(r.charAt(Q))?(b=r.charAt(Q),Q++):(b=t,I===0&&Qe(RE)),b!==t)for(;b!==t;)m.push(b),kE.test(r.charAt(Q))?(b=r.charAt(Q),Q++):(b=t,I===0&&Qe(RE));else m=t;return m}if(k=n(),k!==t&&Q===r.length)return k;throw k!==t&&Q{"use strict";function Mge(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function Ul(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Ul)}Mge(Ul,Error);Ul.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;gH&&(H=v,j=[]),j.push(ne))}function Ne(ne,Y){return new Ul(ne,null,null,Y)}function oe(ne,Y,pe){return new Ul(Ul.buildMessage(ne,Y),ne,Y,pe)}function le(){var ne,Y,pe,ie;return ne=v,Y=we(),Y!==t?(r.charCodeAt(v)===47?(pe=s,v++):(pe=t,$===0&&Fe(o)),pe!==t?(ie=we(),ie!==t?(D=ne,Y=a(Y,ie),ne=Y):(v=ne,ne=t)):(v=ne,ne=t)):(v=ne,ne=t),ne===t&&(ne=v,Y=we(),Y!==t&&(D=ne,Y=l(Y)),ne=Y),ne}function we(){var ne,Y,pe,ie;return ne=v,Y=fe(),Y!==t?(r.charCodeAt(v)===64?(pe=c,v++):(pe=t,$===0&&Fe(u)),pe!==t?(ie=qe(),ie!==t?(D=ne,Y=g(Y,ie),ne=Y):(v=ne,ne=t)):(v=ne,ne=t)):(v=ne,ne=t),ne===t&&(ne=v,Y=fe(),Y!==t&&(D=ne,Y=f(Y)),ne=Y),ne}function fe(){var ne,Y,pe,ie,de;return ne=v,r.charCodeAt(v)===64?(Y=c,v++):(Y=t,$===0&&Fe(u)),Y!==t?(pe=Ae(),pe!==t?(r.charCodeAt(v)===47?(ie=s,v++):(ie=t,$===0&&Fe(o)),ie!==t?(de=Ae(),de!==t?(D=ne,Y=h(),ne=Y):(v=ne,ne=t)):(v=ne,ne=t)):(v=ne,ne=t)):(v=ne,ne=t),ne===t&&(ne=v,Y=Ae(),Y!==t&&(D=ne,Y=h()),ne=Y),ne}function Ae(){var ne,Y,pe;if(ne=v,Y=[],p.test(r.charAt(v))?(pe=r.charAt(v),v++):(pe=t,$===0&&Fe(C)),pe!==t)for(;pe!==t;)Y.push(pe),p.test(r.charAt(v))?(pe=r.charAt(v),v++):(pe=t,$===0&&Fe(C));else Y=t;return Y!==t&&(D=ne,Y=h()),ne=Y,ne}function qe(){var ne,Y,pe;if(ne=v,Y=[],y.test(r.charAt(v))?(pe=r.charAt(v),v++):(pe=t,$===0&&Fe(B)),pe!==t)for(;pe!==t;)Y.push(pe),y.test(r.charAt(v))?(pe=r.charAt(v),v++):(pe=t,$===0&&Fe(B));else Y=t;return Y!==t&&(D=ne,Y=h()),ne=Y,ne}if(V=n(),V!==t&&v===r.length)return V;throw V!==t&&v{"use strict";function UK(r){return typeof r>"u"||r===null}function Uge(r){return typeof r=="object"&&r!==null}function Hge(r){return Array.isArray(r)?r:UK(r)?[]:[r]}function Gge(r,e){var t,i,n,s;if(e)for(s=Object.keys(e),t=0,i=s.length;t{"use strict";function Op(r,e){Error.call(this),this.name="YAMLException",this.reason=r,this.mark=e,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}Op.prototype=Object.create(Error.prototype);Op.prototype.constructor=Op;Op.prototype.toString=function(e){var t=this.name+": ";return t+=this.reason||"(unknown reason)",!e&&this.mark&&(t+=" "+this.mark.toString()),t};HK.exports=Op});var jK=w((pXe,YK)=>{"use strict";var GK=Gl();function SS(r,e,t,i,n){this.name=r,this.buffer=e,this.position=t,this.line=i,this.column=n}SS.prototype.getSnippet=function(e,t){var i,n,s,o,a;if(!this.buffer)return null;for(e=e||4,t=t||75,i="",n=this.position;n>0&&`\0\r +\x85\u2028\u2029`.indexOf(this.buffer.charAt(n-1))===-1;)if(n-=1,this.position-n>t/2-1){i=" ... ",n+=5;break}for(s="",o=this.position;ot/2-1){s=" ... ",o-=5;break}return a=this.buffer.slice(n,o),GK.repeat(" ",e)+i+a+s+` +`+GK.repeat(" ",e+this.position-n+i.length)+"^"};SS.prototype.toString=function(e){var t,i="";return this.name&&(i+='in "'+this.name+'" '),i+="at line "+(this.line+1)+", column "+(this.column+1),e||(t=this.getSnippet(),t&&(i+=`: +`+t)),i};YK.exports=SS});var si=w((dXe,JK)=>{"use strict";var qK=Qg(),qge=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],Jge=["scalar","sequence","mapping"];function Wge(r){var e={};return r!==null&&Object.keys(r).forEach(function(t){r[t].forEach(function(i){e[String(i)]=t})}),e}function zge(r,e){if(e=e||{},Object.keys(e).forEach(function(t){if(qge.indexOf(t)===-1)throw new qK('Unknown option "'+t+'" is met in definition of "'+r+'" YAML type.')}),this.tag=r,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=Wge(e.styleAliases||null),Jge.indexOf(this.kind)===-1)throw new qK('Unknown kind "'+this.kind+'" is specified for "'+r+'" YAML type.')}JK.exports=zge});var Yl=w((CXe,zK)=>{"use strict";var WK=Gl(),nI=Qg(),Vge=si();function vS(r,e,t){var i=[];return r.include.forEach(function(n){t=vS(n,e,t)}),r[e].forEach(function(n){t.forEach(function(s,o){s.tag===n.tag&&s.kind===n.kind&&i.push(o)}),t.push(n)}),t.filter(function(n,s){return i.indexOf(s)===-1})}function Xge(){var r={scalar:{},sequence:{},mapping:{},fallback:{}},e,t;function i(n){r[n.kind][n.tag]=r.fallback[n.tag]=n}for(e=0,t=arguments.length;e{"use strict";var _ge=si();VK.exports=new _ge("tag:yaml.org,2002:str",{kind:"scalar",construct:function(r){return r!==null?r:""}})});var ZK=w((EXe,_K)=>{"use strict";var Zge=si();_K.exports=new Zge("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(r){return r!==null?r:[]}})});var eU=w((IXe,$K)=>{"use strict";var $ge=si();$K.exports=new $ge("tag:yaml.org,2002:map",{kind:"mapping",construct:function(r){return r!==null?r:{}}})});var sI=w((yXe,tU)=>{"use strict";var efe=Yl();tU.exports=new efe({explicit:[XK(),ZK(),eU()]})});var iU=w((wXe,rU)=>{"use strict";var tfe=si();function rfe(r){if(r===null)return!0;var e=r.length;return e===1&&r==="~"||e===4&&(r==="null"||r==="Null"||r==="NULL")}function ife(){return null}function nfe(r){return r===null}rU.exports=new tfe("tag:yaml.org,2002:null",{kind:"scalar",resolve:rfe,construct:ife,predicate:nfe,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var sU=w((BXe,nU)=>{"use strict";var sfe=si();function ofe(r){if(r===null)return!1;var e=r.length;return e===4&&(r==="true"||r==="True"||r==="TRUE")||e===5&&(r==="false"||r==="False"||r==="FALSE")}function afe(r){return r==="true"||r==="True"||r==="TRUE"}function Afe(r){return Object.prototype.toString.call(r)==="[object Boolean]"}nU.exports=new sfe("tag:yaml.org,2002:bool",{kind:"scalar",resolve:ofe,construct:afe,predicate:Afe,represent:{lowercase:function(r){return r?"true":"false"},uppercase:function(r){return r?"TRUE":"FALSE"},camelcase:function(r){return r?"True":"False"}},defaultStyle:"lowercase"})});var aU=w((QXe,oU)=>{"use strict";var lfe=Gl(),cfe=si();function ufe(r){return 48<=r&&r<=57||65<=r&&r<=70||97<=r&&r<=102}function gfe(r){return 48<=r&&r<=55}function ffe(r){return 48<=r&&r<=57}function hfe(r){if(r===null)return!1;var e=r.length,t=0,i=!1,n;if(!e)return!1;if(n=r[t],(n==="-"||n==="+")&&(n=r[++t]),n==="0"){if(t+1===e)return!0;if(n=r[++t],n==="b"){for(t++;t=0?"0b"+r.toString(2):"-0b"+r.toString(2).slice(1)},octal:function(r){return r>=0?"0"+r.toString(8):"-0"+r.toString(8).slice(1)},decimal:function(r){return r.toString(10)},hexadecimal:function(r){return r>=0?"0x"+r.toString(16).toUpperCase():"-0x"+r.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})});var cU=w((bXe,lU)=>{"use strict";var AU=Gl(),Cfe=si(),mfe=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function Efe(r){return!(r===null||!mfe.test(r)||r[r.length-1]==="_")}function Ife(r){var e,t,i,n;return e=r.replace(/_/g,"").toLowerCase(),t=e[0]==="-"?-1:1,n=[],"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?t===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(s){n.unshift(parseFloat(s,10))}),e=0,i=1,n.forEach(function(s){e+=s*i,i*=60}),t*e):t*parseFloat(e,10)}var yfe=/^[-+]?[0-9]+e/;function wfe(r,e){var t;if(isNaN(r))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===r)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===r)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(AU.isNegativeZero(r))return"-0.0";return t=r.toString(10),yfe.test(t)?t.replace("e",".e"):t}function Bfe(r){return Object.prototype.toString.call(r)==="[object Number]"&&(r%1!==0||AU.isNegativeZero(r))}lU.exports=new Cfe("tag:yaml.org,2002:float",{kind:"scalar",resolve:Efe,construct:Ife,predicate:Bfe,represent:wfe,defaultStyle:"lowercase"})});var xS=w((SXe,uU)=>{"use strict";var Qfe=Yl();uU.exports=new Qfe({include:[sI()],implicit:[iU(),sU(),aU(),cU()]})});var PS=w((vXe,gU)=>{"use strict";var bfe=Yl();gU.exports=new bfe({include:[xS()]})});var dU=w((xXe,pU)=>{"use strict";var Sfe=si(),fU=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),hU=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function vfe(r){return r===null?!1:fU.exec(r)!==null||hU.exec(r)!==null}function xfe(r){var e,t,i,n,s,o,a,l=0,c=null,u,g,f;if(e=fU.exec(r),e===null&&(e=hU.exec(r)),e===null)throw new Error("Date resolve error");if(t=+e[1],i=+e[2]-1,n=+e[3],!e[4])return new Date(Date.UTC(t,i,n));if(s=+e[4],o=+e[5],a=+e[6],e[7]){for(l=e[7].slice(0,3);l.length<3;)l+="0";l=+l}return e[9]&&(u=+e[10],g=+(e[11]||0),c=(u*60+g)*6e4,e[9]==="-"&&(c=-c)),f=new Date(Date.UTC(t,i,n,s,o,a,l)),c&&f.setTime(f.getTime()-c),f}function Pfe(r){return r.toISOString()}pU.exports=new Sfe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:vfe,construct:xfe,instanceOf:Date,represent:Pfe})});var mU=w((PXe,CU)=>{"use strict";var Dfe=si();function kfe(r){return r==="<<"||r===null}CU.exports=new Dfe("tag:yaml.org,2002:merge",{kind:"scalar",resolve:kfe})});var yU=w((DXe,IU)=>{"use strict";var jl;try{EU=J,jl=EU("buffer").Buffer}catch{}var EU,Rfe=si(),DS=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function Ffe(r){if(r===null)return!1;var e,t,i=0,n=r.length,s=DS;for(t=0;t64)){if(e<0)return!1;i+=6}return i%8===0}function Nfe(r){var e,t,i=r.replace(/[\r\n=]/g,""),n=i.length,s=DS,o=0,a=[];for(e=0;e>16&255),a.push(o>>8&255),a.push(o&255)),o=o<<6|s.indexOf(i.charAt(e));return t=n%4*6,t===0?(a.push(o>>16&255),a.push(o>>8&255),a.push(o&255)):t===18?(a.push(o>>10&255),a.push(o>>2&255)):t===12&&a.push(o>>4&255),jl?jl.from?jl.from(a):new jl(a):a}function Lfe(r){var e="",t=0,i,n,s=r.length,o=DS;for(i=0;i>18&63],e+=o[t>>12&63],e+=o[t>>6&63],e+=o[t&63]),t=(t<<8)+r[i];return n=s%3,n===0?(e+=o[t>>18&63],e+=o[t>>12&63],e+=o[t>>6&63],e+=o[t&63]):n===2?(e+=o[t>>10&63],e+=o[t>>4&63],e+=o[t<<2&63],e+=o[64]):n===1&&(e+=o[t>>2&63],e+=o[t<<4&63],e+=o[64],e+=o[64]),e}function Tfe(r){return jl&&jl.isBuffer(r)}IU.exports=new Rfe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:Ffe,construct:Nfe,predicate:Tfe,represent:Lfe})});var BU=w((kXe,wU)=>{"use strict";var Ofe=si(),Mfe=Object.prototype.hasOwnProperty,Kfe=Object.prototype.toString;function Ufe(r){if(r===null)return!0;var e=[],t,i,n,s,o,a=r;for(t=0,i=a.length;t{"use strict";var Gfe=si(),Yfe=Object.prototype.toString;function jfe(r){if(r===null)return!0;var e,t,i,n,s,o=r;for(s=new Array(o.length),e=0,t=o.length;e{"use strict";var Jfe=si(),Wfe=Object.prototype.hasOwnProperty;function zfe(r){if(r===null)return!0;var e,t=r;for(e in t)if(Wfe.call(t,e)&&t[e]!==null)return!1;return!0}function Vfe(r){return r!==null?r:{}}SU.exports=new Jfe("tag:yaml.org,2002:set",{kind:"mapping",resolve:zfe,construct:Vfe})});var Sg=w((NXe,xU)=>{"use strict";var Xfe=Yl();xU.exports=new Xfe({include:[PS()],implicit:[dU(),mU()],explicit:[yU(),BU(),bU(),vU()]})});var DU=w((LXe,PU)=>{"use strict";var _fe=si();function Zfe(){return!0}function $fe(){}function ehe(){return""}function the(r){return typeof r>"u"}PU.exports=new _fe("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:Zfe,construct:$fe,predicate:the,represent:ehe})});var RU=w((TXe,kU)=>{"use strict";var rhe=si();function ihe(r){if(r===null||r.length===0)return!1;var e=r,t=/\/([gim]*)$/.exec(r),i="";return!(e[0]==="/"&&(t&&(i=t[1]),i.length>3||e[e.length-i.length-1]!=="/"))}function nhe(r){var e=r,t=/\/([gim]*)$/.exec(r),i="";return e[0]==="/"&&(t&&(i=t[1]),e=e.slice(1,e.length-i.length-1)),new RegExp(e,i)}function she(r){var e="/"+r.source+"/";return r.global&&(e+="g"),r.multiline&&(e+="m"),r.ignoreCase&&(e+="i"),e}function ohe(r){return Object.prototype.toString.call(r)==="[object RegExp]"}kU.exports=new rhe("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:ihe,construct:nhe,predicate:ohe,represent:she})});var LU=w((OXe,NU)=>{"use strict";var oI;try{FU=J,oI=FU("esprima")}catch{typeof window<"u"&&(oI=window.esprima)}var FU,ahe=si();function Ahe(r){if(r===null)return!1;try{var e="("+r+")",t=oI.parse(e,{range:!0});return!(t.type!=="Program"||t.body.length!==1||t.body[0].type!=="ExpressionStatement"||t.body[0].expression.type!=="ArrowFunctionExpression"&&t.body[0].expression.type!=="FunctionExpression")}catch{return!1}}function lhe(r){var e="("+r+")",t=oI.parse(e,{range:!0}),i=[],n;if(t.type!=="Program"||t.body.length!==1||t.body[0].type!=="ExpressionStatement"||t.body[0].expression.type!=="ArrowFunctionExpression"&&t.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return t.body[0].expression.params.forEach(function(s){i.push(s.name)}),n=t.body[0].expression.body.range,t.body[0].expression.body.type==="BlockStatement"?new Function(i,e.slice(n[0]+1,n[1]-1)):new Function(i,"return "+e.slice(n[0],n[1]))}function che(r){return r.toString()}function uhe(r){return Object.prototype.toString.call(r)==="[object Function]"}NU.exports=new ahe("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:Ahe,construct:lhe,predicate:uhe,represent:che})});var Mp=w((MXe,OU)=>{"use strict";var TU=Yl();OU.exports=TU.DEFAULT=new TU({include:[Sg()],explicit:[DU(),RU(),LU()]})});var r2=w((KXe,Kp)=>{"use strict";var da=Gl(),jU=Qg(),ghe=jK(),qU=Sg(),fhe=Mp(),wA=Object.prototype.hasOwnProperty,aI=1,JU=2,WU=3,AI=4,kS=1,hhe=2,MU=3,phe=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,dhe=/[\x85\u2028\u2029]/,Che=/[,\[\]\{\}]/,zU=/^(?:!|!!|![a-z\-]+!)$/i,VU=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function KU(r){return Object.prototype.toString.call(r)}function Bo(r){return r===10||r===13}function Jl(r){return r===9||r===32}function un(r){return r===9||r===32||r===10||r===13}function vg(r){return r===44||r===91||r===93||r===123||r===125}function mhe(r){var e;return 48<=r&&r<=57?r-48:(e=r|32,97<=e&&e<=102?e-97+10:-1)}function Ehe(r){return r===120?2:r===117?4:r===85?8:0}function Ihe(r){return 48<=r&&r<=57?r-48:-1}function UU(r){return r===48?"\0":r===97?"\x07":r===98?"\b":r===116||r===9?" ":r===110?` +`:r===118?"\v":r===102?"\f":r===114?"\r":r===101?"\x1B":r===32?" ":r===34?'"':r===47?"/":r===92?"\\":r===78?"\x85":r===95?"\xA0":r===76?"\u2028":r===80?"\u2029":""}function yhe(r){return r<=65535?String.fromCharCode(r):String.fromCharCode((r-65536>>10)+55296,(r-65536&1023)+56320)}var XU=new Array(256),_U=new Array(256);for(ql=0;ql<256;ql++)XU[ql]=UU(ql)?1:0,_U[ql]=UU(ql);var ql;function whe(r,e){this.input=r,this.filename=e.filename||null,this.schema=e.schema||fhe,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=r.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function ZU(r,e){return new jU(e,new ghe(r.filename,r.input,r.position,r.line,r.position-r.lineStart))}function ft(r,e){throw ZU(r,e)}function lI(r,e){r.onWarning&&r.onWarning.call(null,ZU(r,e))}var HU={YAML:function(e,t,i){var n,s,o;e.version!==null&&ft(e,"duplication of %YAML directive"),i.length!==1&&ft(e,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(i[0]),n===null&&ft(e,"ill-formed argument of the YAML directive"),s=parseInt(n[1],10),o=parseInt(n[2],10),s!==1&&ft(e,"unacceptable YAML version of the document"),e.version=i[0],e.checkLineBreaks=o<2,o!==1&&o!==2&&lI(e,"unsupported YAML version of the document")},TAG:function(e,t,i){var n,s;i.length!==2&&ft(e,"TAG directive accepts exactly two arguments"),n=i[0],s=i[1],zU.test(n)||ft(e,"ill-formed tag handle (first argument) of the TAG directive"),wA.call(e.tagMap,n)&&ft(e,'there is a previously declared suffix for "'+n+'" tag handle'),VU.test(s)||ft(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[n]=s}};function yA(r,e,t,i){var n,s,o,a;if(e1&&(r.result+=da.repeat(` +`,e-1))}function Bhe(r,e,t){var i,n,s,o,a,l,c,u,g=r.kind,f=r.result,h;if(h=r.input.charCodeAt(r.position),un(h)||vg(h)||h===35||h===38||h===42||h===33||h===124||h===62||h===39||h===34||h===37||h===64||h===96||(h===63||h===45)&&(n=r.input.charCodeAt(r.position+1),un(n)||t&&vg(n)))return!1;for(r.kind="scalar",r.result="",s=o=r.position,a=!1;h!==0;){if(h===58){if(n=r.input.charCodeAt(r.position+1),un(n)||t&&vg(n))break}else if(h===35){if(i=r.input.charCodeAt(r.position-1),un(i))break}else{if(r.position===r.lineStart&&cI(r)||t&&vg(h))break;if(Bo(h))if(l=r.line,c=r.lineStart,u=r.lineIndent,zr(r,!1,-1),r.lineIndent>=e){a=!0,h=r.input.charCodeAt(r.position);continue}else{r.position=o,r.line=l,r.lineStart=c,r.lineIndent=u;break}}a&&(yA(r,s,o,!1),FS(r,r.line-l),s=o=r.position,a=!1),Jl(h)||(o=r.position+1),h=r.input.charCodeAt(++r.position)}return yA(r,s,o,!1),r.result?!0:(r.kind=g,r.result=f,!1)}function Qhe(r,e){var t,i,n;if(t=r.input.charCodeAt(r.position),t!==39)return!1;for(r.kind="scalar",r.result="",r.position++,i=n=r.position;(t=r.input.charCodeAt(r.position))!==0;)if(t===39)if(yA(r,i,r.position,!0),t=r.input.charCodeAt(++r.position),t===39)i=r.position,r.position++,n=r.position;else return!0;else Bo(t)?(yA(r,i,n,!0),FS(r,zr(r,!1,e)),i=n=r.position):r.position===r.lineStart&&cI(r)?ft(r,"unexpected end of the document within a single quoted scalar"):(r.position++,n=r.position);ft(r,"unexpected end of the stream within a single quoted scalar")}function bhe(r,e){var t,i,n,s,o,a;if(a=r.input.charCodeAt(r.position),a!==34)return!1;for(r.kind="scalar",r.result="",r.position++,t=i=r.position;(a=r.input.charCodeAt(r.position))!==0;){if(a===34)return yA(r,t,r.position,!0),r.position++,!0;if(a===92){if(yA(r,t,r.position,!0),a=r.input.charCodeAt(++r.position),Bo(a))zr(r,!1,e);else if(a<256&&XU[a])r.result+=_U[a],r.position++;else if((o=Ehe(a))>0){for(n=o,s=0;n>0;n--)a=r.input.charCodeAt(++r.position),(o=mhe(a))>=0?s=(s<<4)+o:ft(r,"expected hexadecimal character");r.result+=yhe(s),r.position++}else ft(r,"unknown escape sequence");t=i=r.position}else Bo(a)?(yA(r,t,i,!0),FS(r,zr(r,!1,e)),t=i=r.position):r.position===r.lineStart&&cI(r)?ft(r,"unexpected end of the document within a double quoted scalar"):(r.position++,i=r.position)}ft(r,"unexpected end of the stream within a double quoted scalar")}function She(r,e){var t=!0,i,n=r.tag,s,o=r.anchor,a,l,c,u,g,f={},h,p,C,y;if(y=r.input.charCodeAt(r.position),y===91)l=93,g=!1,s=[];else if(y===123)l=125,g=!0,s={};else return!1;for(r.anchor!==null&&(r.anchorMap[r.anchor]=s),y=r.input.charCodeAt(++r.position);y!==0;){if(zr(r,!0,e),y=r.input.charCodeAt(r.position),y===l)return r.position++,r.tag=n,r.anchor=o,r.kind=g?"mapping":"sequence",r.result=s,!0;t||ft(r,"missed comma between flow collection entries"),p=h=C=null,c=u=!1,y===63&&(a=r.input.charCodeAt(r.position+1),un(a)&&(c=u=!0,r.position++,zr(r,!0,e))),i=r.line,Pg(r,e,aI,!1,!0),p=r.tag,h=r.result,zr(r,!0,e),y=r.input.charCodeAt(r.position),(u||r.line===i)&&y===58&&(c=!0,y=r.input.charCodeAt(++r.position),zr(r,!0,e),Pg(r,e,aI,!1,!0),C=r.result),g?xg(r,s,f,p,h,C):c?s.push(xg(r,null,f,p,h,C)):s.push(h),zr(r,!0,e),y=r.input.charCodeAt(r.position),y===44?(t=!0,y=r.input.charCodeAt(++r.position)):t=!1}ft(r,"unexpected end of the stream within a flow collection")}function vhe(r,e){var t,i,n=kS,s=!1,o=!1,a=e,l=0,c=!1,u,g;if(g=r.input.charCodeAt(r.position),g===124)i=!1;else if(g===62)i=!0;else return!1;for(r.kind="scalar",r.result="";g!==0;)if(g=r.input.charCodeAt(++r.position),g===43||g===45)kS===n?n=g===43?MU:hhe:ft(r,"repeat of a chomping mode identifier");else if((u=Ihe(g))>=0)u===0?ft(r,"bad explicit indentation width of a block scalar; it cannot be less than one"):o?ft(r,"repeat of an indentation width identifier"):(a=e+u-1,o=!0);else break;if(Jl(g)){do g=r.input.charCodeAt(++r.position);while(Jl(g));if(g===35)do g=r.input.charCodeAt(++r.position);while(!Bo(g)&&g!==0)}for(;g!==0;){for(RS(r),r.lineIndent=0,g=r.input.charCodeAt(r.position);(!o||r.lineIndenta&&(a=r.lineIndent),Bo(g)){l++;continue}if(r.lineIndente)&&l!==0)ft(r,"bad indentation of a sequence entry");else if(r.lineIndente)&&(Pg(r,e,AI,!0,n)&&(p?f=r.result:h=r.result),p||(xg(r,c,u,g,f,h,s,o),g=f=h=null),zr(r,!0,-1),y=r.input.charCodeAt(r.position)),r.lineIndent>e&&y!==0)ft(r,"bad indentation of a mapping entry");else if(r.lineIndente?l=1:r.lineIndent===e?l=0:r.lineIndente?l=1:r.lineIndent===e?l=0:r.lineIndent tag; it should be "scalar", not "'+r.kind+'"'),g=0,f=r.implicitTypes.length;g tag; it should be "'+h.kind+'", not "'+r.kind+'"'),h.resolve(r.result)?(r.result=h.construct(r.result),r.anchor!==null&&(r.anchorMap[r.anchor]=r.result)):ft(r,"cannot resolve a node with !<"+r.tag+"> explicit tag")):ft(r,"unknown tag !<"+r.tag+">");return r.listener!==null&&r.listener("close",r),r.tag!==null||r.anchor!==null||u}function Rhe(r){var e=r.position,t,i,n,s=!1,o;for(r.version=null,r.checkLineBreaks=r.legacy,r.tagMap={},r.anchorMap={};(o=r.input.charCodeAt(r.position))!==0&&(zr(r,!0,-1),o=r.input.charCodeAt(r.position),!(r.lineIndent>0||o!==37));){for(s=!0,o=r.input.charCodeAt(++r.position),t=r.position;o!==0&&!un(o);)o=r.input.charCodeAt(++r.position);for(i=r.input.slice(t,r.position),n=[],i.length<1&&ft(r,"directive name must not be less than one character in length");o!==0;){for(;Jl(o);)o=r.input.charCodeAt(++r.position);if(o===35){do o=r.input.charCodeAt(++r.position);while(o!==0&&!Bo(o));break}if(Bo(o))break;for(t=r.position;o!==0&&!un(o);)o=r.input.charCodeAt(++r.position);n.push(r.input.slice(t,r.position))}o!==0&&RS(r),wA.call(HU,i)?HU[i](r,i,n):lI(r,'unknown document directive "'+i+'"')}if(zr(r,!0,-1),r.lineIndent===0&&r.input.charCodeAt(r.position)===45&&r.input.charCodeAt(r.position+1)===45&&r.input.charCodeAt(r.position+2)===45?(r.position+=3,zr(r,!0,-1)):s&&ft(r,"directives end mark is expected"),Pg(r,r.lineIndent-1,AI,!1,!0),zr(r,!0,-1),r.checkLineBreaks&&dhe.test(r.input.slice(e,r.position))&&lI(r,"non-ASCII line breaks are interpreted as content"),r.documents.push(r.result),r.position===r.lineStart&&cI(r)){r.input.charCodeAt(r.position)===46&&(r.position+=3,zr(r,!0,-1));return}if(r.position"u"&&(t=e,e=null);var i=$U(r,t);if(typeof e!="function")return i;for(var n=0,s=i.length;n"u"&&(t=e,e=null),e2(r,e,da.extend({schema:qU},t))}function Nhe(r,e){return t2(r,da.extend({schema:qU},e))}Kp.exports.loadAll=e2;Kp.exports.load=t2;Kp.exports.safeLoadAll=Fhe;Kp.exports.safeLoad=Nhe});var b2=w((UXe,OS)=>{"use strict";var Hp=Gl(),Gp=Qg(),Lhe=Mp(),The=Sg(),c2=Object.prototype.toString,u2=Object.prototype.hasOwnProperty,Ohe=9,Up=10,Mhe=13,Khe=32,Uhe=33,Hhe=34,g2=35,Ghe=37,Yhe=38,jhe=39,qhe=42,f2=44,Jhe=45,h2=58,Whe=61,zhe=62,Vhe=63,Xhe=64,p2=91,d2=93,_he=96,C2=123,Zhe=124,m2=125,Fi={};Fi[0]="\\0";Fi[7]="\\a";Fi[8]="\\b";Fi[9]="\\t";Fi[10]="\\n";Fi[11]="\\v";Fi[12]="\\f";Fi[13]="\\r";Fi[27]="\\e";Fi[34]='\\"';Fi[92]="\\\\";Fi[133]="\\N";Fi[160]="\\_";Fi[8232]="\\L";Fi[8233]="\\P";var $he=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function epe(r,e){var t,i,n,s,o,a,l;if(e===null)return{};for(t={},i=Object.keys(e),n=0,s=i.length;n0?r.charCodeAt(s-1):null,f=f&&s2(o,a)}else{for(s=0;si&&r[g+1]!==" ",g=s);else if(!Dg(o))return uI;a=s>0?r.charCodeAt(s-1):null,f=f&&s2(o,a)}c=c||u&&s-g-1>i&&r[g+1]!==" "}return!l&&!c?f&&!n(r)?I2:y2:t>9&&E2(r)?uI:c?B2:w2}function ope(r,e,t,i){r.dump=function(){if(e.length===0)return"''";if(!r.noCompatMode&&$he.indexOf(e)!==-1)return"'"+e+"'";var n=r.indent*Math.max(1,t),s=r.lineWidth===-1?-1:Math.max(Math.min(r.lineWidth,40),r.lineWidth-n),o=i||r.flowLevel>-1&&t>=r.flowLevel;function a(l){return rpe(r,l)}switch(spe(e,o,r.indent,s,a)){case I2:return e;case y2:return"'"+e.replace(/'/g,"''")+"'";case w2:return"|"+o2(e,r.indent)+a2(n2(e,n));case B2:return">"+o2(e,r.indent)+a2(n2(ape(e,s),n));case uI:return'"'+Ape(e,s)+'"';default:throw new Gp("impossible error: invalid scalar style")}}()}function o2(r,e){var t=E2(r)?String(e):"",i=r[r.length-1]===` +`,n=i&&(r[r.length-2]===` +`||r===` +`),s=n?"+":i?"":"-";return t+s+` +`}function a2(r){return r[r.length-1]===` +`?r.slice(0,-1):r}function ape(r,e){for(var t=/(\n+)([^\n]*)/g,i=function(){var c=r.indexOf(` +`);return c=c!==-1?c:r.length,t.lastIndex=c,A2(r.slice(0,c),e)}(),n=r[0]===` +`||r[0]===" ",s,o;o=t.exec(r);){var a=o[1],l=o[2];s=l[0]===" ",i+=a+(!n&&!s&&l!==""?` +`:"")+A2(l,e),n=s}return i}function A2(r,e){if(r===""||r[0]===" ")return r;for(var t=/ [^ ]/g,i,n=0,s,o=0,a=0,l="";i=t.exec(r);)a=i.index,a-n>e&&(s=o>n?o:a,l+=` +`+r.slice(n,s),n=s+1),o=a;return l+=` +`,r.length-n>e&&o>n?l+=r.slice(n,o)+` +`+r.slice(o+1):l+=r.slice(n),l.slice(1)}function Ape(r){for(var e="",t,i,n,s=0;s=55296&&t<=56319&&(i=r.charCodeAt(s+1),i>=56320&&i<=57343)){e+=i2((t-55296)*1024+i-56320+65536),s++;continue}n=Fi[t],e+=!n&&Dg(t)?r[s]:n||i2(t)}return e}function lpe(r,e,t){var i="",n=r.tag,s,o;for(s=0,o=t.length;s1024&&(u+="? "),u+=r.dump+(r.condenseFlow?'"':"")+":"+(r.condenseFlow?"":" "),Wl(r,e,c,!1,!1)&&(u+=r.dump,i+=u));r.tag=n,r.dump="{"+i+"}"}function gpe(r,e,t,i){var n="",s=r.tag,o=Object.keys(t),a,l,c,u,g,f;if(r.sortKeys===!0)o.sort();else if(typeof r.sortKeys=="function")o.sort(r.sortKeys);else if(r.sortKeys)throw new Gp("sortKeys must be a boolean or a function");for(a=0,l=o.length;a1024,g&&(r.dump&&Up===r.dump.charCodeAt(0)?f+="?":f+="? "),f+=r.dump,g&&(f+=NS(r,e)),Wl(r,e+1,u,!0,g)&&(r.dump&&Up===r.dump.charCodeAt(0)?f+=":":f+=": ",f+=r.dump,n+=f));r.tag=s,r.dump=n||"{}"}function l2(r,e,t){var i,n,s,o,a,l;for(n=t?r.explicitTypes:r.implicitTypes,s=0,o=n.length;s tag resolver accepts not "'+l+'" style');r.dump=i}return!0}return!1}function Wl(r,e,t,i,n,s){r.tag=null,r.dump=t,l2(r,t,!1)||l2(r,t,!0);var o=c2.call(r.dump);i&&(i=r.flowLevel<0||r.flowLevel>e);var a=o==="[object Object]"||o==="[object Array]",l,c;if(a&&(l=r.duplicates.indexOf(t),c=l!==-1),(r.tag!==null&&r.tag!=="?"||c||r.indent!==2&&e>0)&&(n=!1),c&&r.usedDuplicates[l])r.dump="*ref_"+l;else{if(a&&c&&!r.usedDuplicates[l]&&(r.usedDuplicates[l]=!0),o==="[object Object]")i&&Object.keys(r.dump).length!==0?(gpe(r,e,r.dump,n),c&&(r.dump="&ref_"+l+r.dump)):(upe(r,e,r.dump),c&&(r.dump="&ref_"+l+" "+r.dump));else if(o==="[object Array]"){var u=r.noArrayIndent&&e>0?e-1:e;i&&r.dump.length!==0?(cpe(r,u,r.dump,n),c&&(r.dump="&ref_"+l+r.dump)):(lpe(r,u,r.dump),c&&(r.dump="&ref_"+l+" "+r.dump))}else if(o==="[object String]")r.tag!=="?"&&ope(r,r.dump,e,s);else{if(r.skipInvalid)return!1;throw new Gp("unacceptable kind of an object to dump "+o)}r.tag!==null&&r.tag!=="?"&&(r.dump="!<"+r.tag+"> "+r.dump)}return!0}function fpe(r,e){var t=[],i=[],n,s;for(LS(r,t,i),n=0,s=i.length;n{"use strict";var gI=r2(),S2=b2();function fI(r){return function(){throw new Error("Function "+r+" is deprecated and cannot be used.")}}Fr.exports.Type=si();Fr.exports.Schema=Yl();Fr.exports.FAILSAFE_SCHEMA=sI();Fr.exports.JSON_SCHEMA=xS();Fr.exports.CORE_SCHEMA=PS();Fr.exports.DEFAULT_SAFE_SCHEMA=Sg();Fr.exports.DEFAULT_FULL_SCHEMA=Mp();Fr.exports.load=gI.load;Fr.exports.loadAll=gI.loadAll;Fr.exports.safeLoad=gI.safeLoad;Fr.exports.safeLoadAll=gI.safeLoadAll;Fr.exports.dump=S2.dump;Fr.exports.safeDump=S2.safeDump;Fr.exports.YAMLException=Qg();Fr.exports.MINIMAL_SCHEMA=sI();Fr.exports.SAFE_SCHEMA=Sg();Fr.exports.DEFAULT_SCHEMA=Mp();Fr.exports.scan=fI("scan");Fr.exports.parse=fI("parse");Fr.exports.compose=fI("compose");Fr.exports.addConstructor=fI("addConstructor")});var P2=w((GXe,x2)=>{"use strict";var ppe=v2();x2.exports=ppe});var k2=w((YXe,D2)=>{"use strict";function dpe(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function zl(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,zl)}dpe(zl,Error);zl.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g({[Ke]:Ce})))},H=function(R){return R},j=function(R){return R},$=Ts("correct indentation"),V=" ",W=ar(" ",!1),Z=function(R){return R.length===pA*ug},A=function(R){return R.length===(pA+1)*ug},ae=function(){return pA++,!0},ge=function(){return pA--,!0},re=function(){return sg()},O=Ts("pseudostring"),F=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,ue=Rn(["\r",` +`," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),he=/^[^\r\n\t ,\][{}:#"']/,ke=Rn(["\r",` +`," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),Fe=function(){return sg().replace(/^ *| *$/g,"")},Ne="--",oe=ar("--",!1),le=/^[a-zA-Z\/0-9]/,we=Rn([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),fe=/^[^\r\n\t :,]/,Ae=Rn(["\r",` +`," "," ",":",","],!0,!1),qe="null",ne=ar("null",!1),Y=function(){return null},pe="true",ie=ar("true",!1),de=function(){return!0},tt="false",Pt=ar("false",!1),It=function(){return!1},Or=Ts("string"),ii='"',gi=ar('"',!1),hr=function(){return""},fi=function(R){return R},ni=function(R){return R.join("")},Ls=/^[^"\\\0-\x1F\x7F]/,pr=Rn(['"',"\\",["\0",""],"\x7F"],!0,!1),Ei='\\"',_n=ar('\\"',!1),oa=function(){return'"'},aA="\\\\",eg=ar("\\\\",!1),Zn=function(){return"\\"},AA="\\/",aa=ar("\\/",!1),up=function(){return"/"},lA="\\b",cA=ar("\\b",!1),wr=function(){return"\b"},wl="\\f",tg=ar("\\f",!1),po=function(){return"\f"},rg="\\n",gp=ar("\\n",!1),fp=function(){return` +`},vr="\\r",se=ar("\\r",!1),Co=function(){return"\r"},Dn="\\t",ig=ar("\\t",!1),Qt=function(){return" "},Bl="\\u",kn=ar("\\u",!1),$n=function(R,q,Ce,Ke){return String.fromCharCode(parseInt(`0x${R}${q}${Ce}${Ke}`))},es=/^[0-9a-fA-F]/,gt=Rn([["0","9"],["a","f"],["A","F"]],!1,!1),mo=Ts("blank space"),At=/^[ \t]/,an=Rn([" "," "],!1,!1),S=Ts("white space"),Tt=/^[ \t\n\r]/,ng=Rn([" "," ",` +`,"\r"],!1,!1),Ql=`\r +`,hp=ar(`\r +`,!1),pp=` +`,dp=ar(` +`,!1),Cp="\r",mp=ar("\r",!1),G=0,yt=0,uA=[{line:1,column:1}],ji=0,bl=[],Xe=0,Aa;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function sg(){return r.substring(yt,G)}function bE(){return An(yt,G)}function Ep(R,q){throw q=q!==void 0?q:An(yt,G),vl([Ts(R)],r.substring(yt,G),q)}function SE(R,q){throw q=q!==void 0?q:An(yt,G),og(R,q)}function ar(R,q){return{type:"literal",text:R,ignoreCase:q}}function Rn(R,q,Ce){return{type:"class",parts:R,inverted:q,ignoreCase:Ce}}function Sl(){return{type:"any"}}function Ip(){return{type:"end"}}function Ts(R){return{type:"other",description:R}}function la(R){var q=uA[R],Ce;if(q)return q;for(Ce=R-1;!uA[Ce];)Ce--;for(q=uA[Ce],q={line:q.line,column:q.column};Ceji&&(ji=G,bl=[]),bl.push(R))}function og(R,q){return new zl(R,null,null,q)}function vl(R,q,Ce){return new zl(zl.buildMessage(R,q),R,q,Ce)}function Os(){var R;return R=ag(),R}function xl(){var R,q,Ce;for(R=G,q=[],Ce=gA();Ce!==t;)q.push(Ce),Ce=gA();return q!==t&&(yt=R,q=s(q)),R=q,R}function gA(){var R,q,Ce,Ke,Re;return R=G,q=ua(),q!==t?(r.charCodeAt(G)===45?(Ce=o,G++):(Ce=t,Xe===0&&Te(a)),Ce!==t?(Ke=Rr(),Ke!==t?(Re=ca(),Re!==t?(yt=R,q=l(Re),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R}function ag(){var R,q,Ce;for(R=G,q=[],Ce=Ag();Ce!==t;)q.push(Ce),Ce=Ag();return q!==t&&(yt=R,q=c(q)),R=q,R}function Ag(){var R,q,Ce,Ke,Re,ze,dt,Ft,Fn;if(R=G,q=Rr(),q===t&&(q=null),q!==t){if(Ce=G,r.charCodeAt(G)===35?(Ke=u,G++):(Ke=t,Xe===0&&Te(g)),Ke!==t){if(Re=[],ze=G,dt=G,Xe++,Ft=Us(),Xe--,Ft===t?dt=void 0:(G=dt,dt=t),dt!==t?(r.length>G?(Ft=r.charAt(G),G++):(Ft=t,Xe===0&&Te(f)),Ft!==t?(dt=[dt,Ft],ze=dt):(G=ze,ze=t)):(G=ze,ze=t),ze!==t)for(;ze!==t;)Re.push(ze),ze=G,dt=G,Xe++,Ft=Us(),Xe--,Ft===t?dt=void 0:(G=dt,dt=t),dt!==t?(r.length>G?(Ft=r.charAt(G),G++):(Ft=t,Xe===0&&Te(f)),Ft!==t?(dt=[dt,Ft],ze=dt):(G=ze,ze=t)):(G=ze,ze=t);else Re=t;Re!==t?(Ke=[Ke,Re],Ce=Ke):(G=Ce,Ce=t)}else G=Ce,Ce=t;if(Ce===t&&(Ce=null),Ce!==t){if(Ke=[],Re=Ks(),Re!==t)for(;Re!==t;)Ke.push(Re),Re=Ks();else Ke=t;Ke!==t?(yt=R,q=h(),R=q):(G=R,R=t)}else G=R,R=t}else G=R,R=t;if(R===t&&(R=G,q=ua(),q!==t?(Ce=Pl(),Ce!==t?(Ke=Rr(),Ke===t&&(Ke=null),Ke!==t?(r.charCodeAt(G)===58?(Re=p,G++):(Re=t,Xe===0&&Te(C)),Re!==t?(ze=Rr(),ze===t&&(ze=null),ze!==t?(dt=ca(),dt!==t?(yt=R,q=y(Ce,dt),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,q=ua(),q!==t?(Ce=Ms(),Ce!==t?(Ke=Rr(),Ke===t&&(Ke=null),Ke!==t?(r.charCodeAt(G)===58?(Re=p,G++):(Re=t,Xe===0&&Te(C)),Re!==t?(ze=Rr(),ze===t&&(ze=null),ze!==t?(dt=ca(),dt!==t?(yt=R,q=y(Ce,dt),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t))){if(R=G,q=ua(),q!==t)if(Ce=Ms(),Ce!==t)if(Ke=Rr(),Ke!==t)if(Re=vE(),Re!==t){if(ze=[],dt=Ks(),dt!==t)for(;dt!==t;)ze.push(dt),dt=Ks();else ze=t;ze!==t?(yt=R,q=y(Ce,Re),R=q):(G=R,R=t)}else G=R,R=t;else G=R,R=t;else G=R,R=t;else G=R,R=t;if(R===t)if(R=G,q=ua(),q!==t)if(Ce=Ms(),Ce!==t){if(Ke=[],Re=G,ze=Rr(),ze===t&&(ze=null),ze!==t?(r.charCodeAt(G)===44?(dt=B,G++):(dt=t,Xe===0&&Te(v)),dt!==t?(Ft=Rr(),Ft===t&&(Ft=null),Ft!==t?(Fn=Ms(),Fn!==t?(yt=Re,ze=D(Ce,Fn),Re=ze):(G=Re,Re=t)):(G=Re,Re=t)):(G=Re,Re=t)):(G=Re,Re=t),Re!==t)for(;Re!==t;)Ke.push(Re),Re=G,ze=Rr(),ze===t&&(ze=null),ze!==t?(r.charCodeAt(G)===44?(dt=B,G++):(dt=t,Xe===0&&Te(v)),dt!==t?(Ft=Rr(),Ft===t&&(Ft=null),Ft!==t?(Fn=Ms(),Fn!==t?(yt=Re,ze=D(Ce,Fn),Re=ze):(G=Re,Re=t)):(G=Re,Re=t)):(G=Re,Re=t)):(G=Re,Re=t);else Ke=t;Ke!==t?(Re=Rr(),Re===t&&(Re=null),Re!==t?(r.charCodeAt(G)===58?(ze=p,G++):(ze=t,Xe===0&&Te(C)),ze!==t?(dt=Rr(),dt===t&&(dt=null),dt!==t?(Ft=ca(),Ft!==t?(yt=R,q=L(Ce,Ke,Ft),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)}else G=R,R=t;else G=R,R=t}return R}function ca(){var R,q,Ce,Ke,Re,ze,dt;if(R=G,q=G,Xe++,Ce=G,Ke=Us(),Ke!==t?(Re=rt(),Re!==t?(r.charCodeAt(G)===45?(ze=o,G++):(ze=t,Xe===0&&Te(a)),ze!==t?(dt=Rr(),dt!==t?(Ke=[Ke,Re,ze,dt],Ce=Ke):(G=Ce,Ce=t)):(G=Ce,Ce=t)):(G=Ce,Ce=t)):(G=Ce,Ce=t),Xe--,Ce!==t?(G=q,q=void 0):q=t,q!==t?(Ce=Ks(),Ce!==t?(Ke=Eo(),Ke!==t?(Re=xl(),Re!==t?(ze=fA(),ze!==t?(yt=R,q=H(Re),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,q=Us(),q!==t?(Ce=Eo(),Ce!==t?(Ke=ag(),Ke!==t?(Re=fA(),Re!==t?(yt=R,q=H(Ke),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t))if(R=G,q=Dl(),q!==t){if(Ce=[],Ke=Ks(),Ke!==t)for(;Ke!==t;)Ce.push(Ke),Ke=Ks();else Ce=t;Ce!==t?(yt=R,q=j(q),R=q):(G=R,R=t)}else G=R,R=t;return R}function ua(){var R,q,Ce;for(Xe++,R=G,q=[],r.charCodeAt(G)===32?(Ce=V,G++):(Ce=t,Xe===0&&Te(W));Ce!==t;)q.push(Ce),r.charCodeAt(G)===32?(Ce=V,G++):(Ce=t,Xe===0&&Te(W));return q!==t?(yt=G,Ce=Z(q),Ce?Ce=void 0:Ce=t,Ce!==t?(q=[q,Ce],R=q):(G=R,R=t)):(G=R,R=t),Xe--,R===t&&(q=t,Xe===0&&Te($)),R}function rt(){var R,q,Ce;for(R=G,q=[],r.charCodeAt(G)===32?(Ce=V,G++):(Ce=t,Xe===0&&Te(W));Ce!==t;)q.push(Ce),r.charCodeAt(G)===32?(Ce=V,G++):(Ce=t,Xe===0&&Te(W));return q!==t?(yt=G,Ce=A(q),Ce?Ce=void 0:Ce=t,Ce!==t?(q=[q,Ce],R=q):(G=R,R=t)):(G=R,R=t),R}function Eo(){var R;return yt=G,R=ae(),R?R=void 0:R=t,R}function fA(){var R;return yt=G,R=ge(),R?R=void 0:R=t,R}function Pl(){var R;return R=kl(),R===t&&(R=yp()),R}function Ms(){var R,q,Ce;if(R=kl(),R===t){if(R=G,q=[],Ce=lg(),Ce!==t)for(;Ce!==t;)q.push(Ce),Ce=lg();else q=t;q!==t&&(yt=R,q=re()),R=q}return R}function Dl(){var R;return R=wp(),R===t&&(R=xE(),R===t&&(R=kl(),R===t&&(R=yp()))),R}function vE(){var R;return R=wp(),R===t&&(R=kl(),R===t&&(R=lg())),R}function yp(){var R,q,Ce,Ke,Re,ze;if(Xe++,R=G,F.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(ue)),q!==t){for(Ce=[],Ke=G,Re=Rr(),Re===t&&(Re=null),Re!==t?(he.test(r.charAt(G))?(ze=r.charAt(G),G++):(ze=t,Xe===0&&Te(ke)),ze!==t?(Re=[Re,ze],Ke=Re):(G=Ke,Ke=t)):(G=Ke,Ke=t);Ke!==t;)Ce.push(Ke),Ke=G,Re=Rr(),Re===t&&(Re=null),Re!==t?(he.test(r.charAt(G))?(ze=r.charAt(G),G++):(ze=t,Xe===0&&Te(ke)),ze!==t?(Re=[Re,ze],Ke=Re):(G=Ke,Ke=t)):(G=Ke,Ke=t);Ce!==t?(yt=R,q=Fe(),R=q):(G=R,R=t)}else G=R,R=t;return Xe--,R===t&&(q=t,Xe===0&&Te(O)),R}function lg(){var R,q,Ce,Ke,Re;if(R=G,r.substr(G,2)===Ne?(q=Ne,G+=2):(q=t,Xe===0&&Te(oe)),q===t&&(q=null),q!==t)if(le.test(r.charAt(G))?(Ce=r.charAt(G),G++):(Ce=t,Xe===0&&Te(we)),Ce!==t){for(Ke=[],fe.test(r.charAt(G))?(Re=r.charAt(G),G++):(Re=t,Xe===0&&Te(Ae));Re!==t;)Ke.push(Re),fe.test(r.charAt(G))?(Re=r.charAt(G),G++):(Re=t,Xe===0&&Te(Ae));Ke!==t?(yt=R,q=Fe(),R=q):(G=R,R=t)}else G=R,R=t;else G=R,R=t;return R}function wp(){var R,q;return R=G,r.substr(G,4)===qe?(q=qe,G+=4):(q=t,Xe===0&&Te(ne)),q!==t&&(yt=R,q=Y()),R=q,R}function xE(){var R,q;return R=G,r.substr(G,4)===pe?(q=pe,G+=4):(q=t,Xe===0&&Te(ie)),q!==t&&(yt=R,q=de()),R=q,R===t&&(R=G,r.substr(G,5)===tt?(q=tt,G+=5):(q=t,Xe===0&&Te(Pt)),q!==t&&(yt=R,q=It()),R=q),R}function kl(){var R,q,Ce,Ke;return Xe++,R=G,r.charCodeAt(G)===34?(q=ii,G++):(q=t,Xe===0&&Te(gi)),q!==t?(r.charCodeAt(G)===34?(Ce=ii,G++):(Ce=t,Xe===0&&Te(gi)),Ce!==t?(yt=R,q=hr(),R=q):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,r.charCodeAt(G)===34?(q=ii,G++):(q=t,Xe===0&&Te(gi)),q!==t?(Ce=PE(),Ce!==t?(r.charCodeAt(G)===34?(Ke=ii,G++):(Ke=t,Xe===0&&Te(gi)),Ke!==t?(yt=R,q=fi(Ce),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)),Xe--,R===t&&(q=t,Xe===0&&Te(Or)),R}function PE(){var R,q,Ce;if(R=G,q=[],Ce=cg(),Ce!==t)for(;Ce!==t;)q.push(Ce),Ce=cg();else q=t;return q!==t&&(yt=R,q=ni(q)),R=q,R}function cg(){var R,q,Ce,Ke,Re,ze;return Ls.test(r.charAt(G))?(R=r.charAt(G),G++):(R=t,Xe===0&&Te(pr)),R===t&&(R=G,r.substr(G,2)===Ei?(q=Ei,G+=2):(q=t,Xe===0&&Te(_n)),q!==t&&(yt=R,q=oa()),R=q,R===t&&(R=G,r.substr(G,2)===aA?(q=aA,G+=2):(q=t,Xe===0&&Te(eg)),q!==t&&(yt=R,q=Zn()),R=q,R===t&&(R=G,r.substr(G,2)===AA?(q=AA,G+=2):(q=t,Xe===0&&Te(aa)),q!==t&&(yt=R,q=up()),R=q,R===t&&(R=G,r.substr(G,2)===lA?(q=lA,G+=2):(q=t,Xe===0&&Te(cA)),q!==t&&(yt=R,q=wr()),R=q,R===t&&(R=G,r.substr(G,2)===wl?(q=wl,G+=2):(q=t,Xe===0&&Te(tg)),q!==t&&(yt=R,q=po()),R=q,R===t&&(R=G,r.substr(G,2)===rg?(q=rg,G+=2):(q=t,Xe===0&&Te(gp)),q!==t&&(yt=R,q=fp()),R=q,R===t&&(R=G,r.substr(G,2)===vr?(q=vr,G+=2):(q=t,Xe===0&&Te(se)),q!==t&&(yt=R,q=Co()),R=q,R===t&&(R=G,r.substr(G,2)===Dn?(q=Dn,G+=2):(q=t,Xe===0&&Te(ig)),q!==t&&(yt=R,q=Qt()),R=q,R===t&&(R=G,r.substr(G,2)===Bl?(q=Bl,G+=2):(q=t,Xe===0&&Te(kn)),q!==t?(Ce=hA(),Ce!==t?(Ke=hA(),Ke!==t?(Re=hA(),Re!==t?(ze=hA(),ze!==t?(yt=R,q=$n(Ce,Ke,Re,ze),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)))))))))),R}function hA(){var R;return es.test(r.charAt(G))?(R=r.charAt(G),G++):(R=t,Xe===0&&Te(gt)),R}function Rr(){var R,q;if(Xe++,R=[],At.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(an)),q!==t)for(;q!==t;)R.push(q),At.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(an));else R=t;return Xe--,R===t&&(q=t,Xe===0&&Te(mo)),R}function DE(){var R,q;if(Xe++,R=[],Tt.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(ng)),q!==t)for(;q!==t;)R.push(q),Tt.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(ng));else R=t;return Xe--,R===t&&(q=t,Xe===0&&Te(S)),R}function Ks(){var R,q,Ce,Ke,Re,ze;if(R=G,q=Us(),q!==t){for(Ce=[],Ke=G,Re=Rr(),Re===t&&(Re=null),Re!==t?(ze=Us(),ze!==t?(Re=[Re,ze],Ke=Re):(G=Ke,Ke=t)):(G=Ke,Ke=t);Ke!==t;)Ce.push(Ke),Ke=G,Re=Rr(),Re===t&&(Re=null),Re!==t?(ze=Us(),ze!==t?(Re=[Re,ze],Ke=Re):(G=Ke,Ke=t)):(G=Ke,Ke=t);Ce!==t?(q=[q,Ce],R=q):(G=R,R=t)}else G=R,R=t;return R}function Us(){var R;return r.substr(G,2)===Ql?(R=Ql,G+=2):(R=t,Xe===0&&Te(hp)),R===t&&(r.charCodeAt(G)===10?(R=pp,G++):(R=t,Xe===0&&Te(dp)),R===t&&(r.charCodeAt(G)===13?(R=Cp,G++):(R=t,Xe===0&&Te(mp)))),R}let ug=2,pA=0;if(Aa=n(),Aa!==t&&G===r.length)return Aa;throw Aa!==t&&G{"use strict";var wpe=r=>{let e=!1,t=!1,i=!1;for(let n=0;n{if(!(typeof r=="string"||Array.isArray(r)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let t=n=>e.pascalCase?n.charAt(0).toUpperCase()+n.slice(1):n;return Array.isArray(r)?r=r.map(n=>n.trim()).filter(n=>n.length).join("-"):r=r.trim(),r.length===0?"":r.length===1?e.pascalCase?r.toUpperCase():r.toLowerCase():(r!==r.toLowerCase()&&(r=wpe(r)),r=r.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(n,s)=>s.toUpperCase()).replace(/\d+(\w|$)/g,n=>n.toUpperCase()),t(r))};KS.exports=T2;KS.exports.default=T2});var M2=w((VXe,Bpe)=>{Bpe.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vercel",constant:"VERCEL",env:"NOW_BUILDER"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"}]});var Vl=w(On=>{"use strict";var U2=M2(),Qo=process.env;Object.defineProperty(On,"_vendors",{value:U2.map(function(r){return r.constant})});On.name=null;On.isPR=null;U2.forEach(function(r){let t=(Array.isArray(r.env)?r.env:[r.env]).every(function(i){return K2(i)});if(On[r.constant]=t,t)switch(On.name=r.name,typeof r.pr){case"string":On.isPR=!!Qo[r.pr];break;case"object":"env"in r.pr?On.isPR=r.pr.env in Qo&&Qo[r.pr.env]!==r.pr.ne:"any"in r.pr?On.isPR=r.pr.any.some(function(i){return!!Qo[i]}):On.isPR=K2(r.pr);break;default:On.isPR=null}});On.isCI=!!(Qo.CI||Qo.CONTINUOUS_INTEGRATION||Qo.BUILD_NUMBER||Qo.RUN_ID||On.name);function K2(r){return typeof r=="string"?!!Qo[r]:Object.keys(r).every(function(e){return Qo[e]===r[e]})}});var gn={};ut(gn,{KeyRelationship:()=>Xl,applyCascade:()=>zp,base64RegExp:()=>q2,colorStringAlphaRegExp:()=>j2,colorStringRegExp:()=>Y2,computeKey:()=>BA,getPrintable:()=>Vr,hasExactLength:()=>X2,hasForbiddenKeys:()=>tde,hasKeyRelationship:()=>JS,hasMaxLength:()=>Mpe,hasMinLength:()=>Ope,hasMutuallyExclusiveKeys:()=>rde,hasRequiredKeys:()=>ede,hasUniqueItems:()=>Kpe,isArray:()=>Ppe,isAtLeast:()=>Gpe,isAtMost:()=>Ype,isBase64:()=>Zpe,isBoolean:()=>Spe,isDate:()=>xpe,isDict:()=>kpe,isEnum:()=>Wi,isHexColor:()=>_pe,isISO8601:()=>Xpe,isInExclusiveRange:()=>qpe,isInInclusiveRange:()=>jpe,isInstanceOf:()=>Fpe,isInteger:()=>Jpe,isJSON:()=>$pe,isLiteral:()=>Qpe,isLowerCase:()=>Wpe,isNegative:()=>Upe,isNullable:()=>Tpe,isNumber:()=>vpe,isObject:()=>Rpe,isOneOf:()=>Npe,isOptional:()=>Lpe,isPositive:()=>Hpe,isString:()=>Wp,isTuple:()=>Dpe,isUUID4:()=>Vpe,isUnknown:()=>V2,isUpperCase:()=>zpe,iso8601RegExp:()=>qS,makeCoercionFn:()=>_l,makeSetter:()=>z2,makeTrait:()=>W2,makeValidator:()=>bt,matchesRegExp:()=>Vp,plural:()=>EI,pushError:()=>pt,simpleKeyRegExp:()=>G2,uuid4RegExp:()=>J2});function bt({test:r}){return W2(r)()}function Vr(r){return r===null?"null":r===void 0?"undefined":r===""?"an empty string":JSON.stringify(r)}function BA(r,e){var t,i,n;return typeof e=="number"?`${(t=r==null?void 0:r.p)!==null&&t!==void 0?t:"."}[${e}]`:G2.test(e)?`${(i=r==null?void 0:r.p)!==null&&i!==void 0?i:""}.${e}`:`${(n=r==null?void 0:r.p)!==null&&n!==void 0?n:"."}[${JSON.stringify(e)}]`}function _l(r,e){return t=>{let i=r[e];return r[e]=t,_l(r,e).bind(null,i)}}function z2(r,e){return t=>{r[e]=t}}function EI(r,e,t){return r===1?e:t}function pt({errors:r,p:e}={},t){return r==null||r.push(`${e!=null?e:"."}: ${t}`),!1}function Qpe(r){return bt({test:(e,t)=>e!==r?pt(t,`Expected a literal (got ${Vr(r)})`):!0})}function Wi(r){let e=Array.isArray(r)?r:Object.values(r),t=new Set(e);return bt({test:(i,n)=>t.has(i)?!0:pt(n,`Expected a valid enumeration value (got ${Vr(i)})`)})}var G2,Y2,j2,q2,J2,qS,W2,V2,Wp,bpe,Spe,vpe,xpe,Ppe,Dpe,kpe,Rpe,Fpe,Npe,zp,Lpe,Tpe,Ope,Mpe,X2,Kpe,Upe,Hpe,Gpe,Ype,jpe,qpe,Jpe,Vp,Wpe,zpe,Vpe,Xpe,_pe,Zpe,$pe,ede,tde,rde,Xl,ide,JS,ns=Yue(()=>{G2=/^[a-zA-Z_][a-zA-Z0-9_]*$/,Y2=/^#[0-9a-f]{6}$/i,j2=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,q2=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,J2=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,qS=/^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/,W2=r=>()=>r;V2=()=>bt({test:(r,e)=>!0});Wp=()=>bt({test:(r,e)=>typeof r!="string"?pt(e,`Expected a string (got ${Vr(r)})`):!0});bpe=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]),Spe=()=>bt({test:(r,e)=>{var t;if(typeof r!="boolean"){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i=bpe.get(r);if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a boolean (got ${Vr(r)})`)}return!0}}),vpe=()=>bt({test:(r,e)=>{var t;if(typeof r!="number"){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i;if(typeof r=="string"){let n;try{n=JSON.parse(r)}catch{}if(typeof n=="number")if(JSON.stringify(n)===r)i=n;else return pt(e,`Received a number that can't be safely represented by the runtime (${r})`)}if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a number (got ${Vr(r)})`)}return!0}}),xpe=()=>bt({test:(r,e)=>{var t;if(!(r instanceof Date)){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i;if(typeof r=="string"&&qS.test(r))i=new Date(r);else{let n;if(typeof r=="string"){let s;try{s=JSON.parse(r)}catch{}typeof s=="number"&&(n=s)}else typeof r=="number"&&(n=r);if(typeof n<"u")if(Number.isSafeInteger(n)||!Number.isSafeInteger(n*1e3))i=new Date(n*1e3);else return pt(e,`Received a timestamp that can't be safely represented by the runtime (${r})`)}if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a date (got ${Vr(r)})`)}return!0}}),Ppe=(r,{delimiter:e}={})=>bt({test:(t,i)=>{var n;if(typeof t=="string"&&typeof e<"u"&&typeof(i==null?void 0:i.coercions)<"u"){if(typeof(i==null?void 0:i.coercion)>"u")return pt(i,"Unbound coercion result");t=t.split(e),i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,t)])}if(!Array.isArray(t))return pt(i,`Expected an array (got ${Vr(t)})`);let s=!0;for(let o=0,a=t.length;o{let t=X2(r.length);return bt({test:(i,n)=>{var s;if(typeof i=="string"&&typeof e<"u"&&typeof(n==null?void 0:n.coercions)<"u"){if(typeof(n==null?void 0:n.coercion)>"u")return pt(n,"Unbound coercion result");i=i.split(e),n.coercions.push([(s=n.p)!==null&&s!==void 0?s:".",n.coercion.bind(null,i)])}if(!Array.isArray(i))return pt(n,`Expected a tuple (got ${Vr(i)})`);let o=t(i,Object.assign({},n));for(let a=0,l=i.length;abt({test:(t,i)=>{if(typeof t!="object"||t===null)return pt(i,`Expected an object (got ${Vr(t)})`);let n=Object.keys(t),s=!0;for(let o=0,a=n.length;o{let t=Object.keys(r);return bt({test:(i,n)=>{if(typeof i!="object"||i===null)return pt(n,`Expected an object (got ${Vr(i)})`);let s=new Set([...t,...Object.keys(i)]),o={},a=!0;for(let l of s){if(l==="constructor"||l==="__proto__")a=pt(Object.assign(Object.assign({},n),{p:BA(n,l)}),"Unsafe property name");else{let c=Object.prototype.hasOwnProperty.call(r,l)?r[l]:void 0,u=Object.prototype.hasOwnProperty.call(i,l)?i[l]:void 0;typeof c<"u"?a=c(u,Object.assign(Object.assign({},n),{p:BA(n,l),coercion:_l(i,l)}))&&a:e===null?a=pt(Object.assign(Object.assign({},n),{p:BA(n,l)}),`Extraneous property (got ${Vr(u)})`):Object.defineProperty(o,l,{enumerable:!0,get:()=>u,set:z2(i,l)})}if(!a&&(n==null?void 0:n.errors)==null)break}return e!==null&&(a||(n==null?void 0:n.errors)!=null)&&(a=e(o,n)&&a),a}})},Fpe=r=>bt({test:(e,t)=>e instanceof r?!0:pt(t,`Expected an instance of ${r.name} (got ${Vr(e)})`)}),Npe=(r,{exclusive:e=!1}={})=>bt({test:(t,i)=>{var n,s,o;let a=[],l=typeof(i==null?void 0:i.errors)<"u"?[]:void 0;for(let c=0,u=r.length;c1?pt(i,`Expected to match exactly a single predicate (matched ${a.join(", ")})`):(o=i==null?void 0:i.errors)===null||o===void 0||o.push(...l),!1}}),zp=(r,e)=>bt({test:(t,i)=>{var n,s;let o={value:t},a=typeof(i==null?void 0:i.coercions)<"u"?_l(o,"value"):void 0,l=typeof(i==null?void 0:i.coercions)<"u"?[]:void 0;if(!r(t,Object.assign(Object.assign({},i),{coercion:a,coercions:l})))return!1;let c=[];if(typeof l<"u")for(let[,u]of l)c.push(u());try{if(typeof(i==null?void 0:i.coercions)<"u"){if(o.value!==t){if(typeof(i==null?void 0:i.coercion)>"u")return pt(i,"Unbound coercion result");i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,o.value)])}(s=i==null?void 0:i.coercions)===null||s===void 0||s.push(...l)}return e.every(u=>u(o.value,i))}finally{for(let u of c)u()}}}),Lpe=r=>bt({test:(e,t)=>typeof e>"u"?!0:r(e,t)}),Tpe=r=>bt({test:(e,t)=>e===null?!0:r(e,t)}),Ope=r=>bt({test:(e,t)=>e.length>=r?!0:pt(t,`Expected to have a length of at least ${r} elements (got ${e.length})`)}),Mpe=r=>bt({test:(e,t)=>e.length<=r?!0:pt(t,`Expected to have a length of at most ${r} elements (got ${e.length})`)}),X2=r=>bt({test:(e,t)=>e.length!==r?pt(t,`Expected to have a length of exactly ${r} elements (got ${e.length})`):!0}),Kpe=({map:r}={})=>bt({test:(e,t)=>{let i=new Set,n=new Set;for(let s=0,o=e.length;sbt({test:(r,e)=>r<=0?!0:pt(e,`Expected to be negative (got ${r})`)}),Hpe=()=>bt({test:(r,e)=>r>=0?!0:pt(e,`Expected to be positive (got ${r})`)}),Gpe=r=>bt({test:(e,t)=>e>=r?!0:pt(t,`Expected to be at least ${r} (got ${e})`)}),Ype=r=>bt({test:(e,t)=>e<=r?!0:pt(t,`Expected to be at most ${r} (got ${e})`)}),jpe=(r,e)=>bt({test:(t,i)=>t>=r&&t<=e?!0:pt(i,`Expected to be in the [${r}; ${e}] range (got ${t})`)}),qpe=(r,e)=>bt({test:(t,i)=>t>=r&&tbt({test:(e,t)=>e!==Math.round(e)?pt(t,`Expected to be an integer (got ${e})`):Number.isSafeInteger(e)?!0:pt(t,`Expected to be a safe integer (got ${e})`)}),Vp=r=>bt({test:(e,t)=>r.test(e)?!0:pt(t,`Expected to match the pattern ${r.toString()} (got ${Vr(e)})`)}),Wpe=()=>bt({test:(r,e)=>r!==r.toLowerCase()?pt(e,`Expected to be all-lowercase (got ${r})`):!0}),zpe=()=>bt({test:(r,e)=>r!==r.toUpperCase()?pt(e,`Expected to be all-uppercase (got ${r})`):!0}),Vpe=()=>bt({test:(r,e)=>J2.test(r)?!0:pt(e,`Expected to be a valid UUID v4 (got ${Vr(r)})`)}),Xpe=()=>bt({test:(r,e)=>qS.test(r)?!1:pt(e,`Expected to be a valid ISO 8601 date string (got ${Vr(r)})`)}),_pe=({alpha:r=!1})=>bt({test:(e,t)=>(r?Y2.test(e):j2.test(e))?!0:pt(t,`Expected to be a valid hexadecimal color string (got ${Vr(e)})`)}),Zpe=()=>bt({test:(r,e)=>q2.test(r)?!0:pt(e,`Expected to be a valid base 64 string (got ${Vr(r)})`)}),$pe=(r=V2())=>bt({test:(e,t)=>{let i;try{i=JSON.parse(e)}catch{return pt(t,`Expected to be a valid JSON string (got ${Vr(e)})`)}return r(i,t)}}),ede=r=>{let e=new Set(r);return bt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)||s.push(o);return s.length>0?pt(i,`Missing required ${EI(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},tde=r=>{let e=new Set(r);return bt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>0?pt(i,`Forbidden ${EI(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},rde=r=>{let e=new Set(r);return bt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>1?pt(i,`Mutually exclusive properties ${s.map(o=>`"${o}"`).join(", ")}`):!0}})};(function(r){r.Forbids="Forbids",r.Requires="Requires"})(Xl||(Xl={}));ide={[Xl.Forbids]:{expect:!1,message:"forbids using"},[Xl.Requires]:{expect:!0,message:"requires using"}},JS=(r,e,t,{ignore:i=[]}={})=>{let n=new Set(i),s=new Set(t),o=ide[e];return bt({test:(a,l)=>{let c=new Set(Object.keys(a));if(!c.has(r)||n.has(a[r]))return!0;let u=[];for(let g of s)(c.has(g)&&!n.has(a[g]))!==o.expect&&u.push(g);return u.length>=1?pt(l,`Property "${r}" ${o.message} ${EI(u.length,"property","properties")} ${u.map(g=>`"${g}"`).join(", ")}`):!0}})}});var fH=w((V_e,gH)=>{"use strict";gH.exports=(r,...e)=>new Promise(t=>{t(r(...e))})});var Tg=w((X_e,ev)=>{"use strict";var Ide=fH(),hH=r=>{if(r<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let e=[],t=0,i=()=>{t--,e.length>0&&e.shift()()},n=(a,l,...c)=>{t++;let u=Ide(a,...c);l(u),u.then(i,i)},s=(a,l,...c)=>{tnew Promise(c=>s(a,c,...l));return Object.defineProperties(o,{activeCount:{get:()=>t},pendingCount:{get:()=>e.length}}),o};ev.exports=hH;ev.exports.default=hH});var ed=w((Z_e,pH)=>{var yde="2.0.0",wde=Number.MAX_SAFE_INTEGER||9007199254740991,Bde=16;pH.exports={SEMVER_SPEC_VERSION:yde,MAX_LENGTH:256,MAX_SAFE_INTEGER:wde,MAX_SAFE_COMPONENT_LENGTH:Bde}});var td=w(($_e,dH)=>{var Qde=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...r)=>console.error("SEMVER",...r):()=>{};dH.exports=Qde});var Zl=w((bA,CH)=>{var{MAX_SAFE_COMPONENT_LENGTH:tv}=ed(),bde=td();bA=CH.exports={};var Sde=bA.re=[],$e=bA.src=[],et=bA.t={},vde=0,St=(r,e,t)=>{let i=vde++;bde(i,e),et[r]=i,$e[i]=e,Sde[i]=new RegExp(e,t?"g":void 0)};St("NUMERICIDENTIFIER","0|[1-9]\\d*");St("NUMERICIDENTIFIERLOOSE","[0-9]+");St("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*");St("MAINVERSION",`(${$e[et.NUMERICIDENTIFIER]})\\.(${$e[et.NUMERICIDENTIFIER]})\\.(${$e[et.NUMERICIDENTIFIER]})`);St("MAINVERSIONLOOSE",`(${$e[et.NUMERICIDENTIFIERLOOSE]})\\.(${$e[et.NUMERICIDENTIFIERLOOSE]})\\.(${$e[et.NUMERICIDENTIFIERLOOSE]})`);St("PRERELEASEIDENTIFIER",`(?:${$e[et.NUMERICIDENTIFIER]}|${$e[et.NONNUMERICIDENTIFIER]})`);St("PRERELEASEIDENTIFIERLOOSE",`(?:${$e[et.NUMERICIDENTIFIERLOOSE]}|${$e[et.NONNUMERICIDENTIFIER]})`);St("PRERELEASE",`(?:-(${$e[et.PRERELEASEIDENTIFIER]}(?:\\.${$e[et.PRERELEASEIDENTIFIER]})*))`);St("PRERELEASELOOSE",`(?:-?(${$e[et.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${$e[et.PRERELEASEIDENTIFIERLOOSE]})*))`);St("BUILDIDENTIFIER","[0-9A-Za-z-]+");St("BUILD",`(?:\\+(${$e[et.BUILDIDENTIFIER]}(?:\\.${$e[et.BUILDIDENTIFIER]})*))`);St("FULLPLAIN",`v?${$e[et.MAINVERSION]}${$e[et.PRERELEASE]}?${$e[et.BUILD]}?`);St("FULL",`^${$e[et.FULLPLAIN]}$`);St("LOOSEPLAIN",`[v=\\s]*${$e[et.MAINVERSIONLOOSE]}${$e[et.PRERELEASELOOSE]}?${$e[et.BUILD]}?`);St("LOOSE",`^${$e[et.LOOSEPLAIN]}$`);St("GTLT","((?:<|>)?=?)");St("XRANGEIDENTIFIERLOOSE",`${$e[et.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);St("XRANGEIDENTIFIER",`${$e[et.NUMERICIDENTIFIER]}|x|X|\\*`);St("XRANGEPLAIN",`[v=\\s]*(${$e[et.XRANGEIDENTIFIER]})(?:\\.(${$e[et.XRANGEIDENTIFIER]})(?:\\.(${$e[et.XRANGEIDENTIFIER]})(?:${$e[et.PRERELEASE]})?${$e[et.BUILD]}?)?)?`);St("XRANGEPLAINLOOSE",`[v=\\s]*(${$e[et.XRANGEIDENTIFIERLOOSE]})(?:\\.(${$e[et.XRANGEIDENTIFIERLOOSE]})(?:\\.(${$e[et.XRANGEIDENTIFIERLOOSE]})(?:${$e[et.PRERELEASELOOSE]})?${$e[et.BUILD]}?)?)?`);St("XRANGE",`^${$e[et.GTLT]}\\s*${$e[et.XRANGEPLAIN]}$`);St("XRANGELOOSE",`^${$e[et.GTLT]}\\s*${$e[et.XRANGEPLAINLOOSE]}$`);St("COERCE",`(^|[^\\d])(\\d{1,${tv}})(?:\\.(\\d{1,${tv}}))?(?:\\.(\\d{1,${tv}}))?(?:$|[^\\d])`);St("COERCERTL",$e[et.COERCE],!0);St("LONETILDE","(?:~>?)");St("TILDETRIM",`(\\s*)${$e[et.LONETILDE]}\\s+`,!0);bA.tildeTrimReplace="$1~";St("TILDE",`^${$e[et.LONETILDE]}${$e[et.XRANGEPLAIN]}$`);St("TILDELOOSE",`^${$e[et.LONETILDE]}${$e[et.XRANGEPLAINLOOSE]}$`);St("LONECARET","(?:\\^)");St("CARETTRIM",`(\\s*)${$e[et.LONECARET]}\\s+`,!0);bA.caretTrimReplace="$1^";St("CARET",`^${$e[et.LONECARET]}${$e[et.XRANGEPLAIN]}$`);St("CARETLOOSE",`^${$e[et.LONECARET]}${$e[et.XRANGEPLAINLOOSE]}$`);St("COMPARATORLOOSE",`^${$e[et.GTLT]}\\s*(${$e[et.LOOSEPLAIN]})$|^$`);St("COMPARATOR",`^${$e[et.GTLT]}\\s*(${$e[et.FULLPLAIN]})$|^$`);St("COMPARATORTRIM",`(\\s*)${$e[et.GTLT]}\\s*(${$e[et.LOOSEPLAIN]}|${$e[et.XRANGEPLAIN]})`,!0);bA.comparatorTrimReplace="$1$2$3";St("HYPHENRANGE",`^\\s*(${$e[et.XRANGEPLAIN]})\\s+-\\s+(${$e[et.XRANGEPLAIN]})\\s*$`);St("HYPHENRANGELOOSE",`^\\s*(${$e[et.XRANGEPLAINLOOSE]})\\s+-\\s+(${$e[et.XRANGEPLAINLOOSE]})\\s*$`);St("STAR","(<|>)?=?\\s*\\*");St("GTE0","^\\s*>=\\s*0.0.0\\s*$");St("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")});var rd=w((eZe,mH)=>{var xde=["includePrerelease","loose","rtl"],Pde=r=>r?typeof r!="object"?{loose:!0}:xde.filter(e=>r[e]).reduce((e,t)=>(e[t]=!0,e),{}):{};mH.exports=Pde});var bI=w((tZe,yH)=>{var EH=/^[0-9]+$/,IH=(r,e)=>{let t=EH.test(r),i=EH.test(e);return t&&i&&(r=+r,e=+e),r===e?0:t&&!i?-1:i&&!t?1:rIH(e,r);yH.exports={compareIdentifiers:IH,rcompareIdentifiers:Dde}});var Li=w((rZe,bH)=>{var SI=td(),{MAX_LENGTH:wH,MAX_SAFE_INTEGER:vI}=ed(),{re:BH,t:QH}=Zl(),kde=rd(),{compareIdentifiers:id}=bI(),Un=class{constructor(e,t){if(t=kde(t),e instanceof Un){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid Version: ${e}`);if(e.length>wH)throw new TypeError(`version is longer than ${wH} characters`);SI("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;let i=e.trim().match(t.loose?BH[QH.LOOSE]:BH[QH.FULL]);if(!i)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>vI||this.major<0)throw new TypeError("Invalid major version");if(this.minor>vI||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>vI||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(n=>{if(/^[0-9]+$/.test(n)){let s=+n;if(s>=0&&s=0;)typeof this.prerelease[i]=="number"&&(this.prerelease[i]++,i=-2);i===-1&&this.prerelease.push(0)}t&&(this.prerelease[0]===t?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}};bH.exports=Un});var $l=w((iZe,PH)=>{var{MAX_LENGTH:Rde}=ed(),{re:SH,t:vH}=Zl(),xH=Li(),Fde=rd(),Nde=(r,e)=>{if(e=Fde(e),r instanceof xH)return r;if(typeof r!="string"||r.length>Rde||!(e.loose?SH[vH.LOOSE]:SH[vH.FULL]).test(r))return null;try{return new xH(r,e)}catch{return null}};PH.exports=Nde});var kH=w((nZe,DH)=>{var Lde=$l(),Tde=(r,e)=>{let t=Lde(r,e);return t?t.version:null};DH.exports=Tde});var FH=w((sZe,RH)=>{var Ode=$l(),Mde=(r,e)=>{let t=Ode(r.trim().replace(/^[=v]+/,""),e);return t?t.version:null};RH.exports=Mde});var LH=w((oZe,NH)=>{var Kde=Li(),Ude=(r,e,t,i)=>{typeof t=="string"&&(i=t,t=void 0);try{return new Kde(r,t).inc(e,i).version}catch{return null}};NH.exports=Ude});var ss=w((aZe,OH)=>{var TH=Li(),Hde=(r,e,t)=>new TH(r,t).compare(new TH(e,t));OH.exports=Hde});var xI=w((AZe,MH)=>{var Gde=ss(),Yde=(r,e,t)=>Gde(r,e,t)===0;MH.exports=Yde});var HH=w((lZe,UH)=>{var KH=$l(),jde=xI(),qde=(r,e)=>{if(jde(r,e))return null;{let t=KH(r),i=KH(e),n=t.prerelease.length||i.prerelease.length,s=n?"pre":"",o=n?"prerelease":"";for(let a in t)if((a==="major"||a==="minor"||a==="patch")&&t[a]!==i[a])return s+a;return o}};UH.exports=qde});var YH=w((cZe,GH)=>{var Jde=Li(),Wde=(r,e)=>new Jde(r,e).major;GH.exports=Wde});var qH=w((uZe,jH)=>{var zde=Li(),Vde=(r,e)=>new zde(r,e).minor;jH.exports=Vde});var WH=w((gZe,JH)=>{var Xde=Li(),_de=(r,e)=>new Xde(r,e).patch;JH.exports=_de});var VH=w((fZe,zH)=>{var Zde=$l(),$de=(r,e)=>{let t=Zde(r,e);return t&&t.prerelease.length?t.prerelease:null};zH.exports=$de});var _H=w((hZe,XH)=>{var eCe=ss(),tCe=(r,e,t)=>eCe(e,r,t);XH.exports=tCe});var $H=w((pZe,ZH)=>{var rCe=ss(),iCe=(r,e)=>rCe(r,e,!0);ZH.exports=iCe});var PI=w((dZe,tG)=>{var eG=Li(),nCe=(r,e,t)=>{let i=new eG(r,t),n=new eG(e,t);return i.compare(n)||i.compareBuild(n)};tG.exports=nCe});var iG=w((CZe,rG)=>{var sCe=PI(),oCe=(r,e)=>r.sort((t,i)=>sCe(t,i,e));rG.exports=oCe});var sG=w((mZe,nG)=>{var aCe=PI(),ACe=(r,e)=>r.sort((t,i)=>aCe(i,t,e));nG.exports=ACe});var nd=w((EZe,oG)=>{var lCe=ss(),cCe=(r,e,t)=>lCe(r,e,t)>0;oG.exports=cCe});var DI=w((IZe,aG)=>{var uCe=ss(),gCe=(r,e,t)=>uCe(r,e,t)<0;aG.exports=gCe});var rv=w((yZe,AG)=>{var fCe=ss(),hCe=(r,e,t)=>fCe(r,e,t)!==0;AG.exports=hCe});var kI=w((wZe,lG)=>{var pCe=ss(),dCe=(r,e,t)=>pCe(r,e,t)>=0;lG.exports=dCe});var RI=w((BZe,cG)=>{var CCe=ss(),mCe=(r,e,t)=>CCe(r,e,t)<=0;cG.exports=mCe});var iv=w((QZe,uG)=>{var ECe=xI(),ICe=rv(),yCe=nd(),wCe=kI(),BCe=DI(),QCe=RI(),bCe=(r,e,t,i)=>{switch(e){case"===":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r===t;case"!==":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r!==t;case"":case"=":case"==":return ECe(r,t,i);case"!=":return ICe(r,t,i);case">":return yCe(r,t,i);case">=":return wCe(r,t,i);case"<":return BCe(r,t,i);case"<=":return QCe(r,t,i);default:throw new TypeError(`Invalid operator: ${e}`)}};uG.exports=bCe});var fG=w((bZe,gG)=>{var SCe=Li(),vCe=$l(),{re:FI,t:NI}=Zl(),xCe=(r,e)=>{if(r instanceof SCe)return r;if(typeof r=="number"&&(r=String(r)),typeof r!="string")return null;e=e||{};let t=null;if(!e.rtl)t=r.match(FI[NI.COERCE]);else{let i;for(;(i=FI[NI.COERCERTL].exec(r))&&(!t||t.index+t[0].length!==r.length);)(!t||i.index+i[0].length!==t.index+t[0].length)&&(t=i),FI[NI.COERCERTL].lastIndex=i.index+i[1].length+i[2].length;FI[NI.COERCERTL].lastIndex=-1}return t===null?null:vCe(`${t[2]}.${t[3]||"0"}.${t[4]||"0"}`,e)};gG.exports=xCe});var pG=w((SZe,hG)=>{"use strict";hG.exports=function(r){r.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var sd=w((vZe,dG)=>{"use strict";dG.exports=Ht;Ht.Node=ec;Ht.create=Ht;function Ht(r){var e=this;if(e instanceof Ht||(e=new Ht),e.tail=null,e.head=null,e.length=0,r&&typeof r.forEach=="function")r.forEach(function(n){e.push(n)});else if(arguments.length>0)for(var t=0,i=arguments.length;t1)t=e;else if(this.head)i=this.head.next,t=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)t=r(t,i.value,n),i=i.next;return t};Ht.prototype.reduceReverse=function(r,e){var t,i=this.tail;if(arguments.length>1)t=e;else if(this.tail)i=this.tail.prev,t=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)t=r(t,i.value,n),i=i.prev;return t};Ht.prototype.toArray=function(){for(var r=new Array(this.length),e=0,t=this.head;t!==null;e++)r[e]=t.value,t=t.next;return r};Ht.prototype.toArrayReverse=function(){for(var r=new Array(this.length),e=0,t=this.tail;t!==null;e++)r[e]=t.value,t=t.prev;return r};Ht.prototype.slice=function(r,e){e=e||this.length,e<0&&(e+=this.length),r=r||0,r<0&&(r+=this.length);var t=new Ht;if(ethis.length&&(e=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(e=this.length);for(var i=this.length,n=this.tail;n!==null&&i>e;i--)n=n.prev;for(;n!==null&&i>r;i--,n=n.prev)t.push(n.value);return t};Ht.prototype.splice=function(r,e,...t){r>this.length&&(r=this.length-1),r<0&&(r=this.length+r);for(var i=0,n=this.head;n!==null&&i{"use strict";var RCe=sd(),tc=Symbol("max"),Ia=Symbol("length"),Og=Symbol("lengthCalculator"),ad=Symbol("allowStale"),rc=Symbol("maxAge"),Ea=Symbol("dispose"),CG=Symbol("noDisposeOnSet"),di=Symbol("lruList"),Ws=Symbol("cache"),EG=Symbol("updateAgeOnGet"),nv=()=>1,ov=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let t=this[tc]=e.max||1/0,i=e.length||nv;if(this[Og]=typeof i!="function"?nv:i,this[ad]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[rc]=e.maxAge||0,this[Ea]=e.dispose,this[CG]=e.noDisposeOnSet||!1,this[EG]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[tc]=e||1/0,od(this)}get max(){return this[tc]}set allowStale(e){this[ad]=!!e}get allowStale(){return this[ad]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[rc]=e,od(this)}get maxAge(){return this[rc]}set lengthCalculator(e){typeof e!="function"&&(e=nv),e!==this[Og]&&(this[Og]=e,this[Ia]=0,this[di].forEach(t=>{t.length=this[Og](t.value,t.key),this[Ia]+=t.length})),od(this)}get lengthCalculator(){return this[Og]}get length(){return this[Ia]}get itemCount(){return this[di].length}rforEach(e,t){t=t||this;for(let i=this[di].tail;i!==null;){let n=i.prev;mG(this,e,i,t),i=n}}forEach(e,t){t=t||this;for(let i=this[di].head;i!==null;){let n=i.next;mG(this,e,i,t),i=n}}keys(){return this[di].toArray().map(e=>e.key)}values(){return this[di].toArray().map(e=>e.value)}reset(){this[Ea]&&this[di]&&this[di].length&&this[di].forEach(e=>this[Ea](e.key,e.value)),this[Ws]=new Map,this[di]=new RCe,this[Ia]=0}dump(){return this[di].map(e=>LI(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[di]}set(e,t,i){if(i=i||this[rc],i&&typeof i!="number")throw new TypeError("maxAge must be a number");let n=i?Date.now():0,s=this[Og](t,e);if(this[Ws].has(e)){if(s>this[tc])return Mg(this,this[Ws].get(e)),!1;let l=this[Ws].get(e).value;return this[Ea]&&(this[CG]||this[Ea](e,l.value)),l.now=n,l.maxAge=i,l.value=t,this[Ia]+=s-l.length,l.length=s,this.get(e),od(this),!0}let o=new av(e,t,s,n,i);return o.length>this[tc]?(this[Ea]&&this[Ea](e,t),!1):(this[Ia]+=o.length,this[di].unshift(o),this[Ws].set(e,this[di].head),od(this),!0)}has(e){if(!this[Ws].has(e))return!1;let t=this[Ws].get(e).value;return!LI(this,t)}get(e){return sv(this,e,!0)}peek(e){return sv(this,e,!1)}pop(){let e=this[di].tail;return e?(Mg(this,e),e.value):null}del(e){Mg(this,this[Ws].get(e))}load(e){this.reset();let t=Date.now();for(let i=e.length-1;i>=0;i--){let n=e[i],s=n.e||0;if(s===0)this.set(n.k,n.v);else{let o=s-t;o>0&&this.set(n.k,n.v,o)}}}prune(){this[Ws].forEach((e,t)=>sv(this,t,!1))}},sv=(r,e,t)=>{let i=r[Ws].get(e);if(i){let n=i.value;if(LI(r,n)){if(Mg(r,i),!r[ad])return}else t&&(r[EG]&&(i.value.now=Date.now()),r[di].unshiftNode(i));return n.value}},LI=(r,e)=>{if(!e||!e.maxAge&&!r[rc])return!1;let t=Date.now()-e.now;return e.maxAge?t>e.maxAge:r[rc]&&t>r[rc]},od=r=>{if(r[Ia]>r[tc])for(let e=r[di].tail;r[Ia]>r[tc]&&e!==null;){let t=e.prev;Mg(r,e),e=t}},Mg=(r,e)=>{if(e){let t=e.value;r[Ea]&&r[Ea](t.key,t.value),r[Ia]-=t.length,r[Ws].delete(t.key),r[di].removeNode(e)}},av=class{constructor(e,t,i,n,s){this.key=e,this.value=t,this.length=i,this.now=n,this.maxAge=s||0}},mG=(r,e,t,i)=>{let n=t.value;LI(r,n)&&(Mg(r,t),r[ad]||(n=void 0)),n&&e.call(i,n.value,n.key,r)};IG.exports=ov});var os=w((PZe,bG)=>{var ic=class{constructor(e,t){if(t=NCe(t),e instanceof ic)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new ic(e.raw,t);if(e instanceof Av)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(i=>this.parseRange(i.trim())).filter(i=>i.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${e}`);if(this.set.length>1){let i=this.set[0];if(this.set=this.set.filter(n=>!BG(n[0])),this.set.length===0)this.set=[i];else if(this.set.length>1){for(let n of this.set)if(n.length===1&&KCe(n[0])){this.set=[n];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();let i=`parseRange:${Object.keys(this.options).join(",")}:${e}`,n=wG.get(i);if(n)return n;let s=this.options.loose,o=s?Ti[Bi.HYPHENRANGELOOSE]:Ti[Bi.HYPHENRANGE];e=e.replace(o,VCe(this.options.includePrerelease)),Gr("hyphen replace",e),e=e.replace(Ti[Bi.COMPARATORTRIM],TCe),Gr("comparator trim",e,Ti[Bi.COMPARATORTRIM]),e=e.replace(Ti[Bi.TILDETRIM],OCe),e=e.replace(Ti[Bi.CARETTRIM],MCe),e=e.split(/\s+/).join(" ");let a=s?Ti[Bi.COMPARATORLOOSE]:Ti[Bi.COMPARATOR],l=e.split(" ").map(f=>UCe(f,this.options)).join(" ").split(/\s+/).map(f=>zCe(f,this.options)).filter(this.options.loose?f=>!!f.match(a):()=>!0).map(f=>new Av(f,this.options)),c=l.length,u=new Map;for(let f of l){if(BG(f))return[f];u.set(f.value,f)}u.size>1&&u.has("")&&u.delete("");let g=[...u.values()];return wG.set(i,g),g}intersects(e,t){if(!(e instanceof ic))throw new TypeError("a Range is required");return this.set.some(i=>QG(i,t)&&e.set.some(n=>QG(n,t)&&i.every(s=>n.every(o=>s.intersects(o,t)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new LCe(e,this.options)}catch{return!1}for(let t=0;tr.value==="<0.0.0-0",KCe=r=>r.value==="",QG=(r,e)=>{let t=!0,i=r.slice(),n=i.pop();for(;t&&i.length;)t=i.every(s=>n.intersects(s,e)),n=i.pop();return t},UCe=(r,e)=>(Gr("comp",r,e),r=YCe(r,e),Gr("caret",r),r=HCe(r,e),Gr("tildes",r),r=qCe(r,e),Gr("xrange",r),r=WCe(r,e),Gr("stars",r),r),Vi=r=>!r||r.toLowerCase()==="x"||r==="*",HCe=(r,e)=>r.trim().split(/\s+/).map(t=>GCe(t,e)).join(" "),GCe=(r,e)=>{let t=e.loose?Ti[Bi.TILDELOOSE]:Ti[Bi.TILDE];return r.replace(t,(i,n,s,o,a)=>{Gr("tilde",r,i,n,s,o,a);let l;return Vi(n)?l="":Vi(s)?l=`>=${n}.0.0 <${+n+1}.0.0-0`:Vi(o)?l=`>=${n}.${s}.0 <${n}.${+s+1}.0-0`:a?(Gr("replaceTilde pr",a),l=`>=${n}.${s}.${o}-${a} <${n}.${+s+1}.0-0`):l=`>=${n}.${s}.${o} <${n}.${+s+1}.0-0`,Gr("tilde return",l),l})},YCe=(r,e)=>r.trim().split(/\s+/).map(t=>jCe(t,e)).join(" "),jCe=(r,e)=>{Gr("caret",r,e);let t=e.loose?Ti[Bi.CARETLOOSE]:Ti[Bi.CARET],i=e.includePrerelease?"-0":"";return r.replace(t,(n,s,o,a,l)=>{Gr("caret",r,n,s,o,a,l);let c;return Vi(s)?c="":Vi(o)?c=`>=${s}.0.0${i} <${+s+1}.0.0-0`:Vi(a)?s==="0"?c=`>=${s}.${o}.0${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.0${i} <${+s+1}.0.0-0`:l?(Gr("replaceCaret pr",l),s==="0"?o==="0"?c=`>=${s}.${o}.${a}-${l} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}-${l} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a}-${l} <${+s+1}.0.0-0`):(Gr("no pr"),s==="0"?o==="0"?c=`>=${s}.${o}.${a}${i} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a} <${+s+1}.0.0-0`),Gr("caret return",c),c})},qCe=(r,e)=>(Gr("replaceXRanges",r,e),r.split(/\s+/).map(t=>JCe(t,e)).join(" ")),JCe=(r,e)=>{r=r.trim();let t=e.loose?Ti[Bi.XRANGELOOSE]:Ti[Bi.XRANGE];return r.replace(t,(i,n,s,o,a,l)=>{Gr("xRange",r,i,n,s,o,a,l);let c=Vi(s),u=c||Vi(o),g=u||Vi(a),f=g;return n==="="&&f&&(n=""),l=e.includePrerelease?"-0":"",c?n===">"||n==="<"?i="<0.0.0-0":i="*":n&&f?(u&&(o=0),a=0,n===">"?(n=">=",u?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):n==="<="&&(n="<",u?s=+s+1:o=+o+1),n==="<"&&(l="-0"),i=`${n+s}.${o}.${a}${l}`):u?i=`>=${s}.0.0${l} <${+s+1}.0.0-0`:g&&(i=`>=${s}.${o}.0${l} <${s}.${+o+1}.0-0`),Gr("xRange return",i),i})},WCe=(r,e)=>(Gr("replaceStars",r,e),r.trim().replace(Ti[Bi.STAR],"")),zCe=(r,e)=>(Gr("replaceGTE0",r,e),r.trim().replace(Ti[e.includePrerelease?Bi.GTE0PRE:Bi.GTE0],"")),VCe=r=>(e,t,i,n,s,o,a,l,c,u,g,f,h)=>(Vi(i)?t="":Vi(n)?t=`>=${i}.0.0${r?"-0":""}`:Vi(s)?t=`>=${i}.${n}.0${r?"-0":""}`:o?t=`>=${t}`:t=`>=${t}${r?"-0":""}`,Vi(c)?l="":Vi(u)?l=`<${+c+1}.0.0-0`:Vi(g)?l=`<${c}.${+u+1}.0-0`:f?l=`<=${c}.${u}.${g}-${f}`:r?l=`<${c}.${u}.${+g+1}-0`:l=`<=${l}`,`${t} ${l}`.trim()),XCe=(r,e,t)=>{for(let i=0;i0){let n=r[i].semver;if(n.major===e.major&&n.minor===e.minor&&n.patch===e.patch)return!0}return!1}return!0}});var Ad=w((DZe,DG)=>{var ld=Symbol("SemVer ANY"),Kg=class{static get ANY(){return ld}constructor(e,t){if(t=_Ce(t),e instanceof Kg){if(e.loose===!!t.loose)return e;e=e.value}cv("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===ld?this.value="":this.value=this.operator+this.semver.version,cv("comp",this)}parse(e){let t=this.options.loose?SG[vG.COMPARATORLOOSE]:SG[vG.COMPARATOR],i=e.match(t);if(!i)throw new TypeError(`Invalid comparator: ${e}`);this.operator=i[1]!==void 0?i[1]:"",this.operator==="="&&(this.operator=""),i[2]?this.semver=new xG(i[2],this.options.loose):this.semver=ld}toString(){return this.value}test(e){if(cv("Comparator.test",e,this.options.loose),this.semver===ld||e===ld)return!0;if(typeof e=="string")try{e=new xG(e,this.options)}catch{return!1}return lv(e,this.operator,this.semver,this.options)}intersects(e,t){if(!(e instanceof Kg))throw new TypeError("a Comparator is required");if((!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1}),this.operator==="")return this.value===""?!0:new PG(e.value,t).test(this.value);if(e.operator==="")return e.value===""?!0:new PG(this.value,t).test(e.semver);let i=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),n=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),s=this.semver.version===e.semver.version,o=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),a=lv(this.semver,"<",e.semver,t)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),l=lv(this.semver,">",e.semver,t)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return i||n||s&&o||a||l}};DG.exports=Kg;var _Ce=rd(),{re:SG,t:vG}=Zl(),lv=iv(),cv=td(),xG=Li(),PG=os()});var cd=w((kZe,kG)=>{var ZCe=os(),$Ce=(r,e,t)=>{try{e=new ZCe(e,t)}catch{return!1}return e.test(r)};kG.exports=$Ce});var FG=w((RZe,RG)=>{var eme=os(),tme=(r,e)=>new eme(r,e).set.map(t=>t.map(i=>i.value).join(" ").trim().split(" "));RG.exports=tme});var LG=w((FZe,NG)=>{var rme=Li(),ime=os(),nme=(r,e,t)=>{let i=null,n=null,s=null;try{s=new ime(e,t)}catch{return null}return r.forEach(o=>{s.test(o)&&(!i||n.compare(o)===-1)&&(i=o,n=new rme(i,t))}),i};NG.exports=nme});var OG=w((NZe,TG)=>{var sme=Li(),ome=os(),ame=(r,e,t)=>{let i=null,n=null,s=null;try{s=new ome(e,t)}catch{return null}return r.forEach(o=>{s.test(o)&&(!i||n.compare(o)===1)&&(i=o,n=new sme(i,t))}),i};TG.exports=ame});var UG=w((LZe,KG)=>{var uv=Li(),Ame=os(),MG=nd(),lme=(r,e)=>{r=new Ame(r,e);let t=new uv("0.0.0");if(r.test(t)||(t=new uv("0.0.0-0"),r.test(t)))return t;t=null;for(let i=0;i{let a=new uv(o.semver.version);switch(o.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!s||MG(a,s))&&(s=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),s&&(!t||MG(t,s))&&(t=s)}return t&&r.test(t)?t:null};KG.exports=lme});var GG=w((TZe,HG)=>{var cme=os(),ume=(r,e)=>{try{return new cme(r,e).range||"*"}catch{return null}};HG.exports=ume});var TI=w((OZe,JG)=>{var gme=Li(),qG=Ad(),{ANY:fme}=qG,hme=os(),pme=cd(),YG=nd(),jG=DI(),dme=RI(),Cme=kI(),mme=(r,e,t,i)=>{r=new gme(r,i),e=new hme(e,i);let n,s,o,a,l;switch(t){case">":n=YG,s=dme,o=jG,a=">",l=">=";break;case"<":n=jG,s=Cme,o=YG,a="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(pme(r,e,i))return!1;for(let c=0;c{h.semver===fme&&(h=new qG(">=0.0.0")),g=g||h,f=f||h,n(h.semver,g.semver,i)?g=h:o(h.semver,f.semver,i)&&(f=h)}),g.operator===a||g.operator===l||(!f.operator||f.operator===a)&&s(r,f.semver))return!1;if(f.operator===l&&o(r,f.semver))return!1}return!0};JG.exports=mme});var zG=w((MZe,WG)=>{var Eme=TI(),Ime=(r,e,t)=>Eme(r,e,">",t);WG.exports=Ime});var XG=w((KZe,VG)=>{var yme=TI(),wme=(r,e,t)=>yme(r,e,"<",t);VG.exports=wme});var $G=w((UZe,ZG)=>{var _G=os(),Bme=(r,e,t)=>(r=new _G(r,t),e=new _G(e,t),r.intersects(e));ZG.exports=Bme});var tY=w((HZe,eY)=>{var Qme=cd(),bme=ss();eY.exports=(r,e,t)=>{let i=[],n=null,s=null,o=r.sort((u,g)=>bme(u,g,t));for(let u of o)Qme(u,e,t)?(s=u,n||(n=u)):(s&&i.push([n,s]),s=null,n=null);n&&i.push([n,null]);let a=[];for(let[u,g]of i)u===g?a.push(u):!g&&u===o[0]?a.push("*"):g?u===o[0]?a.push(`<=${g}`):a.push(`${u} - ${g}`):a.push(`>=${u}`);let l=a.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return l.length{var rY=os(),OI=Ad(),{ANY:gv}=OI,ud=cd(),fv=ss(),Sme=(r,e,t={})=>{if(r===e)return!0;r=new rY(r,t),e=new rY(e,t);let i=!1;e:for(let n of r.set){for(let s of e.set){let o=vme(n,s,t);if(i=i||o!==null,o)continue e}if(i)return!1}return!0},vme=(r,e,t)=>{if(r===e)return!0;if(r.length===1&&r[0].semver===gv){if(e.length===1&&e[0].semver===gv)return!0;t.includePrerelease?r=[new OI(">=0.0.0-0")]:r=[new OI(">=0.0.0")]}if(e.length===1&&e[0].semver===gv){if(t.includePrerelease)return!0;e=[new OI(">=0.0.0")]}let i=new Set,n,s;for(let h of r)h.operator===">"||h.operator===">="?n=iY(n,h,t):h.operator==="<"||h.operator==="<="?s=nY(s,h,t):i.add(h.semver);if(i.size>1)return null;let o;if(n&&s){if(o=fv(n.semver,s.semver,t),o>0)return null;if(o===0&&(n.operator!==">="||s.operator!=="<="))return null}for(let h of i){if(n&&!ud(h,String(n),t)||s&&!ud(h,String(s),t))return null;for(let p of e)if(!ud(h,String(p),t))return!1;return!0}let a,l,c,u,g=s&&!t.includePrerelease&&s.semver.prerelease.length?s.semver:!1,f=n&&!t.includePrerelease&&n.semver.prerelease.length?n.semver:!1;g&&g.prerelease.length===1&&s.operator==="<"&&g.prerelease[0]===0&&(g=!1);for(let h of e){if(u=u||h.operator===">"||h.operator===">=",c=c||h.operator==="<"||h.operator==="<=",n){if(f&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===f.major&&h.semver.minor===f.minor&&h.semver.patch===f.patch&&(f=!1),h.operator===">"||h.operator===">="){if(a=iY(n,h,t),a===h&&a!==n)return!1}else if(n.operator===">="&&!ud(n.semver,String(h),t))return!1}if(s){if(g&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===g.major&&h.semver.minor===g.minor&&h.semver.patch===g.patch&&(g=!1),h.operator==="<"||h.operator==="<="){if(l=nY(s,h,t),l===h&&l!==s)return!1}else if(s.operator==="<="&&!ud(s.semver,String(h),t))return!1}if(!h.operator&&(s||n)&&o!==0)return!1}return!(n&&c&&!s&&o!==0||s&&u&&!n&&o!==0||f||g)},iY=(r,e,t)=>{if(!r)return e;let i=fv(r.semver,e.semver,t);return i>0?r:i<0||e.operator===">"&&r.operator===">="?e:r},nY=(r,e,t)=>{if(!r)return e;let i=fv(r.semver,e.semver,t);return i<0?r:i>0||e.operator==="<"&&r.operator==="<="?e:r};sY.exports=Sme});var Xr=w((YZe,aY)=>{var hv=Zl();aY.exports={re:hv.re,src:hv.src,tokens:hv.t,SEMVER_SPEC_VERSION:ed().SEMVER_SPEC_VERSION,SemVer:Li(),compareIdentifiers:bI().compareIdentifiers,rcompareIdentifiers:bI().rcompareIdentifiers,parse:$l(),valid:kH(),clean:FH(),inc:LH(),diff:HH(),major:YH(),minor:qH(),patch:WH(),prerelease:VH(),compare:ss(),rcompare:_H(),compareLoose:$H(),compareBuild:PI(),sort:iG(),rsort:sG(),gt:nd(),lt:DI(),eq:xI(),neq:rv(),gte:kI(),lte:RI(),cmp:iv(),coerce:fG(),Comparator:Ad(),Range:os(),satisfies:cd(),toComparators:FG(),maxSatisfying:LG(),minSatisfying:OG(),minVersion:UG(),validRange:GG(),outside:TI(),gtr:zG(),ltr:XG(),intersects:$G(),simplifyRange:tY(),subset:oY()}});var pv=w(MI=>{"use strict";Object.defineProperty(MI,"__esModule",{value:!0});MI.VERSION=void 0;MI.VERSION="9.1.0"});var Gt=w((exports,module)=>{"use strict";var __spreadArray=exports&&exports.__spreadArray||function(r,e,t){if(t||arguments.length===2)for(var i=0,n=e.length,s;i{(function(r,e){typeof define=="function"&&define.amd?define([],e):typeof KI=="object"&&KI.exports?KI.exports=e():r.regexpToAst=e()})(typeof self<"u"?self:AY,function(){function r(){}r.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},r.prototype.restoreState=function(p){this.idx=p.idx,this.input=p.input,this.groupIdx=p.groupIdx},r.prototype.pattern=function(p){this.idx=0,this.input=p,this.groupIdx=0,this.consumeChar("/");var C=this.disjunction();this.consumeChar("/");for(var y={type:"Flags",loc:{begin:this.idx,end:p.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case"g":o(y,"global");break;case"i":o(y,"ignoreCase");break;case"m":o(y,"multiLine");break;case"u":o(y,"unicode");break;case"y":o(y,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:y,value:C,loc:this.loc(0)}},r.prototype.disjunction=function(){var p=[],C=this.idx;for(p.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),p.push(this.alternative());return{type:"Disjunction",value:p,loc:this.loc(C)}},r.prototype.alternative=function(){for(var p=[],C=this.idx;this.isTerm();)p.push(this.term());return{type:"Alternative",value:p,loc:this.loc(C)}},r.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},r.prototype.assertion=function(){var p=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(p)};case"$":return{type:"EndAnchor",loc:this.loc(p)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(p)};case"B":return{type:"NonWordBoundary",loc:this.loc(p)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");var C;switch(this.popChar()){case"=":C="Lookahead";break;case"!":C="NegativeLookahead";break}a(C);var y=this.disjunction();return this.consumeChar(")"),{type:C,value:y,loc:this.loc(p)}}l()},r.prototype.quantifier=function(p){var C,y=this.idx;switch(this.popChar()){case"*":C={atLeast:0,atMost:1/0};break;case"+":C={atLeast:1,atMost:1/0};break;case"?":C={atLeast:0,atMost:1};break;case"{":var B=this.integerIncludingZero();switch(this.popChar()){case"}":C={atLeast:B,atMost:B};break;case",":var v;this.isDigit()?(v=this.integerIncludingZero(),C={atLeast:B,atMost:v}):C={atLeast:B,atMost:1/0},this.consumeChar("}");break}if(p===!0&&C===void 0)return;a(C);break}if(!(p===!0&&C===void 0))return a(C),this.peekChar(0)==="?"?(this.consumeChar("?"),C.greedy=!1):C.greedy=!0,C.type="Quantifier",C.loc=this.loc(y),C},r.prototype.atom=function(){var p,C=this.idx;switch(this.peekChar()){case".":p=this.dotAll();break;case"\\":p=this.atomEscape();break;case"[":p=this.characterClass();break;case"(":p=this.group();break}return p===void 0&&this.isPatternCharacter()&&(p=this.patternCharacter()),a(p),p.loc=this.loc(C),this.isQuantifier()&&(p.quantifier=this.quantifier()),p},r.prototype.dotAll=function(){return this.consumeChar("."),{type:"Set",complement:!0,value:[n(` +`),n("\r"),n("\u2028"),n("\u2029")]}},r.prototype.atomEscape=function(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}},r.prototype.decimalEscapeAtom=function(){var p=this.positiveInteger();return{type:"GroupBackReference",value:p}},r.prototype.characterClassEscape=function(){var p,C=!1;switch(this.popChar()){case"d":p=u;break;case"D":p=u,C=!0;break;case"s":p=f;break;case"S":p=f,C=!0;break;case"w":p=g;break;case"W":p=g,C=!0;break}return a(p),{type:"Set",value:p,complement:C}},r.prototype.controlEscapeAtom=function(){var p;switch(this.popChar()){case"f":p=n("\f");break;case"n":p=n(` +`);break;case"r":p=n("\r");break;case"t":p=n(" ");break;case"v":p=n("\v");break}return a(p),{type:"Character",value:p}},r.prototype.controlLetterEscapeAtom=function(){this.consumeChar("c");var p=this.popChar();if(/[a-zA-Z]/.test(p)===!1)throw Error("Invalid ");var C=p.toUpperCase().charCodeAt(0)-64;return{type:"Character",value:C}},r.prototype.nulCharacterAtom=function(){return this.consumeChar("0"),{type:"Character",value:n("\0")}},r.prototype.hexEscapeSequenceAtom=function(){return this.consumeChar("x"),this.parseHexDigits(2)},r.prototype.regExpUnicodeEscapeSequenceAtom=function(){return this.consumeChar("u"),this.parseHexDigits(4)},r.prototype.identityEscapeAtom=function(){var p=this.popChar();return{type:"Character",value:n(p)}},r.prototype.classPatternCharacterAtom=function(){switch(this.peekChar()){case` +`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:var p=this.popChar();return{type:"Character",value:n(p)}}},r.prototype.characterClass=function(){var p=[],C=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),C=!0);this.isClassAtom();){var y=this.classAtom(),B=y.type==="Character";if(B&&this.isRangeDash()){this.consumeChar("-");var v=this.classAtom(),D=v.type==="Character";if(D){if(v.value=this.input.length)throw Error("Unexpected end of input");this.idx++},r.prototype.loc=function(p){return{begin:p,end:this.idx}};var e=/[0-9a-fA-F]/,t=/[0-9]/,i=/[1-9]/;function n(p){return p.charCodeAt(0)}function s(p,C){p.length!==void 0?p.forEach(function(y){C.push(y)}):C.push(p)}function o(p,C){if(p[C]===!0)throw"duplicate flag "+C;p[C]=!0}function a(p){if(p===void 0)throw Error("Internal Error - Should never get here!")}function l(){throw Error("Internal Error - Should never get here!")}var c,u=[];for(c=n("0");c<=n("9");c++)u.push(c);var g=[n("_")].concat(u);for(c=n("a");c<=n("z");c++)g.push(c);for(c=n("A");c<=n("Z");c++)g.push(c);var f=[n(" "),n("\f"),n(` +`),n("\r"),n(" "),n("\v"),n(" "),n("\xA0"),n("\u1680"),n("\u2000"),n("\u2001"),n("\u2002"),n("\u2003"),n("\u2004"),n("\u2005"),n("\u2006"),n("\u2007"),n("\u2008"),n("\u2009"),n("\u200A"),n("\u2028"),n("\u2029"),n("\u202F"),n("\u205F"),n("\u3000"),n("\uFEFF")];function h(){}return h.prototype.visitChildren=function(p){for(var C in p){var y=p[C];p.hasOwnProperty(C)&&(y.type!==void 0?this.visit(y):Array.isArray(y)&&y.forEach(function(B){this.visit(B)},this))}},h.prototype.visit=function(p){switch(p.type){case"Pattern":this.visitPattern(p);break;case"Flags":this.visitFlags(p);break;case"Disjunction":this.visitDisjunction(p);break;case"Alternative":this.visitAlternative(p);break;case"StartAnchor":this.visitStartAnchor(p);break;case"EndAnchor":this.visitEndAnchor(p);break;case"WordBoundary":this.visitWordBoundary(p);break;case"NonWordBoundary":this.visitNonWordBoundary(p);break;case"Lookahead":this.visitLookahead(p);break;case"NegativeLookahead":this.visitNegativeLookahead(p);break;case"Character":this.visitCharacter(p);break;case"Set":this.visitSet(p);break;case"Group":this.visitGroup(p);break;case"GroupBackReference":this.visitGroupBackReference(p);break;case"Quantifier":this.visitQuantifier(p);break}this.visitChildren(p)},h.prototype.visitPattern=function(p){},h.prototype.visitFlags=function(p){},h.prototype.visitDisjunction=function(p){},h.prototype.visitAlternative=function(p){},h.prototype.visitStartAnchor=function(p){},h.prototype.visitEndAnchor=function(p){},h.prototype.visitWordBoundary=function(p){},h.prototype.visitNonWordBoundary=function(p){},h.prototype.visitLookahead=function(p){},h.prototype.visitNegativeLookahead=function(p){},h.prototype.visitCharacter=function(p){},h.prototype.visitSet=function(p){},h.prototype.visitGroup=function(p){},h.prototype.visitGroupBackReference=function(p){},h.prototype.visitQuantifier=function(p){},{RegExpParser:r,BaseRegExpVisitor:h,VERSION:"0.5.0"}})});var GI=w(Ug=>{"use strict";Object.defineProperty(Ug,"__esModule",{value:!0});Ug.clearRegExpParserCache=Ug.getRegExpAst=void 0;var xme=UI(),HI={},Pme=new xme.RegExpParser;function Dme(r){var e=r.toString();if(HI.hasOwnProperty(e))return HI[e];var t=Pme.pattern(e);return HI[e]=t,t}Ug.getRegExpAst=Dme;function kme(){HI={}}Ug.clearRegExpParserCache=kme});var fY=w(pn=>{"use strict";var Rme=pn&&pn.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(pn,"__esModule",{value:!0});pn.canMatchCharCode=pn.firstCharOptimizedIndices=pn.getOptimizedStartCodesIndices=pn.failedOptimizationPrefixMsg=void 0;var cY=UI(),as=Gt(),uY=GI(),ya=Cv(),gY="Complement Sets are not supported for first char optimization";pn.failedOptimizationPrefixMsg=`Unable to use "first char" lexer optimizations: +`;function Fme(r,e){e===void 0&&(e=!1);try{var t=(0,uY.getRegExpAst)(r),i=jI(t.value,{},t.flags.ignoreCase);return i}catch(s){if(s.message===gY)e&&(0,as.PRINT_WARNING)(""+pn.failedOptimizationPrefixMsg+(" Unable to optimize: < "+r.toString()+` > +`)+` Complement Sets cannot be automatically optimized. + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{var n="";e&&(n=` + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),(0,as.PRINT_ERROR)(pn.failedOptimizationPrefixMsg+` +`+(" Failed parsing: < "+r.toString()+` > +`)+(" Using the regexp-to-ast library version: "+cY.VERSION+` +`)+" Please open an issue at: https://github.com/bd82/regexp-to-ast/issues"+n)}}return[]}pn.getOptimizedStartCodesIndices=Fme;function jI(r,e,t){switch(r.type){case"Disjunction":for(var i=0;i=ya.minOptimizationVal)for(var f=u.from>=ya.minOptimizationVal?u.from:ya.minOptimizationVal,h=u.to,p=(0,ya.charCodeToOptimizedIndex)(f),C=(0,ya.charCodeToOptimizedIndex)(h),y=p;y<=C;y++)e[y]=y}}});break;case"Group":jI(o.value,e,t);break;default:throw Error("Non Exhaustive Match")}var a=o.quantifier!==void 0&&o.quantifier.atLeast===0;if(o.type==="Group"&&dv(o)===!1||o.type!=="Group"&&a===!1)break}break;default:throw Error("non exhaustive match!")}return(0,as.values)(e)}pn.firstCharOptimizedIndices=jI;function YI(r,e,t){var i=(0,ya.charCodeToOptimizedIndex)(r);e[i]=i,t===!0&&Nme(r,e)}function Nme(r,e){var t=String.fromCharCode(r),i=t.toUpperCase();if(i!==t){var n=(0,ya.charCodeToOptimizedIndex)(i.charCodeAt(0));e[n]=n}else{var s=t.toLowerCase();if(s!==t){var n=(0,ya.charCodeToOptimizedIndex)(s.charCodeAt(0));e[n]=n}}}function lY(r,e){return(0,as.find)(r.value,function(t){if(typeof t=="number")return(0,as.contains)(e,t);var i=t;return(0,as.find)(e,function(n){return i.from<=n&&n<=i.to})!==void 0})}function dv(r){return r.quantifier&&r.quantifier.atLeast===0?!0:r.value?(0,as.isArray)(r.value)?(0,as.every)(r.value,dv):dv(r.value):!1}var Lme=function(r){Rme(e,r);function e(t){var i=r.call(this)||this;return i.targetCharCodes=t,i.found=!1,i}return e.prototype.visitChildren=function(t){if(this.found!==!0){switch(t.type){case"Lookahead":this.visitLookahead(t);return;case"NegativeLookahead":this.visitNegativeLookahead(t);return}r.prototype.visitChildren.call(this,t)}},e.prototype.visitCharacter=function(t){(0,as.contains)(this.targetCharCodes,t.value)&&(this.found=!0)},e.prototype.visitSet=function(t){t.complement?lY(t,this.targetCharCodes)===void 0&&(this.found=!0):lY(t,this.targetCharCodes)!==void 0&&(this.found=!0)},e}(cY.BaseRegExpVisitor);function Tme(r,e){if(e instanceof RegExp){var t=(0,uY.getRegExpAst)(e),i=new Lme(r);return i.visit(t),i.found}else return(0,as.find)(e,function(n){return(0,as.contains)(r,n.charCodeAt(0))})!==void 0}pn.canMatchCharCode=Tme});var Cv=w(Ve=>{"use strict";var hY=Ve&&Ve.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Ve,"__esModule",{value:!0});Ve.charCodeToOptimizedIndex=Ve.minOptimizationVal=Ve.buildLineBreakIssueMessage=Ve.LineTerminatorOptimizedTester=Ve.isShortPattern=Ve.isCustomPattern=Ve.cloneEmptyGroups=Ve.performWarningRuntimeChecks=Ve.performRuntimeChecks=Ve.addStickyFlag=Ve.addStartOfInput=Ve.findUnreachablePatterns=Ve.findModesThatDoNotExist=Ve.findInvalidGroupType=Ve.findDuplicatePatterns=Ve.findUnsupportedFlags=Ve.findStartOfInputAnchor=Ve.findEmptyMatchRegExps=Ve.findEndOfInputAnchor=Ve.findInvalidPatterns=Ve.findMissingPatterns=Ve.validatePatterns=Ve.analyzeTokenTypes=Ve.enableSticky=Ve.disableSticky=Ve.SUPPORT_STICKY=Ve.MODES=Ve.DEFAULT_MODE=void 0;var pY=UI(),ir=gd(),xe=Gt(),Hg=fY(),dY=GI(),So="PATTERN";Ve.DEFAULT_MODE="defaultMode";Ve.MODES="modes";Ve.SUPPORT_STICKY=typeof new RegExp("(?:)").sticky=="boolean";function Ome(){Ve.SUPPORT_STICKY=!1}Ve.disableSticky=Ome;function Mme(){Ve.SUPPORT_STICKY=!0}Ve.enableSticky=Mme;function Kme(r,e){e=(0,xe.defaults)(e,{useSticky:Ve.SUPPORT_STICKY,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` +`],tracer:function(v,D){return D()}});var t=e.tracer;t("initCharCodeToOptimizedIndexMap",function(){Vme()});var i;t("Reject Lexer.NA",function(){i=(0,xe.reject)(r,function(v){return v[So]===ir.Lexer.NA})});var n=!1,s;t("Transform Patterns",function(){n=!1,s=(0,xe.map)(i,function(v){var D=v[So];if((0,xe.isRegExp)(D)){var L=D.source;return L.length===1&&L!=="^"&&L!=="$"&&L!=="."&&!D.ignoreCase?L:L.length===2&&L[0]==="\\"&&!(0,xe.contains)(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],L[1])?L[1]:e.useSticky?Iv(D):Ev(D)}else{if((0,xe.isFunction)(D))return n=!0,{exec:D};if((0,xe.has)(D,"exec"))return n=!0,D;if(typeof D=="string"){if(D.length===1)return D;var H=D.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),j=new RegExp(H);return e.useSticky?Iv(j):Ev(j)}else throw Error("non exhaustive match")}})});var o,a,l,c,u;t("misc mapping",function(){o=(0,xe.map)(i,function(v){return v.tokenTypeIdx}),a=(0,xe.map)(i,function(v){var D=v.GROUP;if(D!==ir.Lexer.SKIPPED){if((0,xe.isString)(D))return D;if((0,xe.isUndefined)(D))return!1;throw Error("non exhaustive match")}}),l=(0,xe.map)(i,function(v){var D=v.LONGER_ALT;if(D){var L=(0,xe.isArray)(D)?(0,xe.map)(D,function(H){return(0,xe.indexOf)(i,H)}):[(0,xe.indexOf)(i,D)];return L}}),c=(0,xe.map)(i,function(v){return v.PUSH_MODE}),u=(0,xe.map)(i,function(v){return(0,xe.has)(v,"POP_MODE")})});var g;t("Line Terminator Handling",function(){var v=DY(e.lineTerminatorCharacters);g=(0,xe.map)(i,function(D){return!1}),e.positionTracking!=="onlyOffset"&&(g=(0,xe.map)(i,function(D){if((0,xe.has)(D,"LINE_BREAKS"))return D.LINE_BREAKS;if(xY(D,v)===!1)return(0,Hg.canMatchCharCode)(v,D.PATTERN)}))});var f,h,p,C;t("Misc Mapping #2",function(){f=(0,xe.map)(i,wv),h=(0,xe.map)(s,vY),p=(0,xe.reduce)(i,function(v,D){var L=D.GROUP;return(0,xe.isString)(L)&&L!==ir.Lexer.SKIPPED&&(v[L]=[]),v},{}),C=(0,xe.map)(s,function(v,D){return{pattern:s[D],longerAlt:l[D],canLineTerminator:g[D],isCustom:f[D],short:h[D],group:a[D],push:c[D],pop:u[D],tokenTypeIdx:o[D],tokenType:i[D]}})});var y=!0,B=[];return e.safeMode||t("First Char Optimization",function(){B=(0,xe.reduce)(i,function(v,D,L){if(typeof D.PATTERN=="string"){var H=D.PATTERN.charCodeAt(0),j=yv(H);mv(v,j,C[L])}else if((0,xe.isArray)(D.START_CHARS_HINT)){var $;(0,xe.forEach)(D.START_CHARS_HINT,function(W){var Z=typeof W=="string"?W.charCodeAt(0):W,A=yv(Z);$!==A&&($=A,mv(v,A,C[L]))})}else if((0,xe.isRegExp)(D.PATTERN))if(D.PATTERN.unicode)y=!1,e.ensureOptimizations&&(0,xe.PRINT_ERROR)(""+Hg.failedOptimizationPrefixMsg+(" Unable to analyze < "+D.PATTERN.toString()+` > pattern. +`)+` The regexp unicode flag is not currently supported by the regexp-to-ast library. + This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{var V=(0,Hg.getOptimizedStartCodesIndices)(D.PATTERN,e.ensureOptimizations);(0,xe.isEmpty)(V)&&(y=!1),(0,xe.forEach)(V,function(W){mv(v,W,C[L])})}else e.ensureOptimizations&&(0,xe.PRINT_ERROR)(""+Hg.failedOptimizationPrefixMsg+(" TokenType: <"+D.name+`> is using a custom token pattern without providing parameter. +`)+` This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),y=!1;return v},[])}),t("ArrayPacking",function(){B=(0,xe.packArray)(B)}),{emptyGroups:p,patternIdxToConfig:C,charCodeToPatternIdxToConfig:B,hasCustom:n,canBeOptimized:y}}Ve.analyzeTokenTypes=Kme;function Ume(r,e){var t=[],i=CY(r);t=t.concat(i.errors);var n=mY(i.valid),s=n.valid;return t=t.concat(n.errors),t=t.concat(Hme(s)),t=t.concat(QY(s)),t=t.concat(bY(s,e)),t=t.concat(SY(s)),t}Ve.validatePatterns=Ume;function Hme(r){var e=[],t=(0,xe.filter)(r,function(i){return(0,xe.isRegExp)(i[So])});return e=e.concat(EY(t)),e=e.concat(yY(t)),e=e.concat(wY(t)),e=e.concat(BY(t)),e=e.concat(IY(t)),e}function CY(r){var e=(0,xe.filter)(r,function(n){return!(0,xe.has)(n,So)}),t=(0,xe.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- missing static 'PATTERN' property",type:ir.LexerDefinitionErrorType.MISSING_PATTERN,tokenTypes:[n]}}),i=(0,xe.difference)(r,e);return{errors:t,valid:i}}Ve.findMissingPatterns=CY;function mY(r){var e=(0,xe.filter)(r,function(n){var s=n[So];return!(0,xe.isRegExp)(s)&&!(0,xe.isFunction)(s)&&!(0,xe.has)(s,"exec")&&!(0,xe.isString)(s)}),t=(0,xe.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:ir.LexerDefinitionErrorType.INVALID_PATTERN,tokenTypes:[n]}}),i=(0,xe.difference)(r,e);return{errors:t,valid:i}}Ve.findInvalidPatterns=mY;var Gme=/[^\\][\$]/;function EY(r){var e=function(n){hY(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitEndAnchor=function(o){this.found=!0},s}(pY.BaseRegExpVisitor),t=(0,xe.filter)(r,function(n){var s=n[So];try{var o=(0,dY.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch{return Gme.test(s.source)}}),i=(0,xe.map)(t,function(n){return{message:`Unexpected RegExp Anchor Error: + Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain end of input anchor '$' + See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:ir.LexerDefinitionErrorType.EOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}Ve.findEndOfInputAnchor=EY;function IY(r){var e=(0,xe.filter)(r,function(i){var n=i[So];return n.test("")}),t=(0,xe.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' must not match an empty string",type:ir.LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,tokenTypes:[i]}});return t}Ve.findEmptyMatchRegExps=IY;var Yme=/[^\\[][\^]|^\^/;function yY(r){var e=function(n){hY(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitStartAnchor=function(o){this.found=!0},s}(pY.BaseRegExpVisitor),t=(0,xe.filter)(r,function(n){var s=n[So];try{var o=(0,dY.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch{return Yme.test(s.source)}}),i=(0,xe.map)(t,function(n){return{message:`Unexpected RegExp Anchor Error: + Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain start of input anchor '^' + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:ir.LexerDefinitionErrorType.SOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}Ve.findStartOfInputAnchor=yY;function wY(r){var e=(0,xe.filter)(r,function(i){var n=i[So];return n instanceof RegExp&&(n.multiline||n.global)}),t=(0,xe.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:ir.LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[i]}});return t}Ve.findUnsupportedFlags=wY;function BY(r){var e=[],t=(0,xe.map)(r,function(s){return(0,xe.reduce)(r,function(o,a){return s.PATTERN.source===a.PATTERN.source&&!(0,xe.contains)(e,a)&&a.PATTERN!==ir.Lexer.NA&&(e.push(a),o.push(a)),o},[])});t=(0,xe.compact)(t);var i=(0,xe.filter)(t,function(s){return s.length>1}),n=(0,xe.map)(i,function(s){var o=(0,xe.map)(s,function(l){return l.name}),a=(0,xe.first)(s).PATTERN;return{message:"The same RegExp pattern ->"+a+"<-"+("has been used in all of the following Token Types: "+o.join(", ")+" <-"),type:ir.LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,tokenTypes:s}});return n}Ve.findDuplicatePatterns=BY;function QY(r){var e=(0,xe.filter)(r,function(i){if(!(0,xe.has)(i,"GROUP"))return!1;var n=i.GROUP;return n!==ir.Lexer.SKIPPED&&n!==ir.Lexer.NA&&!(0,xe.isString)(n)}),t=(0,xe.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:ir.LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,tokenTypes:[i]}});return t}Ve.findInvalidGroupType=QY;function bY(r,e){var t=(0,xe.filter)(r,function(n){return n.PUSH_MODE!==void 0&&!(0,xe.contains)(e,n.PUSH_MODE)}),i=(0,xe.map)(t,function(n){var s="Token Type: ->"+n.name+"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->"+n.PUSH_MODE+"<-which does not exist";return{message:s,type:ir.LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[n]}});return i}Ve.findModesThatDoNotExist=bY;function SY(r){var e=[],t=(0,xe.reduce)(r,function(i,n,s){var o=n.PATTERN;return o===ir.Lexer.NA||((0,xe.isString)(o)?i.push({str:o,idx:s,tokenType:n}):(0,xe.isRegExp)(o)&&qme(o)&&i.push({str:o.source,idx:s,tokenType:n})),i},[]);return(0,xe.forEach)(r,function(i,n){(0,xe.forEach)(t,function(s){var o=s.str,a=s.idx,l=s.tokenType;if(n"+i.name+"<-")+`in the lexer's definition. +See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:c,type:ir.LexerDefinitionErrorType.UNREACHABLE_PATTERN,tokenTypes:[i,l]})}})}),e}Ve.findUnreachablePatterns=SY;function jme(r,e){if((0,xe.isRegExp)(e)){var t=e.exec(r);return t!==null&&t.index===0}else{if((0,xe.isFunction)(e))return e(r,0,[],{});if((0,xe.has)(e,"exec"))return e.exec(r,0,[],{});if(typeof e=="string")return e===r;throw Error("non exhaustive match")}}function qme(r){var e=[".","\\","[","]","|","^","$","(",")","?","*","+","{"];return(0,xe.find)(e,function(t){return r.source.indexOf(t)!==-1})===void 0}function Ev(r){var e=r.ignoreCase?"i":"";return new RegExp("^(?:"+r.source+")",e)}Ve.addStartOfInput=Ev;function Iv(r){var e=r.ignoreCase?"iy":"y";return new RegExp(""+r.source,e)}Ve.addStickyFlag=Iv;function Jme(r,e,t){var i=[];return(0,xe.has)(r,Ve.DEFAULT_MODE)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+Ve.DEFAULT_MODE+`> property in its definition +`,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),(0,xe.has)(r,Ve.MODES)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+Ve.MODES+`> property in its definition +`,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),(0,xe.has)(r,Ve.MODES)&&(0,xe.has)(r,Ve.DEFAULT_MODE)&&!(0,xe.has)(r.modes,r.defaultMode)&&i.push({message:"A MultiMode Lexer cannot be initialized with a "+Ve.DEFAULT_MODE+": <"+r.defaultMode+`>which does not exist +`,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),(0,xe.has)(r,Ve.MODES)&&(0,xe.forEach)(r.modes,function(n,s){(0,xe.forEach)(n,function(o,a){(0,xe.isUndefined)(o)&&i.push({message:"A Lexer cannot be initialized using an undefined Token Type. Mode:"+("<"+s+"> at index: <"+a+`> +`),type:ir.LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED})})}),i}Ve.performRuntimeChecks=Jme;function Wme(r,e,t){var i=[],n=!1,s=(0,xe.compact)((0,xe.flatten)((0,xe.mapValues)(r.modes,function(l){return l}))),o=(0,xe.reject)(s,function(l){return l[So]===ir.Lexer.NA}),a=DY(t);return e&&(0,xe.forEach)(o,function(l){var c=xY(l,a);if(c!==!1){var u=PY(l,c),g={message:u,type:c.issue,tokenType:l};i.push(g)}else(0,xe.has)(l,"LINE_BREAKS")?l.LINE_BREAKS===!0&&(n=!0):(0,Hg.canMatchCharCode)(a,l.PATTERN)&&(n=!0)}),e&&!n&&i.push({message:`Warning: No LINE_BREAKS Found. + This Lexer has been defined to track line and column information, + But none of the Token Types can be identified as matching a line terminator. + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS + for details.`,type:ir.LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS}),i}Ve.performWarningRuntimeChecks=Wme;function zme(r){var e={},t=(0,xe.keys)(r);return(0,xe.forEach)(t,function(i){var n=r[i];if((0,xe.isArray)(n))e[i]=[];else throw Error("non exhaustive match")}),e}Ve.cloneEmptyGroups=zme;function wv(r){var e=r.PATTERN;if((0,xe.isRegExp)(e))return!1;if((0,xe.isFunction)(e))return!0;if((0,xe.has)(e,"exec"))return!0;if((0,xe.isString)(e))return!1;throw Error("non exhaustive match")}Ve.isCustomPattern=wv;function vY(r){return(0,xe.isString)(r)&&r.length===1?r.charCodeAt(0):!1}Ve.isShortPattern=vY;Ve.LineTerminatorOptimizedTester={test:function(r){for(var e=r.length,t=this.lastIndex;t Token Type +`)+(" Root cause: "+e.errMsg+`. +`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR";if(e.issue===ir.LexerDefinitionErrorType.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. +`+(" The problem is in the <"+r.name+`> Token Type +`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK";throw Error("non exhaustive match")}Ve.buildLineBreakIssueMessage=PY;function DY(r){var e=(0,xe.map)(r,function(t){return(0,xe.isString)(t)&&t.length>0?t.charCodeAt(0):t});return e}function mv(r,e,t){r[e]===void 0?r[e]=[t]:r[e].push(t)}Ve.minOptimizationVal=256;var qI=[];function yv(r){return r255?255+~~(r/255):r}}});var Gg=w(Nt=>{"use strict";Object.defineProperty(Nt,"__esModule",{value:!0});Nt.isTokenType=Nt.hasExtendingTokensTypesMapProperty=Nt.hasExtendingTokensTypesProperty=Nt.hasCategoriesProperty=Nt.hasShortKeyProperty=Nt.singleAssignCategoriesToksMap=Nt.assignCategoriesMapProp=Nt.assignCategoriesTokensProp=Nt.assignTokenDefaultProps=Nt.expandCategories=Nt.augmentTokenTypes=Nt.tokenIdxToClass=Nt.tokenShortNameIdx=Nt.tokenStructuredMatcherNoCategories=Nt.tokenStructuredMatcher=void 0;var _r=Gt();function Xme(r,e){var t=r.tokenTypeIdx;return t===e.tokenTypeIdx?!0:e.isParent===!0&&e.categoryMatchesMap[t]===!0}Nt.tokenStructuredMatcher=Xme;function _me(r,e){return r.tokenTypeIdx===e.tokenTypeIdx}Nt.tokenStructuredMatcherNoCategories=_me;Nt.tokenShortNameIdx=1;Nt.tokenIdxToClass={};function Zme(r){var e=kY(r);RY(e),NY(e),FY(e),(0,_r.forEach)(e,function(t){t.isParent=t.categoryMatches.length>0})}Nt.augmentTokenTypes=Zme;function kY(r){for(var e=(0,_r.cloneArr)(r),t=r,i=!0;i;){t=(0,_r.compact)((0,_r.flatten)((0,_r.map)(t,function(s){return s.CATEGORIES})));var n=(0,_r.difference)(t,e);e=e.concat(n),(0,_r.isEmpty)(n)?i=!1:t=n}return e}Nt.expandCategories=kY;function RY(r){(0,_r.forEach)(r,function(e){LY(e)||(Nt.tokenIdxToClass[Nt.tokenShortNameIdx]=e,e.tokenTypeIdx=Nt.tokenShortNameIdx++),Bv(e)&&!(0,_r.isArray)(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),Bv(e)||(e.CATEGORIES=[]),TY(e)||(e.categoryMatches=[]),OY(e)||(e.categoryMatchesMap={})})}Nt.assignTokenDefaultProps=RY;function FY(r){(0,_r.forEach)(r,function(e){e.categoryMatches=[],(0,_r.forEach)(e.categoryMatchesMap,function(t,i){e.categoryMatches.push(Nt.tokenIdxToClass[i].tokenTypeIdx)})})}Nt.assignCategoriesTokensProp=FY;function NY(r){(0,_r.forEach)(r,function(e){Qv([],e)})}Nt.assignCategoriesMapProp=NY;function Qv(r,e){(0,_r.forEach)(r,function(t){e.categoryMatchesMap[t.tokenTypeIdx]=!0}),(0,_r.forEach)(e.CATEGORIES,function(t){var i=r.concat(e);(0,_r.contains)(i,t)||Qv(i,t)})}Nt.singleAssignCategoriesToksMap=Qv;function LY(r){return(0,_r.has)(r,"tokenTypeIdx")}Nt.hasShortKeyProperty=LY;function Bv(r){return(0,_r.has)(r,"CATEGORIES")}Nt.hasCategoriesProperty=Bv;function TY(r){return(0,_r.has)(r,"categoryMatches")}Nt.hasExtendingTokensTypesProperty=TY;function OY(r){return(0,_r.has)(r,"categoryMatchesMap")}Nt.hasExtendingTokensTypesMapProperty=OY;function $me(r){return(0,_r.has)(r,"tokenTypeIdx")}Nt.isTokenType=$me});var bv=w(JI=>{"use strict";Object.defineProperty(JI,"__esModule",{value:!0});JI.defaultLexerErrorProvider=void 0;JI.defaultLexerErrorProvider={buildUnableToPopLexerModeMessage:function(r){return"Unable to pop Lexer Mode after encountering Token ->"+r.image+"<- The Mode Stack is empty"},buildUnexpectedCharactersMessage:function(r,e,t,i,n){return"unexpected character: ->"+r.charAt(e)+"<- at offset: "+e+","+(" skipped "+t+" characters.")}}});var gd=w(nc=>{"use strict";Object.defineProperty(nc,"__esModule",{value:!0});nc.Lexer=nc.LexerDefinitionErrorType=void 0;var zs=Cv(),nr=Gt(),eEe=Gg(),tEe=bv(),rEe=GI(),iEe;(function(r){r[r.MISSING_PATTERN=0]="MISSING_PATTERN",r[r.INVALID_PATTERN=1]="INVALID_PATTERN",r[r.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",r[r.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",r[r.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",r[r.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",r[r.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",r[r.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",r[r.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",r[r.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",r[r.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",r[r.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",r[r.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",r[r.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",r[r.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",r[r.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",r[r.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK"})(iEe=nc.LexerDefinitionErrorType||(nc.LexerDefinitionErrorType={}));var fd={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` +`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:tEe.defaultLexerErrorProvider,traceInitPerf:!1,skipValidations:!1};Object.freeze(fd);var nEe=function(){function r(e,t){var i=this;if(t===void 0&&(t=fd),this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.config=void 0,this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},typeof t=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. +a boolean 2nd argument is no longer supported`);this.config=(0,nr.merge)(fd,t);var n=this.config.traceInitPerf;n===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof n=="number"&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",function(){var s,o=!0;i.TRACE_INIT("Lexer Config handling",function(){if(i.config.lineTerminatorsPattern===fd.lineTerminatorsPattern)i.config.lineTerminatorsPattern=zs.LineTerminatorOptimizedTester;else if(i.config.lineTerminatorCharacters===fd.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(t.safeMode&&t.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');i.trackStartLines=/full|onlyStart/i.test(i.config.positionTracking),i.trackEndLines=/full/i.test(i.config.positionTracking),(0,nr.isArray)(e)?(s={modes:{}},s.modes[zs.DEFAULT_MODE]=(0,nr.cloneArr)(e),s[zs.DEFAULT_MODE]=zs.DEFAULT_MODE):(o=!1,s=(0,nr.cloneObj)(e))}),i.config.skipValidations===!1&&(i.TRACE_INIT("performRuntimeChecks",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,zs.performRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))}),i.TRACE_INIT("performWarningRuntimeChecks",function(){i.lexerDefinitionWarning=i.lexerDefinitionWarning.concat((0,zs.performWarningRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))})),s.modes=s.modes?s.modes:{},(0,nr.forEach)(s.modes,function(u,g){s.modes[g]=(0,nr.reject)(u,function(f){return(0,nr.isUndefined)(f)})});var a=(0,nr.keys)(s.modes);if((0,nr.forEach)(s.modes,function(u,g){i.TRACE_INIT("Mode: <"+g+"> processing",function(){if(i.modes.push(g),i.config.skipValidations===!1&&i.TRACE_INIT("validatePatterns",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,zs.validatePatterns)(u,a))}),(0,nr.isEmpty)(i.lexerDefinitionErrors)){(0,eEe.augmentTokenTypes)(u);var f;i.TRACE_INIT("analyzeTokenTypes",function(){f=(0,zs.analyzeTokenTypes)(u,{lineTerminatorCharacters:i.config.lineTerminatorCharacters,positionTracking:t.positionTracking,ensureOptimizations:t.ensureOptimizations,safeMode:t.safeMode,tracer:i.TRACE_INIT.bind(i)})}),i.patternIdxToConfig[g]=f.patternIdxToConfig,i.charCodeToPatternIdxToConfig[g]=f.charCodeToPatternIdxToConfig,i.emptyGroups=(0,nr.merge)(i.emptyGroups,f.emptyGroups),i.hasCustom=f.hasCustom||i.hasCustom,i.canModeBeOptimized[g]=f.canBeOptimized}})}),i.defaultMode=s.defaultMode,!(0,nr.isEmpty)(i.lexerDefinitionErrors)&&!i.config.deferDefinitionErrorsHandling){var l=(0,nr.map)(i.lexerDefinitionErrors,function(u){return u.message}),c=l.join(`----------------------- +`);throw new Error(`Errors detected in definition of Lexer: +`+c)}(0,nr.forEach)(i.lexerDefinitionWarning,function(u){(0,nr.PRINT_WARNING)(u.message)}),i.TRACE_INIT("Choosing sub-methods implementations",function(){if(zs.SUPPORT_STICKY?(i.chopInput=nr.IDENTITY,i.match=i.matchWithTest):(i.updateLastIndex=nr.NOOP,i.match=i.matchWithExec),o&&(i.handleModes=nr.NOOP),i.trackStartLines===!1&&(i.computeNewColumn=nr.IDENTITY),i.trackEndLines===!1&&(i.updateTokenEndLineColumnLocation=nr.NOOP),/full/i.test(i.config.positionTracking))i.createTokenInstance=i.createFullToken;else if(/onlyStart/i.test(i.config.positionTracking))i.createTokenInstance=i.createStartOnlyToken;else if(/onlyOffset/i.test(i.config.positionTracking))i.createTokenInstance=i.createOffsetOnlyToken;else throw Error('Invalid config option: "'+i.config.positionTracking+'"');i.hasCustom?(i.addToken=i.addTokenUsingPush,i.handlePayload=i.handlePayloadWithCustom):(i.addToken=i.addTokenUsingMemberAccess,i.handlePayload=i.handlePayloadNoCustom)}),i.TRACE_INIT("Failed Optimization Warnings",function(){var u=(0,nr.reduce)(i.canModeBeOptimized,function(g,f,h){return f===!1&&g.push(h),g},[]);if(t.ensureOptimizations&&!(0,nr.isEmpty)(u))throw Error("Lexer Modes: < "+u.join(", ")+` > cannot be optimized. + Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. + Or inspect the console log for details on how to resolve these issues.`)}),i.TRACE_INIT("clearRegExpParserCache",function(){(0,rEe.clearRegExpParserCache)()}),i.TRACE_INIT("toFastProperties",function(){(0,nr.toFastProperties)(i)})})}return r.prototype.tokenize=function(e,t){if(t===void 0&&(t=this.defaultMode),!(0,nr.isEmpty)(this.lexerDefinitionErrors)){var i=(0,nr.map)(this.lexerDefinitionErrors,function(o){return o.message}),n=i.join(`----------------------- +`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: +`+n)}var s=this.tokenizeInternal(e,t);return s},r.prototype.tokenizeInternal=function(e,t){var i=this,n,s,o,a,l,c,u,g,f,h,p,C,y,B,v,D,L=e,H=L.length,j=0,$=0,V=this.hasCustom?0:Math.floor(e.length/10),W=new Array(V),Z=[],A=this.trackStartLines?1:void 0,ae=this.trackStartLines?1:void 0,ge=(0,zs.cloneEmptyGroups)(this.emptyGroups),re=this.trackStartLines,O=this.config.lineTerminatorsPattern,F=0,ue=[],he=[],ke=[],Fe=[];Object.freeze(Fe);var Ne=void 0;function oe(){return ue}function le(pr){var Ei=(0,zs.charCodeToOptimizedIndex)(pr),_n=he[Ei];return _n===void 0?Fe:_n}var we=function(pr){if(ke.length===1&&pr.tokenType.PUSH_MODE===void 0){var Ei=i.config.errorMessageProvider.buildUnableToPopLexerModeMessage(pr);Z.push({offset:pr.startOffset,line:pr.startLine!==void 0?pr.startLine:void 0,column:pr.startColumn!==void 0?pr.startColumn:void 0,length:pr.image.length,message:Ei})}else{ke.pop();var _n=(0,nr.last)(ke);ue=i.patternIdxToConfig[_n],he=i.charCodeToPatternIdxToConfig[_n],F=ue.length;var oa=i.canModeBeOptimized[_n]&&i.config.safeMode===!1;he&&oa?Ne=le:Ne=oe}};function fe(pr){ke.push(pr),he=this.charCodeToPatternIdxToConfig[pr],ue=this.patternIdxToConfig[pr],F=ue.length,F=ue.length;var Ei=this.canModeBeOptimized[pr]&&this.config.safeMode===!1;he&&Ei?Ne=le:Ne=oe}fe.call(this,t);for(var Ae;jc.length){c=a,u=g,Ae=tt;break}}}break}}if(c!==null){if(f=c.length,h=Ae.group,h!==void 0&&(p=Ae.tokenTypeIdx,C=this.createTokenInstance(c,j,p,Ae.tokenType,A,ae,f),this.handlePayload(C,u),h===!1?$=this.addToken(W,$,C):ge[h].push(C)),e=this.chopInput(e,f),j=j+f,ae=this.computeNewColumn(ae,f),re===!0&&Ae.canLineTerminator===!0){var It=0,Or=void 0,ii=void 0;O.lastIndex=0;do Or=O.test(c),Or===!0&&(ii=O.lastIndex-1,It++);while(Or===!0);It!==0&&(A=A+It,ae=f-ii,this.updateTokenEndLineColumnLocation(C,h,ii,It,A,ae,f))}this.handleModes(Ae,we,fe,C)}else{for(var gi=j,hr=A,fi=ae,ni=!1;!ni&&j <"+e+">");var n=(0,nr.timer)(t),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return t()},r.SKIPPED="This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",r.NA=/NOT_APPLICABLE/,r}();nc.Lexer=nEe});var SA=w(Qi=>{"use strict";Object.defineProperty(Qi,"__esModule",{value:!0});Qi.tokenMatcher=Qi.createTokenInstance=Qi.EOF=Qi.createToken=Qi.hasTokenLabel=Qi.tokenName=Qi.tokenLabel=void 0;var Vs=Gt(),sEe=gd(),Sv=Gg();function oEe(r){return JY(r)?r.LABEL:r.name}Qi.tokenLabel=oEe;function aEe(r){return r.name}Qi.tokenName=aEe;function JY(r){return(0,Vs.isString)(r.LABEL)&&r.LABEL!==""}Qi.hasTokenLabel=JY;var AEe="parent",MY="categories",KY="label",UY="group",HY="push_mode",GY="pop_mode",YY="longer_alt",jY="line_breaks",qY="start_chars_hint";function WY(r){return lEe(r)}Qi.createToken=WY;function lEe(r){var e=r.pattern,t={};if(t.name=r.name,(0,Vs.isUndefined)(e)||(t.PATTERN=e),(0,Vs.has)(r,AEe))throw`The parent property is no longer supported. +See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return(0,Vs.has)(r,MY)&&(t.CATEGORIES=r[MY]),(0,Sv.augmentTokenTypes)([t]),(0,Vs.has)(r,KY)&&(t.LABEL=r[KY]),(0,Vs.has)(r,UY)&&(t.GROUP=r[UY]),(0,Vs.has)(r,GY)&&(t.POP_MODE=r[GY]),(0,Vs.has)(r,HY)&&(t.PUSH_MODE=r[HY]),(0,Vs.has)(r,YY)&&(t.LONGER_ALT=r[YY]),(0,Vs.has)(r,jY)&&(t.LINE_BREAKS=r[jY]),(0,Vs.has)(r,qY)&&(t.START_CHARS_HINT=r[qY]),t}Qi.EOF=WY({name:"EOF",pattern:sEe.Lexer.NA});(0,Sv.augmentTokenTypes)([Qi.EOF]);function cEe(r,e,t,i,n,s,o,a){return{image:e,startOffset:t,endOffset:i,startLine:n,endLine:s,startColumn:o,endColumn:a,tokenTypeIdx:r.tokenTypeIdx,tokenType:r}}Qi.createTokenInstance=cEe;function uEe(r,e){return(0,Sv.tokenStructuredMatcher)(r,e)}Qi.tokenMatcher=uEe});var dn=w(Wt=>{"use strict";var wa=Wt&&Wt.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Wt,"__esModule",{value:!0});Wt.serializeProduction=Wt.serializeGrammar=Wt.Terminal=Wt.Alternation=Wt.RepetitionWithSeparator=Wt.Repetition=Wt.RepetitionMandatoryWithSeparator=Wt.RepetitionMandatory=Wt.Option=Wt.Alternative=Wt.Rule=Wt.NonTerminal=Wt.AbstractProduction=void 0;var Ar=Gt(),gEe=SA(),vo=function(){function r(e){this._definition=e}return Object.defineProperty(r.prototype,"definition",{get:function(){return this._definition},set:function(e){this._definition=e},enumerable:!1,configurable:!0}),r.prototype.accept=function(e){e.visit(this),(0,Ar.forEach)(this.definition,function(t){t.accept(e)})},r}();Wt.AbstractProduction=vo;var zY=function(r){wa(e,r);function e(t){var i=r.call(this,[])||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this.referencedRule!==void 0?this.referencedRule.definition:[]},set:function(t){},enumerable:!1,configurable:!0}),e.prototype.accept=function(t){t.visit(this)},e}(vo);Wt.NonTerminal=zY;var VY=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.orgText="",(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(vo);Wt.Rule=VY;var XY=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.ignoreAmbiguities=!1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(vo);Wt.Alternative=XY;var _Y=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(vo);Wt.Option=_Y;var ZY=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(vo);Wt.RepetitionMandatory=ZY;var $Y=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(vo);Wt.RepetitionMandatoryWithSeparator=$Y;var ej=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(vo);Wt.Repetition=ej;var tj=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(vo);Wt.RepetitionWithSeparator=tj;var rj=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,i.ignoreAmbiguities=!1,i.hasPredicates=!1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this._definition},set:function(t){this._definition=t},enumerable:!1,configurable:!0}),e}(vo);Wt.Alternation=rj;var WI=function(){function r(e){this.idx=1,(0,Ar.assign)(this,(0,Ar.pick)(e,function(t){return t!==void 0}))}return r.prototype.accept=function(e){e.visit(this)},r}();Wt.Terminal=WI;function fEe(r){return(0,Ar.map)(r,hd)}Wt.serializeGrammar=fEe;function hd(r){function e(s){return(0,Ar.map)(s,hd)}if(r instanceof zY){var t={type:"NonTerminal",name:r.nonTerminalName,idx:r.idx};return(0,Ar.isString)(r.label)&&(t.label=r.label),t}else{if(r instanceof XY)return{type:"Alternative",definition:e(r.definition)};if(r instanceof _Y)return{type:"Option",idx:r.idx,definition:e(r.definition)};if(r instanceof ZY)return{type:"RepetitionMandatory",idx:r.idx,definition:e(r.definition)};if(r instanceof $Y)return{type:"RepetitionMandatoryWithSeparator",idx:r.idx,separator:hd(new WI({terminalType:r.separator})),definition:e(r.definition)};if(r instanceof tj)return{type:"RepetitionWithSeparator",idx:r.idx,separator:hd(new WI({terminalType:r.separator})),definition:e(r.definition)};if(r instanceof ej)return{type:"Repetition",idx:r.idx,definition:e(r.definition)};if(r instanceof rj)return{type:"Alternation",idx:r.idx,definition:e(r.definition)};if(r instanceof WI){var i={type:"Terminal",name:r.terminalType.name,label:(0,gEe.tokenLabel)(r.terminalType),idx:r.idx};(0,Ar.isString)(r.label)&&(i.terminalLabel=r.label);var n=r.terminalType.PATTERN;return r.terminalType.PATTERN&&(i.pattern=(0,Ar.isRegExp)(n)?n.source:n),i}else{if(r instanceof VY)return{type:"Rule",name:r.name,orgText:r.orgText,definition:e(r.definition)};throw Error("non exhaustive match")}}}Wt.serializeProduction=hd});var VI=w(zI=>{"use strict";Object.defineProperty(zI,"__esModule",{value:!0});zI.RestWalker=void 0;var vv=Gt(),Cn=dn(),hEe=function(){function r(){}return r.prototype.walk=function(e,t){var i=this;t===void 0&&(t=[]),(0,vv.forEach)(e.definition,function(n,s){var o=(0,vv.drop)(e.definition,s+1);if(n instanceof Cn.NonTerminal)i.walkProdRef(n,o,t);else if(n instanceof Cn.Terminal)i.walkTerminal(n,o,t);else if(n instanceof Cn.Alternative)i.walkFlat(n,o,t);else if(n instanceof Cn.Option)i.walkOption(n,o,t);else if(n instanceof Cn.RepetitionMandatory)i.walkAtLeastOne(n,o,t);else if(n instanceof Cn.RepetitionMandatoryWithSeparator)i.walkAtLeastOneSep(n,o,t);else if(n instanceof Cn.RepetitionWithSeparator)i.walkManySep(n,o,t);else if(n instanceof Cn.Repetition)i.walkMany(n,o,t);else if(n instanceof Cn.Alternation)i.walkOr(n,o,t);else throw Error("non exhaustive match")})},r.prototype.walkTerminal=function(e,t,i){},r.prototype.walkProdRef=function(e,t,i){},r.prototype.walkFlat=function(e,t,i){var n=t.concat(i);this.walk(e,n)},r.prototype.walkOption=function(e,t,i){var n=t.concat(i);this.walk(e,n)},r.prototype.walkAtLeastOne=function(e,t,i){var n=[new Cn.Option({definition:e.definition})].concat(t,i);this.walk(e,n)},r.prototype.walkAtLeastOneSep=function(e,t,i){var n=ij(e,t,i);this.walk(e,n)},r.prototype.walkMany=function(e,t,i){var n=[new Cn.Option({definition:e.definition})].concat(t,i);this.walk(e,n)},r.prototype.walkManySep=function(e,t,i){var n=ij(e,t,i);this.walk(e,n)},r.prototype.walkOr=function(e,t,i){var n=this,s=t.concat(i);(0,vv.forEach)(e.definition,function(o){var a=new Cn.Alternative({definition:[o]});n.walk(a,s)})},r}();zI.RestWalker=hEe;function ij(r,e,t){var i=[new Cn.Option({definition:[new Cn.Terminal({terminalType:r.separator})].concat(r.definition)})],n=i.concat(e,t);return n}});var Yg=w(XI=>{"use strict";Object.defineProperty(XI,"__esModule",{value:!0});XI.GAstVisitor=void 0;var xo=dn(),pEe=function(){function r(){}return r.prototype.visit=function(e){var t=e;switch(t.constructor){case xo.NonTerminal:return this.visitNonTerminal(t);case xo.Alternative:return this.visitAlternative(t);case xo.Option:return this.visitOption(t);case xo.RepetitionMandatory:return this.visitRepetitionMandatory(t);case xo.RepetitionMandatoryWithSeparator:return this.visitRepetitionMandatoryWithSeparator(t);case xo.RepetitionWithSeparator:return this.visitRepetitionWithSeparator(t);case xo.Repetition:return this.visitRepetition(t);case xo.Alternation:return this.visitAlternation(t);case xo.Terminal:return this.visitTerminal(t);case xo.Rule:return this.visitRule(t);default:throw Error("non exhaustive match")}},r.prototype.visitNonTerminal=function(e){},r.prototype.visitAlternative=function(e){},r.prototype.visitOption=function(e){},r.prototype.visitRepetition=function(e){},r.prototype.visitRepetitionMandatory=function(e){},r.prototype.visitRepetitionMandatoryWithSeparator=function(e){},r.prototype.visitRepetitionWithSeparator=function(e){},r.prototype.visitAlternation=function(e){},r.prototype.visitTerminal=function(e){},r.prototype.visitRule=function(e){},r}();XI.GAstVisitor=pEe});var dd=w(Oi=>{"use strict";var dEe=Oi&&Oi.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Oi,"__esModule",{value:!0});Oi.collectMethods=Oi.DslMethodsCollectorVisitor=Oi.getProductionDslName=Oi.isBranchingProd=Oi.isOptionalProd=Oi.isSequenceProd=void 0;var pd=Gt(),Qr=dn(),CEe=Yg();function mEe(r){return r instanceof Qr.Alternative||r instanceof Qr.Option||r instanceof Qr.Repetition||r instanceof Qr.RepetitionMandatory||r instanceof Qr.RepetitionMandatoryWithSeparator||r instanceof Qr.RepetitionWithSeparator||r instanceof Qr.Terminal||r instanceof Qr.Rule}Oi.isSequenceProd=mEe;function xv(r,e){e===void 0&&(e=[]);var t=r instanceof Qr.Option||r instanceof Qr.Repetition||r instanceof Qr.RepetitionWithSeparator;return t?!0:r instanceof Qr.Alternation?(0,pd.some)(r.definition,function(i){return xv(i,e)}):r instanceof Qr.NonTerminal&&(0,pd.contains)(e,r)?!1:r instanceof Qr.AbstractProduction?(r instanceof Qr.NonTerminal&&e.push(r),(0,pd.every)(r.definition,function(i){return xv(i,e)})):!1}Oi.isOptionalProd=xv;function EEe(r){return r instanceof Qr.Alternation}Oi.isBranchingProd=EEe;function IEe(r){if(r instanceof Qr.NonTerminal)return"SUBRULE";if(r instanceof Qr.Option)return"OPTION";if(r instanceof Qr.Alternation)return"OR";if(r instanceof Qr.RepetitionMandatory)return"AT_LEAST_ONE";if(r instanceof Qr.RepetitionMandatoryWithSeparator)return"AT_LEAST_ONE_SEP";if(r instanceof Qr.RepetitionWithSeparator)return"MANY_SEP";if(r instanceof Qr.Repetition)return"MANY";if(r instanceof Qr.Terminal)return"CONSUME";throw Error("non exhaustive match")}Oi.getProductionDslName=IEe;var nj=function(r){dEe(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.separator="-",t.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]},t}return e.prototype.reset=function(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}},e.prototype.visitTerminal=function(t){var i=t.terminalType.name+this.separator+"Terminal";(0,pd.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(t)},e.prototype.visitNonTerminal=function(t){var i=t.nonTerminalName+this.separator+"Terminal";(0,pd.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(t)},e.prototype.visitOption=function(t){this.dslMethods.option.push(t)},e.prototype.visitRepetitionWithSeparator=function(t){this.dslMethods.repetitionWithSeparator.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.dslMethods.repetitionMandatory.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.dslMethods.repetitionMandatoryWithSeparator.push(t)},e.prototype.visitRepetition=function(t){this.dslMethods.repetition.push(t)},e.prototype.visitAlternation=function(t){this.dslMethods.alternation.push(t)},e}(CEe.GAstVisitor);Oi.DslMethodsCollectorVisitor=nj;var _I=new nj;function yEe(r){_I.reset(),r.accept(_I);var e=_I.dslMethods;return _I.reset(),e}Oi.collectMethods=yEe});var Dv=w(Po=>{"use strict";Object.defineProperty(Po,"__esModule",{value:!0});Po.firstForTerminal=Po.firstForBranching=Po.firstForSequence=Po.first=void 0;var ZI=Gt(),sj=dn(),Pv=dd();function $I(r){if(r instanceof sj.NonTerminal)return $I(r.referencedRule);if(r instanceof sj.Terminal)return Aj(r);if((0,Pv.isSequenceProd)(r))return oj(r);if((0,Pv.isBranchingProd)(r))return aj(r);throw Error("non exhaustive match")}Po.first=$I;function oj(r){for(var e=[],t=r.definition,i=0,n=t.length>i,s,o=!0;n&&o;)s=t[i],o=(0,Pv.isOptionalProd)(s),e=e.concat($I(s)),i=i+1,n=t.length>i;return(0,ZI.uniq)(e)}Po.firstForSequence=oj;function aj(r){var e=(0,ZI.map)(r.definition,function(t){return $I(t)});return(0,ZI.uniq)((0,ZI.flatten)(e))}Po.firstForBranching=aj;function Aj(r){return[r.terminalType]}Po.firstForTerminal=Aj});var kv=w(ey=>{"use strict";Object.defineProperty(ey,"__esModule",{value:!0});ey.IN=void 0;ey.IN="_~IN~_"});var fj=w(As=>{"use strict";var wEe=As&&As.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(As,"__esModule",{value:!0});As.buildInProdFollowPrefix=As.buildBetweenProdsFollowPrefix=As.computeAllProdsFollows=As.ResyncFollowsWalker=void 0;var BEe=VI(),QEe=Dv(),lj=Gt(),cj=kv(),bEe=dn(),uj=function(r){wEe(e,r);function e(t){var i=r.call(this)||this;return i.topProd=t,i.follows={},i}return e.prototype.startWalking=function(){return this.walk(this.topProd),this.follows},e.prototype.walkTerminal=function(t,i,n){},e.prototype.walkProdRef=function(t,i,n){var s=gj(t.referencedRule,t.idx)+this.topProd.name,o=i.concat(n),a=new bEe.Alternative({definition:o}),l=(0,QEe.first)(a);this.follows[s]=l},e}(BEe.RestWalker);As.ResyncFollowsWalker=uj;function SEe(r){var e={};return(0,lj.forEach)(r,function(t){var i=new uj(t).startWalking();(0,lj.assign)(e,i)}),e}As.computeAllProdsFollows=SEe;function gj(r,e){return r.name+e+cj.IN}As.buildBetweenProdsFollowPrefix=gj;function vEe(r){var e=r.terminalType.name;return e+r.idx+cj.IN}As.buildInProdFollowPrefix=vEe});var Cd=w(Ba=>{"use strict";Object.defineProperty(Ba,"__esModule",{value:!0});Ba.defaultGrammarValidatorErrorProvider=Ba.defaultGrammarResolverErrorProvider=Ba.defaultParserErrorProvider=void 0;var jg=SA(),xEe=Gt(),Xs=Gt(),Rv=dn(),hj=dd();Ba.defaultParserErrorProvider={buildMismatchTokenMessage:function(r){var e=r.expected,t=r.actual,i=r.previous,n=r.ruleName,s=(0,jg.hasTokenLabel)(e),o=s?"--> "+(0,jg.tokenLabel)(e)+" <--":"token of type --> "+e.name+" <--",a="Expecting "+o+" but found --> '"+t.image+"' <--";return a},buildNotAllInputParsedMessage:function(r){var e=r.firstRedundant,t=r.ruleName;return"Redundant input, expecting EOF but found: "+e.image},buildNoViableAltMessage:function(r){var e=r.expectedPathsPerAlt,t=r.actual,i=r.previous,n=r.customUserDescription,s=r.ruleName,o="Expecting: ",a=(0,Xs.first)(t).image,l=` +but found: '`+a+"'";if(n)return o+n+l;var c=(0,Xs.reduce)(e,function(h,p){return h.concat(p)},[]),u=(0,Xs.map)(c,function(h){return"["+(0,Xs.map)(h,function(p){return(0,jg.tokenLabel)(p)}).join(", ")+"]"}),g=(0,Xs.map)(u,function(h,p){return" "+(p+1)+". "+h}),f=`one of these possible Token sequences: +`+g.join(` +`);return o+f+l},buildEarlyExitMessage:function(r){var e=r.expectedIterationPaths,t=r.actual,i=r.customUserDescription,n=r.ruleName,s="Expecting: ",o=(0,Xs.first)(t).image,a=` +but found: '`+o+"'";if(i)return s+i+a;var l=(0,Xs.map)(e,function(u){return"["+(0,Xs.map)(u,function(g){return(0,jg.tokenLabel)(g)}).join(",")+"]"}),c=`expecting at least one iteration which starts with one of these possible Token sequences:: + `+("<"+l.join(" ,")+">");return s+c+a}};Object.freeze(Ba.defaultParserErrorProvider);Ba.defaultGrammarResolverErrorProvider={buildRuleNotFoundError:function(r,e){var t="Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- +inside top level rule: ->`+r.name+"<-";return t}};Ba.defaultGrammarValidatorErrorProvider={buildDuplicateFoundError:function(r,e){function t(u){return u instanceof Rv.Terminal?u.terminalType.name:u instanceof Rv.NonTerminal?u.nonTerminalName:""}var i=r.name,n=(0,Xs.first)(e),s=n.idx,o=(0,hj.getProductionDslName)(n),a=t(n),l=s>0,c="->"+o+(l?s:"")+"<- "+(a?"with argument: ->"+a+"<-":"")+` + appears more than once (`+e.length+" times) in the top level rule: ->"+i+`<-. + For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES + `;return c=c.replace(/[ \t]+/g," "),c=c.replace(/\s\s+/g,` +`),c},buildNamespaceConflictError:function(r){var e=`Namespace conflict found in grammar. +`+("The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <"+r.name+`>. +`)+`To resolve this make sure each Terminal and Non-Terminal names are unique +This is easy to accomplish by using the convention that Terminal names start with an uppercase letter +and Non-Terminal names start with a lower case letter.`;return e},buildAlternationPrefixAmbiguityError:function(r){var e=(0,Xs.map)(r.prefixPath,function(n){return(0,jg.tokenLabel)(n)}).join(", "),t=r.alternation.idx===0?"":r.alternation.idx,i="Ambiguous alternatives: <"+r.ambiguityIndices.join(" ,")+`> due to common lookahead prefix +`+("in inside <"+r.topLevelRule.name+`> Rule, +`)+("<"+e+`> may appears as a prefix path in all these alternatives. +`)+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX +For Further details.`;return i},buildAlternationAmbiguityError:function(r){var e=(0,Xs.map)(r.prefixPath,function(n){return(0,jg.tokenLabel)(n)}).join(", "),t=r.alternation.idx===0?"":r.alternation.idx,i="Ambiguous Alternatives Detected: <"+r.ambiguityIndices.join(" ,")+"> in "+(" inside <"+r.topLevelRule.name+`> Rule, +`)+("<"+e+`> may appears as a prefix path in all these alternatives. +`);return i=i+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES +For Further details.`,i},buildEmptyRepetitionError:function(r){var e=(0,hj.getProductionDslName)(r.repetition);r.repetition.idx!==0&&(e+=r.repetition.idx);var t="The repetition <"+e+"> within Rule <"+r.topLevelRule.name+`> can never consume any tokens. +This could lead to an infinite loop.`;return t},buildTokenNameError:function(r){return"deprecated"},buildEmptyAlternationError:function(r){var e="Ambiguous empty alternative: <"+(r.emptyChoiceIdx+1)+">"+(" in inside <"+r.topLevelRule.name+`> Rule. +`)+"Only the last alternative may be an empty alternative.";return e},buildTooManyAlternativesError:function(r){var e=`An Alternation cannot have more than 256 alternatives: +`+(" inside <"+r.topLevelRule.name+`> Rule. + has `+(r.alternation.definition.length+1)+" alternatives.");return e},buildLeftRecursionError:function(r){var e=r.topLevelRule.name,t=xEe.map(r.leftRecursionPath,function(s){return s.name}),i=e+" --> "+t.concat([e]).join(" --> "),n=`Left Recursion found in grammar. +`+("rule: <"+e+`> can be invoked from itself (directly or indirectly) +`)+(`without consuming any Tokens. The grammar path that causes this is: + `+i+` +`)+` To fix this refactor your grammar to remove the left recursion. +see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;return n},buildInvalidRuleNameError:function(r){return"deprecated"},buildDuplicateRuleNameError:function(r){var e;r.topLevelRule instanceof Rv.Rule?e=r.topLevelRule.name:e=r.topLevelRule;var t="Duplicate definition, rule: ->"+e+"<- is already defined in the grammar: ->"+r.grammarName+"<-";return t}}});var Cj=w(vA=>{"use strict";var PEe=vA&&vA.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(vA,"__esModule",{value:!0});vA.GastRefResolverVisitor=vA.resolveGrammar=void 0;var DEe=Hn(),pj=Gt(),kEe=Yg();function REe(r,e){var t=new dj(r,e);return t.resolveRefs(),t.errors}vA.resolveGrammar=REe;var dj=function(r){PEe(e,r);function e(t,i){var n=r.call(this)||this;return n.nameToTopRule=t,n.errMsgProvider=i,n.errors=[],n}return e.prototype.resolveRefs=function(){var t=this;(0,pj.forEach)((0,pj.values)(this.nameToTopRule),function(i){t.currTopLevel=i,i.accept(t)})},e.prototype.visitNonTerminal=function(t){var i=this.nameToTopRule[t.nonTerminalName];if(i)t.referencedRule=i;else{var n=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,t);this.errors.push({message:n,type:DEe.ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:t.nonTerminalName})}},e}(kEe.GAstVisitor);vA.GastRefResolverVisitor=dj});var Ed=w(Nr=>{"use strict";var sc=Nr&&Nr.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Nr,"__esModule",{value:!0});Nr.nextPossibleTokensAfter=Nr.possiblePathsFrom=Nr.NextTerminalAfterAtLeastOneSepWalker=Nr.NextTerminalAfterAtLeastOneWalker=Nr.NextTerminalAfterManySepWalker=Nr.NextTerminalAfterManyWalker=Nr.AbstractNextTerminalAfterProductionWalker=Nr.NextAfterTokenWalker=Nr.AbstractNextPossibleTokensWalker=void 0;var mj=VI(),Kt=Gt(),FEe=Dv(),kt=dn(),Ej=function(r){sc(e,r);function e(t,i){var n=r.call(this)||this;return n.topProd=t,n.path=i,n.possibleTokTypes=[],n.nextProductionName="",n.nextProductionOccurrence=0,n.found=!1,n.isAtEndOfPath=!1,n}return e.prototype.startWalking=function(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=(0,Kt.cloneArr)(this.path.ruleStack).reverse(),this.occurrenceStack=(0,Kt.cloneArr)(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes},e.prototype.walk=function(t,i){i===void 0&&(i=[]),this.found||r.prototype.walk.call(this,t,i)},e.prototype.walkProdRef=function(t,i,n){if(t.referencedRule.name===this.nextProductionName&&t.idx===this.nextProductionOccurrence){var s=i.concat(n);this.updateExpectedNext(),this.walk(t.referencedRule,s)}},e.prototype.updateExpectedNext=function(){(0,Kt.isEmpty)(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())},e}(mj.RestWalker);Nr.AbstractNextPossibleTokensWalker=Ej;var NEe=function(r){sc(e,r);function e(t,i){var n=r.call(this,t,i)||this;return n.path=i,n.nextTerminalName="",n.nextTerminalOccurrence=0,n.nextTerminalName=n.path.lastTok.name,n.nextTerminalOccurrence=n.path.lastTokOccurrence,n}return e.prototype.walkTerminal=function(t,i,n){if(this.isAtEndOfPath&&t.terminalType.name===this.nextTerminalName&&t.idx===this.nextTerminalOccurrence&&!this.found){var s=i.concat(n),o=new kt.Alternative({definition:s});this.possibleTokTypes=(0,FEe.first)(o),this.found=!0}},e}(Ej);Nr.NextAfterTokenWalker=NEe;var md=function(r){sc(e,r);function e(t,i){var n=r.call(this)||this;return n.topRule=t,n.occurrence=i,n.result={token:void 0,occurrence:void 0,isEndOfRule:void 0},n}return e.prototype.startWalking=function(){return this.walk(this.topRule),this.result},e}(mj.RestWalker);Nr.AbstractNextTerminalAfterProductionWalker=md;var LEe=function(r){sc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkMany=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Kt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof kt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkMany.call(this,t,i,n)},e}(md);Nr.NextTerminalAfterManyWalker=LEe;var TEe=function(r){sc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkManySep=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Kt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof kt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkManySep.call(this,t,i,n)},e}(md);Nr.NextTerminalAfterManySepWalker=TEe;var OEe=function(r){sc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkAtLeastOne=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Kt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof kt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkAtLeastOne.call(this,t,i,n)},e}(md);Nr.NextTerminalAfterAtLeastOneWalker=OEe;var MEe=function(r){sc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkAtLeastOneSep=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Kt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof kt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkAtLeastOneSep.call(this,t,i,n)},e}(md);Nr.NextTerminalAfterAtLeastOneSepWalker=MEe;function Ij(r,e,t){t===void 0&&(t=[]),t=(0,Kt.cloneArr)(t);var i=[],n=0;function s(c){return c.concat((0,Kt.drop)(r,n+1))}function o(c){var u=Ij(s(c),e,t);return i.concat(u)}for(;t.length=0;ge--){var re=B.definition[ge],O={idx:p,def:re.definition.concat((0,Kt.drop)(h)),ruleStack:C,occurrenceStack:y};g.push(O),g.push(o)}else if(B instanceof kt.Alternative)g.push({idx:p,def:B.definition.concat((0,Kt.drop)(h)),ruleStack:C,occurrenceStack:y});else if(B instanceof kt.Rule)g.push(UEe(B,p,C,y));else throw Error("non exhaustive match")}}return u}Nr.nextPossibleTokensAfter=KEe;function UEe(r,e,t,i){var n=(0,Kt.cloneArr)(t);n.push(r.name);var s=(0,Kt.cloneArr)(i);return s.push(1),{idx:e,def:r.definition,ruleStack:n,occurrenceStack:s}}});var Id=w(_t=>{"use strict";var Bj=_t&&_t.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(_t,"__esModule",{value:!0});_t.areTokenCategoriesNotUsed=_t.isStrictPrefixOfPath=_t.containsPath=_t.getLookaheadPathsForOptionalProd=_t.getLookaheadPathsForOr=_t.lookAheadSequenceFromAlternatives=_t.buildSingleAlternativeLookaheadFunction=_t.buildAlternativesLookAheadFunc=_t.buildLookaheadFuncForOptionalProd=_t.buildLookaheadFuncForOr=_t.getProdType=_t.PROD_TYPE=void 0;var sr=Gt(),yj=Ed(),HEe=VI(),ty=Gg(),xA=dn(),GEe=Yg(),oi;(function(r){r[r.OPTION=0]="OPTION",r[r.REPETITION=1]="REPETITION",r[r.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",r[r.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",r[r.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",r[r.ALTERNATION=5]="ALTERNATION"})(oi=_t.PROD_TYPE||(_t.PROD_TYPE={}));function YEe(r){if(r instanceof xA.Option)return oi.OPTION;if(r instanceof xA.Repetition)return oi.REPETITION;if(r instanceof xA.RepetitionMandatory)return oi.REPETITION_MANDATORY;if(r instanceof xA.RepetitionMandatoryWithSeparator)return oi.REPETITION_MANDATORY_WITH_SEPARATOR;if(r instanceof xA.RepetitionWithSeparator)return oi.REPETITION_WITH_SEPARATOR;if(r instanceof xA.Alternation)return oi.ALTERNATION;throw Error("non exhaustive match")}_t.getProdType=YEe;function jEe(r,e,t,i,n,s){var o=bj(r,e,t),a=Lv(o)?ty.tokenStructuredMatcherNoCategories:ty.tokenStructuredMatcher;return s(o,i,a,n)}_t.buildLookaheadFuncForOr=jEe;function qEe(r,e,t,i,n,s){var o=Sj(r,e,n,t),a=Lv(o)?ty.tokenStructuredMatcherNoCategories:ty.tokenStructuredMatcher;return s(o[0],a,i)}_t.buildLookaheadFuncForOptionalProd=qEe;function JEe(r,e,t,i){var n=r.length,s=(0,sr.every)(r,function(l){return(0,sr.every)(l,function(c){return c.length===1})});if(e)return function(l){for(var c=(0,sr.map)(l,function(D){return D.GATE}),u=0;u{"use strict";var Tv=zt&&zt.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(zt,"__esModule",{value:!0});zt.checkPrefixAlternativesAmbiguities=zt.validateSomeNonEmptyLookaheadPath=zt.validateTooManyAlts=zt.RepetionCollector=zt.validateAmbiguousAlternationAlternatives=zt.validateEmptyOrAlternative=zt.getFirstNoneTerminal=zt.validateNoLeftRecursion=zt.validateRuleIsOverridden=zt.validateRuleDoesNotAlreadyExist=zt.OccurrenceValidationCollector=zt.identifyProductionForDuplicates=zt.validateGrammar=void 0;var er=Gt(),br=Gt(),Do=Hn(),Ov=dd(),qg=Id(),_Ee=Ed(),_s=dn(),Mv=Yg();function ZEe(r,e,t,i,n){var s=er.map(r,function(h){return $Ee(h,i)}),o=er.map(r,function(h){return Kv(h,h,i)}),a=[],l=[],c=[];(0,br.every)(o,br.isEmpty)&&(a=(0,br.map)(r,function(h){return Rj(h,i)}),l=(0,br.map)(r,function(h){return Fj(h,e,i)}),c=Tj(r,e,i));var u=rIe(r,t,i),g=(0,br.map)(r,function(h){return Lj(h,i)}),f=(0,br.map)(r,function(h){return kj(h,r,n,i)});return er.flatten(s.concat(c,o,a,l,u,g,f))}zt.validateGrammar=ZEe;function $Ee(r,e){var t=new Dj;r.accept(t);var i=t.allProductions,n=er.groupBy(i,xj),s=er.pick(n,function(a){return a.length>1}),o=er.map(er.values(s),function(a){var l=er.first(a),c=e.buildDuplicateFoundError(r,a),u=(0,Ov.getProductionDslName)(l),g={message:c,type:Do.ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,ruleName:r.name,dslName:u,occurrence:l.idx},f=Pj(l);return f&&(g.parameter=f),g});return o}function xj(r){return(0,Ov.getProductionDslName)(r)+"_#_"+r.idx+"_#_"+Pj(r)}zt.identifyProductionForDuplicates=xj;function Pj(r){return r instanceof _s.Terminal?r.terminalType.name:r instanceof _s.NonTerminal?r.nonTerminalName:""}var Dj=function(r){Tv(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.allProductions=[],t}return e.prototype.visitNonTerminal=function(t){this.allProductions.push(t)},e.prototype.visitOption=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetition=function(t){this.allProductions.push(t)},e.prototype.visitAlternation=function(t){this.allProductions.push(t)},e.prototype.visitTerminal=function(t){this.allProductions.push(t)},e}(Mv.GAstVisitor);zt.OccurrenceValidationCollector=Dj;function kj(r,e,t,i){var n=[],s=(0,br.reduce)(e,function(a,l){return l.name===r.name?a+1:a},0);if(s>1){var o=i.buildDuplicateRuleNameError({topLevelRule:r,grammarName:t});n.push({message:o,type:Do.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:r.name})}return n}zt.validateRuleDoesNotAlreadyExist=kj;function eIe(r,e,t){var i=[],n;return er.contains(e,r)||(n="Invalid rule override, rule: ->"+r+"<- cannot be overridden in the grammar: ->"+t+"<-as it is not defined in any of the super grammars ",i.push({message:n,type:Do.ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,ruleName:r})),i}zt.validateRuleIsOverridden=eIe;function Kv(r,e,t,i){i===void 0&&(i=[]);var n=[],s=yd(e.definition);if(er.isEmpty(s))return[];var o=r.name,a=er.contains(s,r);a&&n.push({message:t.buildLeftRecursionError({topLevelRule:r,leftRecursionPath:i}),type:Do.ParserDefinitionErrorType.LEFT_RECURSION,ruleName:o});var l=er.difference(s,i.concat([r])),c=er.map(l,function(u){var g=er.cloneArr(i);return g.push(u),Kv(r,u,t,g)});return n.concat(er.flatten(c))}zt.validateNoLeftRecursion=Kv;function yd(r){var e=[];if(er.isEmpty(r))return e;var t=er.first(r);if(t instanceof _s.NonTerminal)e.push(t.referencedRule);else if(t instanceof _s.Alternative||t instanceof _s.Option||t instanceof _s.RepetitionMandatory||t instanceof _s.RepetitionMandatoryWithSeparator||t instanceof _s.RepetitionWithSeparator||t instanceof _s.Repetition)e=e.concat(yd(t.definition));else if(t instanceof _s.Alternation)e=er.flatten(er.map(t.definition,function(o){return yd(o.definition)}));else if(!(t instanceof _s.Terminal))throw Error("non exhaustive match");var i=(0,Ov.isOptionalProd)(t),n=r.length>1;if(i&&n){var s=er.drop(r);return e.concat(yd(s))}else return e}zt.getFirstNoneTerminal=yd;var Uv=function(r){Tv(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.alternations=[],t}return e.prototype.visitAlternation=function(t){this.alternations.push(t)},e}(Mv.GAstVisitor);function Rj(r,e){var t=new Uv;r.accept(t);var i=t.alternations,n=er.reduce(i,function(s,o){var a=er.dropRight(o.definition),l=er.map(a,function(c,u){var g=(0,_Ee.nextPossibleTokensAfter)([c],[],null,1);return er.isEmpty(g)?{message:e.buildEmptyAlternationError({topLevelRule:r,alternation:o,emptyChoiceIdx:u}),type:Do.ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,ruleName:r.name,occurrence:o.idx,alternative:u+1}:null});return s.concat(er.compact(l))},[]);return n}zt.validateEmptyOrAlternative=Rj;function Fj(r,e,t){var i=new Uv;r.accept(i);var n=i.alternations;n=(0,br.reject)(n,function(o){return o.ignoreAmbiguities===!0});var s=er.reduce(n,function(o,a){var l=a.idx,c=a.maxLookahead||e,u=(0,qg.getLookaheadPathsForOr)(l,r,c,a),g=tIe(u,a,r,t),f=Oj(u,a,r,t);return o.concat(g,f)},[]);return s}zt.validateAmbiguousAlternationAlternatives=Fj;var Nj=function(r){Tv(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.allProductions=[],t}return e.prototype.visitRepetitionWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetition=function(t){this.allProductions.push(t)},e}(Mv.GAstVisitor);zt.RepetionCollector=Nj;function Lj(r,e){var t=new Uv;r.accept(t);var i=t.alternations,n=er.reduce(i,function(s,o){return o.definition.length>255&&s.push({message:e.buildTooManyAlternativesError({topLevelRule:r,alternation:o}),type:Do.ParserDefinitionErrorType.TOO_MANY_ALTS,ruleName:r.name,occurrence:o.idx}),s},[]);return n}zt.validateTooManyAlts=Lj;function Tj(r,e,t){var i=[];return(0,br.forEach)(r,function(n){var s=new Nj;n.accept(s);var o=s.allProductions;(0,br.forEach)(o,function(a){var l=(0,qg.getProdType)(a),c=a.maxLookahead||e,u=a.idx,g=(0,qg.getLookaheadPathsForOptionalProd)(u,n,l,c),f=g[0];if((0,br.isEmpty)((0,br.flatten)(f))){var h=t.buildEmptyRepetitionError({topLevelRule:n,repetition:a});i.push({message:h,type:Do.ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,ruleName:n.name})}})}),i}zt.validateSomeNonEmptyLookaheadPath=Tj;function tIe(r,e,t,i){var n=[],s=(0,br.reduce)(r,function(a,l,c){return e.definition[c].ignoreAmbiguities===!0||(0,br.forEach)(l,function(u){var g=[c];(0,br.forEach)(r,function(f,h){c!==h&&(0,qg.containsPath)(f,u)&&e.definition[h].ignoreAmbiguities!==!0&&g.push(h)}),g.length>1&&!(0,qg.containsPath)(n,u)&&(n.push(u),a.push({alts:g,path:u}))}),a},[]),o=er.map(s,function(a){var l=(0,br.map)(a.alts,function(u){return u+1}),c=i.buildAlternationAmbiguityError({topLevelRule:t,alternation:e,ambiguityIndices:l,prefixPath:a.path});return{message:c,type:Do.ParserDefinitionErrorType.AMBIGUOUS_ALTS,ruleName:t.name,occurrence:e.idx,alternatives:[a.alts]}});return o}function Oj(r,e,t,i){var n=[],s=(0,br.reduce)(r,function(o,a,l){var c=(0,br.map)(a,function(u){return{idx:l,path:u}});return o.concat(c)},[]);return(0,br.forEach)(s,function(o){var a=e.definition[o.idx];if(a.ignoreAmbiguities!==!0){var l=o.idx,c=o.path,u=(0,br.findAll)(s,function(f){return e.definition[f.idx].ignoreAmbiguities!==!0&&f.idx{"use strict";Object.defineProperty(Jg,"__esModule",{value:!0});Jg.validateGrammar=Jg.resolveGrammar=void 0;var Gv=Gt(),iIe=Cj(),nIe=Hv(),Mj=Cd();function sIe(r){r=(0,Gv.defaults)(r,{errMsgProvider:Mj.defaultGrammarResolverErrorProvider});var e={};return(0,Gv.forEach)(r.rules,function(t){e[t.name]=t}),(0,iIe.resolveGrammar)(e,r.errMsgProvider)}Jg.resolveGrammar=sIe;function oIe(r){return r=(0,Gv.defaults)(r,{errMsgProvider:Mj.defaultGrammarValidatorErrorProvider}),(0,nIe.validateGrammar)(r.rules,r.maxLookahead,r.tokenTypes,r.errMsgProvider,r.grammarName)}Jg.validateGrammar=oIe});var Wg=w(mn=>{"use strict";var wd=mn&&mn.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(mn,"__esModule",{value:!0});mn.EarlyExitException=mn.NotAllInputParsedException=mn.NoViableAltException=mn.MismatchedTokenException=mn.isRecognitionException=void 0;var aIe=Gt(),Uj="MismatchedTokenException",Hj="NoViableAltException",Gj="EarlyExitException",Yj="NotAllInputParsedException",jj=[Uj,Hj,Gj,Yj];Object.freeze(jj);function AIe(r){return(0,aIe.contains)(jj,r.name)}mn.isRecognitionException=AIe;var ry=function(r){wd(e,r);function e(t,i){var n=this.constructor,s=r.call(this,t)||this;return s.token=i,s.resyncedTokens=[],Object.setPrototypeOf(s,n.prototype),Error.captureStackTrace&&Error.captureStackTrace(s,s.constructor),s}return e}(Error),lIe=function(r){wd(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=Uj,s}return e}(ry);mn.MismatchedTokenException=lIe;var cIe=function(r){wd(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=Hj,s}return e}(ry);mn.NoViableAltException=cIe;var uIe=function(r){wd(e,r);function e(t,i){var n=r.call(this,t,i)||this;return n.name=Yj,n}return e}(ry);mn.NotAllInputParsedException=uIe;var gIe=function(r){wd(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=Gj,s}return e}(ry);mn.EarlyExitException=gIe});var jv=w(Mi=>{"use strict";Object.defineProperty(Mi,"__esModule",{value:!0});Mi.attemptInRepetitionRecovery=Mi.Recoverable=Mi.InRuleRecoveryException=Mi.IN_RULE_RECOVERY_EXCEPTION=Mi.EOF_FOLLOW_KEY=void 0;var iy=SA(),ls=Gt(),fIe=Wg(),hIe=kv(),pIe=Hn();Mi.EOF_FOLLOW_KEY={};Mi.IN_RULE_RECOVERY_EXCEPTION="InRuleRecoveryException";function Yv(r){this.name=Mi.IN_RULE_RECOVERY_EXCEPTION,this.message=r}Mi.InRuleRecoveryException=Yv;Yv.prototype=Error.prototype;var dIe=function(){function r(){}return r.prototype.initRecoverable=function(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=(0,ls.has)(e,"recoveryEnabled")?e.recoveryEnabled:pIe.DEFAULT_PARSER_CONFIG.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=qj)},r.prototype.getTokenToInsert=function(e){var t=(0,iy.createTokenInstance)(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return t.isInsertedInRecovery=!0,t},r.prototype.canTokenTypeBeInsertedInRecovery=function(e){return!0},r.prototype.tryInRepetitionRecovery=function(e,t,i,n){for(var s=this,o=this.findReSyncTokenType(),a=this.exportLexerState(),l=[],c=!1,u=this.LA(1),g=this.LA(1),f=function(){var h=s.LA(0),p=s.errorMessageProvider.buildMismatchTokenMessage({expected:n,actual:u,previous:h,ruleName:s.getCurrRuleFullName()}),C=new fIe.MismatchedTokenException(p,u,s.LA(0));C.resyncedTokens=(0,ls.dropRight)(l),s.SAVE_ERROR(C)};!c;)if(this.tokenMatcher(g,n)){f();return}else if(i.call(this)){f(),e.apply(this,t);return}else this.tokenMatcher(g,o)?c=!0:(g=this.SKIP_TOKEN(),this.addToResyncTokens(g,l));this.importLexerState(a)},r.prototype.shouldInRepetitionRecoveryBeTried=function(e,t,i){return!(i===!1||e===void 0||t===void 0||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,t)))},r.prototype.getFollowsForInRuleRecovery=function(e,t){var i=this.getCurrentGrammarPath(e,t),n=this.getNextPossibleTokenTypes(i);return n},r.prototype.tryInRuleRecovery=function(e,t){if(this.canRecoverWithSingleTokenInsertion(e,t)){var i=this.getTokenToInsert(e);return i}if(this.canRecoverWithSingleTokenDeletion(e)){var n=this.SKIP_TOKEN();return this.consumeToken(),n}throw new Yv("sad sad panda")},r.prototype.canPerformInRuleRecovery=function(e,t){return this.canRecoverWithSingleTokenInsertion(e,t)||this.canRecoverWithSingleTokenDeletion(e)},r.prototype.canRecoverWithSingleTokenInsertion=function(e,t){var i=this;if(!this.canTokenTypeBeInsertedInRecovery(e)||(0,ls.isEmpty)(t))return!1;var n=this.LA(1),s=(0,ls.find)(t,function(o){return i.tokenMatcher(n,o)})!==void 0;return s},r.prototype.canRecoverWithSingleTokenDeletion=function(e){var t=this.tokenMatcher(this.LA(2),e);return t},r.prototype.isInCurrentRuleReSyncSet=function(e){var t=this.getCurrFollowKey(),i=this.getFollowSetFromFollowKey(t);return(0,ls.contains)(i,e)},r.prototype.findReSyncTokenType=function(){for(var e=this.flattenFollowSet(),t=this.LA(1),i=2;;){var n=t.tokenType;if((0,ls.contains)(e,n))return n;t=this.LA(i),i++}},r.prototype.getCurrFollowKey=function(){if(this.RULE_STACK.length===1)return Mi.EOF_FOLLOW_KEY;var e=this.getLastExplicitRuleShortName(),t=this.getLastExplicitRuleOccurrenceIndex(),i=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:t,inRule:this.shortRuleNameToFullName(i)}},r.prototype.buildFullFollowKeyStack=function(){var e=this,t=this.RULE_STACK,i=this.RULE_OCCURRENCE_STACK;return(0,ls.map)(t,function(n,s){return s===0?Mi.EOF_FOLLOW_KEY:{ruleName:e.shortRuleNameToFullName(n),idxInCallingRule:i[s],inRule:e.shortRuleNameToFullName(t[s-1])}})},r.prototype.flattenFollowSet=function(){var e=this,t=(0,ls.map)(this.buildFullFollowKeyStack(),function(i){return e.getFollowSetFromFollowKey(i)});return(0,ls.flatten)(t)},r.prototype.getFollowSetFromFollowKey=function(e){if(e===Mi.EOF_FOLLOW_KEY)return[iy.EOF];var t=e.ruleName+e.idxInCallingRule+hIe.IN+e.inRule;return this.resyncFollows[t]},r.prototype.addToResyncTokens=function(e,t){return this.tokenMatcher(e,iy.EOF)||t.push(e),t},r.prototype.reSyncTo=function(e){for(var t=[],i=this.LA(1);this.tokenMatcher(i,e)===!1;)i=this.SKIP_TOKEN(),this.addToResyncTokens(i,t);return(0,ls.dropRight)(t)},r.prototype.attemptInRepetitionRecovery=function(e,t,i,n,s,o,a){},r.prototype.getCurrentGrammarPath=function(e,t){var i=this.getHumanReadableRuleStack(),n=(0,ls.cloneArr)(this.RULE_OCCURRENCE_STACK),s={ruleStack:i,occurrenceStack:n,lastTok:e,lastTokOccurrence:t};return s},r.prototype.getHumanReadableRuleStack=function(){var e=this;return(0,ls.map)(this.RULE_STACK,function(t){return e.shortRuleNameToFullName(t)})},r}();Mi.Recoverable=dIe;function qj(r,e,t,i,n,s,o){var a=this.getKeyForAutomaticLookahead(i,n),l=this.firstAfterRepMap[a];if(l===void 0){var c=this.getCurrRuleFullName(),u=this.getGAstProductions()[c],g=new s(u,n);l=g.startWalking(),this.firstAfterRepMap[a]=l}var f=l.token,h=l.occurrence,p=l.isEndOfRule;this.RULE_STACK.length===1&&p&&f===void 0&&(f=iy.EOF,h=1),this.shouldInRepetitionRecoveryBeTried(f,h,o)&&this.tryInRepetitionRecovery(r,e,t,f)}Mi.attemptInRepetitionRecovery=qj});var ny=w(qt=>{"use strict";Object.defineProperty(qt,"__esModule",{value:!0});qt.getKeyForAutomaticLookahead=qt.AT_LEAST_ONE_SEP_IDX=qt.MANY_SEP_IDX=qt.AT_LEAST_ONE_IDX=qt.MANY_IDX=qt.OPTION_IDX=qt.OR_IDX=qt.BITS_FOR_ALT_IDX=qt.BITS_FOR_RULE_IDX=qt.BITS_FOR_OCCURRENCE_IDX=qt.BITS_FOR_METHOD_TYPE=void 0;qt.BITS_FOR_METHOD_TYPE=4;qt.BITS_FOR_OCCURRENCE_IDX=8;qt.BITS_FOR_RULE_IDX=12;qt.BITS_FOR_ALT_IDX=8;qt.OR_IDX=1<{"use strict";Object.defineProperty(sy,"__esModule",{value:!0});sy.LooksAhead=void 0;var Qa=Id(),Zs=Gt(),Jj=Hn(),ba=ny(),oc=dd(),mIe=function(){function r(){}return r.prototype.initLooksAhead=function(e){this.dynamicTokensEnabled=(0,Zs.has)(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:Jj.DEFAULT_PARSER_CONFIG.dynamicTokensEnabled,this.maxLookahead=(0,Zs.has)(e,"maxLookahead")?e.maxLookahead:Jj.DEFAULT_PARSER_CONFIG.maxLookahead,this.lookAheadFuncsCache=(0,Zs.isES2015MapSupported)()?new Map:[],(0,Zs.isES2015MapSupported)()?(this.getLaFuncFromCache=this.getLaFuncFromMap,this.setLaFuncCache=this.setLaFuncCacheUsingMap):(this.getLaFuncFromCache=this.getLaFuncFromObj,this.setLaFuncCache=this.setLaFuncUsingObj)},r.prototype.preComputeLookaheadFunctions=function(e){var t=this;(0,Zs.forEach)(e,function(i){t.TRACE_INIT(i.name+" Rule Lookahead",function(){var n=(0,oc.collectMethods)(i),s=n.alternation,o=n.repetition,a=n.option,l=n.repetitionMandatory,c=n.repetitionMandatoryWithSeparator,u=n.repetitionWithSeparator;(0,Zs.forEach)(s,function(g){var f=g.idx===0?"":g.idx;t.TRACE_INIT(""+(0,oc.getProductionDslName)(g)+f,function(){var h=(0,Qa.buildLookaheadFuncForOr)(g.idx,i,g.maxLookahead||t.maxLookahead,g.hasPredicates,t.dynamicTokensEnabled,t.lookAheadBuilderForAlternatives),p=(0,ba.getKeyForAutomaticLookahead)(t.fullRuleNameToShort[i.name],ba.OR_IDX,g.idx);t.setLaFuncCache(p,h)})}),(0,Zs.forEach)(o,function(g){t.computeLookaheadFunc(i,g.idx,ba.MANY_IDX,Qa.PROD_TYPE.REPETITION,g.maxLookahead,(0,oc.getProductionDslName)(g))}),(0,Zs.forEach)(a,function(g){t.computeLookaheadFunc(i,g.idx,ba.OPTION_IDX,Qa.PROD_TYPE.OPTION,g.maxLookahead,(0,oc.getProductionDslName)(g))}),(0,Zs.forEach)(l,function(g){t.computeLookaheadFunc(i,g.idx,ba.AT_LEAST_ONE_IDX,Qa.PROD_TYPE.REPETITION_MANDATORY,g.maxLookahead,(0,oc.getProductionDslName)(g))}),(0,Zs.forEach)(c,function(g){t.computeLookaheadFunc(i,g.idx,ba.AT_LEAST_ONE_SEP_IDX,Qa.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,g.maxLookahead,(0,oc.getProductionDslName)(g))}),(0,Zs.forEach)(u,function(g){t.computeLookaheadFunc(i,g.idx,ba.MANY_SEP_IDX,Qa.PROD_TYPE.REPETITION_WITH_SEPARATOR,g.maxLookahead,(0,oc.getProductionDslName)(g))})})})},r.prototype.computeLookaheadFunc=function(e,t,i,n,s,o){var a=this;this.TRACE_INIT(""+o+(t===0?"":t),function(){var l=(0,Qa.buildLookaheadFuncForOptionalProd)(t,e,s||a.maxLookahead,a.dynamicTokensEnabled,n,a.lookAheadBuilderForOptional),c=(0,ba.getKeyForAutomaticLookahead)(a.fullRuleNameToShort[e.name],i,t);a.setLaFuncCache(c,l)})},r.prototype.lookAheadBuilderForOptional=function(e,t,i){return(0,Qa.buildSingleAlternativeLookaheadFunction)(e,t,i)},r.prototype.lookAheadBuilderForAlternatives=function(e,t,i,n){return(0,Qa.buildAlternativesLookAheadFunc)(e,t,i,n)},r.prototype.getKeyForAutomaticLookahead=function(e,t){var i=this.getLastExplicitRuleShortName();return(0,ba.getKeyForAutomaticLookahead)(i,e,t)},r.prototype.getLaFuncFromCache=function(e){},r.prototype.getLaFuncFromMap=function(e){return this.lookAheadFuncsCache.get(e)},r.prototype.getLaFuncFromObj=function(e){return this.lookAheadFuncsCache[e]},r.prototype.setLaFuncCache=function(e,t){},r.prototype.setLaFuncCacheUsingMap=function(e,t){this.lookAheadFuncsCache.set(e,t)},r.prototype.setLaFuncUsingObj=function(e,t){this.lookAheadFuncsCache[e]=t},r}();sy.LooksAhead=mIe});var zj=w(ko=>{"use strict";Object.defineProperty(ko,"__esModule",{value:!0});ko.addNoneTerminalToCst=ko.addTerminalToCst=ko.setNodeLocationFull=ko.setNodeLocationOnlyOffset=void 0;function EIe(r,e){isNaN(r.startOffset)===!0?(r.startOffset=e.startOffset,r.endOffset=e.endOffset):r.endOffset{"use strict";Object.defineProperty(PA,"__esModule",{value:!0});PA.defineNameProp=PA.functionName=PA.classNameFromInstance=void 0;var BIe=Gt();function QIe(r){return Xj(r.constructor)}PA.classNameFromInstance=QIe;var Vj="name";function Xj(r){var e=r.name;return e||"anonymous"}PA.functionName=Xj;function bIe(r,e){var t=Object.getOwnPropertyDescriptor(r,Vj);return(0,BIe.isUndefined)(t)||t.configurable?(Object.defineProperty(r,Vj,{enumerable:!1,configurable:!0,writable:!1,value:e}),!0):!1}PA.defineNameProp=bIe});var tq=w(bi=>{"use strict";Object.defineProperty(bi,"__esModule",{value:!0});bi.validateRedundantMethods=bi.validateMissingCstMethods=bi.validateVisitor=bi.CstVisitorDefinitionError=bi.createBaseVisitorConstructorWithDefaults=bi.createBaseSemanticVisitorConstructor=bi.defaultVisit=void 0;var cs=Gt(),Bd=qv();function _j(r,e){for(var t=(0,cs.keys)(r),i=t.length,n=0;n: + `+(""+s.join(` + +`).replace(/\n/g,` + `)))}}};return t.prototype=i,t.prototype.constructor=t,t._RULE_NAMES=e,t}bi.createBaseSemanticVisitorConstructor=SIe;function vIe(r,e,t){var i=function(){};(0,Bd.defineNameProp)(i,r+"BaseSemanticsWithDefaults");var n=Object.create(t.prototype);return(0,cs.forEach)(e,function(s){n[s]=_j}),i.prototype=n,i.prototype.constructor=i,i}bi.createBaseVisitorConstructorWithDefaults=vIe;var Jv;(function(r){r[r.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",r[r.MISSING_METHOD=1]="MISSING_METHOD"})(Jv=bi.CstVisitorDefinitionError||(bi.CstVisitorDefinitionError={}));function Zj(r,e){var t=$j(r,e),i=eq(r,e);return t.concat(i)}bi.validateVisitor=Zj;function $j(r,e){var t=(0,cs.map)(e,function(i){if(!(0,cs.isFunction)(r[i]))return{msg:"Missing visitor method: <"+i+"> on "+(0,Bd.functionName)(r.constructor)+" CST Visitor.",type:Jv.MISSING_METHOD,methodName:i}});return(0,cs.compact)(t)}bi.validateMissingCstMethods=$j;var xIe=["constructor","visit","validateVisitor"];function eq(r,e){var t=[];for(var i in r)(0,cs.isFunction)(r[i])&&!(0,cs.contains)(xIe,i)&&!(0,cs.contains)(e,i)&&t.push({msg:"Redundant visitor method: <"+i+"> on "+(0,Bd.functionName)(r.constructor)+` CST Visitor +There is no Grammar Rule corresponding to this method's name. +`,type:Jv.REDUNDANT_METHOD,methodName:i});return t}bi.validateRedundantMethods=eq});var iq=w(oy=>{"use strict";Object.defineProperty(oy,"__esModule",{value:!0});oy.TreeBuilder=void 0;var zg=zj(),Zr=Gt(),rq=tq(),PIe=Hn(),DIe=function(){function r(){}return r.prototype.initTreeBuilder=function(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=(0,Zr.has)(e,"nodeLocationTracking")?e.nodeLocationTracking:PIe.DEFAULT_PARSER_CONFIG.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=Zr.NOOP,this.cstFinallyStateUpdate=Zr.NOOP,this.cstPostTerminal=Zr.NOOP,this.cstPostNonTerminal=Zr.NOOP,this.cstPostRule=Zr.NOOP;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=zg.setNodeLocationFull,this.setNodeLocationFromNode=zg.setNodeLocationFull,this.cstPostRule=Zr.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=Zr.NOOP,this.setNodeLocationFromNode=Zr.NOOP,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=zg.setNodeLocationOnlyOffset,this.setNodeLocationFromNode=zg.setNodeLocationOnlyOffset,this.cstPostRule=Zr.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=Zr.NOOP,this.setNodeLocationFromNode=Zr.NOOP,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=Zr.NOOP,this.setNodeLocationFromNode=Zr.NOOP,this.cstPostRule=Zr.NOOP,this.setInitialNodeLocation=Zr.NOOP;else throw Error('Invalid config option: "'+e.nodeLocationTracking+'"')},r.prototype.setInitialNodeLocationOnlyOffsetRecovery=function(e){e.location={startOffset:NaN,endOffset:NaN}},r.prototype.setInitialNodeLocationOnlyOffsetRegular=function(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}},r.prototype.setInitialNodeLocationFullRecovery=function(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}},r.prototype.setInitialNodeLocationFullRegular=function(e){var t=this.LA(1);e.location={startOffset:t.startOffset,startLine:t.startLine,startColumn:t.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}},r.prototype.cstInvocationStateUpdate=function(e,t){var i={name:e,children:{}};this.setInitialNodeLocation(i),this.CST_STACK.push(i)},r.prototype.cstFinallyStateUpdate=function(){this.CST_STACK.pop()},r.prototype.cstPostRuleFull=function(e){var t=this.LA(0),i=e.location;i.startOffset<=t.startOffset?(i.endOffset=t.endOffset,i.endLine=t.endLine,i.endColumn=t.endColumn):(i.startOffset=NaN,i.startLine=NaN,i.startColumn=NaN)},r.prototype.cstPostRuleOnlyOffset=function(e){var t=this.LA(0),i=e.location;i.startOffset<=t.startOffset?i.endOffset=t.endOffset:i.startOffset=NaN},r.prototype.cstPostTerminal=function(e,t){var i=this.CST_STACK[this.CST_STACK.length-1];(0,zg.addTerminalToCst)(i,t,e),this.setNodeLocationFromToken(i.location,t)},r.prototype.cstPostNonTerminal=function(e,t){var i=this.CST_STACK[this.CST_STACK.length-1];(0,zg.addNoneTerminalToCst)(i,t,e),this.setNodeLocationFromNode(i.location,e.location)},r.prototype.getBaseCstVisitorConstructor=function(){if((0,Zr.isUndefined)(this.baseCstVisitorConstructor)){var e=(0,rq.createBaseSemanticVisitorConstructor)(this.className,(0,Zr.keys)(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor},r.prototype.getBaseCstVisitorConstructorWithDefaults=function(){if((0,Zr.isUndefined)(this.baseCstVisitorWithDefaultsConstructor)){var e=(0,rq.createBaseVisitorConstructorWithDefaults)(this.className,(0,Zr.keys)(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor},r.prototype.getLastExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-1]},r.prototype.getPreviousExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-2]},r.prototype.getLastExplicitRuleOccurrenceIndex=function(){var e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]},r}();oy.TreeBuilder=DIe});var sq=w(ay=>{"use strict";Object.defineProperty(ay,"__esModule",{value:!0});ay.LexerAdapter=void 0;var nq=Hn(),kIe=function(){function r(){}return r.prototype.initLexerAdapter=function(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1},Object.defineProperty(r.prototype,"input",{get:function(){return this.tokVector},set:function(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length},enumerable:!1,configurable:!0}),r.prototype.SKIP_TOKEN=function(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):nq.END_OF_FILE},r.prototype.LA=function(e){var t=this.currIdx+e;return t<0||this.tokVectorLength<=t?nq.END_OF_FILE:this.tokVector[t]},r.prototype.consumeToken=function(){this.currIdx++},r.prototype.exportLexerState=function(){return this.currIdx},r.prototype.importLexerState=function(e){this.currIdx=e},r.prototype.resetLexerState=function(){this.currIdx=-1},r.prototype.moveToTerminatedState=function(){this.currIdx=this.tokVector.length-1},r.prototype.getLexerPosition=function(){return this.exportLexerState()},r}();ay.LexerAdapter=kIe});var aq=w(Ay=>{"use strict";Object.defineProperty(Ay,"__esModule",{value:!0});Ay.RecognizerApi=void 0;var oq=Gt(),RIe=Wg(),Wv=Hn(),FIe=Cd(),NIe=Hv(),LIe=dn(),TIe=function(){function r(){}return r.prototype.ACTION=function(e){return e.call(this)},r.prototype.consume=function(e,t,i){return this.consumeInternal(t,e,i)},r.prototype.subrule=function(e,t,i){return this.subruleInternal(t,e,i)},r.prototype.option=function(e,t){return this.optionInternal(t,e)},r.prototype.or=function(e,t){return this.orInternal(t,e)},r.prototype.many=function(e,t){return this.manyInternal(e,t)},r.prototype.atLeastOne=function(e,t){return this.atLeastOneInternal(e,t)},r.prototype.CONSUME=function(e,t){return this.consumeInternal(e,0,t)},r.prototype.CONSUME1=function(e,t){return this.consumeInternal(e,1,t)},r.prototype.CONSUME2=function(e,t){return this.consumeInternal(e,2,t)},r.prototype.CONSUME3=function(e,t){return this.consumeInternal(e,3,t)},r.prototype.CONSUME4=function(e,t){return this.consumeInternal(e,4,t)},r.prototype.CONSUME5=function(e,t){return this.consumeInternal(e,5,t)},r.prototype.CONSUME6=function(e,t){return this.consumeInternal(e,6,t)},r.prototype.CONSUME7=function(e,t){return this.consumeInternal(e,7,t)},r.prototype.CONSUME8=function(e,t){return this.consumeInternal(e,8,t)},r.prototype.CONSUME9=function(e,t){return this.consumeInternal(e,9,t)},r.prototype.SUBRULE=function(e,t){return this.subruleInternal(e,0,t)},r.prototype.SUBRULE1=function(e,t){return this.subruleInternal(e,1,t)},r.prototype.SUBRULE2=function(e,t){return this.subruleInternal(e,2,t)},r.prototype.SUBRULE3=function(e,t){return this.subruleInternal(e,3,t)},r.prototype.SUBRULE4=function(e,t){return this.subruleInternal(e,4,t)},r.prototype.SUBRULE5=function(e,t){return this.subruleInternal(e,5,t)},r.prototype.SUBRULE6=function(e,t){return this.subruleInternal(e,6,t)},r.prototype.SUBRULE7=function(e,t){return this.subruleInternal(e,7,t)},r.prototype.SUBRULE8=function(e,t){return this.subruleInternal(e,8,t)},r.prototype.SUBRULE9=function(e,t){return this.subruleInternal(e,9,t)},r.prototype.OPTION=function(e){return this.optionInternal(e,0)},r.prototype.OPTION1=function(e){return this.optionInternal(e,1)},r.prototype.OPTION2=function(e){return this.optionInternal(e,2)},r.prototype.OPTION3=function(e){return this.optionInternal(e,3)},r.prototype.OPTION4=function(e){return this.optionInternal(e,4)},r.prototype.OPTION5=function(e){return this.optionInternal(e,5)},r.prototype.OPTION6=function(e){return this.optionInternal(e,6)},r.prototype.OPTION7=function(e){return this.optionInternal(e,7)},r.prototype.OPTION8=function(e){return this.optionInternal(e,8)},r.prototype.OPTION9=function(e){return this.optionInternal(e,9)},r.prototype.OR=function(e){return this.orInternal(e,0)},r.prototype.OR1=function(e){return this.orInternal(e,1)},r.prototype.OR2=function(e){return this.orInternal(e,2)},r.prototype.OR3=function(e){return this.orInternal(e,3)},r.prototype.OR4=function(e){return this.orInternal(e,4)},r.prototype.OR5=function(e){return this.orInternal(e,5)},r.prototype.OR6=function(e){return this.orInternal(e,6)},r.prototype.OR7=function(e){return this.orInternal(e,7)},r.prototype.OR8=function(e){return this.orInternal(e,8)},r.prototype.OR9=function(e){return this.orInternal(e,9)},r.prototype.MANY=function(e){this.manyInternal(0,e)},r.prototype.MANY1=function(e){this.manyInternal(1,e)},r.prototype.MANY2=function(e){this.manyInternal(2,e)},r.prototype.MANY3=function(e){this.manyInternal(3,e)},r.prototype.MANY4=function(e){this.manyInternal(4,e)},r.prototype.MANY5=function(e){this.manyInternal(5,e)},r.prototype.MANY6=function(e){this.manyInternal(6,e)},r.prototype.MANY7=function(e){this.manyInternal(7,e)},r.prototype.MANY8=function(e){this.manyInternal(8,e)},r.prototype.MANY9=function(e){this.manyInternal(9,e)},r.prototype.MANY_SEP=function(e){this.manySepFirstInternal(0,e)},r.prototype.MANY_SEP1=function(e){this.manySepFirstInternal(1,e)},r.prototype.MANY_SEP2=function(e){this.manySepFirstInternal(2,e)},r.prototype.MANY_SEP3=function(e){this.manySepFirstInternal(3,e)},r.prototype.MANY_SEP4=function(e){this.manySepFirstInternal(4,e)},r.prototype.MANY_SEP5=function(e){this.manySepFirstInternal(5,e)},r.prototype.MANY_SEP6=function(e){this.manySepFirstInternal(6,e)},r.prototype.MANY_SEP7=function(e){this.manySepFirstInternal(7,e)},r.prototype.MANY_SEP8=function(e){this.manySepFirstInternal(8,e)},r.prototype.MANY_SEP9=function(e){this.manySepFirstInternal(9,e)},r.prototype.AT_LEAST_ONE=function(e){this.atLeastOneInternal(0,e)},r.prototype.AT_LEAST_ONE1=function(e){return this.atLeastOneInternal(1,e)},r.prototype.AT_LEAST_ONE2=function(e){this.atLeastOneInternal(2,e)},r.prototype.AT_LEAST_ONE3=function(e){this.atLeastOneInternal(3,e)},r.prototype.AT_LEAST_ONE4=function(e){this.atLeastOneInternal(4,e)},r.prototype.AT_LEAST_ONE5=function(e){this.atLeastOneInternal(5,e)},r.prototype.AT_LEAST_ONE6=function(e){this.atLeastOneInternal(6,e)},r.prototype.AT_LEAST_ONE7=function(e){this.atLeastOneInternal(7,e)},r.prototype.AT_LEAST_ONE8=function(e){this.atLeastOneInternal(8,e)},r.prototype.AT_LEAST_ONE9=function(e){this.atLeastOneInternal(9,e)},r.prototype.AT_LEAST_ONE_SEP=function(e){this.atLeastOneSepFirstInternal(0,e)},r.prototype.AT_LEAST_ONE_SEP1=function(e){this.atLeastOneSepFirstInternal(1,e)},r.prototype.AT_LEAST_ONE_SEP2=function(e){this.atLeastOneSepFirstInternal(2,e)},r.prototype.AT_LEAST_ONE_SEP3=function(e){this.atLeastOneSepFirstInternal(3,e)},r.prototype.AT_LEAST_ONE_SEP4=function(e){this.atLeastOneSepFirstInternal(4,e)},r.prototype.AT_LEAST_ONE_SEP5=function(e){this.atLeastOneSepFirstInternal(5,e)},r.prototype.AT_LEAST_ONE_SEP6=function(e){this.atLeastOneSepFirstInternal(6,e)},r.prototype.AT_LEAST_ONE_SEP7=function(e){this.atLeastOneSepFirstInternal(7,e)},r.prototype.AT_LEAST_ONE_SEP8=function(e){this.atLeastOneSepFirstInternal(8,e)},r.prototype.AT_LEAST_ONE_SEP9=function(e){this.atLeastOneSepFirstInternal(9,e)},r.prototype.RULE=function(e,t,i){if(i===void 0&&(i=Wv.DEFAULT_RULE_CONFIG),(0,oq.contains)(this.definedRulesNames,e)){var n=FIe.defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),s={message:n,type:Wv.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(s)}this.definedRulesNames.push(e);var o=this.defineRule(e,t,i);return this[e]=o,o},r.prototype.OVERRIDE_RULE=function(e,t,i){i===void 0&&(i=Wv.DEFAULT_RULE_CONFIG);var n=[];n=n.concat((0,NIe.validateRuleIsOverridden)(e,this.definedRulesNames,this.className)),this.definitionErrors=this.definitionErrors.concat(n);var s=this.defineRule(e,t,i);return this[e]=s,s},r.prototype.BACKTRACK=function(e,t){return function(){this.isBackTrackingStack.push(1);var i=this.saveRecogState();try{return e.apply(this,t),!0}catch(n){if((0,RIe.isRecognitionException)(n))return!1;throw n}finally{this.reloadRecogState(i),this.isBackTrackingStack.pop()}}},r.prototype.getGAstProductions=function(){return this.gastProductionsCache},r.prototype.getSerializedGastProductions=function(){return(0,LIe.serializeGrammar)((0,oq.values)(this.gastProductionsCache))},r}();Ay.RecognizerApi=TIe});var uq=w(cy=>{"use strict";Object.defineProperty(cy,"__esModule",{value:!0});cy.RecognizerEngine=void 0;var Pr=Gt(),Gn=ny(),ly=Wg(),Aq=Id(),Vg=Ed(),lq=Hn(),OIe=jv(),cq=SA(),Qd=Gg(),MIe=qv(),KIe=function(){function r(){}return r.prototype.initRecognizerEngine=function(e,t){if(this.className=(0,MIe.classNameFromInstance)(this),this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=Qd.tokenStructuredMatcherNoCategories,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},(0,Pr.has)(t,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. + See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 + For Further details.`);if((0,Pr.isArray)(e)){if((0,Pr.isEmpty)(e))throw Error(`A Token Vocabulary cannot be empty. + Note that the first argument for the parser constructor + is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. + See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 + For Further details.`)}if((0,Pr.isArray)(e))this.tokensMap=(0,Pr.reduce)(e,function(o,a){return o[a.name]=a,o},{});else if((0,Pr.has)(e,"modes")&&(0,Pr.every)((0,Pr.flatten)((0,Pr.values)(e.modes)),Qd.isTokenType)){var i=(0,Pr.flatten)((0,Pr.values)(e.modes)),n=(0,Pr.uniq)(i);this.tokensMap=(0,Pr.reduce)(n,function(o,a){return o[a.name]=a,o},{})}else if((0,Pr.isObject)(e))this.tokensMap=(0,Pr.cloneObj)(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=cq.EOF;var s=(0,Pr.every)((0,Pr.values)(e),function(o){return(0,Pr.isEmpty)(o.categoryMatches)});this.tokenMatcher=s?Qd.tokenStructuredMatcherNoCategories:Qd.tokenStructuredMatcher,(0,Qd.augmentTokenTypes)((0,Pr.values)(this.tokensMap))},r.prototype.defineRule=function(e,t,i){if(this.selfAnalysisDone)throw Error("Grammar rule <"+e+`> may not be defined after the 'performSelfAnalysis' method has been called' +Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);var n=(0,Pr.has)(i,"resyncEnabled")?i.resyncEnabled:lq.DEFAULT_RULE_CONFIG.resyncEnabled,s=(0,Pr.has)(i,"recoveryValueFunc")?i.recoveryValueFunc:lq.DEFAULT_RULE_CONFIG.recoveryValueFunc,o=this.ruleShortNameIdx<t},r.prototype.orInternal=function(e,t){var i=this.getKeyForAutomaticLookahead(Gn.OR_IDX,t),n=(0,Pr.isArray)(e)?e:e.DEF,s=this.getLaFuncFromCache(i),o=s.call(this,n);if(o!==void 0){var a=n[o];return a.ALT.call(this)}this.raiseNoAltException(t,e.ERR_MSG)},r.prototype.ruleFinallyStateUpdate=function(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){var e=this.LA(1),t=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new ly.NotAllInputParsedException(t,e))}},r.prototype.subruleInternal=function(e,t,i){var n;try{var s=i!==void 0?i.ARGS:void 0;return n=e.call(this,t,s),this.cstPostNonTerminal(n,i!==void 0&&i.LABEL!==void 0?i.LABEL:e.ruleName),n}catch(o){this.subruleInternalError(o,i,e.ruleName)}},r.prototype.subruleInternalError=function(e,t,i){throw(0,ly.isRecognitionException)(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,t!==void 0&&t.LABEL!==void 0?t.LABEL:i),delete e.partialCstResult),e},r.prototype.consumeInternal=function(e,t,i){var n;try{var s=this.LA(1);this.tokenMatcher(s,e)===!0?(this.consumeToken(),n=s):this.consumeInternalError(e,s,i)}catch(o){n=this.consumeInternalRecovery(e,t,o)}return this.cstPostTerminal(i!==void 0&&i.LABEL!==void 0?i.LABEL:e.name,n),n},r.prototype.consumeInternalError=function(e,t,i){var n,s=this.LA(0);throw i!==void 0&&i.ERR_MSG?n=i.ERR_MSG:n=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:t,previous:s,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new ly.MismatchedTokenException(n,t,s))},r.prototype.consumeInternalRecovery=function(e,t,i){if(this.recoveryEnabled&&i.name==="MismatchedTokenException"&&!this.isBackTracking()){var n=this.getFollowsForInRuleRecovery(e,t);try{return this.tryInRuleRecovery(e,n)}catch(s){throw s.name===OIe.IN_RULE_RECOVERY_EXCEPTION?i:s}}else throw i},r.prototype.saveRecogState=function(){var e=this.errors,t=(0,Pr.cloneArr)(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:t,CST_STACK:this.CST_STACK}},r.prototype.reloadRecogState=function(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK},r.prototype.ruleInvocationStateUpdate=function(e,t,i){this.RULE_OCCURRENCE_STACK.push(i),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(t,e)},r.prototype.isBackTracking=function(){return this.isBackTrackingStack.length!==0},r.prototype.getCurrRuleFullName=function(){var e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]},r.prototype.shortRuleNameToFullName=function(e){return this.shortRuleNameToFull[e]},r.prototype.isAtEndOfInput=function(){return this.tokenMatcher(this.LA(1),cq.EOF)},r.prototype.reset=function(){this.resetLexerState(),this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]},r}();cy.RecognizerEngine=KIe});var fq=w(uy=>{"use strict";Object.defineProperty(uy,"__esModule",{value:!0});uy.ErrorHandler=void 0;var zv=Wg(),Vv=Gt(),gq=Id(),UIe=Hn(),HIe=function(){function r(){}return r.prototype.initErrorHandler=function(e){this._errors=[],this.errorMessageProvider=(0,Vv.has)(e,"errorMessageProvider")?e.errorMessageProvider:UIe.DEFAULT_PARSER_CONFIG.errorMessageProvider},r.prototype.SAVE_ERROR=function(e){if((0,zv.isRecognitionException)(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:(0,Vv.cloneArr)(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")},Object.defineProperty(r.prototype,"errors",{get:function(){return(0,Vv.cloneArr)(this._errors)},set:function(e){this._errors=e},enumerable:!1,configurable:!0}),r.prototype.raiseEarlyExitException=function(e,t,i){for(var n=this.getCurrRuleFullName(),s=this.getGAstProductions()[n],o=(0,gq.getLookaheadPathsForOptionalProd)(e,s,t,this.maxLookahead),a=o[0],l=[],c=1;c<=this.maxLookahead;c++)l.push(this.LA(c));var u=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:a,actual:l,previous:this.LA(0),customUserDescription:i,ruleName:n});throw this.SAVE_ERROR(new zv.EarlyExitException(u,this.LA(1),this.LA(0)))},r.prototype.raiseNoAltException=function(e,t){for(var i=this.getCurrRuleFullName(),n=this.getGAstProductions()[i],s=(0,gq.getLookaheadPathsForOr)(e,n,this.maxLookahead),o=[],a=1;a<=this.maxLookahead;a++)o.push(this.LA(a));var l=this.LA(0),c=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:s,actual:o,previous:l,customUserDescription:t,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new zv.NoViableAltException(c,this.LA(1),l))},r}();uy.ErrorHandler=HIe});var dq=w(gy=>{"use strict";Object.defineProperty(gy,"__esModule",{value:!0});gy.ContentAssist=void 0;var hq=Ed(),pq=Gt(),GIe=function(){function r(){}return r.prototype.initContentAssist=function(){},r.prototype.computeContentAssist=function(e,t){var i=this.gastProductionsCache[e];if((0,pq.isUndefined)(i))throw Error("Rule ->"+e+"<- does not exist in this grammar.");return(0,hq.nextPossibleTokensAfter)([i],t,this.tokenMatcher,this.maxLookahead)},r.prototype.getNextPossibleTokenTypes=function(e){var t=(0,pq.first)(e.ruleStack),i=this.getGAstProductions(),n=i[t],s=new hq.NextAfterTokenWalker(n,e).startWalking();return s},r}();gy.ContentAssist=GIe});var Qq=w(py=>{"use strict";Object.defineProperty(py,"__esModule",{value:!0});py.GastRecorder=void 0;var En=Gt(),Ro=dn(),YIe=gd(),Iq=Gg(),yq=SA(),jIe=Hn(),qIe=ny(),hy={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(hy);var Cq=!0,mq=Math.pow(2,qIe.BITS_FOR_OCCURRENCE_IDX)-1,wq=(0,yq.createToken)({name:"RECORDING_PHASE_TOKEN",pattern:YIe.Lexer.NA});(0,Iq.augmentTokenTypes)([wq]);var Bq=(0,yq.createTokenInstance)(wq,`This IToken indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(Bq);var JIe={name:`This CSTNode indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},WIe=function(){function r(){}return r.prototype.initGastRecorder=function(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1},r.prototype.enableRecording=function(){var e=this;this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",function(){for(var t=function(n){var s=n>0?n:"";e["CONSUME"+s]=function(o,a){return this.consumeInternalRecord(o,n,a)},e["SUBRULE"+s]=function(o,a){return this.subruleInternalRecord(o,n,a)},e["OPTION"+s]=function(o){return this.optionInternalRecord(o,n)},e["OR"+s]=function(o){return this.orInternalRecord(o,n)},e["MANY"+s]=function(o){this.manyInternalRecord(n,o)},e["MANY_SEP"+s]=function(o){this.manySepFirstInternalRecord(n,o)},e["AT_LEAST_ONE"+s]=function(o){this.atLeastOneInternalRecord(n,o)},e["AT_LEAST_ONE_SEP"+s]=function(o){this.atLeastOneSepFirstInternalRecord(n,o)}},i=0;i<10;i++)t(i);e.consume=function(n,s,o){return this.consumeInternalRecord(s,n,o)},e.subrule=function(n,s,o){return this.subruleInternalRecord(s,n,o)},e.option=function(n,s){return this.optionInternalRecord(s,n)},e.or=function(n,s){return this.orInternalRecord(s,n)},e.many=function(n,s){this.manyInternalRecord(n,s)},e.atLeastOne=function(n,s){this.atLeastOneInternalRecord(n,s)},e.ACTION=e.ACTION_RECORD,e.BACKTRACK=e.BACKTRACK_RECORD,e.LA=e.LA_RECORD})},r.prototype.disableRecording=function(){var e=this;this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",function(){for(var t=0;t<10;t++){var i=t>0?t:"";delete e["CONSUME"+i],delete e["SUBRULE"+i],delete e["OPTION"+i],delete e["OR"+i],delete e["MANY"+i],delete e["MANY_SEP"+i],delete e["AT_LEAST_ONE"+i],delete e["AT_LEAST_ONE_SEP"+i]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})},r.prototype.ACTION_RECORD=function(e){},r.prototype.BACKTRACK_RECORD=function(e,t){return function(){return!0}},r.prototype.LA_RECORD=function(e){return jIe.END_OF_FILE},r.prototype.topLevelRuleRecord=function(e,t){try{var i=new Ro.Rule({definition:[],name:e});return i.name=e,this.recordingProdStack.push(i),t.call(this),this.recordingProdStack.pop(),i}catch(n){if(n.KNOWN_RECORDER_ERROR!==!0)try{n.message=n.message+` + This error was thrown during the "grammar recording phase" For more info see: + https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw n}throw n}},r.prototype.optionInternalRecord=function(e,t){return bd.call(this,Ro.Option,e,t)},r.prototype.atLeastOneInternalRecord=function(e,t){bd.call(this,Ro.RepetitionMandatory,t,e)},r.prototype.atLeastOneSepFirstInternalRecord=function(e,t){bd.call(this,Ro.RepetitionMandatoryWithSeparator,t,e,Cq)},r.prototype.manyInternalRecord=function(e,t){bd.call(this,Ro.Repetition,t,e)},r.prototype.manySepFirstInternalRecord=function(e,t){bd.call(this,Ro.RepetitionWithSeparator,t,e,Cq)},r.prototype.orInternalRecord=function(e,t){return zIe.call(this,e,t)},r.prototype.subruleInternalRecord=function(e,t,i){if(fy(t),!e||(0,En.has)(e,"ruleName")===!1){var n=new Error(" argument is invalid"+(" expecting a Parser method reference but got: <"+JSON.stringify(e)+">")+(` + inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,En.peek)(this.recordingProdStack),o=e.ruleName,a=new Ro.NonTerminal({idx:t,nonTerminalName:o,label:i==null?void 0:i.LABEL,referencedRule:void 0});return s.definition.push(a),this.outputCst?JIe:hy},r.prototype.consumeInternalRecord=function(e,t,i){if(fy(t),!(0,Iq.hasShortKeyProperty)(e)){var n=new Error(" argument is invalid"+(" expecting a TokenType reference but got: <"+JSON.stringify(e)+">")+(` + inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,En.peek)(this.recordingProdStack),o=new Ro.Terminal({idx:t,terminalType:e,label:i==null?void 0:i.LABEL});return s.definition.push(o),Bq},r}();py.GastRecorder=WIe;function bd(r,e,t,i){i===void 0&&(i=!1),fy(t);var n=(0,En.peek)(this.recordingProdStack),s=(0,En.isFunction)(e)?e:e.DEF,o=new r({definition:[],idx:t});return i&&(o.separator=e.SEP),(0,En.has)(e,"MAX_LOOKAHEAD")&&(o.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(o),s.call(this),n.definition.push(o),this.recordingProdStack.pop(),hy}function zIe(r,e){var t=this;fy(e);var i=(0,En.peek)(this.recordingProdStack),n=(0,En.isArray)(r)===!1,s=n===!1?r:r.DEF,o=new Ro.Alternation({definition:[],idx:e,ignoreAmbiguities:n&&r.IGNORE_AMBIGUITIES===!0});(0,En.has)(r,"MAX_LOOKAHEAD")&&(o.maxLookahead=r.MAX_LOOKAHEAD);var a=(0,En.some)(s,function(l){return(0,En.isFunction)(l.GATE)});return o.hasPredicates=a,i.definition.push(o),(0,En.forEach)(s,function(l){var c=new Ro.Alternative({definition:[]});o.definition.push(c),(0,En.has)(l,"IGNORE_AMBIGUITIES")?c.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:(0,En.has)(l,"GATE")&&(c.ignoreAmbiguities=!0),t.recordingProdStack.push(c),l.ALT.call(t),t.recordingProdStack.pop()}),hy}function Eq(r){return r===0?"":""+r}function fy(r){if(r<0||r>mq){var e=new Error("Invalid DSL Method idx value: <"+r+`> + `+("Idx value must be a none negative value smaller than "+(mq+1)));throw e.KNOWN_RECORDER_ERROR=!0,e}}});var Sq=w(dy=>{"use strict";Object.defineProperty(dy,"__esModule",{value:!0});dy.PerformanceTracer=void 0;var bq=Gt(),VIe=Hn(),XIe=function(){function r(){}return r.prototype.initPerformanceTracer=function(e){if((0,bq.has)(e,"traceInitPerf")){var t=e.traceInitPerf,i=typeof t=="number";this.traceInitMaxIdent=i?t:1/0,this.traceInitPerf=i?t>0:t}else this.traceInitMaxIdent=0,this.traceInitPerf=VIe.DEFAULT_PARSER_CONFIG.traceInitPerf;this.traceInitIndent=-1},r.prototype.TRACE_INIT=function(e,t){if(this.traceInitPerf===!0){this.traceInitIndent++;var i=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <"+e+">");var n=(0,bq.timer)(t),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return t()},r}();dy.PerformanceTracer=XIe});var vq=w(Cy=>{"use strict";Object.defineProperty(Cy,"__esModule",{value:!0});Cy.applyMixins=void 0;function _Ie(r,e){e.forEach(function(t){var i=t.prototype;Object.getOwnPropertyNames(i).forEach(function(n){if(n!=="constructor"){var s=Object.getOwnPropertyDescriptor(i,n);s&&(s.get||s.set)?Object.defineProperty(r.prototype,n,s):r.prototype[n]=t.prototype[n]}})})}Cy.applyMixins=_Ie});var Hn=w(dr=>{"use strict";var Dq=dr&&dr.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(dr,"__esModule",{value:!0});dr.EmbeddedActionsParser=dr.CstParser=dr.Parser=dr.EMPTY_ALT=dr.ParserDefinitionErrorType=dr.DEFAULT_RULE_CONFIG=dr.DEFAULT_PARSER_CONFIG=dr.END_OF_FILE=void 0;var Xi=Gt(),ZIe=fj(),xq=SA(),kq=Cd(),Pq=Kj(),$Ie=jv(),eye=Wj(),tye=iq(),rye=sq(),iye=aq(),nye=uq(),sye=fq(),oye=dq(),aye=Qq(),Aye=Sq(),lye=vq();dr.END_OF_FILE=(0,xq.createTokenInstance)(xq.EOF,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(dr.END_OF_FILE);dr.DEFAULT_PARSER_CONFIG=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:kq.defaultParserErrorProvider,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1});dr.DEFAULT_RULE_CONFIG=Object.freeze({recoveryValueFunc:function(){},resyncEnabled:!0});var cye;(function(r){r[r.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",r[r.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",r[r.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",r[r.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",r[r.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",r[r.LEFT_RECURSION=5]="LEFT_RECURSION",r[r.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",r[r.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",r[r.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",r[r.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",r[r.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",r[r.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",r[r.TOO_MANY_ALTS=12]="TOO_MANY_ALTS"})(cye=dr.ParserDefinitionErrorType||(dr.ParserDefinitionErrorType={}));function uye(r){return r===void 0&&(r=void 0),function(){return r}}dr.EMPTY_ALT=uye;var my=function(){function r(e,t){this.definitionErrors=[],this.selfAnalysisDone=!1;var i=this;if(i.initErrorHandler(t),i.initLexerAdapter(),i.initLooksAhead(t),i.initRecognizerEngine(e,t),i.initRecoverable(t),i.initTreeBuilder(t),i.initContentAssist(),i.initGastRecorder(t),i.initPerformanceTracer(t),(0,Xi.has)(t,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. + Please use the flag on the relevant DSL method instead. + See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES + For further details.`);this.skipValidations=(0,Xi.has)(t,"skipValidations")?t.skipValidations:dr.DEFAULT_PARSER_CONFIG.skipValidations}return r.performSelfAnalysis=function(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")},r.prototype.performSelfAnalysis=function(){var e=this;this.TRACE_INIT("performSelfAnalysis",function(){var t;e.selfAnalysisDone=!0;var i=e.className;e.TRACE_INIT("toFastProps",function(){(0,Xi.toFastProperties)(e)}),e.TRACE_INIT("Grammar Recording",function(){try{e.enableRecording(),(0,Xi.forEach)(e.definedRulesNames,function(s){var o=e[s],a=o.originalGrammarAction,l=void 0;e.TRACE_INIT(s+" Rule",function(){l=e.topLevelRuleRecord(s,a)}),e.gastProductionsCache[s]=l})}finally{e.disableRecording()}});var n=[];if(e.TRACE_INIT("Grammar Resolving",function(){n=(0,Pq.resolveGrammar)({rules:(0,Xi.values)(e.gastProductionsCache)}),e.definitionErrors=e.definitionErrors.concat(n)}),e.TRACE_INIT("Grammar Validations",function(){if((0,Xi.isEmpty)(n)&&e.skipValidations===!1){var s=(0,Pq.validateGrammar)({rules:(0,Xi.values)(e.gastProductionsCache),maxLookahead:e.maxLookahead,tokenTypes:(0,Xi.values)(e.tokensMap),errMsgProvider:kq.defaultGrammarValidatorErrorProvider,grammarName:i});e.definitionErrors=e.definitionErrors.concat(s)}}),(0,Xi.isEmpty)(e.definitionErrors)&&(e.recoveryEnabled&&e.TRACE_INIT("computeAllProdsFollows",function(){var s=(0,ZIe.computeAllProdsFollows)((0,Xi.values)(e.gastProductionsCache));e.resyncFollows=s}),e.TRACE_INIT("ComputeLookaheadFunctions",function(){e.preComputeLookaheadFunctions((0,Xi.values)(e.gastProductionsCache))})),!r.DEFER_DEFINITION_ERRORS_HANDLING&&!(0,Xi.isEmpty)(e.definitionErrors))throw t=(0,Xi.map)(e.definitionErrors,function(s){return s.message}),new Error(`Parser Definition Errors detected: + `+t.join(` +------------------------------- +`))})},r.DEFER_DEFINITION_ERRORS_HANDLING=!1,r}();dr.Parser=my;(0,lye.applyMixins)(my,[$Ie.Recoverable,eye.LooksAhead,tye.TreeBuilder,rye.LexerAdapter,nye.RecognizerEngine,iye.RecognizerApi,sye.ErrorHandler,oye.ContentAssist,aye.GastRecorder,Aye.PerformanceTracer]);var gye=function(r){Dq(e,r);function e(t,i){i===void 0&&(i=dr.DEFAULT_PARSER_CONFIG);var n=this,s=(0,Xi.cloneObj)(i);return s.outputCst=!0,n=r.call(this,t,s)||this,n}return e}(my);dr.CstParser=gye;var fye=function(r){Dq(e,r);function e(t,i){i===void 0&&(i=dr.DEFAULT_PARSER_CONFIG);var n=this,s=(0,Xi.cloneObj)(i);return s.outputCst=!1,n=r.call(this,t,s)||this,n}return e}(my);dr.EmbeddedActionsParser=fye});var Fq=w(Ey=>{"use strict";Object.defineProperty(Ey,"__esModule",{value:!0});Ey.createSyntaxDiagramsCode=void 0;var Rq=pv();function hye(r,e){var t=e===void 0?{}:e,i=t.resourceBase,n=i===void 0?"https://unpkg.com/chevrotain@"+Rq.VERSION+"/diagrams/":i,s=t.css,o=s===void 0?"https://unpkg.com/chevrotain@"+Rq.VERSION+"/diagrams/diagrams.css":s,a=` + + + + + +`,l=` + +`,c=` + + + + diff --git a/pkg/ui/web/package-lock.json b/pkg/ui/web/package-lock.json new file mode 100644 index 00000000..c0da9c10 --- /dev/null +++ b/pkg/ui/web/package-lock.json @@ -0,0 +1,1483 @@ +{ + "name": "frontend", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "frontend", + "version": "0.0.0", + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@types/react": "^18.0.17", + "@types/react-dom": "^18.0.6", + "@vitejs/plugin-react": "^2.0.1", + "typescript": "^4.6.4", + "vite": "^3.0.7" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", + "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.0.tgz", + "integrity": "sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.21.0", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.21.0", + "@babel/helpers": "^7.21.0", + "@babel/parser": "^7.21.0", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.21.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.1.tgz", + "integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.21.0", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", + "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.2", + "@babel/types": "^7.21.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", + "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.2.tgz", + "integrity": "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.0.tgz", + "integrity": "sha512-6OAWljMvQrZjR2DaNhVfRz6dkCAVV+ymcLUmaf8bccGOHn2v5rHJK3tTpij0BuhdYWP4LLaqj5lwcdlpAAPuvg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", + "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "dev": true, + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz", + "integrity": "sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", + "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.2.tgz", + "integrity": "sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.21.1", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.21.2", + "@babel/types": "^7.21.2", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.2.tgz", + "integrity": "sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", + "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", + "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.0.28", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz", + "integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.0.11", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.11.tgz", + "integrity": "sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "dev": true + }, + "node_modules/@vitejs/plugin-react": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-2.2.0.tgz", + "integrity": "sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.19.6", + "@babel/plugin-transform-react-jsx": "^7.19.0", + "@babel/plugin-transform-react-jsx-development": "^7.18.6", + "@babel/plugin-transform-react-jsx-self": "^7.18.6", + "@babel/plugin-transform-react-jsx-source": "^7.19.6", + "magic-string": "^0.26.7", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^3.0.0" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001465", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001465.tgz", + "integrity": "sha512-HvjgL3MYAJjceTDCcjRnQGjwUz/5qec9n7JPOzUursUoOTIsYCSDOb1l7RsnZE8mjbxG78zVRCKfrBXyvChBag==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.328", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.328.tgz", + "integrity": "sha512-DE9tTy2PNmy1v55AZAO542ui+MLC2cvINMK4P2LXGsJdput/ThVG9t+QGecPuAZZSgC8XoI+Jh9M1OG9IoNSCw==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", + "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.15.18", + "@esbuild/linux-loong64": "0.15.18", + "esbuild-android-64": "0.15.18", + "esbuild-android-arm64": "0.15.18", + "esbuild-darwin-64": "0.15.18", + "esbuild-darwin-arm64": "0.15.18", + "esbuild-freebsd-64": "0.15.18", + "esbuild-freebsd-arm64": "0.15.18", + "esbuild-linux-32": "0.15.18", + "esbuild-linux-64": "0.15.18", + "esbuild-linux-arm": "0.15.18", + "esbuild-linux-arm64": "0.15.18", + "esbuild-linux-mips64le": "0.15.18", + "esbuild-linux-ppc64le": "0.15.18", + "esbuild-linux-riscv64": "0.15.18", + "esbuild-linux-s390x": "0.15.18", + "esbuild-netbsd-64": "0.15.18", + "esbuild-openbsd-64": "0.15.18", + "esbuild-sunos-64": "0.15.18", + "esbuild-windows-32": "0.15.18", + "esbuild-windows-64": "0.15.18", + "esbuild-windows-arm64": "0.15.18" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", + "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", + "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", + "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", + "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", + "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", + "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", + "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", + "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", + "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", + "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", + "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", + "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", + "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", + "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", + "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", + "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", + "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", + "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", + "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", + "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "dev": true + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/postcss": { + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", + "dev": true + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/vite": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.5.tgz", + "integrity": "sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==", + "dev": true, + "dependencies": { + "esbuild": "^0.15.9", + "postcss": "^8.4.18", + "resolve": "^1.22.1", + "rollup": "^2.79.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } +} diff --git a/pkg/ui/web/package.json b/pkg/ui/web/package.json new file mode 100644 index 00000000..a45d3caa --- /dev/null +++ b/pkg/ui/web/package.json @@ -0,0 +1,60 @@ +{ + "name": "frontend", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "lint": "yarn lint:ts", + "lint:ts": "eslint ./src", + "fix": "yarn fix:ts", + "fix:ts": "eslint ./src --fix", + "graphql:codegen": "graphql-codegen --config codegen.yml" + }, + "engines": { + "node": "18.12.1" + }, + "packageManager": "yarn@3.4.1", + "dependencies": { + "@absinthe/socket": "0.2.1", + "@absinthe/socket-apollo-link": "0.2.1", + "@apollo/client": "3.7.10", + "@emotion/react": "11.10.6", + "@emotion/styled": "11.10.6", + "@pluralsh/design-system": "1.330.1", + "honorable": "0.194.0", + "honorable-theme-default": "0.77.0", + "lodash": "4.17.21", + "phoenix": "1.7.2", + "react": "18.2.0", + "react-dom": "18.2.0", + "react-router-dom": "6.9.0", + "styled-components": "5.3.9" + }, + "devDependencies": { + "@graphql-codegen/add": "4.0.1", + "@graphql-codegen/cli": "3.2.2", + "@graphql-codegen/introspection": "3.0.1", + "@graphql-codegen/typescript": "3.0.2", + "@graphql-codegen/typescript-operations": "3.0.2", + "@graphql-codegen/typescript-react-apollo": "3.3.7", + "@pluralsh/eslint-config-typescript": "2.5.41", + "@types/absinthe__socket": "0.2.3", + "@types/absinthe__socket-apollo-link": "0.2.1", + "@types/phoenix": "1.5.5", + "@types/react": "18.0.28", + "@types/react-dom": "18.0.11", + "@types/styled-components": "5.1.26", + "@typescript-eslint/eslint-plugin": "5.56.0", + "@vitejs/plugin-react": "3.1.0", + "eslint": "8.33.0", + "eslint-plugin-import": "2.27.5", + "eslint-plugin-import-newlines": "1.3.1", + "eslint-plugin-jsx-a11y": "6.7.1", + "eslint-plugin-react": "7.32.2", + "eslint-plugin-react-hooks": "4.6.0", + "typescript": "5.0.2", + "vite": "4.2.1" + } +} diff --git a/pkg/ui/web/package.json.md5 b/pkg/ui/web/package.json.md5 new file mode 100755 index 00000000..18f1a207 --- /dev/null +++ b/pkg/ui/web/package.json.md5 @@ -0,0 +1 @@ +c6011e947047bb5121351cb21621b0c0 \ No newline at end of file diff --git a/pkg/ui/web/public/favicon.ico b/pkg/ui/web/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..e35d6828b49c9ab7efb6b64528c9c80edbbc74c3 GIT binary patch literal 15406 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�(N_ z%kTMx_1l^O*4IIEUu=&^Cw-*N?hhwI_gr~B?;GCxTlDK==5)&D%Jc=`TI*m3mv;i&?S=$i$ z8+19YtFN8wHrKSC92Hxir8eTZ62?-NZ?8jFq4p1WeghrrvF-<1PIjyty(-IP9_!re z7S0&&E2o{CtcVJJ-9|92Lfe?mTsP^Xu9Kq>$bIu*hOuSY#;5Ryh=2!jA$>a`wfmxlB?+o*; zSlrKJqeG+kWDGxd7`p-9wn9(wre(IHLa_JWk4VggB})%!dKYa#i)INWTQcd6i>6Yy zl&>HO2bHQn@2_eSltQv9>Zt#*Pe4FfKtT9g*ENWvwCFfkqrXM8RL1t#WR+&GWOss>Xw5^KF&eO1m-837xR{n?z8pF8$F@0sn#xB@_< zT3L_C(ZBLF*^Ux~G3UF8Xp5t|h@20Dk}Tk=D^J&z5KcJFa}tkj+}t=ivw!ET@JjQn zL>m*yW=S&P?`Nnank~p$FV07^D^F{iwU0AfPqQ^HUfikOcWkTJ^V_Gmr#gM_qX1W%z+nk$|rkZpP%?jdp@*tD8nv}0(qKl>B zPSYO~DeqI0bK9D!MU6iT7Mf-0En=0cQZj@QsAqElVoe3Cwifab9SgaEu>Tyz7&0Pc zjHnjJ;^7*k*sN?h^M8B%8K&7I<~w3$y9L|e?EBTT$3gxQsQ;3@(>8-ANF|jtBvC~& zfqhAP-c+KK2<9X#b&yi=G!M@uz#XaXqa__-51=;G0CY5wq9H~-3rDwI9&-T0+T*6X_t$QNM?lqU1gDpoe!Wdf5GbjzaORy1U zf5Qgj5%x-B!ih6xOnd&4k$qvrPR%*!Iiu7EHe*TR2Ze?tE>uK?L7D@3gglTb!W4^{ zvi|iI=b?r;$%L#a>Z-PXN6Gp+C32UgvTLbGCILDtg}G0fMX8jYN*Z(8 zMYWVp%9=(gsbYo{dxtXEKCPUj5V$rKXT_xgVU@y{Kj;EUFU68rj7%?q#(j!>5cxs6 za#(?zY^+3hd{~qf-{_?EZpE)zvDI9vleAO3I+OjiuBmNlY+Eti+{{+5TpxlhTfayl zgTf-mHjchVsz2_wMhS6{XOrx+M*RK-#>c_c`rjU>Zmo?oik7nk7YziGP?zbtr8rVR z$DJT~&M~Bh+b~(cA*B@P*m=%!Nr!y(neZT1d-_@Mk=|I~d*(AKKk03z2F23eLoVUKZ;bAH3Xz-@m*}ACv1fq5t&1d7erbt1h5hpq9k52b_N$uC)kD7-4Ejl zm<;=pnz%!^41dON|8YDMrU<_jezb|2(i#eurw^2-=Ml_D-&v}?jsaRoXe-hjh>@Mr zrg2{qFxGTeGG=>Kqy~VJS8z07483AV?I-2in(+}p5BrB{h+JcGA0~Kl;lgG+HF~g33Sm}8WDdhTsA5+ILx_qN9p$b z&eq3eqt-cGx)|sqe>JsLAk`Lz)1Ou;Kw75RwOUC2rXtma-rfZP#QoCxH;*qSO{PD| zVKELWN(2sKQF2HaUnsJ`G_YKNwzU!4u;9SmBL@?9Rwk;tweiOb;i71x&u3|B#f3~Q zC`_@X0XZ)5t?A-6S=jP*jr2=%0D-e|OtgM2mIBqKOxD4Unr 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
  • a@^UrtGuCOSAo3|XJVPH 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 iwbx(G?auyhH~yTC3~4X+U*HxDk04u2ZLG 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 literal 0 HcmV?d00001 diff --git a/pkg/ui/web/public/fonts/ABCMonumentGroteskSemi-Mono-Heavy.woff b/pkg/ui/web/public/fonts/ABCMonumentGroteskSemi-Mono-Heavy.woff new file mode 100644 index 0000000000000000000000000000000000000000..883f47a4a8c024cceeab0334790aa1bad5dfed15 GIT binary patch literal 75136 zcmZTtb8siV)2?x~jjMgNZTD)s{nWOvw)v@T+qQMJZJY1?zW=_Nd1kVkXS11|O=gq0 zDTs?JsHiA_fRg_KK>z^(0pscg0RsX3*ZY4>L|mL01mwpc2uK|!2*|sgNAKpQxVVZO z2q;nJKQjLRkeFZ%A|Wa!4g%7#@lRIz2Wxm5xGss`3d$fL3os1wLh=m{^QfKT!T(t_yznDQlK$HI2ss4k3-m6NEv5lcU2ne(_2ne_k2na+R zj7UU*xv8PaKi)rE5cdB8e*&Y){Gall&itSJ^B>4y3?SRgZJgczt*;dX1oEHXAH|ln z!7(<5?*HZkjrzxd`X9i`e}mW>+L->+UHs$ufPld7nkI9G*xNZd|Ffz6$3goC;_p@v z=KmrC1|md9W67nD#QO*W2Y&Kz3}k~Z`hPw_HbF(NzFxlCAf3TS{)sUEV)``pgq2TTq zG1suZtQR)=pWo;pn{e<#|5o9i*`?NFhcAZi`#dqNn@I%=#?2}epDgu^D-jWp1aNhGvOR3uGF3K;=Ehqp}EG*95M*?YQ4TA~?o9id~gS_3D)o`7u z4@T0twr&U5^1AQhxZh$y(WU zsx1-d3u0<^L1?%g^MP_X8`xxw-4U3^oEL+{>vTGQ}2eETB`px zyUUzK?{jP)Oqk;9&?^0T*Sm|$NArDh17@S<9g20jKmLrElV5aJg1Bta@>VoZa%y== z5Sm)5>2-1gyenA4Ld+?edMp3uJMb;(-otY7+x`XY5%&;mpiO)qI6$st>3wdG^HMf| zp=EoqfJx3;3_H!24~j4rmy6i+g0VPYEt?=7hw2Qx+Tj`G94??5*q~s=c);kU#kMp4 z8<>)evN*yq^z!3|d8-54Y-L8eMp$hidy~s>^L?dDiYIQ)9i0xnAvBKhA*hK}8lvlAV#bFj5PYbR&J6y$-hVM7%(}tjV zv*0mdW+b%)OqB?GCr@q)h-UixMQ*=k&>!@ASZMjaIdF&+cJ`LRF0yF}8g?T}xv24{ zAs@B~HKvTP?gZ$#wZMLmb@Ld`%QB&AazW^?mYc@Yl!8SbVal>8G_UNXGrB7IhQF5E zU~So-Kvd_Cn3F1Q&u=GI!kbq!?*^mpxe>*aS+@2Vp4DNFLOl0ne{f!1-k(by2O>Su zEx~LRe*;4L_k|(|OIafmG|*8_bULn@YJxfXA6=21I}A(CE1E55n$tK=+4MhCW(b2=C==~L(|^%8iMyHNngX4HT_jHl@GRkJ#V^jv+A{F$ zVDZKltgL{{O&#sTY@%A%1qJaD%paehZS7dozZ+dcf-$gHf6>T~ zI;Vft+J7VCa;djx(yl+m!Lwdc9gzMi&uQ}NL={}OU-70SU4_=h3g#L8Im2r=l^=Fq z+f;GFWNpp}vk?^?5G@%7XGsswxk0VJ7Ui)fQ=m|Zam$lEQLBss$3v>q9aE=}XZ4(U z@o*(MYcoLB_ zc$oLP!G_ktK!`bmWLzxg&YkzjxlzsMs6>Zj-PMe;4O8qwsQ-38vymxBcD#&Rm)2X+ z>G=G9HCm_9w&(2XYJ7lknPetuN|r^1MAoRWj_go~I2xTFV1iyDNUR>J=uJk^FInJL zKGHo6{znm2beAjwn$|p!d17&N!8WMTAPHyV+@1J0?+BNg4pw_mqTPB31mck;@Wk z<4ze!%v`#w6iJ1c=uCDA(^1;5za55RzUeEa)YDB@*>%vXr^B!Wko;)Tdrkk6Y>+$D zZ#`6qKDjB~#W095&a0o-zFw#V(+B#nRRfv~m zPL_G~$jOPRk!KP24Dm6f8^#Wyhv@5Xh;_nLt@5Qa&$8N@T=O*hI^z0%loN9%m|1Mb zNpY(o$HJ6Lq*6&CM#*Q=m+9N8q$3%*C4*NF-i)%mOyYrL_RM1_jvcdX%Ijn%QtLF8 zdbH!GQ8a;}#Cq7&ZCkl@v}4nn^0dZ?%U#y8?tY9j<%>>mS>nPE@an?RG^%m(?Bk(M zy_%8tL96E_cc)I-8UMbuzBB(V{}_J??9yw2?d^4aLfWvZ7zIjp(i99lOqno5alfej z6N)KK2#2z#1o?~ikjRSe_ox0txSq$XD<0T^nbY{28I4CGKHkBjo*f#Zp8U4x=M{z2 zp7qa`?;*EX>c6~Wcx!R5^&}^1(($|)4^~AQ(v2zO+|&zN3>fwNoE1q3?fmpJl3B4W zW3FY-9Z*vQ^|Y@jQms&grwXw01W;d#-_(<)xTtD^4 zG+(u*$2iE+$wERN?3~^Nequk`1#q*+8^W7GNa>8J>P)dknV^s9OqdVH^=k|>WuK?@ ziax#}1hpyp9PcDZ@fu()K+pxjszy;{}v z$9*ONh)!)e(C%?MNAV-xn6+_YbO2ZxP4Vutj!cY7mA^y)HY@ia36Cf+{r##=X@U-S znPl7I@UHS_enk5)H7)aktN~~HAo&XHOX_k^Z$b2g&iLgAKb zVs-M}DJ?~j2)C=sgW?v7!E1kUBp##fQV#JC$bQ{$n$A15pH?@Y_+KG3kk?(_fKL;q?ckic(koG9#ng&AEx=-I!zCdnIG2SeiK zW|MErYs4REz(WIk#S2uiF9PN%U({@hlbT-{LJVjE{0WE(XtfmI$kPkuJ<9O-Q3jOU!;65P($ zKG3eT>9L8iNx#XriPVnOuJ3H;eC=`w$OHy!5;TMWqNlXdT^P@emKG{=R*4%>0LD`k z8Ib969Fa^i>@pnM=FOAVRhrGKm<=QiT>x?bh4yu_&cDB7rsXq;jE zeZ+mmeT)6n;hN~@sF`Rxj}VTV6mNoVP`jCyJ)Ya?PCS9I=L5={?hh6I2!$QxSC0== zUxb_qyM4D?@(-ymFu$yx0l%4^o$b5DjmeGqjp2>0&Zf2k4>u={`@AFL$&xha3<+RK z+6vSG!$PzLs7~r`>DCq1S|;C61-$-*Wv5i>jxlOslqKTszMR&F(26;D%Z*H+(XL?~-z%G>g|_Uir_1yI~pxsgyh zZz1oHgQDUu7P&QkvcHAnay&2bxY(FU%-eII-d-UGM<5|fmwiF=m_ToL`wWGoK>wQe z^p0}&`~i7j0aexL0TC#~&DGodYh?gQh<1vFRjS9=r~qxzEAr_Y=lNKgkERmrVSWMe zPf>(fs0Xdmz}$pOkgJql{;#hH)C#6HvbT3$6g>9-`zu7H0Q~dQNcd(uw{^C*H~04= zx1=$L3V5K(Ti%&V+^|+D6qKru#q7?kMPNm^e1-VmShuTke_Ih%oX|4$sxdk6&yezc zc;yu|`icgZo3W>qR+^{lIRsbm*qwpcSQdbO2cx>7k78()Z z5f%}a=KZit5x%lqPvo#!s;wT)A@(D;v=3p0o`fnAT{A8L1~NJ}F6I%IHmE9zE?b-1 zC9hTyYKfjiLE-+*Hn!^Y?U_r|uwy6Ga4GLd#WE999*XjQ@HC)>(D% zvkz`=*S~@s7|yPXf@TP%(OJ5gDzoZ7T@BhjrLzvo#viBwsDIBnA9=#hTyzY~f6M;1 zHn%n+52)dEZ*`ab-9b^IZtZxnIHm}m#kQ00-@TiMG9Cp5nLAc4x5;hMD+R90I;#r4 z$+}Ys8XeN`6wnX|)i}dxmE*8f%4wyN$wo7ci(wWW(I8$_6Di>>TNu%9L2v8Bwo~o@ z^~2u&q#QIkD6qhFxu^julXX@M9Al<2TQ~DRPq-)7SZHWKY)o|g5|Ud*nlRWb+C&M8qGl5i&6dN~}Y3b;`@7X`{U_e_B^wZtQzn zXC;$=_%aUvVr1?8MaN3Q$x6b?z=h67IQ=_KAN@(;M?}msTx9Q}oWG$^T^$WG8^tIR zg7VNONpT2d*#%A5c!}^znH41hr+M#xVJP%xz&-hwJGj50_YUSb=$Ik@%Vtk?L!LD>)ebh5du-h5)t(SqLXiO#=z{z_f_@V4esM2^a79~!zgEX- zGywdHx#{%v1+9wNX^d<|n`(bI#3$I{9{#*>ayn)T_ed#K57NmiMzs%yeV0ZG}oQ58WiWSq?W zP(-D~)nHUpd9c!c7=x-H)-ecj{c4A}CA!J%nJq9ys=*G)$T<+yZ{Z58*y^yiQo*t+ z$m*ap5=3DRGB}Z77+j?EmcxujIIwTOTr-gF~!LI8|YK=gO!1k7_~~zW}dN#TvnNY5AOM-|E6gFTAq zqC>hm_F}$O&Cp^HMy1~z<&zn%p_1;ZPR^Z5;RSF%?$x=em2=r4-@aRfFl45nQl!rB$CRt`Oof|ig4xFLVx=dxXwc1;{{6> zNU4UOM|k8OsRbf3!7`zgvr)x>kUG@g(eXn)G71WTlQPw)Y$PWzQC-36+L()C^mVJI zd0`yoYvBK&mko!)i1yK4L{i;z=o>rJkq90dv5e3US79H9q#a9GQj1n)BaK3egp2+m zv*fwhS@wzyjhv1gktgZ#8@$T*4^5${m)uBsZ8@NEGlERW=KG}hXrOf`VnZmS2-iJY z!l6&PIImglXL7V^SNZ98$?kSmqk2V-pZD{ev0UZfgpZeh!FA|kQzDyk`#As7*S+D1 zS58)eE6TgQy}cYExKS2jDt`)AHMG>$ku>qH)ECWN(sL=XKrRl%rB#(OF0xWo8pLgt zacQBMD3_#dqSQj8*o`QVIAao07BObiuciqnaV0lUBTgS4qNc|PLsdwE*NYyY31I5| zRoo9NA&(SM+Btw<30`dcNm7uYnsQ0N!{u7cyz4&V@w>(QaaUo_>mKA z7V#NuY*MuTG!`)9J`Lt3Y&7GcMF78XB~E{!o;WIE!&w-6SV~m&G4A zDr?jU9GgTR4%HofVfKv@U`d8Gxl1zuFencq18^I%KLf_h=7Dmu>>XjclanT}XcL2s z_p9WSjuhczrtFN`X*iP%0BGgO3qx1t4&czF-Vt#_?CK1@K@4MP+JG!<;t;;6G|+g` z;fTyBfZ8C1`8aK166c7{DSOOti8&Sc3n(+GdPIBlqamPec*CTcg(Iy7Xb04uv^l~9 z@Z1wP<+KfKm=ZERr$tX%9zh?W+^4-}d-Piavg>75O)nf>Av+RuhpGX~wN|Sx7oO~a zQzi{72-fTw14s3EtGupg9l*_gThsehn+wo?%V> z^2+%I!jsh#g;!+Pl<$D=gzw0f;WhI_8rucm6aV`kpHY4zqK54Tfm(%?k_(n6i6iv; zIG^dS!EOUTfS;kCseXM=UCqk!1>Td}6a72%d(3B|&kPuCgXx7nohd`@;RW=Q-4oFf z$$b>;9(K$jr~C-e!E?G7hbx=q7-Bl0;lPr~ViIf88i2?Wt2sJpglSJP9Z@mmGpy-E zq8^&aiC4{_9$PWPwu9>!-8#diO_88E_+aWzkqv8#3WT7D2nXz?nNS2b>|X#+WwFtE z*^bif<=Ox`PSudh306Z*M{D*rZLT_A)!@tV=Yw3emz)ySEXRW`yX}sfoMzL(V+ZX{ ze686!zp6QwL!A!a9BnIU*Hc}L-yJ?V-KGQ2XApLv90ObXHjr(pIHK^Tqjz|LHXD-D zk$6MVN5l5UZ4MjmwqP9b8G{~9iEY%GNXHYe4qrMTSfh{*eH$taL2!q~4hwCJ44IKT zByCg->5;oeZJZRD;X8Y65Df7$dkJmmwos|#QwQ^{nmXJZ85sjpher`vOPRXY4F z(d*L~_Q5(RErGO0u8tk8n;V3-zgl9~X9#u>9Yb3ObYR_rc*Y6#W1J{km9EI#B6y~< zcBdVWTkkg@uSlNB-NN4^Iwo~@s~wkH&o>aRtga~BB0Hvh27D%bMmBe^9G_d?H^8rc zK8JZt`pkUx^6h3j&a@J>9d9UXz+IVLVO^XIr`aOw+gg9?7Pv~5loGG%BtDCP_vYO-<|ISHq zn&?6i!Q4y%P#9I3ok1zOD}6Ji!ZA!%P;FK3oR=y zOC9GrExIgmowlE}pS7Q6x-hg~wG*~yx9hcUwexeU>*{A^ROd|V9_O9c;N{|#;uYdW zp^BEQ;p!TIlwa##_%gr?T<77{z%AG;>CSgCv84OhE=^fCt*ZL4_;hzqG7j0Vo3mCQ z(tA+yr{@eD-*rq~PR;^6xRN1|Z%VYXp%&}VCUYC&mE*YT=Pbg4;K z^~mJ_wSZu5TbFPAj|$7* zMSZJKNO;^F@OG`WhH3*{(Z%fPbLKt;GCAwM-M9BX&5t(Ft8eR9O+J8Qqhr(OEFax> zyl5|WM9a>~+rJci=|OBKgwG5A<-6=<;;H3T`&QH9V@9{D&#!jiM&{;G z`=(2vuj{AyQ^vw|rx)LI_SM%F*HtVpJmDr^vB$-^-QOOs?=EmpL>PiNzMXadBXBQ- zO!hDWXOCJ=_tBlIz-jPs5r z8>3UCem9nf7+0#yIqbu9aZts}PsdlvoUgL&aHXxC(H z(m$kW+MYkNx?GcOgI> z&Ic2~;QbbSjs+Pxi8Vyu-qt#>_h`bo+Ee(7`b{pAnndT()VMm2BBPv=tqss(H(6~v zluM1(?{*4)jp)UoRCm?)uvZ;X4X((pv29*6d(2}?vHDo%)y1oQ8fxc1U#j-1^L=^S z#A#x|G?|?ooty%;G{9?Gv9H)sP1~kt0gaRQa~fF9WNbe-{M)$N{A{i39bUyp@zPT> z-AosDr*xgEuU>&w@-%a3(ePSzK-vYm)mxJ^`AbV`m-$tI(-iTjR9Sd9B{r2CO^(GU8x?Z zGF7m3TTAWDc5}pZBP8d_@>_W5+#a@f8v-vzHys>DrU+&tSND#F=p$+_E*kDvs{K2v zud>@pp0X$T{4TO;TTJvHe0#v7ktVr*JMX;sTS5Es3L^Qs)_(WhLW>{)2zmW(o<*7v zxd?IHs4iwNM9vX0@VPxt?((2ReR(zx>}PjB1_V+XsbJ}(Xjhf*J|s6u8)7>-x!=qe z6&+cRR|@w(VCxp!os}%~P9qa9<%csny=m^8dlo1aQnSjOiVty8S+dO%rs)KnUU>ao z>-idue+lZtfN^BW+Klr~DEQp43hTFt2IM+=;hHci`k~o~7^HRb&*9<*P!fO|4_@!0 zPbRX9;QB+HNx{gih%P+rA=nq)lVOXG%o>U>2(}R)%yMk6mpp+ z3t#dQeW+`sZTzX7dp=Y6<1^+!xQpKe{G^-I^Y+K5E%1RyD(`42e9M`g(ok7=^<=P9 z^xQiwU;w8BiSCC1?JTgPvJmK~U%HLCxw5yXmGg;CXaJAIrt!(_z-bhyugqBGEd70VtGg&llwlJu6 zwG(!2+LNCdl>H;=20w(aWecX?jraq;pMVjIqd1UWq zrHjy8CL{~&uPgb~^%SH8->w@3##}uAAcAw5 z6g=tA$o%->3of{M7`yg_9|&5M$mZm+U^3_MH@Q$JUxb-M)pxMwIwAmCBEZEvpc6cIBt#H zcFYO7(lAodS$L9e5(D63R)FSyVy3V(o=$RBL%b^mrIp7C8;^{hr{LL7tYNe%uKEfR ziDX-%^kobBkE=w6new*MS%t#^;aa6~jG*fVkj-o;vRQ{4qG@TP0owwy8r%hm1QU~m zm_KC%B{Ule8d5rno7~aZb1xTAmi2TkJ`eVKbG}#dIK=v-%?JBg%_|aDp;23fiOfac zbHkg8sv9|MAiByb=0pify}*2J6WBETf3ZoJz7X121}v%|+wn5drDLNo|BU8v2^Bo) zlUTG^S_^$vk04`OoypK)20m zt#uZ0wwUmQJ@;_Q3GU@7hC)+S{*#z(SRVH8_6u zfuGgPtq=JGTEvB!@?AQ6&`;c*EC-=!7evWQk3TGmz9op?@a=+LOtS+v(irmj|DI=>q3H>_h&@(>|;#I zEaDY+q|`$}DM$rNe171U7nDC?*7x>n@TIunyUHc=z+H=ME?{cB7F$Eh@4W{->03j@ zb@33dvKdMxJ>j#Eyo)zJZoU?9vrrBz*^FDU5V4Vi^?-FGbT-^&xmm!N@IcjJnZ<0p z1>tsNAeacuF=PwU>GQCzC>1HW!!Mxbz%Y)5UhFGNu5{~@JOcw)Oodi5yFuR`&#RY5 z)z4maJi&fV`R{ebg{CP(Ro(jCYp$}>kw5S5aYgSBxJ0f#mf|IMSN;L@K_m= z&+xb00AF#v#*;}&Nuc{96Da~nMc80@sW$c!pPDQttxX~j0W*Uvk4rxLn3>|m)vb(43<&Kk|GUIka;c;^mZY}B~E!Q9B9cf%H+%q zR&~EDeGFt2vizBbNrNK^UfZ$-x;4ibf*87W$|&`rglQPlxFz{yyXM}QhLy9)?_q-V zib7w%(9%em*Cn-(eQ)7J*h%^b_wSqQhL=m0eK<}K6&-h}8Xdnrv+B^%YJ?28Tcfgy9F!h#S19h?ZuBHA?_*!r-7RpO-Ax`!a)@={ zRj!vgjIIIugMoS~*V%acdLw#i!G?+@c^X5W$e)zoSZw24Z|JgpFT2qIP8>N#yzw~? z-Sy^g&exbw*F{^7riP*s0r!5K2gMyQ7gu3*p1YNI=V$Ni7)ZMdpJtP<*`LZsvGq<8 zuHzkPLK7w8x0_}29^fG_GXw@^o(Vq?9kEUZk3?XGD^$vw4B8cP19gz_SCwvp!x>ef zIjo7HD&xx}VT#0GGK*K{I+3!WZjzs+O5lr3zANPnwTr8sC_ckSE^g-*_DO^RF_a$~ zffjH_6)%=}wS$?D%)_*=UK#8G7JTExaDO+Txa(7UC7`+3-Fwj17P3~J*qrHRhNG4q z*fF@3A|ZMOK{s;~AJyR10XK23{tSB#?%<-9v|$qKutw5eLb63j2*v;2o6#PE5W+7M zZ$N(qKQZH3-{oiYmP{tT%_1zqvHvCt=C{!R${T+OZDr2t@W2!ol~MWMhg&oK5Ud$o zF~+7Z$@B`ImX$B)K4cmWcM_&lNbkCCx1oL{ur1{CvxjoiUQqXdHO&scFodr))wMYx zfp3G$i(?>OjGU%m%!r|cD1oa%wtthEjJ|&;#(?mgSVv`B-Do+bN;8nu>&JlkV{H#W zGEC7&^l?E3fcs%f?dBgx{<^0{z^T^URF~WTHLp9HrSr$=vwUw-0%v|vvbF2YjB8%ezAUrOF9u;hk_IZNNE#80GmYyEKZPz^Qnuz|)yNB1!6g)qtY5J()rmx0{5VB96Fqx)kw!Uqeb!S-`Um4K_oy765~$&7g|x@fT(8RpGG3F*T6*4K7Uj>hZ24no-8?$eUr0+C4Er#cdC6^pGUxl8U}iUY z**lcuciXdKXLMoLnGlLsBuVGQieRZ3=8U?K3vDVdI@w?dRZhe((N;fV7N9?mofhHU zO8wB*R#9ZXh6WmG+yC$|aD4$y1XlGsU*X#%pF)0J_65#he!`!K)6Xbl31`)w*^@Rh z^`RP*aE5fo@GwCS_`3;Sz{qav|2rz(=sm_4a>+g|ql$7mgal-pBAAqH1Gngg)rhh- z28uHb+EagQ9+HM%pxgwaNTa(0X}I8uD?HL#krFt_v}zcv7_Q<)7^Osg(xi1x`MR)^ z57LjA?Px3qH~1_R66|iO?PKLh85I>_1x;Ax-(SwdFVgEtxnKSci!o*`p_>{41FI+H zVJ#I+yc5R=Fws7v_7(}s)?e$c&EfqOAGi>5{Y1dpU;=za6rZ*xg?+<+I%(Moio^T) zYYG0y`}$qY;ZueZgnqL;25!?1S4;xNP!FoJLh_22^)X!xU3}>&(Az=kx6EQLbwk0WO?eF$e}cva8&V>TsuQ^4W-p2` z%VA=j_*Gsq%Povo+Q<*{gC5+*gs~{!ic1+2*MK;0v-TcaIO~+F%Yu~vs+lu^H7ipjRLVd*Tij-Dmo=qlnAIEa;%^_u zt5q3gW9}Ekqy=1;g(eNQc6UevvB47e51Ei%;y#!&P(q_RZ%jRDK1c`sUqYEn+Q{(5?!;O?l?mt z%Tcdr3JM(&tKxy7eu7A{?CqaY=WE4DG6`wSR^oRboO@z>u?biQi{+bm>}Dp%m17cO z)3>CTqc?4RW3ZhTiZq^QV6}#Bw3cpss%P4P$pmQ`KWW!zqg@1-c~F%bQ5c0~lg|wa zaU4vPzJ5nlA#|`7%e(F=uI+~cW_zE0aMjtYQ|rm%SfeW&l9gAa<|(|AT9{jo$?zz( z8_ht`fg~;;A5}6CA4^qpoC*$4!bykAWW=*_AXb4Zn?yeM@`AxNBR8z@Gip(qjSdt^ zQEtHDhq0Uzu~>|^jxm8FU#1J>F20vuN1qTeZX~E%6kNgd}_~{Bc`Ow^~rRC3#=F@^OY)`;|*bbLflR(ndf5Z zi&ov}UPY2x@3SFR*yb!Xe%T!!i7R71f==Z0f;D%xj64*=6z^Oh_Sp-ROAEWs_SohHo91+cE!SU5X5y62D#dH&?xck>50`<$~U<6rv_#;ws!Xz<*=OsJB49 z40$D{h}wkTi!5T5M$JL!ubF^fapp*?je6{>uR>ZBfSX=A;T_q{*q?RKX zsbS2GH%K)}Ib=p~``H&@!B*czhf+*#RCQdI_+8tl;0rk(8GZs<2NAfP3`xBx-znTc zO8y62BGE=6w|j%AK`v^>m~lvKh6RGOFp?&iTQfZEd+M@W_%nn24NBICKmhWwKl^XT?#ems4j1K1OWSqmkHcdz1iyI=*21@*zRG zh~w5=U^8?;Wu4W3iXXn;Ae4tWk#Rs}L4|w4DAegQLZyepkjAV$CmfN7sQu?(JvJ0j zT_{Z&H1u2IPLwC#2h9K^-3bMIHk<6c-~>iI_oqjmk(+48mw0oZKO%*3|GI)WP2=^IAh*P`v|!DF@}o09@A+WnP)O+o=NimSxJqgS^W-*V zmM}I$SS0Dbfws^@=GGy*8l;9dfWM1nM#)*WF@3HgfCF)E~# z)@j0ubfsPE+ElwOM=opw!{%;mC|~-uOvM=6oukB>DjI*2wm2p&m@O;J&cGGv;+M}K zxCGXxj#E|k={*?)Fh4sj3T(MAVhXU>91o&HHl-axiyhD;tca+BAP}o3qlgyc!=?;# zuoY*r;8l~9&b@;1Bhxw_RcHL|)*?izCH^^Tau)6H*}PpjcWV417V;2jfpv7fLut(R z=eEDi8wbjgHejv*vOU&twv%|yQ*ITV3B0?071H>@XbeIKUqBIAh62_oq{Tp59U)Ga za(ij4<-ip6k$i#ou|XLiE2EI!MBZdS4duJ$fh)-WK|N$k*EPj3}``lPMAunk?8n z;iZ;jtkTIM#v-ftGQ68E;a>n*z{2E@6;{PJjo*j@p;yX3Gx3iltbP zy4V=S`N%JN>soia)^!ZQqGZ-E_W>YNw$2ZStgav1QU)K`Z}mkUfKjJ4&L)Q%2ETdC z)(w%aCC_#jx36XFsk)|H?Ie_kH-w(57dXt3CP1-HzpO0k=#}H_KsI@elEK%3n-|_clgttD`@fgklL#PoK2sTXBY3E(U2^>fKUOY+){!?S>m~n~R;&z+1j92kmYM zNk3$nh>d)%*s_NmFscwQBMhlU_yi*L7(6tc0Bn1I=cJ{T!kk^iE% zD61?b>r%VjHZMTCd9|aDPMhu;30uN#dZvyF9!XB8KPPvWg`OJ`$5zSy)u%j|gDZzu z%8}M39rq2<<-+egvNuYw?F@;w7Df9ogmd|mUnbQrm@&Nb$}f%mt$Ck12jKvQdM!yg zO6e<}OY|-<)%|XkLtlUh9+AUbS*)PFJsvzo-q+@a~0Rj$?f{q)YSY!c)eT z`50{+6cr%5f!mkq|Bs>ds&3EpZTgjs>KKo;UAUl4 zTbS2jR6j;o@1eVO)WnncG@Lq^3A+uH43L!7a#X@4YG)$0bL6+frSpTVT1nh-gwka_HF&cas(M!-z8KrgxCnV~sk`g`6oj@@lT;2SZz)7JJoGu0aNIw58|nOn z`pkqKEAtN`N>y=xehSe&zCetxELBy05x9G>cox_Fy+jfWy2%vDv1t$P#G|a<`riAf zo%RA={I#czte8o`B=yvb&WlcP$Lc&Pqm(kOlODp(q?@~^NiEALm!eMj?+)1jp^T~F zD)~u%>HsAR*^ilR4JN=&`NMTzfWNP)^n8a)vu7PDP#Pq`ubFF)+ z?~YlIdt)A2221bj0>i#$b)>f&Tn#$%V5X32H(9gMAcEWgfsnW!8FtDgjru7mZrzsZ z*ftH1qvX*-okm!FZ5Bp)1BdC=n)CCZKi|R6 zSC1F5a>~Wb)<^yMDCl>S&j2(oZMOvPgk*6NDann=a6!ek>t0l>Jbv zt}=lP)fpfOv_X?PtJl=Dz{9km;Bn`a9r?Fs&Z_Int%>n4?KG0w08C#$DM$PEI+gTz z!>9*;Vu!5uQw3U-c%xNnrXf_xnQl#uyBT=RfL*GEayCLekd4DkfHdhd`m!#&$Bn(} z@Od~_GohOx_EtOkP~oW~lSfV@2{D?lqpdbM`q{rNpzAzv)jud_Y$La*=Nt2S&Zi+~ z(}!twLU|*YP*4`F$jj!oc!2#p#G4#twACi&#mr%MU{N-=2+h#*$3dWOIT!Zr4+ZzA z{{*VWb~hZi!6u;+{PAbIa?BmaCgX^gA-jj`90pIl+iSCnW(5ngnyn~Nt1UNoQyE;r zg7R@;(UiiVWYyZ8?hS9=NZ;M$!#zD#({hMX-!k&$$odQz6U;8WstXG{~x<(R>>hptC$df9f@PpgTe z$%od~#w1DY+py1v7^vG)yZAgRJ2laVD4cj#MKXth`2k)Gv$Irg9c*y?-ECd|+tCq0Jcacpvh{Q!dX=8t&9G*Y$_`NAq-`nBE#> zsx^In`J|bBF{fb8Z|fg^XBrci&1|k1+hgpekz^;5+zNrXzRL-Lo#5O>uhjPdN-81# zB!~-a8R11_JTx|17@7GT_z9<_$}!T;kJr$u?}24T5Rr@sn2nejUw9 z&NdbiRSYv?lo^<5OCi@CthwPhsfT*B`;KxjVKS-P*=Vu%M=rx1n}sdu}K*9Eiw zAEcbK{89{8;U;FI8pwc`J4PBMaWsqF5k3d`WZ%YY?y5ydrJ-m0c55M1SI9CVOv%}4 zsuZ7}D%W0AbfwxvwPH;{*Ih}Uu?oD|xn}~Ok%)U$(qLHTV!H5qaAyi7lIXAAt}PqgSe8;ajZVpz z2z!Zkd0BlAv_b@B(ZR(Sob_(K5}Ud0fo~!~+vDMlqNOYIFU283su#9lEeEz#u>|I_ zcpP?%QDuoj-tD>lX$-$G1|$C^0!?$l$|iMDbc|r#-xV~jFx0XQ%y`P3KdG<+-lL^! z1g|D7c`G(;H)n~P=(noQ==$UIjnuw>lsiX-{trDs!oQ+H80+k59G$0@utAt%T7x|# zKn&)IO=yVSkL3kYVpRCd01`;T)+ZLk?3}0Wgsi@@b>~KPCu9#Pn6)vA-#Tse5aLey z&l?gG!dHELUkw>m@^DM;T|-9eDjd##Wwep-MPz@tQqNuP|6#4P;$I`%hZBx82Y~Zg zaB))x2al2PN=+HXx8XJ333?$ zzS5iCSME`5K}VoSxlC6UCan_6gXmY%Y5~5mSyQz+at9})a(_e~j3OR^1@h3sgXC<@!!K1x^3k$9sc=`NT`(Sh4RE9eWYpC_`%)y+CT%;;^vPTj0?EPwzA zq}}pq1G^s2=@f0d&R4o>IDT%CbI);e#wgo$ne$NBFo}kKAVCYTvEC0O|6w|%Gyky8 z=?uLDjssyRZ39Eaql`R6wvxnT=2GsNW8@JJ`i{407uu&|FWShqd=ZS4ml{uODLipx zbM%x6(_<#v;wx!X%Es&@{nC+`L8C(=#@mU*NqTDGQJ)Hd!!Z&_fHFtZbzm=_QEqy#+C$ zk02hc*h=}okvfi~)(Yp!E&lHW&VY5lTmK=kmx1^4ZE2k#?qEtz>tPAqr;s|3jX?CjY&tc zCF%bmTX_A^^-8*vzPoqNtAgf{bhs=Zld=S8YqmiUi(F9u36;4AHPD2$=iz_*W zKB>S{9xUGf@dPZW0D^Tk^4J=>{Rus3Pw0ih=pu%@mW`3eNZEoo-8DzR+gz;cPti2m zK-wsXJ6&lhttaIPrbX4cL`ziY-QagiO(hzDw=`!|LWD0FPErq(pULSJ`!?jQ&(2x3 zm6VbV!K=M^7`k1b2nOee)REAEq!ned>*-c0Ul9M=R{2uZmeMt3 z1YL`Aic&GVfGV?FJW$&H$$p_K#||{~qvv0%tSUV)vDkvV7GPq5yuP8eKk9c8dEAYf zUV+7YN5@N&@iJhdtxDq*fZCyERr zGmev=$f*^3vNx~K&RtVLz9Ko^q$3$OKX67IU%i=hqlW3%+*jIs3f8J-f2t78{#21- z@jDdjhCCEfSYc4saMFv6pBC%Mi|1YM7{zm^YHU2AgR9zmk{#r)rDEY)`S;aZP@n8) zqpoSZ_*6g5-&OR)Xs@_AOy)ac>N1*iK=zwqV*dbVa0z84+J~Aor`>5U(6z##)B}v~ zQ0iT&{!iM=?v%1om8xu1#gODxv$AGvoVSl$B%Z5HOy)Xv5cyb)u5-m96|z%#*(Qdc2-hiOmuqSVx@u-FYd%g zgUTODyZ${+#Zw|#s@J?EuMT!^^(v*oQ5`)XM*LS(ry86(V-I9 zl&4Y~BiyEwvB|U{6$Ch`?p}L?GfdXWPvlT(;I*-1^}buiW)3H`4?(dJ+MNu{8MVWQ zpE&W_;FBlyhhxsnysVr;1;aZ6-N@CX^PyOzU!grD^3|$+*~%W@s%H>C{;R_<-# z2(<03y~ub^)ro;Qw9wPG<@J>9t{Qu^>amM|Z_)l)bBh+TsMp`tM)8mTd52cnpB2mg z_Z`~G4cbZ`?<<8oQ&Gq>RqmO#FBcUSYgF)Gf{8^-d!Yl@zl;*r4==!EgzkSEYgFjf zar-=&D#NxT+-_c(2{6#1Y^3t?ZG0KCl<#Song@KGy&S2`UTS>)#BZ&kp}Mm15`Hb4 zBkdK$cZ-tJlA|%Hd$~`5ryu5gl95ZlwuJ`&Nq7nwxF+A1_6wL#9T4#Lpa6^LTr3yb zAET{pF}HFdL(+UAr$ok1Chj~8PuDNLv^DzxDIi%3)~2mZBS|EICv$0?IK5b`a37*@ zAF6P_vx<8f`VOS35m?K!FqE0YaPeJP*A|i}&sjL@i&-R*q^%>lq_A-7-p%|{LZ_5@ z(p;kC(hxv)Ktnx-T2HbA6X@DRKPG;%;;@F7PQOOBk*&*eSMudX`L#M^{MrjJ_Ea*G z|D6A!JwU*mX9Om9@@@R~p7c+Ae7O;IJ#Ewc0XWyT6w{C^1IF4Id9Xm2Hl{M|4% z-dpAM~23Tw+3)s&AWZzYi}sXobj4qvG}%qwqDUn@6xNvNYa#{Zn`RhCgI&+p3hK6Sd6 zH{D6YI=teXm-{7x6=+@SEbzi=)1A74>mg{;`;NHX6<*4tr08Ql`JOnOT0NUnXXj!KcW{m3uQct;^0{y@j08(xx%yhu6D_KTeumQG4n?A@?wU5=9ZohP}Ia0p}P1trJL zsyNP8b8!#7x4O8;!3*)7yr68UbWD)lJ}gxi^yDvUChZrnD<orMho>^I8dj&6+PJ!`sQJxPXe{`}sc0yw-WI*hsDdW6j1`wC(bA{g%ewiUO zE@m3>A;V5hyGFKGxX=^xf5!@Nw(7p)$;|a+BiX(s|4hO4?IkC2ZmEY5=S+#MID~jz zJ%sos{_ccR{3pbyn68GlKKzqQ)!TUYebH|Q|sWaH22 z9)kFbYxT*-U+f3`hqYa*Ue;tSAzfxQ1x-n>)X;?VeF~>3IVC~PKvf=x|v zKgH(rbof@&T+OBDvw6b5I0f(s}s{G;u*JxU-u=R_=*2@}fy;Rwv z_pe_B+av$^*~ETubb8XIg0%?O%HK{z+9N|g_Q=o_S7bfoKTggYz(Gq_LXc zLs+_Y>qRDn#E#^}rNIAc6xY6OYZRBBGKz$H8N}6N zMUtAyO<7#IJS;(7C<3s#D2?67R0T3yL9Gd~>b3U|B9t7r%`G+Di7$rHaUYS>Vw^gfJ1|EpKVF>0%rQ!dS-Gg1hUJ}adjEnktN#S4 zCiy$6&rrF(12fP^{6a35E_;MyG>9+IRopo({MK9hRz(m}zGr;_ypdyH>aFDM|1d|> z88JltaS<(}?e3P_8^owyw4FhG0)q|zE($P8%zLXBpUqjAjxi#E%u-YQg01^D^J2&| zbu;W+19GT+uj(B45lrBu>Z9Cfj9UDQVXDq_$1&QW?il97G_yxw(_OYSV9BPehuxx! z4Pp}0Sy>r-;|k;d!xfe)^O37JA5|WFMd?v3X(h5Na;B4%L>QW=4)8GzmBcqS#aglS z_fTG@$WD$=b-xd^K8+t)sQt$T%1S`Df1Pqi^3`Y7gKAfaC%CpIo={itr_PcXYOft+4|S#E z4b->%g(O=V#lRJGqd^?KLX}x(GL(fU9CAJ*OjEUIK_7zT%#IXmj8 z9FME6%a}3e95G`;RLnU85+&zRG7S=xoJB;UIblv1*PL@&^P05|+j#F+eTL|I@B4n= z|35y$aOQMXb#+yDRd-c&nNqpX&3B2B3vr5cisC|OTY1r%UBN}+9JIW85E^O3Y-L4) znQnS2&oblRih(#8ozNX4wJN(S{4B|=Mt7@X@yoYM2VjpZ;e>8$m-$6>GOf?z@6YPi zh5PKd$Z!wLOoJXhpYnf~N;3Ih^3%YFurxNg@%LK7Nflp)tHHVoP`ZGA!~I|$#17XO!key}Ah?q5#z%A$oZTx6C?i_G5$wLA^(R{4=Q#7h3881+3==&Gv911LX` zo+g7SfBzy(q77jj`3oA#2jYY}9--)HJ1xOtW}v%7+22xP9s1ID1^&x1v;?mx%9l8V zT+u{=&!le}9Rod)JMQJ_2K*=V!yd8je<@L^qmfWZxrnPEgZ~hE&~DHT-`*?XKr3~( zI9lMv$5EH}kS828qCF@sdfP86_%CFI)MGVjK@+%mj=0@GA^nvFLN|hG`=DdL2mEfh z$wnldHo0Clx;t$m)`BJ|f<^m8Q-LqMC^<*V(K)&?UU@I-!cLuU)KRI9MXKK6lC)Mz zBz(YfEEqYWJ!A^F_?Y9$q+Wz*KfyS(33TZc&tP&zM#ZyF0!)T+xD=~%SpS~8fu)=N zXEqS0p;!QU2|YrO z5H20WsbTbN0%K?zwrp|@e@rl$Mrh|7M@fes?2)KXJMjgKQW#aNm z@0hBxPj##Mv=`0wQ>yj!oY;2pu6$z4*C zzBPZxmaLQHAy?XqWn{*duzoFI$HZ^2eGq?NgO{wdt1rR z(o*xXwfI)9;znNf7NZQbUE;M#-VttOIY;j)?R@>5jQoi3 z6S^4|4u-3J*q)PUC*Bl5O|Me55?gdHdtSBGUjbj|xl{yH+=DVSIQ}B%4@aWe&``m@ zMZ@FXc2&st=*n=A3S_$7&Wb~edvH(O7h6{EbuQO*U6oAr!xwZvsuc{F_N=5#*9`FP@ALO6Xk)k-Q89YZnoQ&D;n6NSo_ZV(fp$v zU#O)%w5brjDJmm2IW{R}eHQxeNda*_ao&-x;Wo?{rI)Cwu*S`2jSHDWytWdkMNUQS zNX(2)PKwDO`$^&=(wZYvgO>U_bJf$3aaF64iChLdadk7RT-`wS-I66H|J@6h;OdFV zfA>*UPnx=g(_uy4R1%~}Q=ubWAn+-ZReZr$C7(A1&F!fwKFLC*K36fpRZoUaV)Nqa zax%QN6&caqCWzTv+nar=#C~f3>X9So`cBmF-}REq9giItp6el1ul2sNC>NybqaG6Wr=Eq1e`Z4SzAs?#o@sFgt-+|eH5pa0^)V5xv;PHy z{x?}=CFP0Us97~~z2AyGr8qAB%NNwC8cE-~X`d|||Mo0?cTT1DmD19_9Kpe;%1lGg zSo}rW1?Ru8^V9RF)_>sV3)K-aYp^=X=VD#mUd#>jd9!GlfEZq1ti+((cd3r!IlR)@ zemBte%cCa+MDbcmT|356b9Z?HdL^nwfY$o&I4N%CjbUXXQ^oMuVx12|Z)@#jhIA7?{POOCfQdFOnHCA!a9 z;yj5|%W{vVT|hYux@x(Z=5l_Qwq_g!3!>1lAPR>#4#{8vnY*;BqJK+aVc zlpiE>lVnj0py!!{e5sO<8p3f4?!#>+5ikF%L~zwaqJVnd*5v}Qx&wx+?m$janS*sJHESd;z=ZD|IuMb#sP> z_YSJaEZBwiOlRuF@ReMVGOd|0KE+qUw}g2X&2Y__LR%ZtChzG|1u@$x{KaRh?h zQXQ|4Cu6XE1ztObx6oyu#NH!$7fa@BVC3*Q}?7sCZZ8#(Xo80Zq>O1MR? z>$ho;Yt57uB^TIMtFG!og6{aF9mN?2I}Qu*Yl#tx%52bmXD9rXj zasASc`5wz+F)L60A6DC7Vi5p!piX7@K$ZzavdyMklUylWwJNeTLW=&~W>OJ1v&;n4 zWl9zhkllO+{@HxE5}(bijQPBWmLT?F=uMb(bEp*c8Ha`=vhxMA1wX-Hv>vNd^%CDl zYP!CFhVR-{1tWCU?NNE?wJWpvN%TQEvdfYUS&j~o-GF!HRwUbe;uZXBv?6cR+`f8) zoVyc>W@U9M-byBA^?-^ZIFDxKB^AFr)J=B)Uvyb@ntl^_J0zzNsj)?3?5b!fx%}h` zBgN+KgZmCh%Qtvk>Ly&#r2vd%DF7Ol17LL7pd$2tW3s2CqnF1j4PP4Z{d^62&a;R> zBxlCWJ9nm)Q?y?X&WQVkiw6&#ESYs^%-C5o%{7w`&iunj7ai!WJy&MSSarZ;1~Wid z%!qd8PlI;hD6W^MRq!`jzN>T*yZEYG(;0NXlK(?*28(vUz7=Rc z)Y$JsTUW2*7_3?~7~O8w`qF*;7jdr6E|GE(CX|g30?b3k1X*x_ihwhL=T{%%W26IJAL&gJAJU=#TE@nQ9U9FRy$L5~@|nVLM?`p`1>- zoifAkp~AqLN%$9-#EZ_j@c&DS+k>ZNmxcK_<>(UfZ!M^Tb_9Cq*coA91Wm(gmx6KBUk&&e^O%r(xIiW zB|j@YC7G)%H2@9ErqLGAQkh1!hvzbIPOd8*-90%vgbpC|chMQawV=s3Kr847S60FD zH8jQbt9?L>;Z|`~nW@;0-zhqXB|*BwD7ktr@#3+?tz zP8&;RlG)njs}|WiF9$&ui8ZgMJLHGDZ~ zMU1aod?nY&x$G^+@-5Cf-eUQ!H&14OQu2#~=6bp=Wq$G2%aUIVdS2HT9!C?lTSbI* zk$FXg^-q$$n3F5zdliYEmEP?;=H326C$jV}vx@YuB7YS>{fG3ge=>(f=>H@J+%7{@ z;=De%Dqs(Ix`D-n+h(My@ar_3G8R@+oKZpXw`v0YXof$sSMgonVP?ln?0*MX!E$w*?$IYo|A$$qqnDICZ?pu;5tFl zq@YbB+MES#$_3x@piPf;zEaR;3ur|=FTA!j&KY)+kk$#WumwQsq7MSiLgd zRr?R`_5a$HtM0~e2>2X2-+DvP0Xe4POZBSu*L~Tx>%JP!h?eaF1mFt%k=1HJNB9-` zBp)uQhGJ{}8Mc3NxpEh_K(}jK>3z_#($@S3srcDOwx9p9M8!X=+P3Y?8XVKv;gSJP zYe`1{A9Tf8=&$rTwmBxXDL;Xz9;YbHgJGkC!ZbvlU#GK`Tk? zsk%(T7LKYDAbocDBLm7T_Z`wXl;UUSP+P(|Xd#_Lse6gnq($k9SeMTLk!2WHMQSg^ zRh7@!J&h@(x{tb}cvmtc&%k|tA-L-d$czdDa^Yom04kng%+qJgJ1hmjvE=XlXz%IY zyLIQb3}!PM?*Q6(vk#3iMH>%IybGF(1}+{cS=p({nOR9*j!xd5P8v1sgO*N9urj<< zeuf!^?6nfA9YbbZQSl4Q4C3#XFt)GY6Do4MiQXVbexKO1YC1v#A5qrzPQMXn4tr41tbU3kLMcYoX zgU`Kg`VplaWf02FZi2s?mv$sHxYS&pQnpv1E65kPDp!9dU?h%)R)!g1MonPrHQ0*3 z%=l-eqs2zTRTY1Y>Qf`w3N2Wo0*b(O^juDjndP z#M&?D z3MEyS%mIZ_O{1})R7DUao8?NTqLtEL^`lkCOmk+_rHEEiBEovKQzWbG09s{pXQSmm zN5!YiRs9t38fjN9?|%S1NwRJXxukEjkIsx(A(J^#(Usg_g&yU z&u-2?LauY5?sS@VGNMn=UY;!;fZB?EIUWmU*?Z5_pnt+j7Vaxilu$lWu%HRlHdh#S)%HThO-)~k+o*PKyW;BRR zJ9E{rKuvwsbhA1QmV>eWE^&uUybsF-FfQ9cjg@Mgf!Xt&rF~?j3#8}Y`>^M@PK(H| zk#2@i4|RMT+G5dPPl4D58iLiw_l4q0u1cMR&zk^{V z>Op&$Yhht?8AJG7wM(=Iq&j-``mJG713mDwrPE?3a4=!O5s;M?imNi1(bON2O6i2a76DvQlXKHxq_te4_lAiiM zfk{sdlcCl{kUfN2mtn$XsKw9MgOg&K00vVp_v~&liW*Smk#R4Ko*lz4HRxL7S8^h% zOUF_JBBx*JP=VcM5R()YzdkCSY$lO5WCF1YTNU6H?B^foOKeF{9y!DDnMX=HQ4?V- znZMLywEM;RJH`{Phs9_rr-~zEpKH#My*twWNEx$t8G6A_j$Z+N4H!(h+}ntH&~-wP zuYaJA4iwr*;o0kwqT<#^#*(Et!-W+ z7bDq=R$-0--YB=MB!80rpR8C+ia1cXty23+Px8dwGFXgH?x;l5Mt5-?=*Oy;pv7q} z!yn&S1)}mtzq3cb!vn!pr7rW*l~koErN7IlVWaX&9A(k0s_QVgj>hnM_(lIRwEGL% zv0D4r1^Dgka~%B66JF5YXw!*ZX=mE=WN$Figu^ewqJW)GG~_@;QEYlla@@K!vYSLN zBi+fY5UVwA0bW{vcXV0?i0!`VLpJa-v9-8PfMVKKNvG2yLTiH+Awz*D=t2^B^|dIHkHL5?KrMzwL)wNapV!pt%f6N`DiU z5j(A$I~R8wCZpF>iykM-(a~<`B9BW>k4_<6UZ$s|mAkW*y<0}UhW_p&U)%BS^v{F? z<;~MyK210=NTcot*S~~`n) zPcvO?R}eF<$Mq?Iz;2v)YD7*uY?+?P>e$Pmp-`0I;o#)!ZfWI{mZjO0m|AGWf1>*g zmU?F8ZBEJBz9ZSmPGjTcw8Ti=2YGb<13DyzS6QTphBkpF$fI?ohXu+{9n`DS8S|%_ zEo4i4dQoUUS34`>M0^s0H*>U!r#!CT8MXllP0u`pAsXml_L%-^#EaD4z}79Ja93JN zQC_OEmB!l5$=XOgj51+fhr;+6j3r?#r1}-Y*k!_VCX8m?XcyY!L@!AgRl;KbosTu- zU_>Dk#`txqOc8uZQe$7q|4FK`~>Tza_><<+X%clKK)h6FZ8#V z=g0~UHB|EECqlL*W@d2oFp6Cpl)3~^>OUui)gS#iEBn10J2^*gbo7#MXExz zmpqiJP_-f>X83pJ;CCn zSAr_s_(FLJs>{d8bB-KwluA$yScUqy0}N$i_xl3uqivLQ22)2BnmA+#7!q=;Eki7jHZC# zT&a&4UY1rKPD~#QP#?YJ5uNT%ll1Y{>93#0pBRk#NcEXMp8sfgr@B5~2J0$)%#-xd zyHX#`_jj$-$BtL}ROsWIiD#b}fdwI(_`8WaKe@eD)Ss>ECMVV?F4`^f5iXknE|hj|(y_cYB~d&ZyAG z$vEM1H%>k=B4_N2W^Aa?$HGK+2PYqQt8#rzlk~Az(#PDC4XBUKwiWt_JUago_=4>=N8_T=M*nkelTC z`V$-S({nb(?Ih<&-r~3+98AlXyFZ(EcKkLj6J)d&`i_@;hRgjTwBf$t9KSX358O6zDS?KO|n4L!HzoH+H};oEl;XnC^My^Vav( zei%aB3{y-0purH#-za@3x(eoG3)so|Y&wuw(mQhhaUo*@%-F{78UO44C%D;gmyRd% z=smgr)Buw;?3=)o!6(+-;a0#MI)ogghldl=;Te870Sn1qxGv}O)}LQ@IhutztsAl4 zB*vWEOK-sf?9BD8;QWD*SG`I6Mzw~De_skkmfD@RS~%%CT)FEa#m)10Xasp?Bd39Fgj0e z55IP~LEE4+D$;(WR~K8_lADMt#iv7xu+>CMw49TY7iV=irPxHp*Tej1g1>q=vHIcs_>jX+mD69bfy{w z*imZ;BP5dgf{PsL#(dhA4z0PX?}sb+w?TQ@P2QQ@XN7tXfv(~%v^LZ%Xly2&5WM@% zo-`nkBWUFt-6Ei*MnlNys*hjkL_+BDesc*`J}4$;@`_J%4s;@NFeT9X@pc%&sZSF0 zYV|nI0(m(1_@Ip(|55LJ&h|s(2CIchKyO@e-*oOiRgUsj&bh4MpX*V@ zCwM+^3-tTK#Eo|cX>GQM&CzM{5ns`A_oI+aZ!r&NxA(~DHY$=1kCamnlA6Qk2~rS-;=U?|o^=^#{o{mp(j87;ZohW+wY{Hhl8rrk$7sWT&F6>t1WCpIZ za`9iGu~ev`wfHN#*>0eCWB3sipneCV-tpdG!>);le)fj$?f8sFE8%G)=%pm7VcWv8 zxV4HXyBM1&G>8u5(gqL7W@sRfOpVzRxe>n#a|&BdJUH6>9j*ecm5$Uv9^@9_5NyMR zDuVI?HwCA24q$-FN9f1@x1Ac%BlztIR~Y%?`s<1!elK-J{NMxdv@X<(M2V{lb*TX~ z;ET2BSL+J;?Pmr3yaPN{w6?CIpKqD1z!z`MEichGb-yv`LdMPwEHBZQl(ezDM4z1z zUmRt_O7xw`Rph5vmgsY@DA5<*{nT{OCtu0A18Bn(J8fN(#Hq!NL2pO8!iX2q?`&Vg z;7@DZ3?EBX2H_~KaCJZ(RgKQr6W}Ta3jL-}vM@mpo{1%7$FBfh78oRUBFA>bJn2rKZt#s z6WEsnHPXvEN4O1%e$Fnw9(Ec&Tk2jmb}ui(&)(6?Q>s9i60w`3hQ6$O({$ZCNbXDB zOUCYb1ir&@nEH12y9edt@TPnm-a`F9!I1I(PI*zs{d)J1_Zi50wT}0L%eo1;imq|@ z;9@W13`^e8jl_!jgVIeNo0uA%Ot?+y-ZmP(_|bhF^Nr=Wyx%Q;2O}9PAA;dss0$@J zRI!i11=-iPf_;DL*q0Wcmwx%@>ODs~V^YN4Vry0!a&5r_{4s&CJuc;;inmIkBgDcR+Qx1*PsKuPh z5$gE{lGq5L?X7?}I$Bohp#hyOTsr(_2BfgEnj>foX#p05jFxM0l%y(?g(ekMCd=|@ zlEA8K`h>+M#wD$ns%yrl#3fg&u36fhcBr78-*KdZ{4BH`D#<5VYDks*d^NR+)$k2WyjAwd~9)I7;5|0MRb znHjtLVrMwknTn1aJNHn7JsEDq=hx`T=JKAPAu4(YKAY$YrcdrZy$RekRuBADIfp+& z-4>vD4DuFGmnrcrR*6DV;>XD2kVBz`@#$$C&1AJ%Ytt+yvz}#^IF)XFqT-8BKgAzg z+ksMe#{Qxy27jW4q?cn0f9vry;inq1mtmDZ(P52Atk9F9T-1}Iv67x7GCfJ8qfk$9 zguNKfytwUYshi18?vmNwP8}xAA8kaIrmx)Y$?NDQ2`w^Mub zat3Zg2JUY@*UhnlfuAo{V_@+SiGlIRK))Ic+}|8Ywe-r!*_517v?a;aL1XXjy2429 zoZ%|Qmh16XUDaRy8azcx#bNXpC4b9J#Xqa8`KyH1NT4+DXv+80o}r;O7P`S`H~oat zwlatp;{_TtRgFjLs&*yRz_MHhemH5 zx!NVemDLC8ArrYqAS%gbQV_N|&1J)?bXN|&Dzvnh(nyG;_>a(~*rtIzH8mwYH6zTP zSP^@UmMSH3#z0pX>!!aE$q~o0RJ%AD2C;M{VKad|9jVE5vk$i9h4!u~85wVt01d)uiI<$e@ z!^6|f!!uV+v?? zeZ$|z!7xltHil-0=A^l0tx9+2Aeu(YB{;1O|E<5BWy3~m_1Im0dw+NU3AZ%((+rh9%c{a(8$ceyyI=Q)VG>S&a)tLm^>WgEc zwJb@TgTU}vx?7fWhMQf4Ww?Df+KZ9ES|fo73L&ngNTB0d#|Q`abf+vgWJNSYOK@82 zA7X{iBgC@;8zZ@^tFyD4OT^~zqVOCp5_%&Q#)JZVBS=|0IxJYeia3Nigr=uuWu>QM zN0B+|aBrM(T+tL;@1~y)<}jKiXlYoeO;h)GmbtBM3+E+i%lBbRLu z#fyi8Q6};w8|Ng>AhaE!9J~I+m`qNcmbZ{I9dXU{k1O(>jt9Jt5NJ;TXLeTqzr_96 z%01kr>+-Vx)LXcB=KM{gbdnmJ;?L2sbh_L>H8_K0aFE+*fZ5o=My|vy%40nT6JVBn zy<3zkapu(b%g;>XOFPM6Jv%cE`EFj?Nq1(N%+5@glh1HPuD&4V!2pz?x#$tjl|e{H zp_H9esbFsD*0P7+w<^_19if#NgJPC1o|TEOI||T>zEZ+;uqGeq1egIg*bS>?M^VHC zS*t{hRtwUq2B9u@eX~7zc*JRdS?Y*Z!Sz4_RF#+=t6oK>ypQ%WXAd z$SkWxGZr15&T?v6P8is}&FLZEGzm~&uy;z?x@AM!CQUxccHCs=u+q`R78RE0#NXIBL{=(D80jDu)(p+%}`V)dPLq1o)kz(ARyn8`^64(_)Nr zZ+zx%qim897#Ga(n8>E z7POUc>L6$iooE~M|CP`Y9SG&YntvJ|7K8bAS{MYc1-^y$g^F*feW~JGYr`Dkla3&7s?JB>U9ro&H>ya*4m$8n+;hcC{w7gmL%^%fuO_?!sGDwI|2%!C%si6>#Vyw3GbZWgr8y8vgEuhk|I>N*SUQw z#^QR7TJ5+k;A zRPHAaA9!@mTk?t=--G_nF4ug^M2Q+Oehe2Sw#9saj*M%F{e3xhAJI}kyU~?&VwQ{9 z2SQF46Y_X2Dv_U@HlcokAMqi6Ve1oO6V}CZNtyE4C?yC zp59|P-b1asVDR||EL-4}U`w3VczJW{&p<~)p3)#ub=b`k=TEdf)Ex|2k5G zqxtYcSV|l`yqzL0C1>T4G!my>>%@Idl55Y+-8PJHt<1;L-)Y?wW8S?xaN@?z*@wny z`0q!S(-DHRSK6jcDJdJX6TR&$DctpEZmcQlWSh7-+&@3s!-Jmo;Q(M9#Y8=!Eq#NvJMSHe?uC z5^5jd73i}%(3?m%f)i*Xc88Y4%`ii}!zYN{8o^ZfKrP@4okQqU`VlPXXE|^A9@+@* zTRpbAZ{cSCRs39@zBO%o+P2hXX^T@WxkK&ebd!5nx-Iiqj#`vh+Djk*%ivR@0A{#0 zb%cpvMmsRp%mNmb%>)xd7m0IVt~gl^ zn;NkilNI0K$A#h?d3j5MEu*j@%qg2p7naSzuVIlmlg}+k_7)H5wVc*t1#eZuDPhFX5v~Z4LcC!qV4wUg$pt*#*!$3i@aWLq7q| zLSINLn^tyB2{I9Jdkms|=y6kpdIjzE;?8SW`cZ!?=pO~W3m}t;o(S%f3fI@6!e^Db zwL~_WE&XKTJpATM<)anQS0<{Yn?LEx5GB;5n&Y$?p~wo8sk9k->l!XZsiuvn>EA>3 zLC)@JDi(JMUsdecn7@bU!+0>2JudAjd{e2fqczo4A8k?WkV&op1iYXt^@26*>I&+~ zZd##4seU89R#;k3R@xo#wXWam(XLAM!;I2a`e~&tWnxKbKY`k?e_%t=<_BwPMXjkd zD5wEgfhAZ{OHhIVK4Jf?%Kx~|**_|VGz z5eF|E;@>q9KZ#?7;GE#hH3c3Qd^bDhSZ`mPwLHcp#x>HK%ptZ~Cr3vIr=|WbTTuU+--y6yZDe4C zTe3$Qi6sfKF|k}^v^?5BHZT_dj*D8qj)aDVlF%ThKzrgw+#+0~96A1-uznWW=C-DgGsaySTA*wGg<=FVm4MAt7_a7Big0 zH_R_g8;v!=rV%CP?KN1^}w!SEZOIt55NQy67mlwSuDKmXzN@{du zMnqgh42eYVF+F5s;KqPlkIgn*nsc;g+~T+;ksi^D*UgKWOFTGNC0R_|LmY#bhWRpD ziD$SU=co*g4vPwl#Q!m&(Oht9V0Lf;b~mxCK6na9$y&0O#B102;UK?n5=7R7ga(I( zgoTjc;I%;!!7SuGI5=R9Z-Qqs;UX1L;ZYH5Be4CfF#pgHd@(ePgp!bm;D`|7M^>-K z9|6$;F+uBs4;-8RMocoW!Y_xDp3O47{ z^k{9GBf%}yV}Nb-5Hfy`pzZXk!Nx~F0j{e!@FV!;CU8wxdcfLbrwaevrQ+lDE>Vqy zXOouUS*}Gq_#)z2Q5_FH`UxIg+0GyFSernZE*B=ARl~nZ&2$Ws5Lhz=))Io1)e%_# z6ag#CjNsAylFBmIt&XKRG|&~WU#Tl#pQ6PXeuEB`iG<38p=vG-hqgMZ=08KlLcbA} zA53wsjztev=|aC#^_*#;1ie7&hz;wAjnom_8YA-4j{Jw=eks*l#^JW3!vFJVvwRYS zJq)gP|Fe5d+IvZbeU%6hu7X;DJnBwkb)Aq{WW!iw^G_Dp=vX9Gul=tIz*5xcFS=S- z*P4sh+Y0dDXYPv%QQjItG=qH0vy*~Mm z1HC8;;#juo(x`Y9ZyA-K;ul9Hs`!{A@GI>mVcd|xFfPtOjEkcf#>GdfVZ=v@|Bv@O zPm!u64D)8?lUOn9>HHDxRQzf9g?&<~)Qj=eFEAKi{XhT~!rS7Li>6crQfjCb3)IbhdsDP!zFxOd?Sv`(TU@Eu3L{kfJ!zqO3u+a- z%@?3v)sy-vb?LRAEUr~h;5f?7G-TdY?ceVtp*IBI4#rjsjL_XVxXl~diKC#segVvdacl?kmbU;F@6b0klj~|bgzXK+;utX2 z&qJn-VJSD~5cGuCI?!FABb`JicS8pdLBB=N<27JxFw(sQdTGf0$m7X{iFp|bMdS)e zMbOi9M(>T}HiM z(*`g`1FZ~3d7NaM(Dx#bB^M;*X2chgOC)s)pGLgNBC%F`Hm zSTdUPY2;DV@zi_{r_*nOkFy&x#*KJI`NeYZ8*GqAxDqGgNV*43cC-HJV3aNpYVyD4 z*l0}A9?=a!GD!%D4dSRk6Dm+k1H|FH{4YT_Ca&eEjUY#k{)rQD(2dy7#)@4?P-A#% z4xMHcohs-?D5)GXPm|?gDTp~;H+~#6rC$Zzkhu}>C|{}5n=3F&1NyU}WbCdndNoH@ zGlotQbOV?~;w8-WX{-)&nr?VmpZ^kcBkE4PB3YjsLzWJ+qi(!8^)Oa@b{!(ES?GS96fNhVH1BrQ?IeM55qwU3LXirmY2J6EbRt9fK=`ews zD7^YiwW9jibRag3$EL@~{>0qP>=bMWZ7YUATiQ~oPGTn$Jy1xBak6WUR6{0o5;kNN zX6(y>M)z+XBhZ)wO{e>`7d7wMnzk~6Sx)kx^9je#lVXx?i*D7pd5-;OQlnmd1_jbd zoOpm;T2}$}C`<+o8wLh7Gpitd&t_9`%E9kl9?(v7LLUk0WCk_y_&J1{W=j^4 z@$(!9&Y(?u_a79*pyuhIwinx@E|s9pG-F#7nb01g=BMq+fx36E9U<^5%0%~jv^_QL z*OoRnf{7BXN6+GHg;1A}3G*EX&7!~d88{?}j_1U5Xs=KwdE*q=3kRS%Xbg*BDs;ky zZWykNUqpLRDe&TnoGk}YyP-krtF!~5JxHs;S{6k+ZIwLabjHpS!tKdiwP5m6-{qPK zw7r7=azn9Wr~8yCmJV|?(}>m9h&vpex=J2Ro4@P=qX?LgZ?{;f9&&%-=@FZlwzPoW zh`$B=Zny^~KnEB{`@GrvO*6d@yYj1GWl0-UF# zVKnUxbFa`?Bve>u9Ta6cnK-QhBANstR2O#J9?9E@Eh4?Uf};{@S$Aqy;)`B-Xr z(TuiL@SmpLyu4X#1-m>;KM@^lOh~J-fXGy?)$%pF%nsMar;!|Ug30Y{E z)P=UVf6T@C6p7%mfIbWrV-G*t)nj0AN!gL+#B^$9|CB#vPz zI;h1AYI;F>5kg&51yu#D^x*}V$i#J!D2RiowUQ>3wI*~R93w3F+ytSiZnDETIlYG< zS0TvM?37K38Qi|B3}k* zslY=qLTgtxl}s;d2*YjUsag5SMT9%N)qdPWyJcn?3$k)Y*jbKFa+1f;4xliBu7rb$ zFW=+p(zp3Fs;@y&YXj4DNVdUPFlCH3KqTgf#MYimK_t5*B&K8rA{nGZvIUWBLnO9K z&8Do}aZW>V*w^9QWncmw5X0C%B@C^uHP@glwZJ*Q)m@x|_psD6wnb9CQ@Df2I2x?1et7SJ2e7oWj?!yQ%S1T+W8zzl4@EF zxJ^6abZ9$(cB8Iz)EPPyT)^T1aL`Z#Mm=9p!H9orMjs2~+=~yK%-KfFm`%iA#eiA!st{LxSHNi;jh4ytm^wWn1uuPUG zq6vCKfnZvXq89#i4hPE=>%is$lGTN+3q8v=GiAUQ{q>#0B04nHEl75PWGqMIaq)#EYD+S+kwDAx3V~; zdZRb;VJuqjouIK{0ZgNVaGvZ46Yw_+M0XHt3;f#?S$htUTilnykLXxBc2J*|Mr6p2 zIj2`~{HGp{%O{i09Q_SsLtq&6gF2U>wGnx-@=O;gO`#_&6^?9hm^r0YO2QEcI8AiFu&poBp?siReGkh8ww!)r(IzT60=0C zgTx%m+I5iJ;69r?rZ{p#dbctnL$}W^aYADH*dsArINJ2v5EuyE;g`#Rq`t5@-F+jY zr86uOj%V70N=2XutMoW8GC>+Xkn76=r<*ZrG1-mtSGja|yTILu`w#_R!nV)<7RF1WU zW{SP_BqOGq>;m)O(bR2;qcj;wnMcRNc>W8Vl}yipXj|2zO`dgv-!)gs!Mwa9A+({x z=uu=QaVrcufK!*PJc-tMVgj8}?N{DJuDWQTuNjz8XCqz=q0fa0E?Z8W&no)kY}(w} zn#uNy%#Eb=Q-Sg^2bHr3rDV8ttM*95dXkx)(}o~cHEsI1Gc-o5hw}0chth`jqen8V zMGUK{4PveRzyxr9fMqvySo=&utacLC7s7a#t*8FT+VaQwv^ldhlkFCoGa)bn8M<}T zan;_5Lofs;vzuTLYYDUaCJ&``X>Hp0QCAQ&SIEKKT*PWqr}UBK_sw z2xx~`7hOZqcF;gib6otbB&-jGi7rJY*w=GXU#HkFo@}J<9QYMHzUtqBCQqS>4Aun- zQ1`@rBtJLv*=Lr4S#pCQ(U{_O5`-PP+E(#`AA#p@Xr_pY}HeD~Me-S3cd z_5TE3276(rU_~5Odw6iMSE`2=*9Z%>vGJ;ikFD=3U)%fYoR@_ATp1tRHt^MlHz!{( zZd8Pwet~_k?H^I1KZd-Ht%wqpfk9Q2=vx*f3Jp|hS|5kx-bcfSQgGpK{G*3(PXIFo z4vnFTf3&tDsPGHDs8qKJeD?Oq-KQ)LyDBR36MP15RQ-yu%t?DY)(Fe|R1uYVVaDeg zQJHUR1ZDcMn8J7#Q}{_2li4cp^~vWSUmM9NhcF^gEgY zk{_3vA79Uj6Y{R@-y+doRW6&WB&x<`P| z>HwXjv+&33EJEIc)`$8`(kp`>A90 zth|-3ehcmU{v&}PFP&4jgbdV_>#q%O>oN}_%eBP-N%;uh#9)Dcotu)8D``t{JJOkq zlhPp6r~^ewNm(paK+1%$*YM9)qQZR4V~GM4c@Y0h6gYc;JYWj5Whqk_c>M-a&=5wA zk%_g%al()B=AaM81uN4`06p{$e(o7s9n`GN<3MqQJ4QqptYn? z8Ms#ZqW2eP0iW|pT%&2-;J7;D{0mq)T{-lSxeGw zcA#eMo5M6~Dr(kD)T~3OS;tVb(m4KxF>sP*x%hgbW~F47Yu4>@&BC6aeDU$s52{r< zgQ?c2L48h4lT<4nRcmOuYQ+aMV{qy#Hk`B{R3&OU?~ zGAMLyIf0K5oSK1&{a#BzjC| zp}E);Uo3(-4w5A@#0};mHB0dArAQGAk`VlqWSNWG9BYn$HhjiBOVXWC^$Qc`7!M|& z??gizj?T@IM~`w^G?^?QZX0nv+g7-7cLB$rKE8WX9=XI7A{%~%`Bj{R`4R`gxoRZA zS*RFGGvF(0S^%#rY9aeJ_>NT6Vo-A`(-pOt%jzloTknci4;r&_`JV+^e_=Q@L!k+$ zztehqmg2-&Z&_dZ%eUbusCQ|duh#~kTV%LRt`-yBU;(z)*VF2Km5J8kcY*3H4~II< zv2ESv+pLX2&w50g$CIyox!m$$$;kImt3a+U#-(lmG^UNwf|D~uXj64y`LBBX?ovas zSQtVwp#$wqTxf@mRUi8jH`?qW@uYJ0>9>bO?nDQm*|-q~ydk=eSuo%>K}8=-l0klp z$oUKO{#xNPwyE8U$e9!0ADSS(X4UZ~h_CtGA|T#j5;9|ktSiZ=_&AWb(q{LF7nS!X z?(7rd?GMI?tp7_=`SAwgZDzvoUYGD*UMqZLc-tUeTF3bBCi;KE44K%Qf>AC z{Y!R-w6V}qrEX&kjd96q0uk)4jP5XkjzD{MGdva_3JX>Iheay><^H(MTgX*T_ii-4 zyB1v|w75q}w(n;6SgH`9k;xuvV8m}-j186`Cb=;*D^;-ze(J#(ItKRfm&9Ji0yM+* zk19%4%)(GWQw9FD?_Z4-)f(J@Vrq&$#U)X0Ed1S=yej|p5lY5VfRdWZN;|Uns5&fW>Hz#D#Z1YJ*`v8^ z`=E|7i^tGM0Yzv>5K!!T?Ig6eZ4 z{K2A{>aa*B1GbI0PyARO=~TNa(#f7hI$42pd7Rc=7N^DHu4JN&snuC@m#W8Uc@Dw} zfW>K98<&S^?WzjX@-wa$r8NLHKo>MC-pfQ&z)7bIeNVe6)sO|9_0g&P7mMr75}-5v z7wwFXmsNYbtn%@H0Fn+H!B~H{xSiD|+Q@1XZI@~jv8P+b-7@j6?&)sn>GGI1H;T|{E0$fEek>8&gG_pKtD_?PXaReq4iH^_MhGM$At{WIhCdLpWU6mDA@x&U z*Z5vX)e;M~1hhfUI54tMY;*)&f=8vZafnfQ=q8>U5+~W2D8g2Hzwy zQmdhHR90u=;t!&={y8w;%PQSOeGqI_;DeH5r&32B5})bsgw^|DwG8qO;UehX?&7

    az&7b#mD*w%R#n> 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 literal 0 HcmV?d00001 diff --git a/pkg/ui/web/public/fonts/ABCMonumentGroteskSemi-Mono-Medium.woff b/pkg/ui/web/public/fonts/ABCMonumentGroteskSemi-Mono-Medium.woff new file mode 100644 index 0000000000000000000000000000000000000000..5e7f079148e50af23bf2cbddea641ecf0c76611e GIT binary patch literal 65432 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

    $zZbm}g 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ℑ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 G0001PV}@h^ literal 0 HcmV?d00001 diff --git a/pkg/ui/web/public/fonts/monument-regular-italic.woff b/pkg/ui/web/public/fonts/monument-regular-italic.woff new file mode 100644 index 0000000000000000000000000000000000000000..c7a7e77bb186f89df68e7989dc9bbd825e623fb4 GIT binary patch literal 67540 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 literal 0 HcmV?d00001 diff --git a/pkg/ui/web/public/fonts/monument-regular.otf b/pkg/ui/web/public/fonts/monument-regular.otf new file mode 100644 index 0000000000000000000000000000000000000000..ea7d8858b495f6cbe0b4025b04237ec7f8f32a7c GIT binary patch literal 95076 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 literal 0 HcmV?d00001 diff --git a/pkg/ui/web/public/logos/plural-full-logo-black.svg b/pkg/ui/web/public/logos/plural-full-logo-black.svg new file mode 100644 index 00000000..3e5be0a6 --- /dev/null +++ b/pkg/ui/web/public/logos/plural-full-logo-black.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pkg/ui/web/public/logos/plural-full-logo-white.svg b/pkg/ui/web/public/logos/plural-full-logo-white.svg new file mode 100644 index 00000000..8f5e8dcb --- /dev/null +++ b/pkg/ui/web/public/logos/plural-full-logo-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pkg/ui/web/public/logos/plural-logomark-only-black.svg b/pkg/ui/web/public/logos/plural-logomark-only-black.svg new file mode 100644 index 00000000..3b37f74c --- /dev/null +++ b/pkg/ui/web/public/logos/plural-logomark-only-black.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pkg/ui/web/public/logos/plural-logomark-only-white.svg b/pkg/ui/web/public/logos/plural-logomark-only-white.svg new file mode 100644 index 00000000..b48e7479 --- /dev/null +++ b/pkg/ui/web/public/logos/plural-logomark-only-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pkg/ui/web/public/logos/plural-logotype-only-black.svg b/pkg/ui/web/public/logos/plural-logotype-only-black.svg new file mode 100644 index 00000000..53f8f47b --- /dev/null +++ b/pkg/ui/web/public/logos/plural-logotype-only-black.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pkg/ui/web/public/logos/plural-logotype-only-white.svg b/pkg/ui/web/public/logos/plural-logotype-only-white.svg new file mode 100644 index 00000000..68fb8f71 --- /dev/null +++ b/pkg/ui/web/public/logos/plural-logotype-only-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pkg/ui/web/schema/schema.graphql b/pkg/ui/web/schema/schema.graphql new file mode 100644 index 00000000..691d635d --- /dev/null +++ b/pkg/ui/web/schema/schema.graphql @@ -0,0 +1,3144 @@ +# This file was generated based on ".graphqlconfig". Do not edit manually. + +schema { + query: RootQueryType + mutation: RootMutationType + subscription: RootSubscriptionType +} + +type Account { + availableFeatures: PlanFeatures + backgroundColor: String + billingAddress: Address + billingCustomerId: String + clusterCount: String + delinquentAt: DateTime + domainMappings: [DomainMapping] + grandfatheredUntil: DateTime + icon: String + id: ID! + insertedAt: DateTime + name: String + rootUser: User + subscription: PlatformSubscription + updatedAt: DateTime + userCount: String + workosConnectionId: String +} + +type ActionItem { + link: String! + type: ActionItemType! +} + +type Address { + city: String + country: String + line1: String + line2: String + name: String + state: String + zip: String +} + +type ApplyLock { + id: ID! + insertedAt: DateTime + lock: String + owner: User + repository: Repository + updatedAt: DateTime +} + +type Artifact { + arch: String + blob: String + filesize: Int + id: ID + insertedAt: DateTime + name: String + platform: ArtifactPlatform + readme: String + sha: String + type: ArtifactType + updatedAt: DateTime +} + +type Audit { + action: String! + actor: User + city: String + country: String + group: Group + id: ID! + image: DockerImage + insertedAt: DateTime + integrationWebhook: IntegrationWebhook + ip: String + latitude: String + longitude: String + repository: Repository + role: Role + updatedAt: DateTime + user: User + version: Version +} + +type AuditConnection { + edges: [AuditEdge] + pageInfo: PageInfo! +} + +type AuditEdge { + cursor: String + node: Audit +} + +type AuthorizationUrl { + provider: ScmProvider! + url: String! +} + +type Card { + brand: String! + expMonth: Int! + expYear: Int! + id: ID! + last4: String! + name: String +} + +type CardConnection { + edges: [CardEdge] + pageInfo: PageInfo! +} + +type CardEdge { + cursor: String + node: Card +} + +type CategoryInfo { + category: Category + count: Int + tags(after: String, before: String, first: Int, last: Int, q: String): GroupedTagConnection +} + +type ChangeInstructions { + instructions: String + script: String +} + +type Chart { + dependencies: Dependencies + description: String + id: ID + insertedAt: DateTime + installation: ChartInstallation + latestVersion: String + name: String! + repository: Repository + tags: [VersionTag] + updatedAt: DateTime +} + +type ChartConnection { + edges: [ChartEdge] + pageInfo: PageInfo! +} + +type ChartEdge { + cursor: String + node: Chart +} + +type ChartInstallation { + chart: Chart + id: ID + insertedAt: DateTime + installation: Installation + updatedAt: DateTime + version: Version +} + +type ChartInstallationConnection { + edges: [ChartInstallationEdge] + pageInfo: PageInfo! +} + +type ChartInstallationEdge { + cursor: String + node: ChartInstallation +} + +type ClosureItem { + dep: Dependency + helm: Chart + terraform: Terraform +} + +type CloudShell { + aesKey: String! + alive: Boolean! + cluster: String! + gitUrl: String! + id: ID! + insertedAt: DateTime + missing: [String] + provider: Provider! + region: String! + status: ShellStatus + subdomain: String! + updatedAt: DateTime +} + +"A Kubernetes cluster that can be used to deploy applications on with Plural." +type Cluster { + "The account that the cluster belongs to." + account: Account + "The URL of the console running on the cluster." + consoleUrl: String + "The domain name used for applications deployed on the cluster." + domain: String + "The git repository URL for the cluster." + gitUrl: String + "The ID of the cluster." + id: ID! + insertedAt: DateTime + "The name of the cluster." + name: String! + "The user that owns the cluster." + owner: User + "The last time the cluster was pinged." + pingedAt: DateTime + "The cluster's cloud provider." + provider: Provider! + "The upgrade queue for applications running on the cluster." + queue: UpgradeQueue + "The source of the cluster." + source: Source + updatedAt: DateTime + "pending upgrades for each installed app" + upgradeInfo: [UpgradeInfo] +} + +type ClusterConnection { + edges: [ClusterEdge] + pageInfo: PageInfo! +} + +"A dependncy reference between clusters" +type ClusterDependency { + "the cluster holding this dependency" + cluster: Cluster + "the source cluster of this dependency" + dependency: Cluster + id: ID! + insertedAt: DateTime + updatedAt: DateTime +} + +type ClusterEdge { + cursor: String + node: Cluster +} + +type ClusterInformation { + gitCommit: String + id: ID! + insertedAt: DateTime + platform: String + updatedAt: DateTime + version: String +} + +type Community { + discord: String + gitUrl: String + homepage: String + slack: String + twitter: String + videos: [String] +} + +type ConsentRequest { + requestedScope: [String] + skip: Boolean +} + +type Crd { + blob: String + id: ID! + insertedAt: DateTime + name: String! + updatedAt: DateTime +} + +type Cvss { + attackComplexity: VulnGrade + attackVector: VulnVector + availability: VulnGrade + confidentiality: VulnGrade + integrity: VulnGrade + privilegesRequired: VulnGrade + userInteraction: VulnRequirement +} + +type DeferredReason { + message: String + package: String + repository: String +} + +type DeferredUpdate { + attempts: Int + chartInstallation: ChartInstallation + dequeueAt: DateTime + id: ID! + insertedAt: DateTime + messages: [DeferredReason] + pending: Boolean + terraformInstallation: TerraformInstallation + updatedAt: DateTime + version: Version +} + +type DeferredUpdateConnection { + edges: [DeferredUpdateEdge] + pageInfo: PageInfo! +} + +type DeferredUpdateEdge { + cursor: String + node: DeferredUpdate +} + +type DemoProject { + credentials: String + id: ID! + insertedAt: DateTime + projectId: String! + ready: Boolean + state: DemoProjectState + updatedAt: DateTime +} + +type Dependencies { + application: Boolean + breaking: Boolean + cliVsn: String + dependencies: [Dependency] + instructions: ChangeInstructions + outputs: Map + providerVsn: String + providerWirings: Map + providers: [Provider] + secrets: [String] + wait: Boolean + wirings: Wirings +} + +type Dependency { + name: String + optional: Boolean + repo: String + type: DependencyType + version: String +} + +type DeviceLogin { + deviceToken: String! + loginUrl: String! +} + +type DnsAccessPolicy { + bindings: [PolicyBinding] + id: ID! + insertedAt: DateTime + updatedAt: DateTime +} + +type DnsDomain { + accessPolicy: DnsAccessPolicy + account: Account + creator: User + dnsRecords(after: String, before: String, first: Int, last: Int): DnsRecordConnection + id: ID! + insertedAt: DateTime + name: String! + updatedAt: DateTime +} + +type DnsDomainConnection { + edges: [DnsDomainEdge] + pageInfo: PageInfo! +} + +type DnsDomainEdge { + cursor: String + node: DnsDomain +} + +type DnsRecord { + cluster: String! + creator: User + domain: DnsDomain + id: ID! + insertedAt: DateTime + name: String! + provider: Provider! + records: [String] + type: DnsRecordType! + updatedAt: DateTime +} + +type DnsRecordConnection { + edges: [DnsRecordEdge] + pageInfo: PageInfo! +} + +type DnsRecordEdge { + cursor: String + node: DnsRecord +} + +type DockerImage { + digest: String! + dockerRepository: DockerRepository + grade: ImageGrade + id: ID! + insertedAt: DateTime + scanCompletedAt: DateTime + scannedAt: DateTime + tag: String + updatedAt: DateTime + vulnerabilities: [Vulnerability] +} + +type DockerImageConnection { + edges: [DockerImageEdge] + pageInfo: PageInfo! +} + +type DockerImageEdge { + cursor: String + node: DockerImage +} + +type DockerRepository { + id: ID! + insertedAt: DateTime + metrics(offset: String, precision: String, tag: String): [Metric] + name: String! + public: Boolean + repository: Repository + updatedAt: DateTime +} + +type DockerRepositoryConnection { + edges: [DockerRepositoryEdge] + pageInfo: PageInfo! +} + +type DockerRepositoryEdge { + cursor: String + node: DockerRepository +} + +type DomainMapping { + account: Account + domain: String! + enableSso: Boolean + id: ID! + insertedAt: DateTime + updatedAt: DateTime +} + +type EabCredential { + cluster: String! + hmacKey: String! + id: ID! + insertedAt: DateTime + keyId: String! + provider: Provider! + updatedAt: DateTime +} + +type File { + blob: String! + contentType: String + filename: String + filesize: Int + height: Int + id: ID! + insertedAt: DateTime + mediaType: MediaType + message: IncidentMessage! + updatedAt: DateTime + width: Int +} + +type FileConnection { + edges: [FileEdge] + pageInfo: PageInfo! +} + +type FileContent { + content: String! + path: String! +} + +type FileEdge { + cursor: String + node: File +} + +type Follower { + id: ID! + incident: Incident + insertedAt: DateTime + preferences: NotificationPreferences + updatedAt: DateTime + user: User! +} + +type FollowerConnection { + edges: [FollowerEdge] + pageInfo: PageInfo! +} + +type FollowerEdge { + cursor: String + node: Follower +} + +type GeoMetric { + count: Int + country: String +} + +type GitConfiguration { + branch: String + name: String + root: String + url: String +} + +type Group { + description: String + global: Boolean + id: ID! + insertedAt: DateTime + name: String! + updatedAt: DateTime +} + +type GroupConnection { + edges: [GroupEdge] + pageInfo: PageInfo! +} + +type GroupEdge { + cursor: String + node: Group +} + +type GroupMember { + group: Group + id: ID! + insertedAt: DateTime + updatedAt: DateTime + user: User +} + +type GroupMemberConnection { + edges: [GroupMemberEdge] + pageInfo: PageInfo! +} + +type GroupMemberEdge { + cursor: String + node: GroupMember +} + +type GroupedTag { + count: Int! + tag: String! +} + +type GroupedTagConnection { + edges: [GroupedTagEdge] + pageInfo: PageInfo! +} + +type GroupedTagEdge { + cursor: String + node: GroupedTag +} + +type ImageDependency { + id: ID! + image: DockerImage! + insertedAt: DateTime + updatedAt: DateTime + version: Version! +} + +type ImageLayer { + diffId: String + digest: String +} + +type ImpersonationPolicy { + bindings: [ImpersonationPolicyBinding] + id: ID! + insertedAt: DateTime + updatedAt: DateTime +} + +type ImpersonationPolicyBinding { + group: Group + id: ID! + insertedAt: DateTime + updatedAt: DateTime + user: User +} + +type Incident { + clusterInformation: ClusterInformation + creator: User! + description: String + files(after: String, before: String, first: Int, last: Int): FileConnection + follower: Follower + followers(after: String, before: String, first: Int, last: Int): FollowerConnection + history(after: String, before: String, first: Int, last: Int): IncidentHistoryConnection + id: ID! + insertedAt: DateTime + messages(after: String, before: String, first: Int, last: Int): IncidentMessageConnection + nextResponseAt: DateTime + notificationCount: Int + owner: User + postmortem: Postmortem + repository: Repository! + severity: Int! + status: IncidentStatus! + subscription: SlimSubscription + tags: [Tag] + title: String! + updatedAt: DateTime +} + +type IncidentChange { + key: String! + next: String + prev: String +} + +type IncidentConnection { + edges: [IncidentEdge] + pageInfo: PageInfo! +} + +type IncidentDelta { + delta: Delta + payload: Incident +} + +type IncidentEdge { + cursor: String + node: Incident +} + +type IncidentHistory { + action: IncidentAction! + actor: User! + changes: [IncidentChange] + id: ID! + incident: Incident! + insertedAt: DateTime + updatedAt: DateTime +} + +type IncidentHistoryConnection { + edges: [IncidentHistoryEdge] + pageInfo: PageInfo! +} + +type IncidentHistoryEdge { + cursor: String + node: IncidentHistory +} + +type IncidentMessage { + creator: User! + entities: [MessageEntity] + file: File + id: ID! + incident: Incident! + insertedAt: DateTime + reactions: [Reaction] + text: String! + updatedAt: DateTime +} + +type IncidentMessageConnection { + edges: [IncidentMessageEdge] + pageInfo: PageInfo! +} + +type IncidentMessageDelta { + delta: Delta + payload: IncidentMessage +} + +type IncidentMessageEdge { + cursor: String + node: IncidentMessage +} + +"An installation of an application." +type Installation { + acmeKeyId: String + acmeSecret: String + "Whether the application should auto upgrade." + autoUpgrade: Boolean + "A YAML object of context." + context: Map + "The installation's ID." + id: ID! + insertedAt: DateTime + license: String + "The license key for the application." + licenseKey: String + "The OIDC provider for the application." + oidcProvider: OidcProvider + "The last ping time of an installed application." + pingedAt: DateTime + "The application that was installed." + repository: Repository + "The subscription for the application." + subscription: RepositorySubscription + "The tag to track for auto upgrades." + trackTag: String! + updatedAt: DateTime + "The user that installed the application." + user: User +} + +type InstallationConnection { + edges: [InstallationEdge] + pageInfo: PageInfo! +} + +type InstallationEdge { + cursor: String + node: Installation +} + +type Integration { + description: String + icon: String + id: ID! + insertedAt: DateTime + name: String! + publisher: Publisher + repository: Repository + sourceUrl: String + spec: Map + tags: [Tag] + type: String + updatedAt: DateTime +} + +type IntegrationConnection { + edges: [IntegrationEdge] + pageInfo: PageInfo! +} + +type IntegrationEdge { + cursor: String + node: Integration +} + +type IntegrationWebhook { + account: Account + actions: [String] + id: ID! + insertedAt: DateTime + logs(after: String, before: String, first: Int, last: Int): WebhookLogConnection + name: String! + secret: String! + updatedAt: DateTime + url: String! +} + +type IntegrationWebhookConnection { + edges: [IntegrationWebhookEdge] + pageInfo: PageInfo! +} + +type IntegrationWebhookEdge { + cursor: String + node: IntegrationWebhook +} + +type Invite { + account: Account + email: String + existing: Boolean! + expiresAt: DateTime + id: ID! + insertedAt: DateTime + secureId: String + updatedAt: DateTime + user: User +} + +type InviteConnection { + edges: [InviteEdge] + pageInfo: PageInfo! +} + +type InviteEdge { + cursor: String + node: Invite +} + +type Invoice { + amountDue: Int! + amountPaid: Int! + createdAt: DateTime + currency: String! + hostedInvoiceUrl: String + lines: [InvoiceItem] + number: String! + status: String +} + +type InvoiceConnection { + edges: [InvoiceEdge] + pageInfo: PageInfo! +} + +type InvoiceEdge { + cursor: String + node: Invoice +} + +type InvoiceItem { + amount: Int! + currency: String! + description: String +} + +type KeyBackup { + digest: String! + id: ID! + insertedAt: DateTime + name: String! + repositories: [String!] + updatedAt: DateTime + user: User! + value: String! +} + +type KeyBackupConnection { + edges: [KeyBackupEdge] + pageInfo: PageInfo! +} + +type KeyBackupEdge { + cursor: String + node: KeyBackup +} + +type License { + name: String + url: String +} + +type Limit { + dimension: String! + quantity: Int! +} + +type LineItem { + cost: Int! + dimension: String! + name: String! + period: String + type: PlanType +} + +type LoginMethodResponse { + authorizeUrl: String + loginMethod: LoginMethod! + token: String +} + +type LoginRequest { + requestedScope: [String] + subject: String +} + +type MessageEntity { + endIndex: Int + id: ID! + insertedAt: DateTime + startIndex: Int + text: String + type: MessageEntityType! + updatedAt: DateTime + user: User +} + +type Metric { + name: String! + tags: [MetricTag] + values: [MetricValue] +} + +type MetricTag { + name: String! + value: String! +} + +type MetricValue { + time: DateTime + value: Int +} + +type NetworkConfiguration { + pluralDns: Boolean + subdomain: String +} + +type Notification { + actor: User! + id: ID! + incident: Incident + insertedAt: DateTime + message: IncidentMessage + msg: String + repository: Repository + type: NotificationType! + updatedAt: DateTime + user: User! +} + +type NotificationConnection { + edges: [NotificationEdge] + pageInfo: PageInfo! +} + +type NotificationEdge { + cursor: String + node: Notification +} + +type NotificationPreferences { + incidentUpdate: Boolean + mention: Boolean + message: Boolean +} + +type OauthInfo { + authorizeUrl: String! + provider: OauthProvider! +} + +type OauthIntegration { + account: Account + id: ID! + insertedAt: DateTime + service: OauthService! + updatedAt: DateTime +} + +type OauthResponse { + redirectTo: String! +} + +type OauthSettings { + authMethod: OidcAuthMethod! + uriFormat: String! +} + +type OidcLogin { + city: String + country: String + id: ID! + insertedAt: DateTime + ip: String + latitude: String + longitude: String + owner: User + repository: Repository + updatedAt: DateTime + user: User +} + +type OidcLoginConnection { + edges: [OidcLoginEdge] + pageInfo: PageInfo! +} + +type OidcLoginEdge { + cursor: String + node: OidcLogin +} + +type OidcProvider { + authMethod: OidcAuthMethod! + bindings: [OidcProviderBinding] + clientId: String! + clientSecret: String! + configuration: OuathConfiguration + consent: ConsentRequest + id: ID! + insertedAt: DateTime + redirectUris: [String] + updatedAt: DateTime +} + +type OidcProviderBinding { + group: Group + id: ID! + insertedAt: DateTime + updatedAt: DateTime + user: User +} + +type OidcSettings { + authMethod: OidcAuthMethod! + domainKey: String + subdomain: Boolean + uriFormat: String + uriFormats: [String] +} + +type OidcStepResponse { + consent: ConsentRequest + login: LoginRequest + repository: Repository +} + +type OnboardingChecklist { + dismissed: Boolean + status: OnboardingChecklistState +} + +type OuathConfiguration { + authorizationEndpoint: String + issuer: String + jwksUri: String + tokenEndpoint: String + userinfoEndpoint: String +} + +type PackageScan { + errors: [ScanError] + grade: ImageGrade + id: ID! + insertedAt: DateTime + updatedAt: DateTime + violations: [ScanViolation] +} + +type PageInfo { + "When paginating forwards, the cursor to continue." + endCursor: String + "When paginating forwards, are there more items?" + hasNextPage: Boolean! + "When paginating backwards, are there more items?" + hasPreviousPage: Boolean! + "When paginating backwards, the cursor to continue." + startCursor: String +} + +type PersistedToken { + audits(after: String, before: String, first: Int, last: Int): PersistedTokenAuditConnection + id: ID + insertedAt: DateTime + metrics: [GeoMetric] + token: String + updatedAt: DateTime +} + +type PersistedTokenAudit { + city: String + count: Int + country: String + id: ID + insertedAt: DateTime + ip: String + latitude: String + longitude: String + timestamp: DateTime + updatedAt: DateTime +} + +type PersistedTokenAuditConnection { + edges: [PersistedTokenAuditEdge] + pageInfo: PageInfo! +} + +type PersistedTokenAuditEdge { + cursor: String + node: PersistedTokenAudit +} + +type PersistedTokenConnection { + edges: [PersistedTokenEdge] + pageInfo: PageInfo! +} + +type PersistedTokenEdge { + cursor: String + node: PersistedToken +} + +type Plan { + cost: Int! + default: Boolean + id: ID! + insertedAt: DateTime + lineItems: PlanLineItems + metadata: PlanMetadata + name: String! + period: String + serviceLevels: [ServiceLevel] + updatedAt: DateTime + visible: Boolean! +} + +type PlanFeature { + description: String! + name: String! +} + +type PlanFeatures { + audit: Boolean + userManagement: Boolean + vpn: Boolean +} + +type PlanLineItems { + included: [Limit] + items: [LineItem] +} + +type PlanMetadata { + features: [PlanFeature] + freeform: Map +} + +type PlatformMetrics { + clusters: Int + publishers: Int + repositories: Int + rollouts: Int +} + +type PlatformPlan { + cost: Int! + enterprise: Boolean + features: PlanFeatures + id: ID! + insertedAt: DateTime + lineItems: [PlatformPlanItem] + name: String! + period: PaymentPeriod! + updatedAt: DateTime + visible: Boolean! +} + +type PlatformPlanItem { + cost: Int! + dimension: LineItemDimension! + externalId: String + name: String! + period: PaymentPeriod! +} + +type PlatformSubscription { + externalId: String + id: ID! + lineItems: [PlatformSubscriptionLineItems] + plan: PlatformPlan +} + +type PlatformSubscriptionLineItems { + dimension: LineItemDimension! + externalId: String + quantity: Int! +} + +type PluralConfiguration { + gitCommit: String + registry: String + stripeConnectId: String + stripePublishableKey: String +} + +type PolicyBinding { + group: Group + id: ID! + insertedAt: DateTime + updatedAt: DateTime + user: User +} + +type Postmortem { + actionItems: [ActionItem] + content: String! + creator: User! + id: ID! + insertedAt: DateTime + updatedAt: DateTime +} + +type PublicKey { + content: String! + digest: String! + id: ID! + insertedAt: DateTime + name: String! + updatedAt: DateTime + user: User! +} + +type PublicKeyConnection { + edges: [PublicKeyEdge] + pageInfo: PageInfo! +} + +type PublicKeyEdge { + cursor: String + node: PublicKey +} + +type Publisher { + address: Address + avatar: String + backgroundColor: String + billingAccountId: String + community: Community + description: String + id: ID + insertedAt: DateTime + name: String! + owner: User + phone: String + repositories: [Repository] + updatedAt: DateTime +} + +type PublisherConnection { + edges: [PublisherEdge] + pageInfo: PageInfo! +} + +type PublisherEdge { + cursor: String + node: Publisher +} + +type Reaction { + creator: User! + insertedAt: DateTime + message: IncidentMessage! + name: String! + updatedAt: DateTime +} + +type Recipe { + description: String + id: ID! + insertedAt: DateTime + name: String! + oidcEnabled: Boolean + oidcSettings: OidcSettings + primary: Boolean + private: Boolean + provider: Provider + recipeDependencies: [Recipe] + recipeSections: [RecipeSection] + repository: Repository + restricted: Boolean + tests: [RecipeTest] + updatedAt: DateTime +} + +type RecipeCondition { + field: String! + operation: Operation! + value: String +} + +type RecipeConfiguration { + args: [String] + condition: RecipeCondition + default: String + documentation: String + functionName: String + longform: String + name: String + optional: Boolean + placeholder: String + type: Datatype + validation: RecipeValidation +} + +type RecipeConnection { + edges: [RecipeEdge] + pageInfo: PageInfo! +} + +type RecipeEdge { + cursor: String + node: Recipe +} + +type RecipeItem { + chart: Chart + configuration: [RecipeConfiguration] + id: ID + insertedAt: DateTime + recipeSection: RecipeSection + terraform: Terraform + updatedAt: DateTime +} + +type RecipeSection { + configuration: [RecipeConfiguration] + id: ID + index: Int + insertedAt: DateTime + recipe: Recipe + recipeItems: [RecipeItem] + repository: Repository + updatedAt: DateTime +} + +type RecipeTest { + args: [TestArgument] + message: String + name: String! + type: TestType! +} + +type RecipeValidation { + message: String! + regex: String + type: ValidationType! +} + +"Container for all resources to create an application." +type Repository { + "The artifacts of the application." + artifacts: [Artifact] + "The category of the application." + category: Category + "The community links of the application." + community: Community + darkIcon: String + "The default tag to deploy." + defaultTag: String + "The description of the application." + description: String + "The documentation of the application." + docs: [FileContent] + "The documentation of the application." + documentation: String + "If the application can be edited by the current user." + editable: Boolean + "The git URL of the application." + gitUrl: String + "The homepage of the application." + homepage: String + icon: String + "The application's ID." + id: ID! + insertedAt: DateTime + "The installation of the application by a user." + installation: Installation + "The license of the application." + license: License + "The main branch of the application." + mainBranch: String + "The name of the application." + name: String! + "Notes about the application rendered after deploying and displayed to the user." + notes: String + "The OAuth settings for the application." + oauthSettings: OauthSettings + "The available plans for the application." + plans: [Plan] + "Whether the application is private." + private: Boolean + "The application's public key." + publicKey: String + "The application publisher." + publisher: Publisher + "The README of the application." + readme: String + "The recipes used to install the application." + recipes: [Recipe] + "A map of secrets of the application." + secrets: Map + "The tags of the application." + tags: [Tag] + "Whether the application is trending." + trending: Boolean + updatedAt: DateTime + "Whether the application is verified." + verified: Boolean +} + +type RepositoryConnection { + edges: [RepositoryEdge] + pageInfo: PageInfo! +} + +type RepositoryEdge { + cursor: String + node: Repository +} + +type RepositorySubscription { + customerId: String + externalId: String + id: ID! + installation: Installation + invoices(after: String, before: String, first: Int, last: Int): InvoiceConnection + lineItems: SubscriptionLineItems + plan: Plan +} + +type RepositorySubscriptionConnection { + edges: [RepositorySubscriptionEdge] + pageInfo: PageInfo! +} + +type RepositorySubscriptionEdge { + cursor: String + node: RepositorySubscription +} + +type ResetToken { + email: String! + externalId: ID! + id: ID! + insertedAt: DateTime + type: ResetTokenType! + updatedAt: DateTime + user: User! +} + +type Role { + account: Account + description: String + id: ID! + insertedAt: DateTime + name: String! + permissions: [Permission] + repositories: [String] + roleBindings: [RoleBinding] + updatedAt: DateTime +} + +type RoleBinding { + group: Group + id: ID! + insertedAt: DateTime + updatedAt: DateTime + user: User +} + +type RoleConnection { + edges: [RoleEdge] + pageInfo: PageInfo! +} + +type RoleEdge { + cursor: String + node: Role +} + +type Roles { + admin: Boolean +} + +type Rollout { + count: Int + cursor: ID + event: String + heartbeat: DateTime + id: ID! + insertedAt: DateTime + repository: Repository + status: RolloutStatus! + updatedAt: DateTime +} + +type RolloutConnection { + edges: [RolloutEdge] + pageInfo: PageInfo! +} + +type RolloutDelta { + delta: Delta + payload: Rollout +} + +type RolloutEdge { + cursor: String + node: Rollout +} + +type RootMutationType { + acceptIncident(id: ID!): Incident + acceptLogin(challenge: String!): OauthResponse + acquireLock(repository: String!): ApplyLock + cancelPlatformSubscription: PlatformSubscription + completeIncident(id: ID!, postmortem: PostmortemAttributes!): Incident + createArtifact(attributes: ArtifactAttributes!, repositoryId: ID, repositoryName: String): Artifact + createCard(address: AddressAttributes, source: String!): Account + "Create a new cluster." + createCluster( + "The input attributes for the cluster that will be created." + attributes: ClusterAttributes! + ): Cluster + "adds a dependency for this cluster to gate future upgrades" + createClusterDependency(destId: ID!, sourceId: ID!): ClusterDependency + createCrd(attributes: CrdAttributes!, chartId: ID, chartName: ChartName): Crd + createDemoProject: DemoProject + createDnsRecord(attributes: DnsRecordAttributes!, cluster: String!, provider: Provider!): DnsRecord + createDomain(attributes: DnsDomainAttributes!): DnsDomain + createGroup(attributes: GroupAttributes!): Group + createGroupMember(groupId: ID!, userId: ID!): GroupMember + createIncident(attributes: IncidentAttributes!, repository: String, repositoryId: ID): Incident + createInstallation(repositoryId: ID!): Installation + createIntegration(attributes: IntegrationAttributes!, repositoryName: String!): Integration + createIntegrationWebhook(attributes: IntegrationWebhookAttributes!): IntegrationWebhook + createInvite(attributes: InviteAttributes!): Invite + createKeyBackup(attributes: KeyBackupAttributes!): KeyBackup + createMessage(attributes: IncidentMessageAttributes!, incidentId: ID!): IncidentMessage + createOauthIntegration(attributes: OauthAttributes!): OauthIntegration + createOidcProvider( + attributes: OidcAttributes!, + "The installation ID" + installationId: ID! + ): OidcProvider + createPlan(attributes: PlanAttributes!, repositoryId: ID!): Plan + createPlatformSubscription(planId: ID!): PlatformSubscription + createPublicKey(attributes: PublicKeyAttributes!): PublicKey + createPublisher(attributes: PublisherAttributes!): Publisher + createQueue(attributes: UpgradeQueueAttributes!): UpgradeQueue + createReaction(messageId: ID!, name: String!): IncidentMessage + createRecipe(attributes: RecipeAttributes!, repositoryId: String, repositoryName: String): Recipe + createRepository(attributes: RepositoryAttributes!, id: ID): Repository + createResetToken(attributes: ResetTokenAttributes!): Boolean + createRole(attributes: RoleAttributes!): Role + createServiceAccount(attributes: ServiceAccountAttributes!): User + createShell(attributes: CloudShellAttributes!): CloudShell + createStack(attributes: StackAttributes!): Stack + createSubscription(attributes: SubscriptionAttributes, installationId: ID!, planId: ID!): RepositorySubscription + createTerraform(attributes: TerraformAttributes!, repositoryId: ID!): Terraform + createTest(attributes: TestAttributes!, name: String, repositoryId: ID): Test + createToken: PersistedToken + createUserEvent(attributes: UserEventAttributes!): Boolean + createWebhook(attributes: WebhookAttributes!): Webhook + createZoom(attributes: MeetingAttributes!): ZoomMeeting + deleteCard(id: ID!): Account + deleteChartInstallation(id: ID!): ChartInstallation + "Delete a cluster." + deleteCluster( + "The name of the cluster." + name: String!, + "The cluster's cloud provider." + provider: Provider! + ): Cluster + deleteDemoProject: DemoProject + deleteDnsRecord(name: String!, type: DnsRecordType!): DnsRecord + deleteDomain(id: ID!): DnsDomain + deleteEabKey(cluster: String, id: ID, provider: Provider): EabCredential + deleteGroup(groupId: ID!): Group + deleteGroupMember(groupId: ID!, userId: ID!): GroupMember + deleteIncident(id: ID!): Incident + deleteInstallation(id: ID!): Installation + deleteIntegrationWebhook(id: ID!): IntegrationWebhook + deleteInvite(id: ID, secureId: String): Invite + deleteKeyBackup(name: String!): KeyBackup + deleteMessage(id: ID!): IncidentMessage + deletePlatformSubscription: Account + deletePublicKey(id: ID!): PublicKey + deleteReaction(messageId: ID!, name: String!): IncidentMessage + deleteRecipe(id: ID!): Recipe + deleteRepository(repositoryId: ID!): Repository + deleteRole(id: ID!): Role + deleteShell: CloudShell + deleteStack(name: String!): Stack + deleteTerraform(id: ID!): Terraform + deleteToken(id: ID!): PersistedToken + deleteUser(id: ID!): User + destroyCluster(domain: String!, name: String!, provider: Provider!): Boolean + deviceLogin: DeviceLogin + externalToken: String + followIncident(attributes: FollowerAttributes!, id: ID!): Follower + impersonateServiceAccount(email: String, id: ID): User + installBundle(context: ContextAttributes!, name: String!, oidc: Boolean!, repo: String!): [Installation] + installChart(attributes: ChartInstallationAttributes!, installationId: ID!): ChartInstallation + installRecipe(context: Map!, recipeId: ID!): [Installation] + installStack(name: String!, provider: Provider!): [Recipe] + installStackShell(context: ContextAttributes!, name: String!, oidc: Boolean!): [Recipe] + installTerraform(attributes: TerraformInstallationAttributes!, installationId: ID!): TerraformInstallation + linkPublisher(token: String!): Publisher + login(deviceToken: String, email: String!, password: String!): User + loginToken(deviceToken: String, token: String!): User + oauthCallback(code: String!, deviceToken: String, host: String, provider: OauthProvider!): User + oauthConsent(challenge: String!, scopes: [String]): OauthResponse + passwordlessLogin(token: String!): User + pingWebhook(id: ID!, message: String, repo: String!): WebhookResponse + "moves up the upgrade waterline for a user" + promote: User + provisionDomain(name: String!): DnsDomain + publishLogs(id: ID!, logs: String!): TestStep + quickStack(provider: Provider!, repositoryIds: [ID]): Stack + readNotifications(incidentId: ID): Int + realizeInvite(id: String!): User + realizeResetToken(attributes: ResetTokenRealization!, id: ID!): Boolean + rebootShell: CloudShell + releaseLock(attributes: LockAttributes!, repository: String!): ApplyLock + resetInstallations: Int + restartShell: Boolean + setupShell: CloudShell + signup(account: AccountAttributes, attributes: UserAttributes!, deviceToken: String, inviteId: String): User + ssoCallback(code: String!, deviceToken: String): User + stopShell: Boolean + transferDemoProject(organizationId: String!): DemoProject + unfollowIncident(id: ID!): Follower + uninstallTerraform(id: ID!): TerraformInstallation + unlockRepository(name: String!): Int + updateAccount(attributes: AccountAttributes!): Account + updateChart(attributes: ChartAttributes!, id: ID!): Chart + updateChartInstallation(attributes: ChartInstallationAttributes!, chartInstallationId: ID!): ChartInstallation + updateDockerRepository(attributes: DockerRepositoryAttributes!, id: ID!): DockerRepository + updateDomain(attributes: DnsDomainAttributes!, id: ID!): DnsDomain + updateGroup(attributes: GroupAttributes!, groupId: ID!): Group + updateIncident(attributes: IncidentAttributes!, id: ID!): Incident + updateInstallation(attributes: InstallationAttributes!, id: ID!): Installation + updateIntegrationWebhook(attributes: IntegrationWebhookAttributes!, id: ID!): IntegrationWebhook + updateLineItem(attributes: LimitAttributes!, subscriptionId: ID!): RepositorySubscription + updateMessage(attributes: IncidentMessageAttributes!, id: ID!): IncidentMessage + updateOidcProvider(attributes: OidcAttributes!, installationId: ID!): OidcProvider + updatePlan(planId: ID!, subscriptionId: ID!): RepositorySubscription + updatePlanAttributes(attributes: UpdatablePlanAttributes!, id: ID!): Plan + updatePlatformPlan(planId: ID!): PlatformSubscription + updatePublisher(attributes: PublisherAttributes!): Publisher + updateRepository(attributes: RepositoryAttributes!, repositoryId: ID, repositoryName: String): Repository + updateRole(attributes: RoleAttributes!, id: ID!): Role + updateServiceAccount(attributes: ServiceAccountAttributes!, id: ID!): User + updateShell(attributes: CloudShellAttributes!): CloudShell + updateShellConfiguration(context: Map!): Boolean + updateStep(attributes: TestStepAttributes!, id: ID!): TestStep + updateTerraform(attributes: TerraformAttributes!, id: ID!): Terraform + updateTest(attributes: TestAttributes!, id: ID!): Test + updateUser(attributes: UserAttributes!, id: ID): User + updateVersion(attributes: VersionAttributes!, id: ID, spec: VersionSpec): Version + uploadTerraform(attributes: TerraformAttributes!, name: String!, repositoryName: String!): Terraform + upsertOidcProvider(attributes: OidcAttributes!, installationId: ID!): OidcProvider + upsertRepository(attributes: RepositoryAttributes!, name: String!, publisher: String!): Repository +} + +type RootQueryType { + account: Account + auditMetrics: [GeoMetric] + audits(after: String, before: String, first: Int, last: Int): AuditConnection + categories: [CategoryInfo] + category(name: Category!): CategoryInfo + chart(id: ID!): Chart + chartInstallations(after: String, before: String, first: Int, last: Int, repositoryId: ID!): ChartInstallationConnection + charts(after: String, before: String, first: Int, last: Int, repositoryId: ID!): ChartConnection + closure(id: ID!, type: DependencyType!): [ClosureItem] + "Get a cluster by its ID." + cluster( + "The ID of the cluster." + id: ID! + ): Cluster + "Get a list of clusters owned by the current account." + clusters(after: String, before: String, first: Int, last: Int): ClusterConnection + configuration: PluralConfiguration + deferredUpdates(after: String, before: String, chartInstallationId: ID, first: Int, last: Int, terraformInstallationId: ID): DeferredUpdateConnection + demoProject(id: ID): DemoProject + dnsDomain(id: ID!): DnsDomain + dnsDomains(after: String, before: String, first: Int, last: Int, q: String): DnsDomainConnection + dnsRecords(after: String, before: String, cluster: String, domainId: ID, first: Int, last: Int, provider: Provider): DnsRecordConnection + dockerImage(id: ID!): DockerImage + dockerImages(after: String, before: String, dockerRepositoryId: ID!, first: Int, last: Int, q: String): DockerImageConnection + dockerRepositories(after: String, before: String, first: Int, last: Int, repositoryId: ID!): DockerRepositoryConnection + eabCredential(cluster: String!, provider: Provider!): EabCredential + eabCredentials: [EabCredential] + groupMembers(after: String, before: String, first: Int, groupId: ID!, last: Int): GroupMemberConnection + groups(after: String, before: String, first: Int, last: Int, q: String): GroupConnection + helpQuestion(prompt: String!): String + incident(id: ID!): Incident + incidents(after: String, before: String, filters: [IncidentFilter], first: Int, last: Int, order: Order, q: String, repositoryId: ID, sort: IncidentSort, supports: Boolean): IncidentConnection + installation(id: ID, name: String): Installation + installations(after: String, before: String, first: Int, last: Int): InstallationConnection + integrationWebhook(id: ID!): IntegrationWebhook + integrationWebhooks(after: String, before: String, first: Int, last: Int): IntegrationWebhookConnection + integrations(after: String, before: String, first: Int, last: Int, repositoryId: ID, repositoryName: String, tag: String, type: String): IntegrationConnection + invite(id: String!): Invite + invites(after: String, before: String, first: Int, last: Int): InviteConnection + invoices(after: String, before: String, first: Int, last: Int): InvoiceConnection + keyBackup(name: String!): KeyBackup + keyBackups(after: String, before: String, first: Int, last: Int): KeyBackupConnection + loginMethod(email: String!, host: String): LoginMethodResponse + loginMetrics: [GeoMetric] + me: User + notifications(after: String, before: String, cli: Boolean, first: Int, incidentId: ID, last: Int): NotificationConnection + oauthConsent(challenge: String!): Repository + oauthIntegrations: [OauthIntegration] + oauthLogin(challenge: String!): Repository + oauthUrls(host: String): [OauthInfo] + oidcConsent(challenge: String!): OidcStepResponse + oidcLogin(challenge: String!): OidcStepResponse + oidcLogins(after: String, before: String, first: Int, last: Int): OidcLoginConnection + platformMetrics: PlatformMetrics + platformPlans: [PlatformPlan] + platformSubscription: PlatformSubscription + publicKeys(after: String, before: String, emails: [String], first: Int, last: Int): PublicKeyConnection + publisher(id: ID): Publisher + publishers(accountId: ID, after: String, before: String, first: Int, last: Int, publishable: Boolean): PublisherConnection + recipe(id: ID, name: String, repo: String): Recipe + recipes(after: String, before: String, first: Int, last: Int, provider: Provider, repositoryId: ID, repositoryName: String): RecipeConnection + repositories(after: String, before: String, categories: [Category], category: Category, first: Int, installed: Boolean, last: Int, provider: Provider, publisherId: ID, publishers: [ID], q: String, supports: Boolean, tag: String, tags: [String]): RepositoryConnection + "Get an application by its ID or name." + repository( + "The ID of the application." + id: ID, + "The name of the application." + name: String + ): Repository + repositorySubscription(id: ID!): RepositorySubscription + resetToken(id: ID!): ResetToken + role(id: ID!): Role + roles(after: String, before: String, first: Int, last: Int, q: String, userId: ID): RoleConnection + rollouts(after: String, before: String, first: Int, last: Int, repositoryId: ID!): RolloutConnection + scaffold(application: String!, category: Category!, ingress: Boolean, postgres: Boolean, publisher: String!): [ScaffoldFile] + scmAuthorization: [AuthorizationUrl] + scmToken(code: String!, provider: ScmProvider!): String + searchRepositories(after: String, before: String, first: Int, last: Int, query: String!): RepositoryConnection + searchUsers(after: String, before: String, first: Int, incidentId: ID!, last: Int, q: String!): UserConnection + shell: CloudShell + shellConfiguration: ShellConfiguration + stack(name: String!, provider: Provider!): Stack + stacks(after: String, before: String, featured: Boolean, first: Int, last: Int): StackConnection + subscriptions(after: String, before: String, first: Int, last: Int): RepositorySubscriptionConnection + tags(after: String, before: String, first: Int, id: ID, last: Int, q: String, type: TagGroup!): GroupedTagConnection + terraform(after: String, before: String, first: Int, last: Int, repositoryId: ID!): TerraformConnection + terraformInstallations(after: String, before: String, first: Int, last: Int, repositoryId: ID!): TerraformInstallationConnection + terraformModule(id: ID!): Terraform + terraformProvider(name: Provider!, vsn: String): TerraformProvider + terraformProviders: [Provider] + test(id: ID!): Test + testLogs(id: ID!, step: ID!): String + tests(after: String, before: String, first: Int, last: Int, repositoryId: ID, versionId: ID): TestConnection + token(id: ID!): PersistedToken + tokens(after: String, before: String, first: Int, last: Int): PersistedTokenConnection + upgradeQueue(id: ID): UpgradeQueue + upgradeQueues: [UpgradeQueue] + users(after: String, all: Boolean, before: String, first: Int, last: Int, q: String, serviceAccount: Boolean): UserConnection + versions(after: String, before: String, chartId: ID, first: Int, last: Int, terraformId: ID): VersionConnection + webhooks(after: String, before: String, first: Int, last: Int): WebhookConnection +} + +type RootSubscriptionType { + incidentDelta(incidentId: ID, repositoryId: ID): IncidentDelta + incidentMessageDelta(incidentId: ID): IncidentMessageDelta + notification: Notification + rolloutDelta(repositoryId: ID!): RolloutDelta + testDelta(repositoryId: ID!): TestDelta + testLogs(testId: ID!): StepLogs + upgrade(id: ID): Upgrade + upgradeQueueDelta: UpgradeQueueDelta +} + +type ScaffoldFile { + content: String + path: String +} + +type ScanError { + message: String +} + +type ScanViolation { + category: String + description: String + file: String + insertedAt: DateTime + line: Int + resourceName: String + resourceType: String + ruleId: String + ruleName: String + severity: VulnGrade + updatedAt: DateTime +} + +type ServiceLevel { + maxSeverity: Int + minSeverity: Int + responseTime: Int +} + +type ShellConfiguration { + buckets: [String] + contextConfiguration: Map + domains: [String] + git: GitConfiguration + workspace: ShellWorkspace +} + +type ShellStatus { + containersReady: Boolean + initialized: Boolean + podScheduled: Boolean + ready: Boolean +} + +type ShellWorkspace { + bucketPrefix: String + cluster: String + network: NetworkConfiguration + region: String +} + +type SlimSubscription { + id: ID! + lineItems: SubscriptionLineItems + plan: Plan +} + +type Stack { + bundles: [Recipe] + collections: [StackCollection] + community: Community + creator: User + description: String + displayName: String + featured: Boolean + id: ID! + insertedAt: DateTime + name: String! + sections: [RecipeSection] + updatedAt: DateTime +} + +type StackCollection { + bundles: [StackRecipe] + id: ID! + insertedAt: DateTime + provider: Provider! + updatedAt: DateTime +} + +type StackConnection { + edges: [StackEdge] + pageInfo: PageInfo! +} + +type StackEdge { + cursor: String + node: Stack +} + +type StackRecipe { + id: ID! + insertedAt: DateTime + recipe: Recipe! + updatedAt: DateTime +} + +type StepLogs { + logs: [String] + step: TestStep +} + +type SubscriptionLineItems { + items: [Limit] +} + +type Tag { + id: ID! + tag: String! +} + +type Terraform { + dependencies: Dependencies + description: String + editable: Boolean + id: ID + insertedAt: DateTime + installation: TerraformInstallation + latestVersion: String + name: String + package: String + readme: String + repository: Repository + updatedAt: DateTime + valuesTemplate: String +} + +type TerraformConnection { + edges: [TerraformEdge] + pageInfo: PageInfo! +} + +type TerraformEdge { + cursor: String + node: Terraform +} + +type TerraformInstallation { + id: ID + insertedAt: DateTime + installation: Installation + terraform: Terraform + updatedAt: DateTime + version: Version +} + +type TerraformInstallationConnection { + edges: [TerraformInstallationEdge] + pageInfo: PageInfo! +} + +type TerraformInstallationEdge { + cursor: String + node: TerraformInstallation +} + +type TerraformProvider { + content: String + name: Provider +} + +type Test { + creator: User + id: ID! + insertedAt: DateTime + name: String + promoteTag: String! + repository: Repository + sourceTag: String! + status: TestStatus! + steps: [TestStep] + tags: [String!] + updatedAt: DateTime +} + +type TestArgument { + key: String! + name: String! + repo: String! +} + +type TestConnection { + edges: [TestEdge] + pageInfo: PageInfo! +} + +type TestDelta { + delta: Delta + payload: Test +} + +type TestEdge { + cursor: String + node: Test +} + +type TestStep { + description: String! + hasLogs: Boolean + id: ID! + insertedAt: DateTime + name: String! + status: TestStatus! + updatedAt: DateTime +} + +type Upgrade { + id: ID! + insertedAt: DateTime + message: String + repository: Repository + type: UpgradeType + updatedAt: DateTime +} + +type UpgradeConnection { + edges: [UpgradeEdge] + pageInfo: PageInfo! +} + +type UpgradeEdge { + cursor: String + node: Upgrade +} + +"The pending upgrades for a repository" +type UpgradeInfo { + count: Int + installation: Installation +} + +type UpgradeQueue { + acked: ID + domain: String + git: String + id: ID! + insertedAt: DateTime + name: String + pingedAt: DateTime + provider: Provider + updatedAt: DateTime + upgrades(after: String, before: String, first: Int, last: Int): UpgradeConnection + user: User! +} + +type UpgradeQueueDelta { + delta: Delta + payload: UpgradeQueue +} + +type User { + account: Account! + address: Address + avatar: String + backgroundColor: String + boundRoles: [Role] + cards(after: String, before: String, first: Int, last: Int): CardConnection + defaultQueueId: ID + "If a user has reached the demo project usage limit." + demoed: Boolean + demoing: Boolean + email: String! + emailConfirmBy: DateTime + emailConfirmed: Boolean + hasInstallations: Boolean + id: ID! + impersonationPolicy: ImpersonationPolicy + insertedAt: DateTime + jwt: String + loginMethod: LoginMethod + name: String! + onboarding: OnboardingState + onboardingChecklist: OnboardingChecklist + phone: String + provider: Provider + publisher: Publisher + roles: Roles + serviceAccount: Boolean + updatedAt: DateTime +} + +type UserConnection { + edges: [UserEdge] + pageInfo: PageInfo! +} + +type UserEdge { + cursor: String + node: User +} + +"The version of a package." +type Version { + chart: Chart + crds: [Crd] + dependencies: Dependencies + helm: Map + id: ID! + imageDependencies: [ImageDependency] + insertedAt: DateTime + package: String + readme: String + scan: PackageScan + tags: [VersionTag] + "The template engine used to render the valuesTemplate." + templateType: TemplateType + terraform: Terraform + updatedAt: DateTime + valuesTemplate: String + version: String! +} + +type VersionConnection { + edges: [VersionEdge] + pageInfo: PageInfo! +} + +type VersionEdge { + cursor: String + node: Version +} + +type VersionTag { + chart: Chart + id: ID! + insertedAt: DateTime + tag: String! + updatedAt: DateTime + version: Version +} + +type Vulnerability { + cvss: Cvss + description: String + fixedVersion: String + id: ID! + insertedAt: DateTime + installedVersion: String + layer: ImageLayer + package: String + score: Float + severity: VulnGrade + source: String + title: String + updatedAt: DateTime + url: String + vulnerabilityId: String +} + +type Webhook { + id: ID + insertedAt: DateTime + secret: String + updatedAt: DateTime + url: String + user: User +} + +type WebhookConnection { + edges: [WebhookEdge] + pageInfo: PageInfo! +} + +type WebhookEdge { + cursor: String + node: Webhook +} + +type WebhookLog { + id: ID! + insertedAt: DateTime + payload: Map + response: String + state: WebhookLogState! + status: Int + updatedAt: DateTime + webhook: IntegrationWebhook +} + +type WebhookLogConnection { + edges: [WebhookLogEdge] + pageInfo: PageInfo! +} + +type WebhookLogEdge { + cursor: String + node: WebhookLog +} + +type WebhookResponse { + body: String + headers: Map + statusCode: Int! +} + +type Wirings { + helm: Map + terraform: Map +} + +type ZoomMeeting { + joinUrl: String! + password: String +} + +enum ActionItemType { + BLOG + ISSUE + PULL +} + +enum ArtifactPlatform { + ANDROID + FREEBSD + LINUX + MAC + OPENBSD + SOLARIS + WINDOWS +} + +enum ArtifactType { + CLI + DESKTOP + MOBILE +} + +"Application categories." +enum Category { + DATA + DATABASE + DEVOPS + MESSAGING + NETWORK + PRODUCTIVITY + SECURITY + STORAGE +} + +enum Datatype { + BOOL + BUCKET + DOMAIN + FILE + FUNCTION + INT + PASSWORD + STRING +} + +enum Delta { + CREATE + DELETE + UPDATE +} + +enum DemoProjectState { + CREATED + ENABLED + READY +} + +enum DependencyType { + HELM + TERRAFORM +} + +enum DnsRecordType { + A + AAAA + CNAME + TXT +} + +enum ImageGrade { + A + B + C + D + F +} + +enum IncidentAction { + ACCEPT + COMPLETE + CREATE + EDIT + SEVERITY + STATUS +} + +enum IncidentFilterType { + FOLLOWING + NOTIFICATIONS + STATUS + TAG +} + +enum IncidentSort { + INSERTED_AT + SEVERITY + STATUS + TITLE +} + +enum IncidentStatus { + COMPLETE + IN_PROGRESS + OPEN + RESOLVED +} + +enum LineItemDimension { + CLUSTER + USER +} + +enum LoginMethod { + GITHUB + GOOGLE + PASSWORD + PASSWORDLESS + SSO +} + +enum MediaType { + AUDIO + IMAGE + OTHER + PDF + VIDEO +} + +enum MessageEntityType { + EMOJI + MENTION +} + +enum NotificationType { + INCIDENT_UPDATE + LOCKED + MENTION + MESSAGE +} + +enum OauthProvider { + GITHUB + GITLAB + GOOGLE +} + +enum OauthService { + ZOOM +} + +"Supported OIDC authentication methods." +enum OidcAuthMethod { + BASIC + POST +} + +enum OnboardingChecklistState { + CONFIGURED + CONSOLE_INSTALLED + FINISHED + NEW +} + +enum OnboardingState { + ACTIVE + INSTALLED + NEW + ONBOARDED +} + +enum Operation { + EQ + GT + GTE + LT + LTE + NOT + PREFIX + SUFFIX +} + +enum Order { + ASC + DESC +} + +enum PaymentPeriod { + MONTHLY + YEARLY +} + +enum Permission { + BILLING + INSTALL + INTEGRATIONS + PUBLISH + SUPPORT + USERS +} + +enum PlanType { + LICENSED + METERED +} + +enum Provider { + AWS + AZURE + CUSTOM + EQUINIX + GCP + GENERIC + KIND + KUBERNETES +} + +enum RecipeItemType { + HELM + TERRAFORM +} + +enum ResetTokenType { + EMAIL + PASSWORD +} + +enum RolloutStatus { + FINISHED + QUEUED + RUNNING +} + +enum ScmProvider { + DEMO + GITHUB + GITLAB + MANUAL +} + +"Possible cluster sources." +enum Source { + DEFAULT + DEMO + SHELL +} + +enum SpecDatatype { + BOOL + FLOAT + INT + LIST + OBJECT + STRING +} + +enum TagGroup { + INTEGRATIONS + REPOSITORIES +} + +"Template engines that can be used at build time." +enum TemplateType { + GOTEMPLATE + JAVASCRIPT + LUA +} + +enum TestStatus { + FAILED + QUEUED + RUNNING + SUCCEEDED +} + +enum TestType { + GIT +} + +enum UpgradeType { + APPROVAL + BOUNCE + DEDICATED + DEPLOY +} + +enum UserEventStatus { + ERROR + OK +} + +enum ValidationType { + REGEX +} + +enum VulnGrade { + CRITICAL + HIGH + LOW + MEDIUM + NONE +} + +enum VulnRequirement { + NONE + REQUIRED +} + +enum VulnVector { + ADJACENT + LOCAL + NETWORK + PHYSICAL +} + +enum WebhookLogState { + DELIVERED + FAILED + SENDING +} + +""" + +The `DateTime` scalar type represents a date and time in the UTC +timezone. The DateTime appears in a JSON response as an ISO8601 formatted +string, including UTC timezone ("Z"). The parsed date and time string will +be converted to UTC if there is an offset. +""" +scalar DateTime + +scalar Map + +scalar UploadOrUrl + +scalar Yaml + +input AccountAttributes { + billingAddress: AddressAttributes + domainMappings: [DomainMappingInput] + icon: UploadOrUrl + name: String +} + +input ActionItemAttributes { + link: String! + type: ActionItemType! +} + +input AddressAttributes { + city: String! + country: String! + line1: String! + line2: String! + name: String + state: String! + zip: String! +} + +input ArtifactAttributes { + arch: String + blob: UploadOrUrl + name: String! + platform: String! + readme: String! + type: String! +} + +input AwsShellCredentialsAttributes { + accessKeyId: String! + secretAccessKey: String! +} + +input AzureShellCredentialsAttributes { + clientId: String! + clientSecret: String! + storageAccount: String! + subscriptionId: String! + tenantId: String! +} + +input BindingAttributes { + groupId: ID + id: ID + userId: ID +} + +input ChartAttributes { + tags: [VersionTagAttributes] +} + +input ChartInstallationAttributes { + chartId: ID + versionId: ID +} + +input ChartName { + chart: String + repo: String +} + +input CloudShellAttributes { + credentials: ShellCredentialsAttributes! + demoId: ID + provider: Provider + scm: ScmAttributes + workspace: WorkspaceAttributes! +} + +"Input for creating or updating a cluster." +input ClusterAttributes { + "The URL of the console running on the cluster." + consoleUrl: String + "The domain name used for applications deployed on the cluster." + domain: String + "The git repository URL for the cluster." + gitUrl: String + "The name of the cluster." + name: String! + "The cluster's cloud provider." + provider: Provider! + "The source of the cluster." + source: Source +} + +input ClusterInformationAttributes { + gitCommit: String + platform: String + version: String +} + +"Input for creating or updating the community links of an application." +input CommunityAttributes { + "The application's Discord server." + discord: String + "The application's git URL." + gitUrl: String + "The application's homepage." + homepage: String + "The application's Slack channel." + slack: String + "The application's Twitter account." + twitter: String + "The videos of the application." + videos: [String] +} + +input ContextAttributes { + buckets: [String] + configuration: Map! + domains: [String] +} + +input CrdAttributes { + blob: UploadOrUrl + name: String! +} + +input DnsAccessPolicyAttributes { + bindings: [BindingAttributes] + id: ID +} + +input DnsDomainAttributes { + accessPolicy: DnsAccessPolicyAttributes + name: String +} + +input DnsRecordAttributes { + name: String! + records: [String] + type: DnsRecordType! +} + +input DockerRepositoryAttributes { + public: Boolean! +} + +input DomainMappingInput { + domain: String + enableSso: Boolean + id: ID +} + +input EntityAttributes { + endIndex: Int + startIndex: Int + text: String + type: MessageEntityType! + userId: ID +} + +input FileAttributes { + blob: UploadOrUrl +} + +input FollowerAttributes { + preferences: NotificationPreferencesAttributes +} + +input GcpShellCredentialsAttributes { + applicationCredentials: String! +} + +input GroupAttributes { + description: String + global: Boolean + name: String! +} + +input ImpersonationPolicyAttributes { + bindings: [ImpersonationPolicyBindingAttributes] + id: ID +} + +input ImpersonationPolicyBindingAttributes { + groupId: ID + id: ID + userId: ID +} + +input IncidentAttributes { + clusterInformation: ClusterInformationAttributes + description: String + severity: Int + status: IncidentStatus + tags: [TagAttributes] + title: String +} + +input IncidentFilter { + statuses: [IncidentStatus] + type: IncidentFilterType! + value: String +} + +input IncidentMessageAttributes { + entities: [EntityAttributes] + file: FileAttributes + text: String! +} + +"Input for creating or updating the tag attributes of an application installation." +input InstallationAttributes { + "Whether the application should auto upgrade." + autoUpgrade: Boolean + "A YAML object of context." + context: Yaml + "The tag to track for auto upgrades." + trackTag: String +} + +input IntegrationAttributes { + description: String + icon: UploadOrUrl + name: String! + sourceUrl: String + spec: Yaml + tags: [TagAttributes] + type: String +} + +input IntegrationWebhookAttributes { + actions: [String] + name: String! + url: String! +} + +input InviteAttributes { + email: String +} + +input KeyBackupAttributes { + key: String! + name: String! + repositories: [String] +} + +input LimitAttributes { + dimension: String! + quantity: Int! +} + +input LineItemAttributes { + cost: Int! + dimension: String! + name: String! + period: String! + type: PlanType +} + +input LockAttributes { + lock: String! +} + +input MeetingAttributes { + incidentId: ID + topic: String! +} + +input NotificationPreferencesAttributes { + incidentUpdate: Boolean! + mention: Boolean! + message: Boolean! +} + +input OauthAttributes { + code: String + redirectUri: String + service: OauthService +} + +"Input for the application's OAuth settings." +input OauthSettingsAttributes { + "The authentication method for the OAuth provider." + authMethod: OidcAuthMethod! + "The URI format for the OAuth provider." + uriFormat: String! +} + +"Input for creating or updating the OIDC attributes of an application installation." +input OidcAttributes { + "The authentication method for the OIDC provider." + authMethod: OidcAuthMethod! + "The users or groups that can login through the OIDC provider." + bindings: [BindingAttributes] + "The redirect URIs for the OIDC provider." + redirectUris: [String] +} + +input OidcSettingsAttributes { + authMethod: OidcAuthMethod! + domainKey: String + subdomain: Boolean + uriFormat: String + uriFormats: [String] +} + +input OnboardingChecklistAttributes { + dismissed: Boolean + status: OnboardingChecklistState +} + +input PlanAttributes { + cost: Int! + default: Boolean + lineItems: PlanLineItemAttributes + metadata: PlanMetadataAttributes + name: String! + period: String! + serviceLevels: [ServiceLevelAttributes] +} + +input PlanFeatureAttributes { + description: String! + name: String! +} + +input PlanLineItemAttributes { + included: [LimitAttributes] + items: [LineItemAttributes] +} + +input PlanMetadataAttributes { + features: [PlanFeatureAttributes] + freeform: Yaml +} + +input PostmortemAttributes { + actionItems: [ActionItemAttributes] + content: String! +} + +input PublicKeyAttributes { + content: String! + name: String! +} + +input PublisherAttributes { + address: AddressAttributes + avatar: UploadOrUrl + community: CommunityAttributes + description: String + name: String + phone: String +} + +input RecipeAttributes { + dependencies: [RecipeReference] + description: String + name: String! + oidcSettings: OidcSettingsAttributes + primary: Boolean + private: Boolean + provider: Provider + restricted: Boolean + sections: [RecipeSectionAttributes] + tests: [RecipeTestAttributes] +} + +input RecipeConditionAttributes { + field: String! + operation: Operation! + value: String +} + +input RecipeConfigurationAttributes { + condition: RecipeConditionAttributes + default: String + documentation: String + functionName: String + longform: String + name: String! + optional: Boolean + placeholder: String + type: Datatype! + validation: RecipeValidationAttributes +} + +input RecipeItemAttributes { + configuration: [RecipeConfigurationAttributes] + name: String! + type: RecipeItemType! +} + +input RecipeReference { + name: String! + repo: String! +} + +input RecipeSectionAttributes { + configuration: [RecipeConfigurationAttributes] + items: [RecipeItemAttributes] + name: String! +} + +input RecipeTestAttributes { + args: [TestArgumentAttributes] + message: String + name: String! + type: TestType! +} + +input RecipeValidationAttributes { + message: String! + regex: String + type: ValidationType! +} + +"Input for creating or updating an application's attributes." +input RepositoryAttributes { + "The category of the application." + category: Category + "The application's community links." + community: CommunityAttributes + "The application's dark icon." + darkIcon: UploadOrUrl + "The default tag to use when deploying the application." + defaultTag: String + "A short description of the application." + description: String + "The application's documentation." + docs: UploadOrUrl + "A link to the application's documentation." + documentation: String + "The application's git URL." + gitUrl: String + "The application's homepage." + homepage: String + "The application's icon." + icon: UploadOrUrl + "The application's integration resource definition." + integrationResourceDefinition: ResourceDefinitionAttributes + "The name of the application." + name: String + "Notes about the application rendered after deploying and displayed to the user." + notes: String + "The application's OAuth settings." + oauthSettings: OauthSettingsAttributes + "Whether the application is private." + private: Boolean + "The application's README." + readme: String + "A YAML object of secrets." + secrets: Yaml + "The application's tags." + tags: [TagAttributes] + "Whether the application is trending." + trending: Boolean + "Whether the application is verified." + verified: Boolean +} + +input ResetTokenAttributes { + email: String + type: ResetTokenType! +} + +input ResetTokenRealization { + password: String +} + +input ResourceDefinitionAttributes { + name: String! + spec: [SpecificationAttributes] +} + +input RoleAttributes { + description: String + name: String + permissions: [Permission] + repositories: [String] + roleBindings: [BindingAttributes] +} + +input RolesAttributes { + admin: Boolean +} + +input ScmAttributes { + gitUrl: String + name: String + org: String + privateKey: String + provider: ScmProvider + publicKey: String + token: String +} + +input ServiceAccountAttributes { + email: String + impersonationPolicy: ImpersonationPolicyAttributes + name: String +} + +input ServiceLevelAttributes { + maxSeverity: Int + minSeverity: Int + responseTime: Int +} + +input ShellCredentialsAttributes { + aws: AwsShellCredentialsAttributes + azure: AzureShellCredentialsAttributes + gcp: GcpShellCredentialsAttributes +} + +input SpecificationAttributes { + inner: SpecDatatype + name: String! + required: Boolean + spec: [SpecificationAttributes] + type: SpecDatatype! +} + +input StackAttributes { + collections: [StackCollectionAttributes] + community: CommunityAttributes + description: String + displayName: String + featured: Boolean + name: String! +} + +input StackCollectionAttributes { + bundles: [RecipeReference] + provider: Provider! +} + +input SubscriptionAttributes { + lineItems: SubscriptionLineItemAttributes +} + +input SubscriptionLineItemAttributes { + items: [LimitAttributes] +} + +input TagAttributes { + tag: String! +} + +input TerraformAttributes { + dependencies: Yaml + description: String + name: String + package: UploadOrUrl + version: String +} + +input TerraformInstallationAttributes { + terraformId: ID + versionId: ID +} + +input TestArgumentAttributes { + key: String! + name: String! + repo: String! +} + +input TestAttributes { + name: String + promoteTag: String + status: TestStatus + steps: [TestStepAttributes] + tags: [String] +} + +input TestStepAttributes { + description: String + id: ID + logs: UploadOrUrl + name: String + status: TestStatus +} + +input UpdatablePlanAttributes { + default: Boolean + serviceLevels: [ServiceLevelAttributes] +} + +input UpgradeQueueAttributes { + domain: String + git: String + name: String! + provider: Provider +} + +input UserAttributes { + avatar: UploadOrUrl + confirm: String + email: String + loginMethod: LoginMethod + name: String + onboarding: OnboardingState + onboardingChecklist: OnboardingChecklistAttributes + password: String + roles: RolesAttributes +} + +input UserEventAttributes { + data: String + event: String! + status: UserEventStatus +} + +input VersionAttributes { + tags: [VersionTagAttributes] +} + +input VersionSpec { + chart: String + repository: String + terraform: String + version: String +} + +input VersionTagAttributes { + tag: String! + versionId: ID +} + +input WebhookAttributes { + url: String! +} + +input WorkspaceAttributes { + bucketPrefix: String! + cluster: String! + project: String + region: String! + subdomain: String! +} diff --git a/pkg/ui/web/src/Plural.tsx b/pkg/ui/web/src/Plural.tsx new file mode 100644 index 00000000..40084811 --- /dev/null +++ b/pkg/ui/web/src/Plural.tsx @@ -0,0 +1,46 @@ +import { theme } from '@pluralsh/design-system' +import { HonorableTheme, ThemeProvider as HonorableThemeProvider } from 'honorable' +import React, { useCallback, useMemo } from 'react' +import { RouterProvider } from 'react-router-dom' +import { ThemeProvider } from 'styled-components' + +import Loader from './components/loader/Loader' +import { WailsContext, WailsContextProps } from './context/wails' +import { useWailsQuery } from './hooks/useWails' +import { router } from './routes/router' +import { Binding } from './services/wails' +import { FontStyles } from './styled/fonts' +import { GlobalStyles } from './styled/global' +import { ScrollbarStyles } from './styled/scrollbar' +import { theme as styledTheme } from './styled/theme' +import { PluralProject } from './types/client' + +function Plural(): React.ReactElement { + const { data: context } = useWailsQuery(Binding.Context) + const { data: project = {} as PluralProject } = useWailsQuery(Binding.Project) + const { data: token } = useWailsQuery(Binding.Token) + + const isReady = useMemo(() => !!context && !!project && !!token, [context, project, token]) + const fixProjectProvider = useCallback((project: PluralProject) => ({ ...project, provider: project.provider?.toUpperCase() }), []) + const wailsContext = useMemo(() => ({ + context, + project: fixProjectProvider(project), + token, + } as WailsContextProps), [context, fixProjectProvider, project, token]) + + return ( + + + + + + + {isReady && } + {!isReady && } + + + + ) +} + +export default Plural diff --git a/pkg/ui/web/src/components/loader/Loader.tsx b/pkg/ui/web/src/components/loader/Loader.tsx new file mode 100644 index 00000000..73c909c4 --- /dev/null +++ b/pkg/ui/web/src/components/loader/Loader.tsx @@ -0,0 +1,20 @@ +import { LoopingLogo } from '@pluralsh/design-system' +import React from 'react' +import styled from 'styled-components' + +const Loader = styled(LoaderUnstyled)(() => ({ + height: '100%', + display: 'flex', + justifyContent: 'center', + alignItems: 'center', +})) + +function LoaderUnstyled({ ...props }): React.ReactElement { + return ( +

    + ) +} + +export default Loader diff --git a/pkg/ui/web/src/context/wails.ts b/pkg/ui/web/src/context/wails.ts new file mode 100644 index 00000000..aa965284 --- /dev/null +++ b/pkg/ui/web/src/context/wails.ts @@ -0,0 +1,17 @@ +import { createContext } from 'react' + +import { PluralContext, PluralProject } from '../types/client' + +interface WailsContextProps { + token: string; + project: PluralProject + context: PluralContext +} + +const WailsContext = createContext({ + project: {}, + context: {}, +} as WailsContextProps) + +export type { WailsContextProps, PluralContext } +export { WailsContext } diff --git a/pkg/ui/web/src/graphql/account.graphql b/pkg/ui/web/src/graphql/account.graphql new file mode 100644 index 00000000..837185b0 --- /dev/null +++ b/pkg/ui/web/src/graphql/account.graphql @@ -0,0 +1,64 @@ +fragment Audit on Audit { + id + action + ip + country + city + latitude + longitude + actor { ...User } + repository { ...Repo } + group { ...Group } + integrationWebhook { ...IntegrationWebhook } + role { ...Role } + version { ...Version } + image { id tag dockerRepository { name } } + insertedAt +} + +fragment PolicyBinding on PolicyBinding { + id + group { id name } + user { id name email } +} + +fragment DnsDomain on DnsDomain { + id + name + creator { ...User } + accessPolicy { + id + bindings { ...PolicyBinding } + } + insertedAt +} + +fragment Invite on Invite { + id + secureId + email + insertedAt +} + +fragment OidcLogin on OidcLogin { + ip + country + city + latitude + longitude + user { ...User } + owner { ...User } + repository { ...Repo } + insertedAt +} + +mutation UpdateAccount($attributes: AccountAttributes!) { + updateAccount(attributes: $attributes) { + ...Account + domainMappings { + id + domain + enableSso + } + } +} diff --git a/pkg/ui/web/src/graphql/artifacts.graphql b/pkg/ui/web/src/graphql/artifacts.graphql new file mode 100644 index 00000000..da767f75 --- /dev/null +++ b/pkg/ui/web/src/graphql/artifacts.graphql @@ -0,0 +1,32 @@ +fragment Artifact on Artifact { + id + name + blob + type + platform + arch + filesize + sha + readme + insertedAt + updatedAt +} + +query ListArtifacts($id: ID!) { + repository(id: $id) { + artifacts { ...Artifact } + } +} + +mutation CreateArtifact($repoName: String!, $name: String!, $readme: String!, $artifactType: String!, $platform: String!, $blob: UploadOrUrl!, $arch: String) { + createArtifact(repositoryName: $repoName, attributes: { + name: $name, + blob: $blob, + readme: $readme, + type: $artifactType, + platform: $platform, + arch: $arch + }) { + ...Artifact + } +} diff --git a/pkg/ui/web/src/graphql/charts.graphql b/pkg/ui/web/src/graphql/charts.graphql new file mode 100644 index 00000000..4b1fa61c --- /dev/null +++ b/pkg/ui/web/src/graphql/charts.graphql @@ -0,0 +1,91 @@ +fragment Chart on Chart { + id + name + description + latestVersion + dependencies { ...Dependencies } + insertedAt +} + +fragment Crd on Crd { + id + name + blob +} + +fragment ChartInstallation on ChartInstallation { + id + chart { + ...Chart + dependencies { ...Dependencies } + } + version { ...Version } +} + +fragment ScanViolation on ScanViolation { + ruleName + description + ruleId + severity + category + resourceName + resourceType + file + line +} + +fragment ScanError on ScanError { + message +} + +fragment PackageScan on PackageScan { + id + grade + violations { ...ScanViolation } + errors { ...ScanError } +} + +query GetCharts($id: ID!) { + charts(repositoryId: $id, first: 100) { + edges { + node { + ...Chart + } + } + } +} + +query GetVersions($id: ID!) { + versions(chartId: $id, first: 100) { + edges { + node { + ...Version + } + } + } +} + +query GetChartInstallations($id: ID!) { + chartInstallations(repositoryId: $id, first: 100) { + edges { node { ...ChartInstallation } } + } +} + +query GetPackageInstallations($id: ID!) { + chartInstallations(repositoryId: $id, first: 100) { + edges { node { ...ChartInstallation } } + } + terraformInstallations(repositoryId: $id, first: 100) { + edges { node { ...TerraformInstallation } } + } +} + +mutation CreateCrd($chartName: ChartName!, $name: String!, $blob: UploadOrUrl!) { + createCrd(chartName: $chartName, attributes: {name:$name, blob:$blob}) { + id + } +} + +mutation UninstallChart($id: ID!) { + deleteChartInstallation(id: $id) { id } +} diff --git a/pkg/ui/web/src/graphql/dns.graphql b/pkg/ui/web/src/graphql/dns.graphql new file mode 100644 index 00000000..08953c5e --- /dev/null +++ b/pkg/ui/web/src/graphql/dns.graphql @@ -0,0 +1,28 @@ +fragment DnsRecord on DnsRecord { + id + name + type + records + cluster + provider + creator { ...User } + insertedAt +} + +query GetDnsRecords($cluster: String!, $provider: Provider!) { + dnsRecords(cluster: $cluster, provider: $provider, first: 500) { + edges { node { ...DnsRecord } } + } +} + +mutation CreateDnsRecord($cluster: String!, $provider: Provider!, $attributes: DnsRecordAttributes!) { + createDnsRecord(cluster: $cluster, provider: $provider, attributes: $attributes) { + ...DnsRecord + } +} + +mutation DeleteDnsRecord($name: String!, $type: DnsRecordType!) { + deleteDnsRecord(name: $name, type: $type) { + ...DnsRecord + } +} diff --git a/pkg/ui/web/src/graphql/docker.graphql b/pkg/ui/web/src/graphql/docker.graphql new file mode 100644 index 00000000..5ccb1369 --- /dev/null +++ b/pkg/ui/web/src/graphql/docker.graphql @@ -0,0 +1,44 @@ +fragment DockerRepo on DockerRepository { + id + name + public + repository { id name } + insertedAt + updatedAt +} + +fragment DockerRepository on DockerRepository { + id + name + public + repository { id name editable } + insertedAt + updatedAt +} + +fragment DockerImage on DockerImage { + id + tag + digest + scannedAt + grade + insertedAt + updatedAt +} + + +fragment Vulnerability on Vulnerability { + id + title + description + vulnerabilityId + package + installedVersion + fixedVersion + source + url + severity + score + cvss { attackVector attackComplexity privilegesRequired userInteraction confidentiality integrity availability } + layer { digest diffId } +} diff --git a/pkg/ui/web/src/graphql/domains.graphql b/pkg/ui/web/src/graphql/domains.graphql new file mode 100644 index 00000000..9f002762 --- /dev/null +++ b/pkg/ui/web/src/graphql/domains.graphql @@ -0,0 +1,5 @@ +mutation CreateDomain($name: String!) { + provisionDomain(name: $name) { + ...DnsDomain + } +} diff --git a/pkg/ui/web/src/graphql/generated/graphql.ts b/pkg/ui/web/src/graphql/generated/graphql.ts new file mode 100644 index 00000000..625a3aaf --- /dev/null +++ b/pkg/ui/web/src/graphql/generated/graphql.ts @@ -0,0 +1,9949 @@ +/* eslint-disable */ +import { gql } from '@apollo/client'; +import * as Apollo from '@apollo/client'; +export type Maybe = T | null; +export type InputMaybe = Maybe; +export type Exact = { [K in keyof T]: T[K] }; +export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; +export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; +const defaultOptions = {} as const; +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: string; + String: string; + Boolean: boolean; + Int: number; + Float: number; + /** + * The `DateTime` scalar type represents a date and time in the UTC + * timezone. The DateTime appears in a JSON response as an ISO8601 formatted + * string, including UTC timezone ("Z"). The parsed date and time string will + * be converted to UTC if there is an offset. + */ + DateTime: Date; + Map: Map; + UploadOrUrl: string; + Yaml: unknown; +}; + +export type RootQueryType = { + __typename?: 'RootQueryType'; + account?: Maybe; + auditMetrics?: Maybe>>; + audits?: Maybe; + categories?: Maybe>>; + category?: Maybe; + chart?: Maybe; + chartInstallations?: Maybe; + charts?: Maybe; + closure?: Maybe>>; + /** Get a cluster by its ID. */ + cluster?: Maybe; + /** Get a list of clusters owned by the current account. */ + clusters?: Maybe; + configuration?: Maybe; + deferredUpdates?: Maybe; + demoProject?: Maybe; + dnsDomain?: Maybe; + dnsDomains?: Maybe; + dnsRecords?: Maybe; + dockerImage?: Maybe; + dockerImages?: Maybe; + dockerRepositories?: Maybe; + eabCredential?: Maybe; + eabCredentials?: Maybe>>; + groupMembers?: Maybe; + groups?: Maybe; + helpQuestion?: Maybe; + incident?: Maybe; + incidents?: Maybe; + installation?: Maybe; + installations?: Maybe; + integrations?: Maybe; + integrationWebhook?: Maybe; + integrationWebhooks?: Maybe; + invite?: Maybe; + invites?: Maybe; + invoices?: Maybe; + keyBackup?: Maybe; + keyBackups?: Maybe; + loginMethod?: Maybe; + loginMetrics?: Maybe>>; + me?: Maybe; + notifications?: Maybe; + oauthConsent?: Maybe; + oauthIntegrations?: Maybe>>; + oauthLogin?: Maybe; + oauthUrls?: Maybe>>; + oidcConsent?: Maybe; + oidcLogin?: Maybe; + oidcLogins?: Maybe; + platformMetrics?: Maybe; + platformPlans?: Maybe>>; + platformSubscription?: Maybe; + publicKeys?: Maybe; + publisher?: Maybe; + publishers?: Maybe; + recipe?: Maybe; + recipes?: Maybe; + repositories?: Maybe; + /** Get an application by its ID or name. */ + repository?: Maybe; + repositorySubscription?: Maybe; + resetToken?: Maybe; + role?: Maybe; + roles?: Maybe; + rollouts?: Maybe; + scaffold?: Maybe>>; + scmAuthorization?: Maybe>>; + scmToken?: Maybe; + searchRepositories?: Maybe; + searchUsers?: Maybe; + shell?: Maybe; + shellConfiguration?: Maybe; + stack?: Maybe; + stacks?: Maybe; + subscriptions?: Maybe; + tags?: Maybe; + terraform?: Maybe; + terraformInstallations?: Maybe; + terraformModule?: Maybe; + terraformProvider?: Maybe; + terraformProviders?: Maybe>>; + test?: Maybe; + testLogs?: Maybe; + tests?: Maybe; + token?: Maybe; + tokens?: Maybe; + upgradeQueue?: Maybe; + upgradeQueues?: Maybe>>; + users?: Maybe; + versions?: Maybe; + webhooks?: Maybe; +}; + + +export type RootQueryTypeAuditsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + + +export type RootQueryTypeCategoryArgs = { + name: Category; +}; + + +export type RootQueryTypeChartArgs = { + id: Scalars['ID']; +}; + + +export type RootQueryTypeChartInstallationsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + repositoryId: Scalars['ID']; +}; + + +export type RootQueryTypeChartsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + repositoryId: Scalars['ID']; +}; + + +export type RootQueryTypeClosureArgs = { + id: Scalars['ID']; + type: DependencyType; +}; + + +export type RootQueryTypeClusterArgs = { + id: Scalars['ID']; +}; + + +export type RootQueryTypeClustersArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + + +export type RootQueryTypeDeferredUpdatesArgs = { + after?: InputMaybe; + before?: InputMaybe; + chartInstallationId?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + terraformInstallationId?: InputMaybe; +}; + + +export type RootQueryTypeDemoProjectArgs = { + id?: InputMaybe; +}; + + +export type RootQueryTypeDnsDomainArgs = { + id: Scalars['ID']; +}; + + +export type RootQueryTypeDnsDomainsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + q?: InputMaybe; +}; + + +export type RootQueryTypeDnsRecordsArgs = { + after?: InputMaybe; + before?: InputMaybe; + cluster?: InputMaybe; + domainId?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + provider?: InputMaybe; +}; + + +export type RootQueryTypeDockerImageArgs = { + id: Scalars['ID']; +}; + + +export type RootQueryTypeDockerImagesArgs = { + after?: InputMaybe; + before?: InputMaybe; + dockerRepositoryId: Scalars['ID']; + first?: InputMaybe; + last?: InputMaybe; + q?: InputMaybe; +}; + + +export type RootQueryTypeDockerRepositoriesArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + repositoryId: Scalars['ID']; +}; + + +export type RootQueryTypeEabCredentialArgs = { + cluster: Scalars['String']; + provider: Provider; +}; + + +export type RootQueryTypeGroupMembersArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + groupId: Scalars['ID']; + last?: InputMaybe; +}; + + +export type RootQueryTypeGroupsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + q?: InputMaybe; +}; + + +export type RootQueryTypeHelpQuestionArgs = { + prompt: Scalars['String']; +}; + + +export type RootQueryTypeIncidentArgs = { + id: Scalars['ID']; +}; + + +export type RootQueryTypeIncidentsArgs = { + after?: InputMaybe; + before?: InputMaybe; + filters?: InputMaybe>>; + first?: InputMaybe; + last?: InputMaybe; + order?: InputMaybe; + q?: InputMaybe; + repositoryId?: InputMaybe; + sort?: InputMaybe; + supports?: InputMaybe; +}; + + +export type RootQueryTypeInstallationArgs = { + id?: InputMaybe; + name?: InputMaybe; +}; + + +export type RootQueryTypeInstallationsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + + +export type RootQueryTypeIntegrationsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + repositoryId?: InputMaybe; + repositoryName?: InputMaybe; + tag?: InputMaybe; + type?: InputMaybe; +}; + + +export type RootQueryTypeIntegrationWebhookArgs = { + id: Scalars['ID']; +}; + + +export type RootQueryTypeIntegrationWebhooksArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + + +export type RootQueryTypeInviteArgs = { + id: Scalars['String']; +}; + + +export type RootQueryTypeInvitesArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + + +export type RootQueryTypeInvoicesArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + + +export type RootQueryTypeKeyBackupArgs = { + name: Scalars['String']; +}; + + +export type RootQueryTypeKeyBackupsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + + +export type RootQueryTypeLoginMethodArgs = { + email: Scalars['String']; + host?: InputMaybe; +}; + + +export type RootQueryTypeNotificationsArgs = { + after?: InputMaybe; + before?: InputMaybe; + cli?: InputMaybe; + first?: InputMaybe; + incidentId?: InputMaybe; + last?: InputMaybe; +}; + + +export type RootQueryTypeOauthConsentArgs = { + challenge: Scalars['String']; +}; + + +export type RootQueryTypeOauthLoginArgs = { + challenge: Scalars['String']; +}; + + +export type RootQueryTypeOauthUrlsArgs = { + host?: InputMaybe; +}; + + +export type RootQueryTypeOidcConsentArgs = { + challenge: Scalars['String']; +}; + + +export type RootQueryTypeOidcLoginArgs = { + challenge: Scalars['String']; +}; + + +export type RootQueryTypeOidcLoginsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + + +export type RootQueryTypePublicKeysArgs = { + after?: InputMaybe; + before?: InputMaybe; + emails?: InputMaybe>>; + first?: InputMaybe; + last?: InputMaybe; +}; + + +export type RootQueryTypePublisherArgs = { + id?: InputMaybe; +}; + + +export type RootQueryTypePublishersArgs = { + accountId?: InputMaybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + publishable?: InputMaybe; +}; + + +export type RootQueryTypeRecipeArgs = { + id?: InputMaybe; + name?: InputMaybe; + repo?: InputMaybe; +}; + + +export type RootQueryTypeRecipesArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + provider?: InputMaybe; + repositoryId?: InputMaybe; + repositoryName?: InputMaybe; +}; + + +export type RootQueryTypeRepositoriesArgs = { + after?: InputMaybe; + before?: InputMaybe; + categories?: InputMaybe>>; + category?: InputMaybe; + first?: InputMaybe; + installed?: InputMaybe; + last?: InputMaybe; + provider?: InputMaybe; + publisherId?: InputMaybe; + publishers?: InputMaybe>>; + q?: InputMaybe; + supports?: InputMaybe; + tag?: InputMaybe; + tags?: InputMaybe>>; +}; + + +export type RootQueryTypeRepositoryArgs = { + id?: InputMaybe; + name?: InputMaybe; +}; + + +export type RootQueryTypeRepositorySubscriptionArgs = { + id: Scalars['ID']; +}; + + +export type RootQueryTypeResetTokenArgs = { + id: Scalars['ID']; +}; + + +export type RootQueryTypeRoleArgs = { + id: Scalars['ID']; +}; + + +export type RootQueryTypeRolesArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + q?: InputMaybe; + userId?: InputMaybe; +}; + + +export type RootQueryTypeRolloutsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + repositoryId: Scalars['ID']; +}; + + +export type RootQueryTypeScaffoldArgs = { + application: Scalars['String']; + category: Category; + ingress?: InputMaybe; + postgres?: InputMaybe; + publisher: Scalars['String']; +}; + + +export type RootQueryTypeScmTokenArgs = { + code: Scalars['String']; + provider: ScmProvider; +}; + + +export type RootQueryTypeSearchRepositoriesArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + query: Scalars['String']; +}; + + +export type RootQueryTypeSearchUsersArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + incidentId: Scalars['ID']; + last?: InputMaybe; + q: Scalars['String']; +}; + + +export type RootQueryTypeStackArgs = { + name: Scalars['String']; + provider: Provider; +}; + + +export type RootQueryTypeStacksArgs = { + after?: InputMaybe; + before?: InputMaybe; + featured?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + + +export type RootQueryTypeSubscriptionsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + + +export type RootQueryTypeTagsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + id?: InputMaybe; + last?: InputMaybe; + q?: InputMaybe; + type: TagGroup; +}; + + +export type RootQueryTypeTerraformArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + repositoryId: Scalars['ID']; +}; + + +export type RootQueryTypeTerraformInstallationsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + repositoryId: Scalars['ID']; +}; + + +export type RootQueryTypeTerraformModuleArgs = { + id: Scalars['ID']; +}; + + +export type RootQueryTypeTerraformProviderArgs = { + name: Provider; + vsn?: InputMaybe; +}; + + +export type RootQueryTypeTestArgs = { + id: Scalars['ID']; +}; + + +export type RootQueryTypeTestLogsArgs = { + id: Scalars['ID']; + step: Scalars['ID']; +}; + + +export type RootQueryTypeTestsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + repositoryId?: InputMaybe; + versionId?: InputMaybe; +}; + + +export type RootQueryTypeTokenArgs = { + id: Scalars['ID']; +}; + + +export type RootQueryTypeTokensArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + + +export type RootQueryTypeUpgradeQueueArgs = { + id?: InputMaybe; +}; + + +export type RootQueryTypeUsersArgs = { + after?: InputMaybe; + all?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + q?: InputMaybe; + serviceAccount?: InputMaybe; +}; + + +export type RootQueryTypeVersionsArgs = { + after?: InputMaybe; + before?: InputMaybe; + chartId?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + terraformId?: InputMaybe; +}; + + +export type RootQueryTypeWebhooksArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +export type Account = { + __typename?: 'Account'; + availableFeatures?: Maybe; + backgroundColor?: Maybe; + billingAddress?: Maybe
    ; + billingCustomerId?: Maybe; + clusterCount?: Maybe; + delinquentAt?: Maybe; + domainMappings?: Maybe>>; + grandfatheredUntil?: Maybe; + icon?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + name?: Maybe; + rootUser?: Maybe; + subscription?: Maybe; + updatedAt?: Maybe; + userCount?: Maybe; + workosConnectionId?: Maybe; +}; + +export type PlanFeatures = { + __typename?: 'PlanFeatures'; + audit?: Maybe; + userManagement?: Maybe; + vpn?: Maybe; +}; + +export type Address = { + __typename?: 'Address'; + city?: Maybe; + country?: Maybe; + line1?: Maybe; + line2?: Maybe; + name?: Maybe; + state?: Maybe; + zip?: Maybe; +}; + +export type DomainMapping = { + __typename?: 'DomainMapping'; + account?: Maybe; + domain: Scalars['String']; + enableSso?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + updatedAt?: Maybe; +}; + +export type User = { + __typename?: 'User'; + account: Account; + address?: Maybe
    ; + avatar?: Maybe; + backgroundColor?: Maybe; + boundRoles?: Maybe>>; + cards?: Maybe; + defaultQueueId?: Maybe; + /** If a user has reached the demo project usage limit. */ + demoed?: Maybe; + demoing?: Maybe; + email: Scalars['String']; + emailConfirmBy?: Maybe; + emailConfirmed?: Maybe; + hasInstallations?: Maybe; + id: Scalars['ID']; + impersonationPolicy?: Maybe; + insertedAt?: Maybe; + jwt?: Maybe; + loginMethod?: Maybe; + name: Scalars['String']; + onboarding?: Maybe; + onboardingChecklist?: Maybe; + phone?: Maybe; + provider?: Maybe; + publisher?: Maybe; + roles?: Maybe; + serviceAccount?: Maybe; + updatedAt?: Maybe; +}; + + +export type UserCardsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +export type Role = { + __typename?: 'Role'; + account?: Maybe; + description?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + name: Scalars['String']; + permissions?: Maybe>>; + repositories?: Maybe>>; + roleBindings?: Maybe>>; + updatedAt?: Maybe; +}; + +export enum Permission { + Billing = 'BILLING', + Install = 'INSTALL', + Integrations = 'INTEGRATIONS', + Publish = 'PUBLISH', + Support = 'SUPPORT', + Users = 'USERS' +} + +export type RoleBinding = { + __typename?: 'RoleBinding'; + group?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + updatedAt?: Maybe; + user?: Maybe; +}; + +export type Group = { + __typename?: 'Group'; + description?: Maybe; + global?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + name: Scalars['String']; + updatedAt?: Maybe; +}; + +export type CardConnection = { + __typename?: 'CardConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type CardEdge = { + __typename?: 'CardEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type Card = { + __typename?: 'Card'; + brand: Scalars['String']; + expMonth: Scalars['Int']; + expYear: Scalars['Int']; + id: Scalars['ID']; + last4: Scalars['String']; + name?: Maybe; +}; + +export type PageInfo = { + __typename?: 'PageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; +}; + +export type ImpersonationPolicy = { + __typename?: 'ImpersonationPolicy'; + bindings?: Maybe>>; + id: Scalars['ID']; + insertedAt?: Maybe; + updatedAt?: Maybe; +}; + +export type ImpersonationPolicyBinding = { + __typename?: 'ImpersonationPolicyBinding'; + group?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + updatedAt?: Maybe; + user?: Maybe; +}; + +export enum LoginMethod { + Github = 'GITHUB', + Google = 'GOOGLE', + Password = 'PASSWORD', + Passwordless = 'PASSWORDLESS', + Sso = 'SSO' +} + +export enum OnboardingState { + Active = 'ACTIVE', + Installed = 'INSTALLED', + New = 'NEW', + Onboarded = 'ONBOARDED' +} + +export type OnboardingChecklist = { + __typename?: 'OnboardingChecklist'; + dismissed?: Maybe; + status?: Maybe; +}; + +export enum OnboardingChecklistState { + Configured = 'CONFIGURED', + ConsoleInstalled = 'CONSOLE_INSTALLED', + Finished = 'FINISHED', + New = 'NEW' +} + +export enum Provider { + Aws = 'AWS', + Azure = 'AZURE', + Custom = 'CUSTOM', + Equinix = 'EQUINIX', + Gcp = 'GCP', + Generic = 'GENERIC', + Kind = 'KIND', + Kubernetes = 'KUBERNETES' +} + +export type Publisher = { + __typename?: 'Publisher'; + address?: Maybe
    ; + avatar?: Maybe; + backgroundColor?: Maybe; + billingAccountId?: Maybe; + community?: Maybe; + description?: Maybe; + id?: Maybe; + insertedAt?: Maybe; + name: Scalars['String']; + owner?: Maybe; + phone?: Maybe; + repositories?: Maybe>>; + updatedAt?: Maybe; +}; + +export type Community = { + __typename?: 'Community'; + discord?: Maybe; + gitUrl?: Maybe; + homepage?: Maybe; + slack?: Maybe; + twitter?: Maybe; + videos?: Maybe>>; +}; + +/** Container for all resources to create an application. */ +export type Repository = { + __typename?: 'Repository'; + /** The artifacts of the application. */ + artifacts?: Maybe>>; + /** The category of the application. */ + category?: Maybe; + /** The community links of the application. */ + community?: Maybe; + darkIcon?: Maybe; + /** The default tag to deploy. */ + defaultTag?: Maybe; + /** The description of the application. */ + description?: Maybe; + /** The documentation of the application. */ + docs?: Maybe>>; + /** The documentation of the application. */ + documentation?: Maybe; + /** If the application can be edited by the current user. */ + editable?: Maybe; + /** The git URL of the application. */ + gitUrl?: Maybe; + /** The homepage of the application. */ + homepage?: Maybe; + icon?: Maybe; + /** The application's ID. */ + id: Scalars['ID']; + insertedAt?: Maybe; + /** The installation of the application by a user. */ + installation?: Maybe; + /** The license of the application. */ + license?: Maybe; + /** The main branch of the application. */ + mainBranch?: Maybe; + /** The name of the application. */ + name: Scalars['String']; + /** Notes about the application rendered after deploying and displayed to the user. */ + notes?: Maybe; + /** The OAuth settings for the application. */ + oauthSettings?: Maybe; + /** The available plans for the application. */ + plans?: Maybe>>; + /** Whether the application is private. */ + private?: Maybe; + /** The application's public key. */ + publicKey?: Maybe; + /** The application publisher. */ + publisher?: Maybe; + /** The README of the application. */ + readme?: Maybe; + /** The recipes used to install the application. */ + recipes?: Maybe>>; + /** A map of secrets of the application. */ + secrets?: Maybe; + /** The tags of the application. */ + tags?: Maybe>>; + /** Whether the application is trending. */ + trending?: Maybe; + updatedAt?: Maybe; + /** Whether the application is verified. */ + verified?: Maybe; +}; + +export type Artifact = { + __typename?: 'Artifact'; + arch?: Maybe; + blob?: Maybe; + filesize?: Maybe; + id?: Maybe; + insertedAt?: Maybe; + name?: Maybe; + platform?: Maybe; + readme?: Maybe; + sha?: Maybe; + type?: Maybe; + updatedAt?: Maybe; +}; + +export enum ArtifactPlatform { + Android = 'ANDROID', + Freebsd = 'FREEBSD', + Linux = 'LINUX', + Mac = 'MAC', + Openbsd = 'OPENBSD', + Solaris = 'SOLARIS', + Windows = 'WINDOWS' +} + +export enum ArtifactType { + Cli = 'CLI', + Desktop = 'DESKTOP', + Mobile = 'MOBILE' +} + +/** Application categories. */ +export enum Category { + Data = 'DATA', + Database = 'DATABASE', + Devops = 'DEVOPS', + Messaging = 'MESSAGING', + Network = 'NETWORK', + Productivity = 'PRODUCTIVITY', + Security = 'SECURITY', + Storage = 'STORAGE' +} + +export type FileContent = { + __typename?: 'FileContent'; + content: Scalars['String']; + path: Scalars['String']; +}; + +/** An installation of an application. */ +export type Installation = { + __typename?: 'Installation'; + acmeKeyId?: Maybe; + acmeSecret?: Maybe; + /** Whether the application should auto upgrade. */ + autoUpgrade?: Maybe; + /** A YAML object of context. */ + context?: Maybe; + /** The installation's ID. */ + id: Scalars['ID']; + insertedAt?: Maybe; + license?: Maybe; + /** The license key for the application. */ + licenseKey?: Maybe; + /** The OIDC provider for the application. */ + oidcProvider?: Maybe; + /** The last ping time of an installed application. */ + pingedAt?: Maybe; + /** The application that was installed. */ + repository?: Maybe; + /** The subscription for the application. */ + subscription?: Maybe; + /** The tag to track for auto upgrades. */ + trackTag: Scalars['String']; + updatedAt?: Maybe; + /** The user that installed the application. */ + user?: Maybe; +}; + +export type OidcProvider = { + __typename?: 'OidcProvider'; + authMethod: OidcAuthMethod; + bindings?: Maybe>>; + clientId: Scalars['String']; + clientSecret: Scalars['String']; + configuration?: Maybe; + consent?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + redirectUris?: Maybe>>; + updatedAt?: Maybe; +}; + +/** Supported OIDC authentication methods. */ +export enum OidcAuthMethod { + Basic = 'BASIC', + Post = 'POST' +} + +export type OidcProviderBinding = { + __typename?: 'OidcProviderBinding'; + group?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + updatedAt?: Maybe; + user?: Maybe; +}; + +export type OuathConfiguration = { + __typename?: 'OuathConfiguration'; + authorizationEndpoint?: Maybe; + issuer?: Maybe; + jwksUri?: Maybe; + tokenEndpoint?: Maybe; + userinfoEndpoint?: Maybe; +}; + +export type ConsentRequest = { + __typename?: 'ConsentRequest'; + requestedScope?: Maybe>>; + skip?: Maybe; +}; + +export type RepositorySubscription = { + __typename?: 'RepositorySubscription'; + customerId?: Maybe; + externalId?: Maybe; + id: Scalars['ID']; + installation?: Maybe; + invoices?: Maybe; + lineItems?: Maybe; + plan?: Maybe; +}; + + +export type RepositorySubscriptionInvoicesArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +export type InvoiceConnection = { + __typename?: 'InvoiceConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type InvoiceEdge = { + __typename?: 'InvoiceEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type Invoice = { + __typename?: 'Invoice'; + amountDue: Scalars['Int']; + amountPaid: Scalars['Int']; + createdAt?: Maybe; + currency: Scalars['String']; + hostedInvoiceUrl?: Maybe; + lines?: Maybe>>; + number: Scalars['String']; + status?: Maybe; +}; + +export type InvoiceItem = { + __typename?: 'InvoiceItem'; + amount: Scalars['Int']; + currency: Scalars['String']; + description?: Maybe; +}; + +export type SubscriptionLineItems = { + __typename?: 'SubscriptionLineItems'; + items?: Maybe>>; +}; + +export type Limit = { + __typename?: 'Limit'; + dimension: Scalars['String']; + quantity: Scalars['Int']; +}; + +export type Plan = { + __typename?: 'Plan'; + cost: Scalars['Int']; + default?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + lineItems?: Maybe; + metadata?: Maybe; + name: Scalars['String']; + period?: Maybe; + serviceLevels?: Maybe>>; + updatedAt?: Maybe; + visible: Scalars['Boolean']; +}; + +export type PlanLineItems = { + __typename?: 'PlanLineItems'; + included?: Maybe>>; + items?: Maybe>>; +}; + +export type LineItem = { + __typename?: 'LineItem'; + cost: Scalars['Int']; + dimension: Scalars['String']; + name: Scalars['String']; + period?: Maybe; + type?: Maybe; +}; + +export enum PlanType { + Licensed = 'LICENSED', + Metered = 'METERED' +} + +export type PlanMetadata = { + __typename?: 'PlanMetadata'; + features?: Maybe>>; + freeform?: Maybe; +}; + +export type PlanFeature = { + __typename?: 'PlanFeature'; + description: Scalars['String']; + name: Scalars['String']; +}; + +export type ServiceLevel = { + __typename?: 'ServiceLevel'; + maxSeverity?: Maybe; + minSeverity?: Maybe; + responseTime?: Maybe; +}; + +export type License = { + __typename?: 'License'; + name?: Maybe; + url?: Maybe; +}; + +export type OauthSettings = { + __typename?: 'OauthSettings'; + authMethod: OidcAuthMethod; + uriFormat: Scalars['String']; +}; + +export type Recipe = { + __typename?: 'Recipe'; + description?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + name: Scalars['String']; + oidcEnabled?: Maybe; + oidcSettings?: Maybe; + primary?: Maybe; + private?: Maybe; + provider?: Maybe; + recipeDependencies?: Maybe>>; + recipeSections?: Maybe>>; + repository?: Maybe; + restricted?: Maybe; + tests?: Maybe>>; + updatedAt?: Maybe; +}; + +export type OidcSettings = { + __typename?: 'OidcSettings'; + authMethod: OidcAuthMethod; + domainKey?: Maybe; + subdomain?: Maybe; + uriFormat?: Maybe; + uriFormats?: Maybe>>; +}; + +export type RecipeSection = { + __typename?: 'RecipeSection'; + configuration?: Maybe>>; + id?: Maybe; + index?: Maybe; + insertedAt?: Maybe; + recipe?: Maybe; + recipeItems?: Maybe>>; + repository?: Maybe; + updatedAt?: Maybe; +}; + +export type RecipeConfiguration = { + __typename?: 'RecipeConfiguration'; + args?: Maybe>>; + condition?: Maybe; + default?: Maybe; + documentation?: Maybe; + functionName?: Maybe; + longform?: Maybe; + name?: Maybe; + optional?: Maybe; + placeholder?: Maybe; + type?: Maybe; + validation?: Maybe; +}; + +export type RecipeCondition = { + __typename?: 'RecipeCondition'; + field: Scalars['String']; + operation: Operation; + value?: Maybe; +}; + +export enum Operation { + Eq = 'EQ', + Gt = 'GT', + Gte = 'GTE', + Lt = 'LT', + Lte = 'LTE', + Not = 'NOT', + Prefix = 'PREFIX', + Suffix = 'SUFFIX' +} + +export enum Datatype { + Bool = 'BOOL', + Bucket = 'BUCKET', + Domain = 'DOMAIN', + File = 'FILE', + Function = 'FUNCTION', + Int = 'INT', + Password = 'PASSWORD', + String = 'STRING' +} + +export type RecipeValidation = { + __typename?: 'RecipeValidation'; + message: Scalars['String']; + regex?: Maybe; + type: ValidationType; +}; + +export enum ValidationType { + Regex = 'REGEX' +} + +export type RecipeItem = { + __typename?: 'RecipeItem'; + chart?: Maybe; + configuration?: Maybe>>; + id?: Maybe; + insertedAt?: Maybe; + recipeSection?: Maybe; + terraform?: Maybe; + updatedAt?: Maybe; +}; + +export type Chart = { + __typename?: 'Chart'; + dependencies?: Maybe; + description?: Maybe; + id?: Maybe; + insertedAt?: Maybe; + installation?: Maybe; + latestVersion?: Maybe; + name: Scalars['String']; + repository?: Maybe; + tags?: Maybe>>; + updatedAt?: Maybe; +}; + +export type Dependencies = { + __typename?: 'Dependencies'; + application?: Maybe; + breaking?: Maybe; + cliVsn?: Maybe; + dependencies?: Maybe>>; + instructions?: Maybe; + outputs?: Maybe; + providers?: Maybe>>; + providerVsn?: Maybe; + providerWirings?: Maybe; + secrets?: Maybe>>; + wait?: Maybe; + wirings?: Maybe; +}; + +export type Dependency = { + __typename?: 'Dependency'; + name?: Maybe; + optional?: Maybe; + repo?: Maybe; + type?: Maybe; + version?: Maybe; +}; + +export enum DependencyType { + Helm = 'HELM', + Terraform = 'TERRAFORM' +} + +export type ChangeInstructions = { + __typename?: 'ChangeInstructions'; + instructions?: Maybe; + script?: Maybe; +}; + +export type Wirings = { + __typename?: 'Wirings'; + helm?: Maybe; + terraform?: Maybe; +}; + +export type ChartInstallation = { + __typename?: 'ChartInstallation'; + chart?: Maybe; + id?: Maybe; + insertedAt?: Maybe; + installation?: Maybe; + updatedAt?: Maybe; + version?: Maybe; +}; + +/** The version of a package. */ +export type Version = { + __typename?: 'Version'; + chart?: Maybe; + crds?: Maybe>>; + dependencies?: Maybe; + helm?: Maybe; + id: Scalars['ID']; + imageDependencies?: Maybe>>; + insertedAt?: Maybe; + package?: Maybe; + readme?: Maybe; + scan?: Maybe; + tags?: Maybe>>; + /** The template engine used to render the valuesTemplate. */ + templateType?: Maybe; + terraform?: Maybe; + updatedAt?: Maybe; + valuesTemplate?: Maybe; + version: Scalars['String']; +}; + +export type Crd = { + __typename?: 'Crd'; + blob?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + name: Scalars['String']; + updatedAt?: Maybe; +}; + +export type ImageDependency = { + __typename?: 'ImageDependency'; + id: Scalars['ID']; + image: DockerImage; + insertedAt?: Maybe; + updatedAt?: Maybe; + version: Version; +}; + +export type DockerImage = { + __typename?: 'DockerImage'; + digest: Scalars['String']; + dockerRepository?: Maybe; + grade?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + scanCompletedAt?: Maybe; + scannedAt?: Maybe; + tag?: Maybe; + updatedAt?: Maybe; + vulnerabilities?: Maybe>>; +}; + +export type DockerRepository = { + __typename?: 'DockerRepository'; + id: Scalars['ID']; + insertedAt?: Maybe; + metrics?: Maybe>>; + name: Scalars['String']; + public?: Maybe; + repository?: Maybe; + updatedAt?: Maybe; +}; + + +export type DockerRepositoryMetricsArgs = { + offset?: InputMaybe; + precision?: InputMaybe; + tag?: InputMaybe; +}; + +export type Metric = { + __typename?: 'Metric'; + name: Scalars['String']; + tags?: Maybe>>; + values?: Maybe>>; +}; + +export type MetricTag = { + __typename?: 'MetricTag'; + name: Scalars['String']; + value: Scalars['String']; +}; + +export type MetricValue = { + __typename?: 'MetricValue'; + time?: Maybe; + value?: Maybe; +}; + +export enum ImageGrade { + A = 'A', + B = 'B', + C = 'C', + D = 'D', + F = 'F' +} + +export type Vulnerability = { + __typename?: 'Vulnerability'; + cvss?: Maybe; + description?: Maybe; + fixedVersion?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + installedVersion?: Maybe; + layer?: Maybe; + package?: Maybe; + score?: Maybe; + severity?: Maybe; + source?: Maybe; + title?: Maybe; + updatedAt?: Maybe; + url?: Maybe; + vulnerabilityId?: Maybe; +}; + +export type Cvss = { + __typename?: 'Cvss'; + attackComplexity?: Maybe; + attackVector?: Maybe; + availability?: Maybe; + confidentiality?: Maybe; + integrity?: Maybe; + privilegesRequired?: Maybe; + userInteraction?: Maybe; +}; + +export enum VulnGrade { + Critical = 'CRITICAL', + High = 'HIGH', + Low = 'LOW', + Medium = 'MEDIUM', + None = 'NONE' +} + +export enum VulnVector { + Adjacent = 'ADJACENT', + Local = 'LOCAL', + Network = 'NETWORK', + Physical = 'PHYSICAL' +} + +export enum VulnRequirement { + None = 'NONE', + Required = 'REQUIRED' +} + +export type ImageLayer = { + __typename?: 'ImageLayer'; + diffId?: Maybe; + digest?: Maybe; +}; + +export type PackageScan = { + __typename?: 'PackageScan'; + errors?: Maybe>>; + grade?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + updatedAt?: Maybe; + violations?: Maybe>>; +}; + +export type ScanError = { + __typename?: 'ScanError'; + message?: Maybe; +}; + +export type ScanViolation = { + __typename?: 'ScanViolation'; + category?: Maybe; + description?: Maybe; + file?: Maybe; + insertedAt?: Maybe; + line?: Maybe; + resourceName?: Maybe; + resourceType?: Maybe; + ruleId?: Maybe; + ruleName?: Maybe; + severity?: Maybe; + updatedAt?: Maybe; +}; + +export type VersionTag = { + __typename?: 'VersionTag'; + chart?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + tag: Scalars['String']; + updatedAt?: Maybe; + version?: Maybe; +}; + +/** Template engines that can be used at build time. */ +export enum TemplateType { + Gotemplate = 'GOTEMPLATE', + Javascript = 'JAVASCRIPT', + Lua = 'LUA' +} + +export type Terraform = { + __typename?: 'Terraform'; + dependencies?: Maybe; + description?: Maybe; + editable?: Maybe; + id?: Maybe; + insertedAt?: Maybe; + installation?: Maybe; + latestVersion?: Maybe; + name?: Maybe; + package?: Maybe; + readme?: Maybe; + repository?: Maybe; + updatedAt?: Maybe; + valuesTemplate?: Maybe; +}; + +export type TerraformInstallation = { + __typename?: 'TerraformInstallation'; + id?: Maybe; + insertedAt?: Maybe; + installation?: Maybe; + terraform?: Maybe; + updatedAt?: Maybe; + version?: Maybe; +}; + +export type RecipeTest = { + __typename?: 'RecipeTest'; + args?: Maybe>>; + message?: Maybe; + name: Scalars['String']; + type: TestType; +}; + +export type TestArgument = { + __typename?: 'TestArgument'; + key: Scalars['String']; + name: Scalars['String']; + repo: Scalars['String']; +}; + +export enum TestType { + Git = 'GIT' +} + +export type Tag = { + __typename?: 'Tag'; + id: Scalars['ID']; + tag: Scalars['String']; +}; + +export type Roles = { + __typename?: 'Roles'; + admin?: Maybe; +}; + +export type PlatformSubscription = { + __typename?: 'PlatformSubscription'; + externalId?: Maybe; + id: Scalars['ID']; + lineItems?: Maybe>>; + plan?: Maybe; +}; + +export type PlatformSubscriptionLineItems = { + __typename?: 'PlatformSubscriptionLineItems'; + dimension: LineItemDimension; + externalId?: Maybe; + quantity: Scalars['Int']; +}; + +export enum LineItemDimension { + Cluster = 'CLUSTER', + User = 'USER' +} + +export type PlatformPlan = { + __typename?: 'PlatformPlan'; + cost: Scalars['Int']; + enterprise?: Maybe; + features?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + lineItems?: Maybe>>; + name: Scalars['String']; + period: PaymentPeriod; + updatedAt?: Maybe; + visible: Scalars['Boolean']; +}; + +export type PlatformPlanItem = { + __typename?: 'PlatformPlanItem'; + cost: Scalars['Int']; + dimension: LineItemDimension; + externalId?: Maybe; + name: Scalars['String']; + period: PaymentPeriod; +}; + +export enum PaymentPeriod { + Monthly = 'MONTHLY', + Yearly = 'YEARLY' +} + +export type GeoMetric = { + __typename?: 'GeoMetric'; + count?: Maybe; + country?: Maybe; +}; + +export type AuditConnection = { + __typename?: 'AuditConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type AuditEdge = { + __typename?: 'AuditEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type Audit = { + __typename?: 'Audit'; + action: Scalars['String']; + actor?: Maybe; + city?: Maybe; + country?: Maybe; + group?: Maybe; + id: Scalars['ID']; + image?: Maybe; + insertedAt?: Maybe; + integrationWebhook?: Maybe; + ip?: Maybe; + latitude?: Maybe; + longitude?: Maybe; + repository?: Maybe; + role?: Maybe; + updatedAt?: Maybe; + user?: Maybe; + version?: Maybe; +}; + +export type IntegrationWebhook = { + __typename?: 'IntegrationWebhook'; + account?: Maybe; + actions?: Maybe>>; + id: Scalars['ID']; + insertedAt?: Maybe; + logs?: Maybe; + name: Scalars['String']; + secret: Scalars['String']; + updatedAt?: Maybe; + url: Scalars['String']; +}; + + +export type IntegrationWebhookLogsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +export type WebhookLogConnection = { + __typename?: 'WebhookLogConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type WebhookLogEdge = { + __typename?: 'WebhookLogEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type WebhookLog = { + __typename?: 'WebhookLog'; + id: Scalars['ID']; + insertedAt?: Maybe; + payload?: Maybe; + response?: Maybe; + state: WebhookLogState; + status?: Maybe; + updatedAt?: Maybe; + webhook?: Maybe; +}; + +export enum WebhookLogState { + Delivered = 'DELIVERED', + Failed = 'FAILED', + Sending = 'SENDING' +} + +export type CategoryInfo = { + __typename?: 'CategoryInfo'; + category?: Maybe; + count?: Maybe; + tags?: Maybe; +}; + + +export type CategoryInfoTagsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + q?: InputMaybe; +}; + +export type GroupedTagConnection = { + __typename?: 'GroupedTagConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type GroupedTagEdge = { + __typename?: 'GroupedTagEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type GroupedTag = { + __typename?: 'GroupedTag'; + count: Scalars['Int']; + tag: Scalars['String']; +}; + +export type ChartInstallationConnection = { + __typename?: 'ChartInstallationConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type ChartInstallationEdge = { + __typename?: 'ChartInstallationEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type ChartConnection = { + __typename?: 'ChartConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type ChartEdge = { + __typename?: 'ChartEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type ClosureItem = { + __typename?: 'ClosureItem'; + dep?: Maybe; + helm?: Maybe; + terraform?: Maybe; +}; + +/** A Kubernetes cluster that can be used to deploy applications on with Plural. */ +export type Cluster = { + __typename?: 'Cluster'; + /** The account that the cluster belongs to. */ + account?: Maybe; + /** The URL of the console running on the cluster. */ + consoleUrl?: Maybe; + /** The domain name used for applications deployed on the cluster. */ + domain?: Maybe; + /** The git repository URL for the cluster. */ + gitUrl?: Maybe; + /** The ID of the cluster. */ + id: Scalars['ID']; + insertedAt?: Maybe; + /** The name of the cluster. */ + name: Scalars['String']; + /** The user that owns the cluster. */ + owner?: Maybe; + /** The last time the cluster was pinged. */ + pingedAt?: Maybe; + /** The cluster's cloud provider. */ + provider: Provider; + /** The upgrade queue for applications running on the cluster. */ + queue?: Maybe; + /** The source of the cluster. */ + source?: Maybe; + updatedAt?: Maybe; + /** pending upgrades for each installed app */ + upgradeInfo?: Maybe>>; +}; + +export type UpgradeQueue = { + __typename?: 'UpgradeQueue'; + acked?: Maybe; + domain?: Maybe; + git?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + name?: Maybe; + pingedAt?: Maybe; + provider?: Maybe; + updatedAt?: Maybe; + upgrades?: Maybe; + user: User; +}; + + +export type UpgradeQueueUpgradesArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +export type UpgradeConnection = { + __typename?: 'UpgradeConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type UpgradeEdge = { + __typename?: 'UpgradeEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type Upgrade = { + __typename?: 'Upgrade'; + id: Scalars['ID']; + insertedAt?: Maybe; + message?: Maybe; + repository?: Maybe; + type?: Maybe; + updatedAt?: Maybe; +}; + +export enum UpgradeType { + Approval = 'APPROVAL', + Bounce = 'BOUNCE', + Dedicated = 'DEDICATED', + Deploy = 'DEPLOY' +} + +/** Possible cluster sources. */ +export enum Source { + Default = 'DEFAULT', + Demo = 'DEMO', + Shell = 'SHELL' +} + +/** The pending upgrades for a repository */ +export type UpgradeInfo = { + __typename?: 'UpgradeInfo'; + count?: Maybe; + installation?: Maybe; +}; + +export type ClusterConnection = { + __typename?: 'ClusterConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type ClusterEdge = { + __typename?: 'ClusterEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type PluralConfiguration = { + __typename?: 'PluralConfiguration'; + gitCommit?: Maybe; + registry?: Maybe; + stripeConnectId?: Maybe; + stripePublishableKey?: Maybe; +}; + +export type DeferredUpdateConnection = { + __typename?: 'DeferredUpdateConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type DeferredUpdateEdge = { + __typename?: 'DeferredUpdateEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type DeferredUpdate = { + __typename?: 'DeferredUpdate'; + attempts?: Maybe; + chartInstallation?: Maybe; + dequeueAt?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + messages?: Maybe>>; + pending?: Maybe; + terraformInstallation?: Maybe; + updatedAt?: Maybe; + version?: Maybe; +}; + +export type DeferredReason = { + __typename?: 'DeferredReason'; + message?: Maybe; + package?: Maybe; + repository?: Maybe; +}; + +export type DemoProject = { + __typename?: 'DemoProject'; + credentials?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + projectId: Scalars['String']; + ready?: Maybe; + state?: Maybe; + updatedAt?: Maybe; +}; + +export enum DemoProjectState { + Created = 'CREATED', + Enabled = 'ENABLED', + Ready = 'READY' +} + +export type DnsDomain = { + __typename?: 'DnsDomain'; + accessPolicy?: Maybe; + account?: Maybe; + creator?: Maybe; + dnsRecords?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + name: Scalars['String']; + updatedAt?: Maybe; +}; + + +export type DnsDomainDnsRecordsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +export type DnsAccessPolicy = { + __typename?: 'DnsAccessPolicy'; + bindings?: Maybe>>; + id: Scalars['ID']; + insertedAt?: Maybe; + updatedAt?: Maybe; +}; + +export type PolicyBinding = { + __typename?: 'PolicyBinding'; + group?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + updatedAt?: Maybe; + user?: Maybe; +}; + +export type DnsRecordConnection = { + __typename?: 'DnsRecordConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type DnsRecordEdge = { + __typename?: 'DnsRecordEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type DnsRecord = { + __typename?: 'DnsRecord'; + cluster: Scalars['String']; + creator?: Maybe; + domain?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + name: Scalars['String']; + provider: Provider; + records?: Maybe>>; + type: DnsRecordType; + updatedAt?: Maybe; +}; + +export enum DnsRecordType { + A = 'A', + Aaaa = 'AAAA', + Cname = 'CNAME', + Txt = 'TXT' +} + +export type DnsDomainConnection = { + __typename?: 'DnsDomainConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type DnsDomainEdge = { + __typename?: 'DnsDomainEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type DockerImageConnection = { + __typename?: 'DockerImageConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type DockerImageEdge = { + __typename?: 'DockerImageEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type DockerRepositoryConnection = { + __typename?: 'DockerRepositoryConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type DockerRepositoryEdge = { + __typename?: 'DockerRepositoryEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type EabCredential = { + __typename?: 'EabCredential'; + cluster: Scalars['String']; + hmacKey: Scalars['String']; + id: Scalars['ID']; + insertedAt?: Maybe; + keyId: Scalars['String']; + provider: Provider; + updatedAt?: Maybe; +}; + +export type GroupMemberConnection = { + __typename?: 'GroupMemberConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type GroupMemberEdge = { + __typename?: 'GroupMemberEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type GroupMember = { + __typename?: 'GroupMember'; + group?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + updatedAt?: Maybe; + user?: Maybe; +}; + +export type GroupConnection = { + __typename?: 'GroupConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type GroupEdge = { + __typename?: 'GroupEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type Incident = { + __typename?: 'Incident'; + clusterInformation?: Maybe; + creator: User; + description?: Maybe; + files?: Maybe; + follower?: Maybe; + followers?: Maybe; + history?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + messages?: Maybe; + nextResponseAt?: Maybe; + notificationCount?: Maybe; + owner?: Maybe; + postmortem?: Maybe; + repository: Repository; + severity: Scalars['Int']; + status: IncidentStatus; + subscription?: Maybe; + tags?: Maybe>>; + title: Scalars['String']; + updatedAt?: Maybe; +}; + + +export type IncidentFilesArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + + +export type IncidentFollowersArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + + +export type IncidentHistoryArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + + +export type IncidentMessagesArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +export type ClusterInformation = { + __typename?: 'ClusterInformation'; + gitCommit?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + platform?: Maybe; + updatedAt?: Maybe; + version?: Maybe; +}; + +export type FileConnection = { + __typename?: 'FileConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type FileEdge = { + __typename?: 'FileEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type File = { + __typename?: 'File'; + blob: Scalars['String']; + contentType?: Maybe; + filename?: Maybe; + filesize?: Maybe; + height?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + mediaType?: Maybe; + message: IncidentMessage; + updatedAt?: Maybe; + width?: Maybe; +}; + +export enum MediaType { + Audio = 'AUDIO', + Image = 'IMAGE', + Other = 'OTHER', + Pdf = 'PDF', + Video = 'VIDEO' +} + +export type IncidentMessage = { + __typename?: 'IncidentMessage'; + creator: User; + entities?: Maybe>>; + file?: Maybe; + id: Scalars['ID']; + incident: Incident; + insertedAt?: Maybe; + reactions?: Maybe>>; + text: Scalars['String']; + updatedAt?: Maybe; +}; + +export type MessageEntity = { + __typename?: 'MessageEntity'; + endIndex?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + startIndex?: Maybe; + text?: Maybe; + type: MessageEntityType; + updatedAt?: Maybe; + user?: Maybe; +}; + +export enum MessageEntityType { + Emoji = 'EMOJI', + Mention = 'MENTION' +} + +export type Reaction = { + __typename?: 'Reaction'; + creator: User; + insertedAt?: Maybe; + message: IncidentMessage; + name: Scalars['String']; + updatedAt?: Maybe; +}; + +export type Follower = { + __typename?: 'Follower'; + id: Scalars['ID']; + incident?: Maybe; + insertedAt?: Maybe; + preferences?: Maybe; + updatedAt?: Maybe; + user: User; +}; + +export type NotificationPreferences = { + __typename?: 'NotificationPreferences'; + incidentUpdate?: Maybe; + mention?: Maybe; + message?: Maybe; +}; + +export type FollowerConnection = { + __typename?: 'FollowerConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type FollowerEdge = { + __typename?: 'FollowerEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type IncidentHistoryConnection = { + __typename?: 'IncidentHistoryConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type IncidentHistoryEdge = { + __typename?: 'IncidentHistoryEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type IncidentHistory = { + __typename?: 'IncidentHistory'; + action: IncidentAction; + actor: User; + changes?: Maybe>>; + id: Scalars['ID']; + incident: Incident; + insertedAt?: Maybe; + updatedAt?: Maybe; +}; + +export enum IncidentAction { + Accept = 'ACCEPT', + Complete = 'COMPLETE', + Create = 'CREATE', + Edit = 'EDIT', + Severity = 'SEVERITY', + Status = 'STATUS' +} + +export type IncidentChange = { + __typename?: 'IncidentChange'; + key: Scalars['String']; + next?: Maybe; + prev?: Maybe; +}; + +export type IncidentMessageConnection = { + __typename?: 'IncidentMessageConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type IncidentMessageEdge = { + __typename?: 'IncidentMessageEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type Postmortem = { + __typename?: 'Postmortem'; + actionItems?: Maybe>>; + content: Scalars['String']; + creator: User; + id: Scalars['ID']; + insertedAt?: Maybe; + updatedAt?: Maybe; +}; + +export type ActionItem = { + __typename?: 'ActionItem'; + link: Scalars['String']; + type: ActionItemType; +}; + +export enum ActionItemType { + Blog = 'BLOG', + Issue = 'ISSUE', + Pull = 'PULL' +} + +export enum IncidentStatus { + Complete = 'COMPLETE', + InProgress = 'IN_PROGRESS', + Open = 'OPEN', + Resolved = 'RESOLVED' +} + +export type SlimSubscription = { + __typename?: 'SlimSubscription'; + id: Scalars['ID']; + lineItems?: Maybe; + plan?: Maybe; +}; + +export type IncidentFilter = { + statuses?: InputMaybe>>; + type: IncidentFilterType; + value?: InputMaybe; +}; + +export enum IncidentFilterType { + Following = 'FOLLOWING', + Notifications = 'NOTIFICATIONS', + Status = 'STATUS', + Tag = 'TAG' +} + +export enum Order { + Asc = 'ASC', + Desc = 'DESC' +} + +export enum IncidentSort { + InsertedAt = 'INSERTED_AT', + Severity = 'SEVERITY', + Status = 'STATUS', + Title = 'TITLE' +} + +export type IncidentConnection = { + __typename?: 'IncidentConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type IncidentEdge = { + __typename?: 'IncidentEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type InstallationConnection = { + __typename?: 'InstallationConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type InstallationEdge = { + __typename?: 'InstallationEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type IntegrationConnection = { + __typename?: 'IntegrationConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type IntegrationEdge = { + __typename?: 'IntegrationEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type Integration = { + __typename?: 'Integration'; + description?: Maybe; + icon?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + name: Scalars['String']; + publisher?: Maybe; + repository?: Maybe; + sourceUrl?: Maybe; + spec?: Maybe; + tags?: Maybe>>; + type?: Maybe; + updatedAt?: Maybe; +}; + +export type IntegrationWebhookConnection = { + __typename?: 'IntegrationWebhookConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type IntegrationWebhookEdge = { + __typename?: 'IntegrationWebhookEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type Invite = { + __typename?: 'Invite'; + account?: Maybe; + email?: Maybe; + existing: Scalars['Boolean']; + expiresAt?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + secureId?: Maybe; + updatedAt?: Maybe; + user?: Maybe; +}; + +export type InviteConnection = { + __typename?: 'InviteConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type InviteEdge = { + __typename?: 'InviteEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type KeyBackup = { + __typename?: 'KeyBackup'; + digest: Scalars['String']; + id: Scalars['ID']; + insertedAt?: Maybe; + name: Scalars['String']; + repositories?: Maybe>; + updatedAt?: Maybe; + user: User; + value: Scalars['String']; +}; + +export type KeyBackupConnection = { + __typename?: 'KeyBackupConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type KeyBackupEdge = { + __typename?: 'KeyBackupEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type LoginMethodResponse = { + __typename?: 'LoginMethodResponse'; + authorizeUrl?: Maybe; + loginMethod: LoginMethod; + token?: Maybe; +}; + +export type NotificationConnection = { + __typename?: 'NotificationConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type NotificationEdge = { + __typename?: 'NotificationEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type Notification = { + __typename?: 'Notification'; + actor: User; + id: Scalars['ID']; + incident?: Maybe; + insertedAt?: Maybe; + message?: Maybe; + msg?: Maybe; + repository?: Maybe; + type: NotificationType; + updatedAt?: Maybe; + user: User; +}; + +export enum NotificationType { + IncidentUpdate = 'INCIDENT_UPDATE', + Locked = 'LOCKED', + Mention = 'MENTION', + Message = 'MESSAGE' +} + +export type OauthIntegration = { + __typename?: 'OauthIntegration'; + account?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + service: OauthService; + updatedAt?: Maybe; +}; + +export enum OauthService { + Zoom = 'ZOOM' +} + +export type OauthInfo = { + __typename?: 'OauthInfo'; + authorizeUrl: Scalars['String']; + provider: OauthProvider; +}; + +export enum OauthProvider { + Github = 'GITHUB', + Gitlab = 'GITLAB', + Google = 'GOOGLE' +} + +export type OidcStepResponse = { + __typename?: 'OidcStepResponse'; + consent?: Maybe; + login?: Maybe; + repository?: Maybe; +}; + +export type LoginRequest = { + __typename?: 'LoginRequest'; + requestedScope?: Maybe>>; + subject?: Maybe; +}; + +export type OidcLoginConnection = { + __typename?: 'OidcLoginConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type OidcLoginEdge = { + __typename?: 'OidcLoginEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type OidcLogin = { + __typename?: 'OidcLogin'; + city?: Maybe; + country?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + ip?: Maybe; + latitude?: Maybe; + longitude?: Maybe; + owner?: Maybe; + repository?: Maybe; + updatedAt?: Maybe; + user?: Maybe; +}; + +export type PlatformMetrics = { + __typename?: 'PlatformMetrics'; + clusters?: Maybe; + publishers?: Maybe; + repositories?: Maybe; + rollouts?: Maybe; +}; + +export type PublicKeyConnection = { + __typename?: 'PublicKeyConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type PublicKeyEdge = { + __typename?: 'PublicKeyEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type PublicKey = { + __typename?: 'PublicKey'; + content: Scalars['String']; + digest: Scalars['String']; + id: Scalars['ID']; + insertedAt?: Maybe; + name: Scalars['String']; + updatedAt?: Maybe; + user: User; +}; + +export type PublisherConnection = { + __typename?: 'PublisherConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type PublisherEdge = { + __typename?: 'PublisherEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type RecipeConnection = { + __typename?: 'RecipeConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type RecipeEdge = { + __typename?: 'RecipeEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type RepositoryConnection = { + __typename?: 'RepositoryConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type RepositoryEdge = { + __typename?: 'RepositoryEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type ResetToken = { + __typename?: 'ResetToken'; + email: Scalars['String']; + externalId: Scalars['ID']; + id: Scalars['ID']; + insertedAt?: Maybe; + type: ResetTokenType; + updatedAt?: Maybe; + user: User; +}; + +export enum ResetTokenType { + Email = 'EMAIL', + Password = 'PASSWORD' +} + +export type RoleConnection = { + __typename?: 'RoleConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type RoleEdge = { + __typename?: 'RoleEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type RolloutConnection = { + __typename?: 'RolloutConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type RolloutEdge = { + __typename?: 'RolloutEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type Rollout = { + __typename?: 'Rollout'; + count?: Maybe; + cursor?: Maybe; + event?: Maybe; + heartbeat?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + repository?: Maybe; + status: RolloutStatus; + updatedAt?: Maybe; +}; + +export enum RolloutStatus { + Finished = 'FINISHED', + Queued = 'QUEUED', + Running = 'RUNNING' +} + +export type ScaffoldFile = { + __typename?: 'ScaffoldFile'; + content?: Maybe; + path?: Maybe; +}; + +export type AuthorizationUrl = { + __typename?: 'AuthorizationUrl'; + provider: ScmProvider; + url: Scalars['String']; +}; + +export enum ScmProvider { + Demo = 'DEMO', + Github = 'GITHUB', + Gitlab = 'GITLAB', + Manual = 'MANUAL' +} + +export type UserConnection = { + __typename?: 'UserConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type UserEdge = { + __typename?: 'UserEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type CloudShell = { + __typename?: 'CloudShell'; + aesKey: Scalars['String']; + alive: Scalars['Boolean']; + cluster: Scalars['String']; + gitUrl: Scalars['String']; + id: Scalars['ID']; + insertedAt?: Maybe; + missing?: Maybe>>; + provider: Provider; + region: Scalars['String']; + status?: Maybe; + subdomain: Scalars['String']; + updatedAt?: Maybe; +}; + +export type ShellStatus = { + __typename?: 'ShellStatus'; + containersReady?: Maybe; + initialized?: Maybe; + podScheduled?: Maybe; + ready?: Maybe; +}; + +export type ShellConfiguration = { + __typename?: 'ShellConfiguration'; + buckets?: Maybe>>; + contextConfiguration?: Maybe; + domains?: Maybe>>; + git?: Maybe; + workspace?: Maybe; +}; + +export type GitConfiguration = { + __typename?: 'GitConfiguration'; + branch?: Maybe; + name?: Maybe; + root?: Maybe; + url?: Maybe; +}; + +export type ShellWorkspace = { + __typename?: 'ShellWorkspace'; + bucketPrefix?: Maybe; + cluster?: Maybe; + network?: Maybe; + region?: Maybe; +}; + +export type NetworkConfiguration = { + __typename?: 'NetworkConfiguration'; + pluralDns?: Maybe; + subdomain?: Maybe; +}; + +export type Stack = { + __typename?: 'Stack'; + bundles?: Maybe>>; + collections?: Maybe>>; + community?: Maybe; + creator?: Maybe; + description?: Maybe; + displayName?: Maybe; + featured?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + name: Scalars['String']; + sections?: Maybe>>; + updatedAt?: Maybe; +}; + +export type StackCollection = { + __typename?: 'StackCollection'; + bundles?: Maybe>>; + id: Scalars['ID']; + insertedAt?: Maybe; + provider: Provider; + updatedAt?: Maybe; +}; + +export type StackRecipe = { + __typename?: 'StackRecipe'; + id: Scalars['ID']; + insertedAt?: Maybe; + recipe: Recipe; + updatedAt?: Maybe; +}; + +export type StackConnection = { + __typename?: 'StackConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type StackEdge = { + __typename?: 'StackEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type RepositorySubscriptionConnection = { + __typename?: 'RepositorySubscriptionConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type RepositorySubscriptionEdge = { + __typename?: 'RepositorySubscriptionEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export enum TagGroup { + Integrations = 'INTEGRATIONS', + Repositories = 'REPOSITORIES' +} + +export type TerraformConnection = { + __typename?: 'TerraformConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type TerraformEdge = { + __typename?: 'TerraformEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type TerraformInstallationConnection = { + __typename?: 'TerraformInstallationConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type TerraformInstallationEdge = { + __typename?: 'TerraformInstallationEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type TerraformProvider = { + __typename?: 'TerraformProvider'; + content?: Maybe; + name?: Maybe; +}; + +export type Test = { + __typename?: 'Test'; + creator?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + name?: Maybe; + promoteTag: Scalars['String']; + repository?: Maybe; + sourceTag: Scalars['String']; + status: TestStatus; + steps?: Maybe>>; + tags?: Maybe>; + updatedAt?: Maybe; +}; + +export enum TestStatus { + Failed = 'FAILED', + Queued = 'QUEUED', + Running = 'RUNNING', + Succeeded = 'SUCCEEDED' +} + +export type TestStep = { + __typename?: 'TestStep'; + description: Scalars['String']; + hasLogs?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + name: Scalars['String']; + status: TestStatus; + updatedAt?: Maybe; +}; + +export type TestConnection = { + __typename?: 'TestConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type TestEdge = { + __typename?: 'TestEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type PersistedToken = { + __typename?: 'PersistedToken'; + audits?: Maybe; + id?: Maybe; + insertedAt?: Maybe; + metrics?: Maybe>>; + token?: Maybe; + updatedAt?: Maybe; +}; + + +export type PersistedTokenAuditsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +export type PersistedTokenAuditConnection = { + __typename?: 'PersistedTokenAuditConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type PersistedTokenAuditEdge = { + __typename?: 'PersistedTokenAuditEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type PersistedTokenAudit = { + __typename?: 'PersistedTokenAudit'; + city?: Maybe; + count?: Maybe; + country?: Maybe; + id?: Maybe; + insertedAt?: Maybe; + ip?: Maybe; + latitude?: Maybe; + longitude?: Maybe; + timestamp?: Maybe; + updatedAt?: Maybe; +}; + +export type PersistedTokenConnection = { + __typename?: 'PersistedTokenConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type PersistedTokenEdge = { + __typename?: 'PersistedTokenEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type VersionConnection = { + __typename?: 'VersionConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type VersionEdge = { + __typename?: 'VersionEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type WebhookConnection = { + __typename?: 'WebhookConnection'; + edges?: Maybe>>; + pageInfo: PageInfo; +}; + +export type WebhookEdge = { + __typename?: 'WebhookEdge'; + cursor?: Maybe; + node?: Maybe; +}; + +export type Webhook = { + __typename?: 'Webhook'; + id?: Maybe; + insertedAt?: Maybe; + secret?: Maybe; + updatedAt?: Maybe; + url?: Maybe; + user?: Maybe; +}; + +export type RootMutationType = { + __typename?: 'RootMutationType'; + acceptIncident?: Maybe; + acceptLogin?: Maybe; + acquireLock?: Maybe; + cancelPlatformSubscription?: Maybe; + completeIncident?: Maybe; + createArtifact?: Maybe; + createCard?: Maybe; + /** Create a new cluster. */ + createCluster?: Maybe; + /** adds a dependency for this cluster to gate future upgrades */ + createClusterDependency?: Maybe; + createCrd?: Maybe; + createDemoProject?: Maybe; + createDnsRecord?: Maybe; + createDomain?: Maybe; + createGroup?: Maybe; + createGroupMember?: Maybe; + createIncident?: Maybe; + createInstallation?: Maybe; + createIntegration?: Maybe; + createIntegrationWebhook?: Maybe; + createInvite?: Maybe; + createKeyBackup?: Maybe; + createMessage?: Maybe; + createOauthIntegration?: Maybe; + createOidcProvider?: Maybe; + createPlan?: Maybe; + createPlatformSubscription?: Maybe; + createPublicKey?: Maybe; + createPublisher?: Maybe; + createQueue?: Maybe; + createReaction?: Maybe; + createRecipe?: Maybe; + createRepository?: Maybe; + createResetToken?: Maybe; + createRole?: Maybe; + createServiceAccount?: Maybe; + createShell?: Maybe; + createStack?: Maybe; + createSubscription?: Maybe; + createTerraform?: Maybe; + createTest?: Maybe; + createToken?: Maybe; + createUserEvent?: Maybe; + createWebhook?: Maybe; + createZoom?: Maybe; + deleteCard?: Maybe; + deleteChartInstallation?: Maybe; + /** Delete a cluster. */ + deleteCluster?: Maybe; + deleteDemoProject?: Maybe; + deleteDnsRecord?: Maybe; + deleteDomain?: Maybe; + deleteEabKey?: Maybe; + deleteGroup?: Maybe; + deleteGroupMember?: Maybe; + deleteIncident?: Maybe; + deleteInstallation?: Maybe; + deleteIntegrationWebhook?: Maybe; + deleteInvite?: Maybe; + deleteKeyBackup?: Maybe; + deleteMessage?: Maybe; + deletePlatformSubscription?: Maybe; + deletePublicKey?: Maybe; + deleteReaction?: Maybe; + deleteRecipe?: Maybe; + deleteRepository?: Maybe; + deleteRole?: Maybe; + deleteShell?: Maybe; + deleteStack?: Maybe; + deleteTerraform?: Maybe; + deleteToken?: Maybe; + deleteUser?: Maybe; + destroyCluster?: Maybe; + deviceLogin?: Maybe; + externalToken?: Maybe; + followIncident?: Maybe; + impersonateServiceAccount?: Maybe; + installBundle?: Maybe>>; + installChart?: Maybe; + installRecipe?: Maybe>>; + installStack?: Maybe>>; + installStackShell?: Maybe>>; + installTerraform?: Maybe; + linkPublisher?: Maybe; + login?: Maybe; + loginToken?: Maybe; + oauthCallback?: Maybe; + oauthConsent?: Maybe; + passwordlessLogin?: Maybe; + pingWebhook?: Maybe; + /** moves up the upgrade waterline for a user */ + promote?: Maybe; + provisionDomain?: Maybe; + publishLogs?: Maybe; + quickStack?: Maybe; + readNotifications?: Maybe; + realizeInvite?: Maybe; + realizeResetToken?: Maybe; + rebootShell?: Maybe; + releaseLock?: Maybe; + resetInstallations?: Maybe; + restartShell?: Maybe; + setupShell?: Maybe; + signup?: Maybe; + ssoCallback?: Maybe; + stopShell?: Maybe; + transferDemoProject?: Maybe; + unfollowIncident?: Maybe; + uninstallTerraform?: Maybe; + unlockRepository?: Maybe; + updateAccount?: Maybe; + updateChart?: Maybe; + updateChartInstallation?: Maybe; + updateDockerRepository?: Maybe; + updateDomain?: Maybe; + updateGroup?: Maybe; + updateIncident?: Maybe; + updateInstallation?: Maybe; + updateIntegrationWebhook?: Maybe; + updateLineItem?: Maybe; + updateMessage?: Maybe; + updateOidcProvider?: Maybe; + updatePlan?: Maybe; + updatePlanAttributes?: Maybe; + updatePlatformPlan?: Maybe; + updatePublisher?: Maybe; + updateRepository?: Maybe; + updateRole?: Maybe; + updateServiceAccount?: Maybe; + updateShell?: Maybe; + updateShellConfiguration?: Maybe; + updateStep?: Maybe; + updateTerraform?: Maybe; + updateTest?: Maybe; + updateUser?: Maybe; + updateVersion?: Maybe; + uploadTerraform?: Maybe; + upsertOidcProvider?: Maybe; + upsertRepository?: Maybe; +}; + + +export type RootMutationTypeAcceptIncidentArgs = { + id: Scalars['ID']; +}; + + +export type RootMutationTypeAcceptLoginArgs = { + challenge: Scalars['String']; +}; + + +export type RootMutationTypeAcquireLockArgs = { + repository: Scalars['String']; +}; + + +export type RootMutationTypeCompleteIncidentArgs = { + id: Scalars['ID']; + postmortem: PostmortemAttributes; +}; + + +export type RootMutationTypeCreateArtifactArgs = { + attributes: ArtifactAttributes; + repositoryId?: InputMaybe; + repositoryName?: InputMaybe; +}; + + +export type RootMutationTypeCreateCardArgs = { + address?: InputMaybe; + source: Scalars['String']; +}; + + +export type RootMutationTypeCreateClusterArgs = { + attributes: ClusterAttributes; +}; + + +export type RootMutationTypeCreateClusterDependencyArgs = { + destId: Scalars['ID']; + sourceId: Scalars['ID']; +}; + + +export type RootMutationTypeCreateCrdArgs = { + attributes: CrdAttributes; + chartId?: InputMaybe; + chartName?: InputMaybe; +}; + + +export type RootMutationTypeCreateDnsRecordArgs = { + attributes: DnsRecordAttributes; + cluster: Scalars['String']; + provider: Provider; +}; + + +export type RootMutationTypeCreateDomainArgs = { + attributes: DnsDomainAttributes; +}; + + +export type RootMutationTypeCreateGroupArgs = { + attributes: GroupAttributes; +}; + + +export type RootMutationTypeCreateGroupMemberArgs = { + groupId: Scalars['ID']; + userId: Scalars['ID']; +}; + + +export type RootMutationTypeCreateIncidentArgs = { + attributes: IncidentAttributes; + repository?: InputMaybe; + repositoryId?: InputMaybe; +}; + + +export type RootMutationTypeCreateInstallationArgs = { + repositoryId: Scalars['ID']; +}; + + +export type RootMutationTypeCreateIntegrationArgs = { + attributes: IntegrationAttributes; + repositoryName: Scalars['String']; +}; + + +export type RootMutationTypeCreateIntegrationWebhookArgs = { + attributes: IntegrationWebhookAttributes; +}; + + +export type RootMutationTypeCreateInviteArgs = { + attributes: InviteAttributes; +}; + + +export type RootMutationTypeCreateKeyBackupArgs = { + attributes: KeyBackupAttributes; +}; + + +export type RootMutationTypeCreateMessageArgs = { + attributes: IncidentMessageAttributes; + incidentId: Scalars['ID']; +}; + + +export type RootMutationTypeCreateOauthIntegrationArgs = { + attributes: OauthAttributes; +}; + + +export type RootMutationTypeCreateOidcProviderArgs = { + attributes: OidcAttributes; + installationId: Scalars['ID']; +}; + + +export type RootMutationTypeCreatePlanArgs = { + attributes: PlanAttributes; + repositoryId: Scalars['ID']; +}; + + +export type RootMutationTypeCreatePlatformSubscriptionArgs = { + planId: Scalars['ID']; +}; + + +export type RootMutationTypeCreatePublicKeyArgs = { + attributes: PublicKeyAttributes; +}; + + +export type RootMutationTypeCreatePublisherArgs = { + attributes: PublisherAttributes; +}; + + +export type RootMutationTypeCreateQueueArgs = { + attributes: UpgradeQueueAttributes; +}; + + +export type RootMutationTypeCreateReactionArgs = { + messageId: Scalars['ID']; + name: Scalars['String']; +}; + + +export type RootMutationTypeCreateRecipeArgs = { + attributes: RecipeAttributes; + repositoryId?: InputMaybe; + repositoryName?: InputMaybe; +}; + + +export type RootMutationTypeCreateRepositoryArgs = { + attributes: RepositoryAttributes; + id?: InputMaybe; +}; + + +export type RootMutationTypeCreateResetTokenArgs = { + attributes: ResetTokenAttributes; +}; + + +export type RootMutationTypeCreateRoleArgs = { + attributes: RoleAttributes; +}; + + +export type RootMutationTypeCreateServiceAccountArgs = { + attributes: ServiceAccountAttributes; +}; + + +export type RootMutationTypeCreateShellArgs = { + attributes: CloudShellAttributes; +}; + + +export type RootMutationTypeCreateStackArgs = { + attributes: StackAttributes; +}; + + +export type RootMutationTypeCreateSubscriptionArgs = { + attributes?: InputMaybe; + installationId: Scalars['ID']; + planId: Scalars['ID']; +}; + + +export type RootMutationTypeCreateTerraformArgs = { + attributes: TerraformAttributes; + repositoryId: Scalars['ID']; +}; + + +export type RootMutationTypeCreateTestArgs = { + attributes: TestAttributes; + name?: InputMaybe; + repositoryId?: InputMaybe; +}; + + +export type RootMutationTypeCreateUserEventArgs = { + attributes: UserEventAttributes; +}; + + +export type RootMutationTypeCreateWebhookArgs = { + attributes: WebhookAttributes; +}; + + +export type RootMutationTypeCreateZoomArgs = { + attributes: MeetingAttributes; +}; + + +export type RootMutationTypeDeleteCardArgs = { + id: Scalars['ID']; +}; + + +export type RootMutationTypeDeleteChartInstallationArgs = { + id: Scalars['ID']; +}; + + +export type RootMutationTypeDeleteClusterArgs = { + name: Scalars['String']; + provider: Provider; +}; + + +export type RootMutationTypeDeleteDnsRecordArgs = { + name: Scalars['String']; + type: DnsRecordType; +}; + + +export type RootMutationTypeDeleteDomainArgs = { + id: Scalars['ID']; +}; + + +export type RootMutationTypeDeleteEabKeyArgs = { + cluster?: InputMaybe; + id?: InputMaybe; + provider?: InputMaybe; +}; + + +export type RootMutationTypeDeleteGroupArgs = { + groupId: Scalars['ID']; +}; + + +export type RootMutationTypeDeleteGroupMemberArgs = { + groupId: Scalars['ID']; + userId: Scalars['ID']; +}; + + +export type RootMutationTypeDeleteIncidentArgs = { + id: Scalars['ID']; +}; + + +export type RootMutationTypeDeleteInstallationArgs = { + id: Scalars['ID']; +}; + + +export type RootMutationTypeDeleteIntegrationWebhookArgs = { + id: Scalars['ID']; +}; + + +export type RootMutationTypeDeleteInviteArgs = { + id?: InputMaybe; + secureId?: InputMaybe; +}; + + +export type RootMutationTypeDeleteKeyBackupArgs = { + name: Scalars['String']; +}; + + +export type RootMutationTypeDeleteMessageArgs = { + id: Scalars['ID']; +}; + + +export type RootMutationTypeDeletePublicKeyArgs = { + id: Scalars['ID']; +}; + + +export type RootMutationTypeDeleteReactionArgs = { + messageId: Scalars['ID']; + name: Scalars['String']; +}; + + +export type RootMutationTypeDeleteRecipeArgs = { + id: Scalars['ID']; +}; + + +export type RootMutationTypeDeleteRepositoryArgs = { + repositoryId: Scalars['ID']; +}; + + +export type RootMutationTypeDeleteRoleArgs = { + id: Scalars['ID']; +}; + + +export type RootMutationTypeDeleteStackArgs = { + name: Scalars['String']; +}; + + +export type RootMutationTypeDeleteTerraformArgs = { + id: Scalars['ID']; +}; + + +export type RootMutationTypeDeleteTokenArgs = { + id: Scalars['ID']; +}; + + +export type RootMutationTypeDeleteUserArgs = { + id: Scalars['ID']; +}; + + +export type RootMutationTypeDestroyClusterArgs = { + domain: Scalars['String']; + name: Scalars['String']; + provider: Provider; +}; + + +export type RootMutationTypeFollowIncidentArgs = { + attributes: FollowerAttributes; + id: Scalars['ID']; +}; + + +export type RootMutationTypeImpersonateServiceAccountArgs = { + email?: InputMaybe; + id?: InputMaybe; +}; + + +export type RootMutationTypeInstallBundleArgs = { + context: ContextAttributes; + name: Scalars['String']; + oidc: Scalars['Boolean']; + repo: Scalars['String']; +}; + + +export type RootMutationTypeInstallChartArgs = { + attributes: ChartInstallationAttributes; + installationId: Scalars['ID']; +}; + + +export type RootMutationTypeInstallRecipeArgs = { + context: Scalars['Map']; + recipeId: Scalars['ID']; +}; + + +export type RootMutationTypeInstallStackArgs = { + name: Scalars['String']; + provider: Provider; +}; + + +export type RootMutationTypeInstallStackShellArgs = { + context: ContextAttributes; + name: Scalars['String']; + oidc: Scalars['Boolean']; +}; + + +export type RootMutationTypeInstallTerraformArgs = { + attributes: TerraformInstallationAttributes; + installationId: Scalars['ID']; +}; + + +export type RootMutationTypeLinkPublisherArgs = { + token: Scalars['String']; +}; + + +export type RootMutationTypeLoginArgs = { + deviceToken?: InputMaybe; + email: Scalars['String']; + password: Scalars['String']; +}; + + +export type RootMutationTypeLoginTokenArgs = { + deviceToken?: InputMaybe; + token: Scalars['String']; +}; + + +export type RootMutationTypeOauthCallbackArgs = { + code: Scalars['String']; + deviceToken?: InputMaybe; + host?: InputMaybe; + provider: OauthProvider; +}; + + +export type RootMutationTypeOauthConsentArgs = { + challenge: Scalars['String']; + scopes?: InputMaybe>>; +}; + + +export type RootMutationTypePasswordlessLoginArgs = { + token: Scalars['String']; +}; + + +export type RootMutationTypePingWebhookArgs = { + id: Scalars['ID']; + message?: InputMaybe; + repo: Scalars['String']; +}; + + +export type RootMutationTypeProvisionDomainArgs = { + name: Scalars['String']; +}; + + +export type RootMutationTypePublishLogsArgs = { + id: Scalars['ID']; + logs: Scalars['String']; +}; + + +export type RootMutationTypeQuickStackArgs = { + provider: Provider; + repositoryIds?: InputMaybe>>; +}; + + +export type RootMutationTypeReadNotificationsArgs = { + incidentId?: InputMaybe; +}; + + +export type RootMutationTypeRealizeInviteArgs = { + id: Scalars['String']; +}; + + +export type RootMutationTypeRealizeResetTokenArgs = { + attributes: ResetTokenRealization; + id: Scalars['ID']; +}; + + +export type RootMutationTypeReleaseLockArgs = { + attributes: LockAttributes; + repository: Scalars['String']; +}; + + +export type RootMutationTypeSignupArgs = { + account?: InputMaybe; + attributes: UserAttributes; + deviceToken?: InputMaybe; + inviteId?: InputMaybe; +}; + + +export type RootMutationTypeSsoCallbackArgs = { + code: Scalars['String']; + deviceToken?: InputMaybe; +}; + + +export type RootMutationTypeTransferDemoProjectArgs = { + organizationId: Scalars['String']; +}; + + +export type RootMutationTypeUnfollowIncidentArgs = { + id: Scalars['ID']; +}; + + +export type RootMutationTypeUninstallTerraformArgs = { + id: Scalars['ID']; +}; + + +export type RootMutationTypeUnlockRepositoryArgs = { + name: Scalars['String']; +}; + + +export type RootMutationTypeUpdateAccountArgs = { + attributes: AccountAttributes; +}; + + +export type RootMutationTypeUpdateChartArgs = { + attributes: ChartAttributes; + id: Scalars['ID']; +}; + + +export type RootMutationTypeUpdateChartInstallationArgs = { + attributes: ChartInstallationAttributes; + chartInstallationId: Scalars['ID']; +}; + + +export type RootMutationTypeUpdateDockerRepositoryArgs = { + attributes: DockerRepositoryAttributes; + id: Scalars['ID']; +}; + + +export type RootMutationTypeUpdateDomainArgs = { + attributes: DnsDomainAttributes; + id: Scalars['ID']; +}; + + +export type RootMutationTypeUpdateGroupArgs = { + attributes: GroupAttributes; + groupId: Scalars['ID']; +}; + + +export type RootMutationTypeUpdateIncidentArgs = { + attributes: IncidentAttributes; + id: Scalars['ID']; +}; + + +export type RootMutationTypeUpdateInstallationArgs = { + attributes: InstallationAttributes; + id: Scalars['ID']; +}; + + +export type RootMutationTypeUpdateIntegrationWebhookArgs = { + attributes: IntegrationWebhookAttributes; + id: Scalars['ID']; +}; + + +export type RootMutationTypeUpdateLineItemArgs = { + attributes: LimitAttributes; + subscriptionId: Scalars['ID']; +}; + + +export type RootMutationTypeUpdateMessageArgs = { + attributes: IncidentMessageAttributes; + id: Scalars['ID']; +}; + + +export type RootMutationTypeUpdateOidcProviderArgs = { + attributes: OidcAttributes; + installationId: Scalars['ID']; +}; + + +export type RootMutationTypeUpdatePlanArgs = { + planId: Scalars['ID']; + subscriptionId: Scalars['ID']; +}; + + +export type RootMutationTypeUpdatePlanAttributesArgs = { + attributes: UpdatablePlanAttributes; + id: Scalars['ID']; +}; + + +export type RootMutationTypeUpdatePlatformPlanArgs = { + planId: Scalars['ID']; +}; + + +export type RootMutationTypeUpdatePublisherArgs = { + attributes: PublisherAttributes; +}; + + +export type RootMutationTypeUpdateRepositoryArgs = { + attributes: RepositoryAttributes; + repositoryId?: InputMaybe; + repositoryName?: InputMaybe; +}; + + +export type RootMutationTypeUpdateRoleArgs = { + attributes: RoleAttributes; + id: Scalars['ID']; +}; + + +export type RootMutationTypeUpdateServiceAccountArgs = { + attributes: ServiceAccountAttributes; + id: Scalars['ID']; +}; + + +export type RootMutationTypeUpdateShellArgs = { + attributes: CloudShellAttributes; +}; + + +export type RootMutationTypeUpdateShellConfigurationArgs = { + context: Scalars['Map']; +}; + + +export type RootMutationTypeUpdateStepArgs = { + attributes: TestStepAttributes; + id: Scalars['ID']; +}; + + +export type RootMutationTypeUpdateTerraformArgs = { + attributes: TerraformAttributes; + id: Scalars['ID']; +}; + + +export type RootMutationTypeUpdateTestArgs = { + attributes: TestAttributes; + id: Scalars['ID']; +}; + + +export type RootMutationTypeUpdateUserArgs = { + attributes: UserAttributes; + id?: InputMaybe; +}; + + +export type RootMutationTypeUpdateVersionArgs = { + attributes: VersionAttributes; + id?: InputMaybe; + spec?: InputMaybe; +}; + + +export type RootMutationTypeUploadTerraformArgs = { + attributes: TerraformAttributes; + name: Scalars['String']; + repositoryName: Scalars['String']; +}; + + +export type RootMutationTypeUpsertOidcProviderArgs = { + attributes: OidcAttributes; + installationId: Scalars['ID']; +}; + + +export type RootMutationTypeUpsertRepositoryArgs = { + attributes: RepositoryAttributes; + name: Scalars['String']; + publisher: Scalars['String']; +}; + +export type OauthResponse = { + __typename?: 'OauthResponse'; + redirectTo: Scalars['String']; +}; + +export type ApplyLock = { + __typename?: 'ApplyLock'; + id: Scalars['ID']; + insertedAt?: Maybe; + lock?: Maybe; + owner?: Maybe; + repository?: Maybe; + updatedAt?: Maybe; +}; + +export type PostmortemAttributes = { + actionItems?: InputMaybe>>; + content: Scalars['String']; +}; + +export type ActionItemAttributes = { + link: Scalars['String']; + type: ActionItemType; +}; + +export type ArtifactAttributes = { + arch?: InputMaybe; + blob?: InputMaybe; + name: Scalars['String']; + platform: Scalars['String']; + readme: Scalars['String']; + type: Scalars['String']; +}; + +export type AddressAttributes = { + city: Scalars['String']; + country: Scalars['String']; + line1: Scalars['String']; + line2: Scalars['String']; + name?: InputMaybe; + state: Scalars['String']; + zip: Scalars['String']; +}; + +/** Input for creating or updating a cluster. */ +export type ClusterAttributes = { + /** The URL of the console running on the cluster. */ + consoleUrl?: InputMaybe; + /** The domain name used for applications deployed on the cluster. */ + domain?: InputMaybe; + /** The git repository URL for the cluster. */ + gitUrl?: InputMaybe; + /** The name of the cluster. */ + name: Scalars['String']; + /** The cluster's cloud provider. */ + provider: Provider; + /** The source of the cluster. */ + source?: InputMaybe; +}; + +/** A dependncy reference between clusters */ +export type ClusterDependency = { + __typename?: 'ClusterDependency'; + /** the cluster holding this dependency */ + cluster?: Maybe; + /** the source cluster of this dependency */ + dependency?: Maybe; + id: Scalars['ID']; + insertedAt?: Maybe; + updatedAt?: Maybe; +}; + +export type CrdAttributes = { + blob?: InputMaybe; + name: Scalars['String']; +}; + +export type ChartName = { + chart?: InputMaybe; + repo?: InputMaybe; +}; + +export type DnsRecordAttributes = { + name: Scalars['String']; + records?: InputMaybe>>; + type: DnsRecordType; +}; + +export type DnsDomainAttributes = { + accessPolicy?: InputMaybe; + name?: InputMaybe; +}; + +export type DnsAccessPolicyAttributes = { + bindings?: InputMaybe>>; + id?: InputMaybe; +}; + +export type BindingAttributes = { + groupId?: InputMaybe; + id?: InputMaybe; + userId?: InputMaybe; +}; + +export type GroupAttributes = { + description?: InputMaybe; + global?: InputMaybe; + name: Scalars['String']; +}; + +export type IncidentAttributes = { + clusterInformation?: InputMaybe; + description?: InputMaybe; + severity?: InputMaybe; + status?: InputMaybe; + tags?: InputMaybe>>; + title?: InputMaybe; +}; + +export type ClusterInformationAttributes = { + gitCommit?: InputMaybe; + platform?: InputMaybe; + version?: InputMaybe; +}; + +export type TagAttributes = { + tag: Scalars['String']; +}; + +export type IntegrationAttributes = { + description?: InputMaybe; + icon?: InputMaybe; + name: Scalars['String']; + sourceUrl?: InputMaybe; + spec?: InputMaybe; + tags?: InputMaybe>>; + type?: InputMaybe; +}; + +export type IntegrationWebhookAttributes = { + actions?: InputMaybe>>; + name: Scalars['String']; + url: Scalars['String']; +}; + +export type InviteAttributes = { + email?: InputMaybe; +}; + +export type KeyBackupAttributes = { + key: Scalars['String']; + name: Scalars['String']; + repositories?: InputMaybe>>; +}; + +export type IncidentMessageAttributes = { + entities?: InputMaybe>>; + file?: InputMaybe; + text: Scalars['String']; +}; + +export type EntityAttributes = { + endIndex?: InputMaybe; + startIndex?: InputMaybe; + text?: InputMaybe; + type: MessageEntityType; + userId?: InputMaybe; +}; + +export type FileAttributes = { + blob?: InputMaybe; +}; + +export type OauthAttributes = { + code?: InputMaybe; + redirectUri?: InputMaybe; + service?: InputMaybe; +}; + +/** Input for creating or updating the OIDC attributes of an application installation. */ +export type OidcAttributes = { + /** The authentication method for the OIDC provider. */ + authMethod: OidcAuthMethod; + /** The users or groups that can login through the OIDC provider. */ + bindings?: InputMaybe>>; + /** The redirect URIs for the OIDC provider. */ + redirectUris?: InputMaybe>>; +}; + +export type PlanAttributes = { + cost: Scalars['Int']; + default?: InputMaybe; + lineItems?: InputMaybe; + metadata?: InputMaybe; + name: Scalars['String']; + period: Scalars['String']; + serviceLevels?: InputMaybe>>; +}; + +export type PlanLineItemAttributes = { + included?: InputMaybe>>; + items?: InputMaybe>>; +}; + +export type LimitAttributes = { + dimension: Scalars['String']; + quantity: Scalars['Int']; +}; + +export type LineItemAttributes = { + cost: Scalars['Int']; + dimension: Scalars['String']; + name: Scalars['String']; + period: Scalars['String']; + type?: InputMaybe; +}; + +export type PlanMetadataAttributes = { + features?: InputMaybe>>; + freeform?: InputMaybe; +}; + +export type PlanFeatureAttributes = { + description: Scalars['String']; + name: Scalars['String']; +}; + +export type ServiceLevelAttributes = { + maxSeverity?: InputMaybe; + minSeverity?: InputMaybe; + responseTime?: InputMaybe; +}; + +export type PublicKeyAttributes = { + content: Scalars['String']; + name: Scalars['String']; +}; + +export type PublisherAttributes = { + address?: InputMaybe; + avatar?: InputMaybe; + community?: InputMaybe; + description?: InputMaybe; + name?: InputMaybe; + phone?: InputMaybe; +}; + +/** Input for creating or updating the community links of an application. */ +export type CommunityAttributes = { + /** The application's Discord server. */ + discord?: InputMaybe; + /** The application's git URL. */ + gitUrl?: InputMaybe; + /** The application's homepage. */ + homepage?: InputMaybe; + /** The application's Slack channel. */ + slack?: InputMaybe; + /** The application's Twitter account. */ + twitter?: InputMaybe; + /** The videos of the application. */ + videos?: InputMaybe>>; +}; + +export type UpgradeQueueAttributes = { + domain?: InputMaybe; + git?: InputMaybe; + name: Scalars['String']; + provider?: InputMaybe; +}; + +export type RecipeAttributes = { + dependencies?: InputMaybe>>; + description?: InputMaybe; + name: Scalars['String']; + oidcSettings?: InputMaybe; + primary?: InputMaybe; + private?: InputMaybe; + provider?: InputMaybe; + restricted?: InputMaybe; + sections?: InputMaybe>>; + tests?: InputMaybe>>; +}; + +export type RecipeReference = { + name: Scalars['String']; + repo: Scalars['String']; +}; + +export type OidcSettingsAttributes = { + authMethod: OidcAuthMethod; + domainKey?: InputMaybe; + subdomain?: InputMaybe; + uriFormat?: InputMaybe; + uriFormats?: InputMaybe>>; +}; + +export type RecipeSectionAttributes = { + configuration?: InputMaybe>>; + items?: InputMaybe>>; + name: Scalars['String']; +}; + +export type RecipeConfigurationAttributes = { + condition?: InputMaybe; + default?: InputMaybe; + documentation?: InputMaybe; + functionName?: InputMaybe; + longform?: InputMaybe; + name: Scalars['String']; + optional?: InputMaybe; + placeholder?: InputMaybe; + type: Datatype; + validation?: InputMaybe; +}; + +export type RecipeConditionAttributes = { + field: Scalars['String']; + operation: Operation; + value?: InputMaybe; +}; + +export type RecipeValidationAttributes = { + message: Scalars['String']; + regex?: InputMaybe; + type: ValidationType; +}; + +export type RecipeItemAttributes = { + configuration?: InputMaybe>>; + name: Scalars['String']; + type: RecipeItemType; +}; + +export enum RecipeItemType { + Helm = 'HELM', + Terraform = 'TERRAFORM' +} + +export type RecipeTestAttributes = { + args?: InputMaybe>>; + message?: InputMaybe; + name: Scalars['String']; + type: TestType; +}; + +export type TestArgumentAttributes = { + key: Scalars['String']; + name: Scalars['String']; + repo: Scalars['String']; +}; + +/** Input for creating or updating an application's attributes. */ +export type RepositoryAttributes = { + /** The category of the application. */ + category?: InputMaybe; + /** The application's community links. */ + community?: InputMaybe; + /** The application's dark icon. */ + darkIcon?: InputMaybe; + /** The default tag to use when deploying the application. */ + defaultTag?: InputMaybe; + /** A short description of the application. */ + description?: InputMaybe; + /** The application's documentation. */ + docs?: InputMaybe; + /** A link to the application's documentation. */ + documentation?: InputMaybe; + /** The application's git URL. */ + gitUrl?: InputMaybe; + /** The application's homepage. */ + homepage?: InputMaybe; + /** The application's icon. */ + icon?: InputMaybe; + /** The application's integration resource definition. */ + integrationResourceDefinition?: InputMaybe; + /** The name of the application. */ + name?: InputMaybe; + /** Notes about the application rendered after deploying and displayed to the user. */ + notes?: InputMaybe; + /** The application's OAuth settings. */ + oauthSettings?: InputMaybe; + /** Whether the application is private. */ + private?: InputMaybe; + /** The application's README. */ + readme?: InputMaybe; + /** A YAML object of secrets. */ + secrets?: InputMaybe; + /** The application's tags. */ + tags?: InputMaybe>>; + /** Whether the application is trending. */ + trending?: InputMaybe; + /** Whether the application is verified. */ + verified?: InputMaybe; +}; + +export type ResourceDefinitionAttributes = { + name: Scalars['String']; + spec?: InputMaybe>>; +}; + +export type SpecificationAttributes = { + inner?: InputMaybe; + name: Scalars['String']; + required?: InputMaybe; + spec?: InputMaybe>>; + type: SpecDatatype; +}; + +export enum SpecDatatype { + Bool = 'BOOL', + Float = 'FLOAT', + Int = 'INT', + List = 'LIST', + Object = 'OBJECT', + String = 'STRING' +} + +/** Input for the application's OAuth settings. */ +export type OauthSettingsAttributes = { + /** The authentication method for the OAuth provider. */ + authMethod: OidcAuthMethod; + /** The URI format for the OAuth provider. */ + uriFormat: Scalars['String']; +}; + +export type ResetTokenAttributes = { + email?: InputMaybe; + type: ResetTokenType; +}; + +export type RoleAttributes = { + description?: InputMaybe; + name?: InputMaybe; + permissions?: InputMaybe>>; + repositories?: InputMaybe>>; + roleBindings?: InputMaybe>>; +}; + +export type ServiceAccountAttributes = { + email?: InputMaybe; + impersonationPolicy?: InputMaybe; + name?: InputMaybe; +}; + +export type ImpersonationPolicyAttributes = { + bindings?: InputMaybe>>; + id?: InputMaybe; +}; + +export type ImpersonationPolicyBindingAttributes = { + groupId?: InputMaybe; + id?: InputMaybe; + userId?: InputMaybe; +}; + +export type CloudShellAttributes = { + credentials: ShellCredentialsAttributes; + demoId?: InputMaybe; + provider?: InputMaybe; + scm?: InputMaybe; + workspace: WorkspaceAttributes; +}; + +export type ShellCredentialsAttributes = { + aws?: InputMaybe; + azure?: InputMaybe; + gcp?: InputMaybe; +}; + +export type AwsShellCredentialsAttributes = { + accessKeyId: Scalars['String']; + secretAccessKey: Scalars['String']; +}; + +export type AzureShellCredentialsAttributes = { + clientId: Scalars['String']; + clientSecret: Scalars['String']; + storageAccount: Scalars['String']; + subscriptionId: Scalars['String']; + tenantId: Scalars['String']; +}; + +export type GcpShellCredentialsAttributes = { + applicationCredentials: Scalars['String']; +}; + +export type ScmAttributes = { + gitUrl?: InputMaybe; + name?: InputMaybe; + org?: InputMaybe; + privateKey?: InputMaybe; + provider?: InputMaybe; + publicKey?: InputMaybe; + token?: InputMaybe; +}; + +export type WorkspaceAttributes = { + bucketPrefix: Scalars['String']; + cluster: Scalars['String']; + project?: InputMaybe; + region: Scalars['String']; + subdomain: Scalars['String']; +}; + +export type StackAttributes = { + collections?: InputMaybe>>; + community?: InputMaybe; + description?: InputMaybe; + displayName?: InputMaybe; + featured?: InputMaybe; + name: Scalars['String']; +}; + +export type StackCollectionAttributes = { + bundles?: InputMaybe>>; + provider: Provider; +}; + +export type SubscriptionAttributes = { + lineItems?: InputMaybe; +}; + +export type SubscriptionLineItemAttributes = { + items?: InputMaybe>>; +}; + +export type TerraformAttributes = { + dependencies?: InputMaybe; + description?: InputMaybe; + name?: InputMaybe; + package?: InputMaybe; + version?: InputMaybe; +}; + +export type TestAttributes = { + name?: InputMaybe; + promoteTag?: InputMaybe; + status?: InputMaybe; + steps?: InputMaybe>>; + tags?: InputMaybe>>; +}; + +export type TestStepAttributes = { + description?: InputMaybe; + id?: InputMaybe; + logs?: InputMaybe; + name?: InputMaybe; + status?: InputMaybe; +}; + +export type UserEventAttributes = { + data?: InputMaybe; + event: Scalars['String']; + status?: InputMaybe; +}; + +export enum UserEventStatus { + Error = 'ERROR', + Ok = 'OK' +} + +export type WebhookAttributes = { + url: Scalars['String']; +}; + +export type MeetingAttributes = { + incidentId?: InputMaybe; + topic: Scalars['String']; +}; + +export type ZoomMeeting = { + __typename?: 'ZoomMeeting'; + joinUrl: Scalars['String']; + password?: Maybe; +}; + +export type DeviceLogin = { + __typename?: 'DeviceLogin'; + deviceToken: Scalars['String']; + loginUrl: Scalars['String']; +}; + +export type FollowerAttributes = { + preferences?: InputMaybe; +}; + +export type NotificationPreferencesAttributes = { + incidentUpdate: Scalars['Boolean']; + mention: Scalars['Boolean']; + message: Scalars['Boolean']; +}; + +export type ContextAttributes = { + buckets?: InputMaybe>>; + configuration: Scalars['Map']; + domains?: InputMaybe>>; +}; + +export type ChartInstallationAttributes = { + chartId?: InputMaybe; + versionId?: InputMaybe; +}; + +export type TerraformInstallationAttributes = { + terraformId?: InputMaybe; + versionId?: InputMaybe; +}; + +export type WebhookResponse = { + __typename?: 'WebhookResponse'; + body?: Maybe; + headers?: Maybe; + statusCode: Scalars['Int']; +}; + +export type ResetTokenRealization = { + password?: InputMaybe; +}; + +export type LockAttributes = { + lock: Scalars['String']; +}; + +export type AccountAttributes = { + billingAddress?: InputMaybe; + domainMappings?: InputMaybe>>; + icon?: InputMaybe; + name?: InputMaybe; +}; + +export type DomainMappingInput = { + domain?: InputMaybe; + enableSso?: InputMaybe; + id?: InputMaybe; +}; + +export type UserAttributes = { + avatar?: InputMaybe; + confirm?: InputMaybe; + email?: InputMaybe; + loginMethod?: InputMaybe; + name?: InputMaybe; + onboarding?: InputMaybe; + onboardingChecklist?: InputMaybe; + password?: InputMaybe; + roles?: InputMaybe; +}; + +export type OnboardingChecklistAttributes = { + dismissed?: InputMaybe; + status?: InputMaybe; +}; + +export type RolesAttributes = { + admin?: InputMaybe; +}; + +export type ChartAttributes = { + tags?: InputMaybe>>; +}; + +export type VersionTagAttributes = { + tag: Scalars['String']; + versionId?: InputMaybe; +}; + +export type DockerRepositoryAttributes = { + public: Scalars['Boolean']; +}; + +/** Input for creating or updating the tag attributes of an application installation. */ +export type InstallationAttributes = { + /** Whether the application should auto upgrade. */ + autoUpgrade?: InputMaybe; + /** A YAML object of context. */ + context?: InputMaybe; + /** The tag to track for auto upgrades. */ + trackTag?: InputMaybe; +}; + +export type UpdatablePlanAttributes = { + default?: InputMaybe; + serviceLevels?: InputMaybe>>; +}; + +export type VersionAttributes = { + tags?: InputMaybe>>; +}; + +export type VersionSpec = { + chart?: InputMaybe; + repository?: InputMaybe; + terraform?: InputMaybe; + version?: InputMaybe; +}; + +export type RootSubscriptionType = { + __typename?: 'RootSubscriptionType'; + incidentDelta?: Maybe; + incidentMessageDelta?: Maybe; + notification?: Maybe; + rolloutDelta?: Maybe; + testDelta?: Maybe; + testLogs?: Maybe; + upgrade?: Maybe; + upgradeQueueDelta?: Maybe; +}; + + +export type RootSubscriptionTypeIncidentDeltaArgs = { + incidentId?: InputMaybe; + repositoryId?: InputMaybe; +}; + + +export type RootSubscriptionTypeIncidentMessageDeltaArgs = { + incidentId?: InputMaybe; +}; + + +export type RootSubscriptionTypeRolloutDeltaArgs = { + repositoryId: Scalars['ID']; +}; + + +export type RootSubscriptionTypeTestDeltaArgs = { + repositoryId: Scalars['ID']; +}; + + +export type RootSubscriptionTypeTestLogsArgs = { + testId: Scalars['ID']; +}; + + +export type RootSubscriptionTypeUpgradeArgs = { + id?: InputMaybe; +}; + +export type IncidentDelta = { + __typename?: 'IncidentDelta'; + delta?: Maybe; + payload?: Maybe; +}; + +export enum Delta { + Create = 'CREATE', + Delete = 'DELETE', + Update = 'UPDATE' +} + +export type IncidentMessageDelta = { + __typename?: 'IncidentMessageDelta'; + delta?: Maybe; + payload?: Maybe; +}; + +export type RolloutDelta = { + __typename?: 'RolloutDelta'; + delta?: Maybe; + payload?: Maybe; +}; + +export type TestDelta = { + __typename?: 'TestDelta'; + delta?: Maybe; + payload?: Maybe; +}; + +export type StepLogs = { + __typename?: 'StepLogs'; + logs?: Maybe>>; + step?: Maybe; +}; + +export type UpgradeQueueDelta = { + __typename?: 'UpgradeQueueDelta'; + delta?: Maybe; + payload?: Maybe; +}; + +export type AuditFragment = { __typename?: 'Audit', id: string, action: string, ip?: string | null, country?: string | null, city?: string | null, latitude?: string | null, longitude?: string | null, insertedAt?: Date | null, actor?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null, integrationWebhook?: { __typename?: 'IntegrationWebhook', id: string, name: string, url: string, secret: string, actions?: Array | null } | null, role?: { __typename?: 'Role', id: string, name: string, description?: string | null, repositories?: Array | null, permissions?: Array | null, roleBindings?: Array<{ __typename?: 'RoleBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null } | null, version?: { __typename?: 'Version', id: string, helm?: Map | null, readme?: string | null, valuesTemplate?: string | null, version: string, insertedAt?: Date | null, package?: string | null, crds?: Array<{ __typename?: 'Crd', id: string, name: string, blob?: string | null } | null> | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null } | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, image?: { __typename?: 'DockerImage', id: string, tag?: string | null, dockerRepository?: { __typename?: 'DockerRepository', name: string } | null } | null }; + +export type PolicyBindingFragment = { __typename?: 'PolicyBinding', id: string, group?: { __typename?: 'Group', id: string, name: string } | null, user?: { __typename?: 'User', id: string, name: string, email: string } | null }; + +export type DnsDomainFragment = { __typename?: 'DnsDomain', id: string, name: string, insertedAt?: Date | null, creator?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, accessPolicy?: { __typename?: 'DnsAccessPolicy', id: string, bindings?: Array<{ __typename?: 'PolicyBinding', id: string, group?: { __typename?: 'Group', id: string, name: string } | null, user?: { __typename?: 'User', id: string, name: string, email: string } | null } | null> | null } | null }; + +export type InviteFragment = { __typename?: 'Invite', id: string, secureId?: string | null, email?: string | null, insertedAt?: Date | null }; + +export type OidcLoginFragment = { __typename?: 'OidcLogin', ip?: string | null, country?: string | null, city?: string | null, latitude?: string | null, longitude?: string | null, insertedAt?: Date | null, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null }; + +export type UpdateAccountMutationVariables = Exact<{ + attributes: AccountAttributes; +}>; + + +export type UpdateAccountMutation = { __typename?: 'RootMutationType', updateAccount?: { __typename?: 'Account', id: string, name?: string | null, billingCustomerId?: string | null, backgroundColor?: string | null, domainMappings?: Array<{ __typename?: 'DomainMapping', id: string, domain: string, enableSso?: boolean | null } | null> | null } | null }; + +export type ArtifactFragment = { __typename?: 'Artifact', id?: string | null, name?: string | null, blob?: string | null, type?: ArtifactType | null, platform?: ArtifactPlatform | null, arch?: string | null, filesize?: number | null, sha?: string | null, readme?: string | null, insertedAt?: Date | null, updatedAt?: Date | null }; + +export type ListArtifactsQueryVariables = Exact<{ + id: Scalars['ID']; +}>; + + +export type ListArtifactsQuery = { __typename?: 'RootQueryType', repository?: { __typename?: 'Repository', artifacts?: Array<{ __typename?: 'Artifact', id?: string | null, name?: string | null, blob?: string | null, type?: ArtifactType | null, platform?: ArtifactPlatform | null, arch?: string | null, filesize?: number | null, sha?: string | null, readme?: string | null, insertedAt?: Date | null, updatedAt?: Date | null } | null> | null } | null }; + +export type CreateArtifactMutationVariables = Exact<{ + repoName: Scalars['String']; + name: Scalars['String']; + readme: Scalars['String']; + artifactType: Scalars['String']; + platform: Scalars['String']; + blob: Scalars['UploadOrUrl']; + arch?: InputMaybe; +}>; + + +export type CreateArtifactMutation = { __typename?: 'RootMutationType', createArtifact?: { __typename?: 'Artifact', id?: string | null, name?: string | null, blob?: string | null, type?: ArtifactType | null, platform?: ArtifactPlatform | null, arch?: string | null, filesize?: number | null, sha?: string | null, readme?: string | null, insertedAt?: Date | null, updatedAt?: Date | null } | null }; + +export type ChartFragment = { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null }; + +export type CrdFragment = { __typename?: 'Crd', id: string, name: string, blob?: string | null }; + +export type ChartInstallationFragment = { __typename?: 'ChartInstallation', id?: string | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, version?: { __typename?: 'Version', id: string, helm?: Map | null, readme?: string | null, valuesTemplate?: string | null, version: string, insertedAt?: Date | null, package?: string | null, crds?: Array<{ __typename?: 'Crd', id: string, name: string, blob?: string | null } | null> | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null } | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null }; + +export type ScanViolationFragment = { __typename?: 'ScanViolation', ruleName?: string | null, description?: string | null, ruleId?: string | null, severity?: VulnGrade | null, category?: string | null, resourceName?: string | null, resourceType?: string | null, file?: string | null, line?: number | null }; + +export type ScanErrorFragment = { __typename?: 'ScanError', message?: string | null }; + +export type PackageScanFragment = { __typename?: 'PackageScan', id: string, grade?: ImageGrade | null, violations?: Array<{ __typename?: 'ScanViolation', ruleName?: string | null, description?: string | null, ruleId?: string | null, severity?: VulnGrade | null, category?: string | null, resourceName?: string | null, resourceType?: string | null, file?: string | null, line?: number | null } | null> | null, errors?: Array<{ __typename?: 'ScanError', message?: string | null } | null> | null }; + +export type GetChartsQueryVariables = Exact<{ + id: Scalars['ID']; +}>; + + +export type GetChartsQuery = { __typename?: 'RootQueryType', charts?: { __typename?: 'ChartConnection', edges?: Array<{ __typename?: 'ChartEdge', node?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null } | null> | null } | null }; + +export type GetVersionsQueryVariables = Exact<{ + id: Scalars['ID']; +}>; + + +export type GetVersionsQuery = { __typename?: 'RootQueryType', versions?: { __typename?: 'VersionConnection', edges?: Array<{ __typename?: 'VersionEdge', node?: { __typename?: 'Version', id: string, helm?: Map | null, readme?: string | null, valuesTemplate?: string | null, version: string, insertedAt?: Date | null, package?: string | null, crds?: Array<{ __typename?: 'Crd', id: string, name: string, blob?: string | null } | null> | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null } | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null } | null> | null } | null }; + +export type GetChartInstallationsQueryVariables = Exact<{ + id: Scalars['ID']; +}>; + + +export type GetChartInstallationsQuery = { __typename?: 'RootQueryType', chartInstallations?: { __typename?: 'ChartInstallationConnection', edges?: Array<{ __typename?: 'ChartInstallationEdge', node?: { __typename?: 'ChartInstallation', id?: string | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, version?: { __typename?: 'Version', id: string, helm?: Map | null, readme?: string | null, valuesTemplate?: string | null, version: string, insertedAt?: Date | null, package?: string | null, crds?: Array<{ __typename?: 'Crd', id: string, name: string, blob?: string | null } | null> | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null } | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null } | null } | null> | null } | null }; + +export type GetPackageInstallationsQueryVariables = Exact<{ + id: Scalars['ID']; +}>; + + +export type GetPackageInstallationsQuery = { __typename?: 'RootQueryType', chartInstallations?: { __typename?: 'ChartInstallationConnection', edges?: Array<{ __typename?: 'ChartInstallationEdge', node?: { __typename?: 'ChartInstallation', id?: string | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, version?: { __typename?: 'Version', id: string, helm?: Map | null, readme?: string | null, valuesTemplate?: string | null, version: string, insertedAt?: Date | null, package?: string | null, crds?: Array<{ __typename?: 'Crd', id: string, name: string, blob?: string | null } | null> | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null } | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null } | null } | null> | null } | null, terraformInstallations?: { __typename?: 'TerraformInstallationConnection', edges?: Array<{ __typename?: 'TerraformInstallationEdge', node?: { __typename?: 'TerraformInstallation', id?: string | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null, readme?: string | null, package?: string | null, description?: string | null, latestVersion?: string | null, valuesTemplate?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, version?: { __typename?: 'Version', id: string, helm?: Map | null, readme?: string | null, valuesTemplate?: string | null, version: string, insertedAt?: Date | null, package?: string | null, crds?: Array<{ __typename?: 'Crd', id: string, name: string, blob?: string | null } | null> | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null } | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null } | null } | null> | null } | null }; + +export type CreateCrdMutationVariables = Exact<{ + chartName: ChartName; + name: Scalars['String']; + blob: Scalars['UploadOrUrl']; +}>; + + +export type CreateCrdMutation = { __typename?: 'RootMutationType', createCrd?: { __typename?: 'Crd', id: string } | null }; + +export type UninstallChartMutationVariables = Exact<{ + id: Scalars['ID']; +}>; + + +export type UninstallChartMutation = { __typename?: 'RootMutationType', deleteChartInstallation?: { __typename?: 'ChartInstallation', id?: string | null } | null }; + +export type DnsRecordFragment = { __typename?: 'DnsRecord', id: string, name: string, type: DnsRecordType, records?: Array | null, cluster: string, provider: Provider, insertedAt?: Date | null, creator?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null }; + +export type GetDnsRecordsQueryVariables = Exact<{ + cluster: Scalars['String']; + provider: Provider; +}>; + + +export type GetDnsRecordsQuery = { __typename?: 'RootQueryType', dnsRecords?: { __typename?: 'DnsRecordConnection', edges?: Array<{ __typename?: 'DnsRecordEdge', node?: { __typename?: 'DnsRecord', id: string, name: string, type: DnsRecordType, records?: Array | null, cluster: string, provider: Provider, insertedAt?: Date | null, creator?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null } | null } | null> | null } | null }; + +export type CreateDnsRecordMutationVariables = Exact<{ + cluster: Scalars['String']; + provider: Provider; + attributes: DnsRecordAttributes; +}>; + + +export type CreateDnsRecordMutation = { __typename?: 'RootMutationType', createDnsRecord?: { __typename?: 'DnsRecord', id: string, name: string, type: DnsRecordType, records?: Array | null, cluster: string, provider: Provider, insertedAt?: Date | null, creator?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null } | null }; + +export type DeleteDnsRecordMutationVariables = Exact<{ + name: Scalars['String']; + type: DnsRecordType; +}>; + + +export type DeleteDnsRecordMutation = { __typename?: 'RootMutationType', deleteDnsRecord?: { __typename?: 'DnsRecord', id: string, name: string, type: DnsRecordType, records?: Array | null, cluster: string, provider: Provider, insertedAt?: Date | null, creator?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null } | null }; + +export type DockerRepoFragment = { __typename?: 'DockerRepository', id: string, name: string, public?: boolean | null, insertedAt?: Date | null, updatedAt?: Date | null, repository?: { __typename?: 'Repository', id: string, name: string } | null }; + +export type DockerRepositoryFragment = { __typename?: 'DockerRepository', id: string, name: string, public?: boolean | null, insertedAt?: Date | null, updatedAt?: Date | null, repository?: { __typename?: 'Repository', id: string, name: string, editable?: boolean | null } | null }; + +export type DockerImageFragment = { __typename?: 'DockerImage', id: string, tag?: string | null, digest: string, scannedAt?: Date | null, grade?: ImageGrade | null, insertedAt?: Date | null, updatedAt?: Date | null }; + +export type VulnerabilityFragment = { __typename?: 'Vulnerability', id: string, title?: string | null, description?: string | null, vulnerabilityId?: string | null, package?: string | null, installedVersion?: string | null, fixedVersion?: string | null, source?: string | null, url?: string | null, severity?: VulnGrade | null, score?: number | null, cvss?: { __typename?: 'Cvss', attackVector?: VulnVector | null, attackComplexity?: VulnGrade | null, privilegesRequired?: VulnGrade | null, userInteraction?: VulnRequirement | null, confidentiality?: VulnGrade | null, integrity?: VulnGrade | null, availability?: VulnGrade | null } | null, layer?: { __typename?: 'ImageLayer', digest?: string | null, diffId?: string | null } | null }; + +export type CreateDomainMutationVariables = Exact<{ + name: Scalars['String']; +}>; + + +export type CreateDomainMutation = { __typename?: 'RootMutationType', provisionDomain?: { __typename?: 'DnsDomain', id: string, name: string, insertedAt?: Date | null, creator?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, accessPolicy?: { __typename?: 'DnsAccessPolicy', id: string, bindings?: Array<{ __typename?: 'PolicyBinding', id: string, group?: { __typename?: 'Group', id: string, name: string } | null, user?: { __typename?: 'User', id: string, name: string, email: string } | null } | null> | null } | null } | null }; + +export type GroupMembersQueryVariables = Exact<{ + cursor?: InputMaybe; + id: Scalars['ID']; +}>; + + +export type GroupMembersQuery = { __typename?: 'RootQueryType', groupMembers?: { __typename?: 'GroupMemberConnection', pageInfo: { __typename?: 'PageInfo', endCursor?: string | null, hasNextPage: boolean }, edges?: Array<{ __typename?: 'GroupMemberEdge', node?: { __typename?: 'GroupMember', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null } | null } | null> | null } | null }; + +export type CreateGroupMemberMutationVariables = Exact<{ + groupId: Scalars['ID']; + userId: Scalars['ID']; +}>; + + +export type CreateGroupMemberMutation = { __typename?: 'RootMutationType', createGroupMember?: { __typename?: 'GroupMember', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null } | null }; + +export type DeleteGroupMemberMutationVariables = Exact<{ + groupId: Scalars['ID']; + userId: Scalars['ID']; +}>; + + +export type DeleteGroupMemberMutation = { __typename?: 'RootMutationType', deleteGroupMember?: { __typename?: 'GroupMember', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null } | null }; + +export type CreateGroupMutationVariables = Exact<{ + attributes: GroupAttributes; +}>; + + +export type CreateGroupMutation = { __typename?: 'RootMutationType', createGroup?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null }; + +export type UpdateGroupMutationVariables = Exact<{ + id: Scalars['ID']; + attributes: GroupAttributes; +}>; + + +export type UpdateGroupMutation = { __typename?: 'RootMutationType', updateGroup?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null }; + +export type DeleteGroupMutationVariables = Exact<{ + id: Scalars['ID']; +}>; + + +export type DeleteGroupMutation = { __typename?: 'RootMutationType', deleteGroup?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null }; + +export type GroupsQueryVariables = Exact<{ + q?: InputMaybe; + cursor?: InputMaybe; +}>; + + +export type GroupsQuery = { __typename?: 'RootQueryType', groups?: { __typename?: 'GroupConnection', pageInfo: { __typename?: 'PageInfo', endCursor?: string | null, hasNextPage: boolean }, edges?: Array<{ __typename?: 'GroupEdge', node?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null } | null }; + +export type PostmortemFragment = { __typename?: 'Postmortem', id: string, content: string, actionItems?: Array<{ __typename?: 'ActionItem', type: ActionItemType, link: string } | null> | null }; + +export type FollowerFragment = { __typename?: 'Follower', id: string, incident?: { __typename?: 'Incident', id: string } | null, user: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null }, preferences?: { __typename?: 'NotificationPreferences', message?: boolean | null, incidentUpdate?: boolean | null, mention?: boolean | null } | null }; + +export type SlimSubscriptionFragment = { __typename?: 'SlimSubscription', id: string, lineItems?: { __typename?: 'SubscriptionLineItems', items?: Array<{ __typename?: 'Limit', dimension: string, quantity: number } | null> | null } | null, plan?: { __typename?: 'Plan', id: string, name: string, cost: number, period?: string | null, serviceLevels?: Array<{ __typename?: 'ServiceLevel', minSeverity?: number | null, maxSeverity?: number | null, responseTime?: number | null } | null> | null, lineItems?: { __typename?: 'PlanLineItems', included?: Array<{ __typename?: 'Limit', dimension: string, quantity: number } | null> | null, items?: Array<{ __typename?: 'LineItem', name: string, dimension: string, cost: number, period?: string | null, type?: PlanType | null } | null> | null } | null, metadata?: { __typename?: 'PlanMetadata', features?: Array<{ __typename?: 'PlanFeature', name: string, description: string } | null> | null } | null } | null }; + +export type ClusterInformationFragment = { __typename?: 'ClusterInformation', version?: string | null, gitCommit?: string | null, platform?: string | null }; + +export type IncidentFragment = { __typename?: 'Incident', id: string, title: string, description?: string | null, severity: number, status: IncidentStatus, notificationCount?: number | null, nextResponseAt?: Date | null, insertedAt?: Date | null, creator: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null }, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, repository: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null }, subscription?: { __typename?: 'SlimSubscription', id: string, lineItems?: { __typename?: 'SubscriptionLineItems', items?: Array<{ __typename?: 'Limit', dimension: string, quantity: number } | null> | null } | null, plan?: { __typename?: 'Plan', id: string, name: string, cost: number, period?: string | null, serviceLevels?: Array<{ __typename?: 'ServiceLevel', minSeverity?: number | null, maxSeverity?: number | null, responseTime?: number | null } | null> | null, lineItems?: { __typename?: 'PlanLineItems', included?: Array<{ __typename?: 'Limit', dimension: string, quantity: number } | null> | null, items?: Array<{ __typename?: 'LineItem', name: string, dimension: string, cost: number, period?: string | null, type?: PlanType | null } | null> | null } | null, metadata?: { __typename?: 'PlanMetadata', features?: Array<{ __typename?: 'PlanFeature', name: string, description: string } | null> | null } | null } | null } | null, clusterInformation?: { __typename?: 'ClusterInformation', version?: string | null, gitCommit?: string | null, platform?: string | null } | null, tags?: Array<{ __typename?: 'Tag', tag: string } | null> | null }; + +export type IncidentHistoryFragment = { __typename?: 'IncidentHistory', id: string, action: IncidentAction, insertedAt?: Date | null, changes?: Array<{ __typename?: 'IncidentChange', key: string, prev?: string | null, next?: string | null } | null> | null, actor: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } }; + +export type FileFragment = { __typename?: 'File', id: string, blob: string, mediaType?: MediaType | null, contentType?: string | null, filesize?: number | null, filename?: string | null }; + +export type IncidentMessageFragment = { __typename?: 'IncidentMessage', id: string, text: string, insertedAt?: Date | null, creator: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null }, reactions?: Array<{ __typename?: 'Reaction', name: string, creator: { __typename?: 'User', id: string, email: string } } | null> | null, file?: { __typename?: 'File', id: string, blob: string, mediaType?: MediaType | null, contentType?: string | null, filesize?: number | null, filename?: string | null } | null, entities?: Array<{ __typename?: 'MessageEntity', type: MessageEntityType, text?: string | null, startIndex?: number | null, endIndex?: number | null, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null } | null> | null }; + +export type NotificationFragment = { __typename?: 'Notification', id: string, type: NotificationType, msg?: string | null, insertedAt?: Date | null, actor: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null }, incident?: { __typename?: 'Incident', id: string, title: string, repository: { __typename?: 'Repository', id: string, name: string, icon?: string | null, darkIcon?: string | null } } | null, message?: { __typename?: 'IncidentMessage', text: string } | null, repository?: { __typename?: 'Repository', id: string, name: string, icon?: string | null, darkIcon?: string | null } | null }; + +export type InstallationFragment = { __typename?: 'Installation', id: string, context?: Map | null, license?: string | null, licenseKey?: string | null, acmeKeyId?: string | null, acmeSecret?: string | null, autoUpgrade?: boolean | null, trackTag: string, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, oidcProvider?: { __typename?: 'OidcProvider', id: string, clientId: string, authMethod: OidcAuthMethod, clientSecret: string, redirectUris?: Array | null, bindings?: Array<{ __typename?: 'OidcProviderBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null, configuration?: { __typename?: 'OuathConfiguration', issuer?: string | null, authorizationEndpoint?: string | null, tokenEndpoint?: string | null, jwksUri?: string | null, userinfoEndpoint?: string | null } | null } | null }; + +export type GetInstallationQueryVariables = Exact<{ + name?: InputMaybe; +}>; + + +export type GetInstallationQuery = { __typename?: 'RootQueryType', installation?: { __typename?: 'Installation', id: string, context?: Map | null, license?: string | null, licenseKey?: string | null, acmeKeyId?: string | null, acmeSecret?: string | null, autoUpgrade?: boolean | null, trackTag: string, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, oidcProvider?: { __typename?: 'OidcProvider', id: string, clientId: string, authMethod: OidcAuthMethod, clientSecret: string, redirectUris?: Array | null, bindings?: Array<{ __typename?: 'OidcProviderBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null, configuration?: { __typename?: 'OuathConfiguration', issuer?: string | null, authorizationEndpoint?: string | null, tokenEndpoint?: string | null, jwksUri?: string | null, userinfoEndpoint?: string | null } | null } | null } | null }; + +export type GetInstallationByIdQueryVariables = Exact<{ + id?: InputMaybe; +}>; + + +export type GetInstallationByIdQuery = { __typename?: 'RootQueryType', installation?: { __typename?: 'Installation', id: string, context?: Map | null, license?: string | null, licenseKey?: string | null, acmeKeyId?: string | null, acmeSecret?: string | null, autoUpgrade?: boolean | null, trackTag: string, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, oidcProvider?: { __typename?: 'OidcProvider', id: string, clientId: string, authMethod: OidcAuthMethod, clientSecret: string, redirectUris?: Array | null, bindings?: Array<{ __typename?: 'OidcProviderBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null, configuration?: { __typename?: 'OuathConfiguration', issuer?: string | null, authorizationEndpoint?: string | null, tokenEndpoint?: string | null, jwksUri?: string | null, userinfoEndpoint?: string | null } | null } | null } | null }; + +export type GetInstallationsQueryVariables = Exact<{ + first?: InputMaybe; +}>; + + +export type GetInstallationsQuery = { __typename?: 'RootQueryType', installations?: { __typename?: 'InstallationConnection', edges?: Array<{ __typename?: 'InstallationEdge', node?: { __typename?: 'Installation', id: string, context?: Map | null, license?: string | null, licenseKey?: string | null, acmeKeyId?: string | null, acmeSecret?: string | null, autoUpgrade?: boolean | null, trackTag: string, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, oidcProvider?: { __typename?: 'OidcProvider', id: string, clientId: string, authMethod: OidcAuthMethod, clientSecret: string, redirectUris?: Array | null, bindings?: Array<{ __typename?: 'OidcProviderBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null, configuration?: { __typename?: 'OuathConfiguration', issuer?: string | null, authorizationEndpoint?: string | null, tokenEndpoint?: string | null, jwksUri?: string | null, userinfoEndpoint?: string | null } | null } | null } | null } | null> | null } | null }; + +export type UpsertOidcProviderMutationVariables = Exact<{ + id: Scalars['ID']; + attributes: OidcAttributes; +}>; + + +export type UpsertOidcProviderMutation = { __typename?: 'RootMutationType', upsertOidcProvider?: { __typename?: 'OidcProvider', id: string } | null }; + +export type IntegrationWebhookFragment = { __typename?: 'IntegrationWebhook', id: string, name: string, url: string, secret: string, actions?: Array | null }; + +export type WebhookLogFragment = { __typename?: 'WebhookLog', id: string, state: WebhookLogState, status?: number | null, payload?: Map | null, response?: string | null, insertedAt?: Date | null }; + +export type OauthIntegrationFragment = { __typename?: 'OauthIntegration', id: string, service: OauthService, insertedAt?: Date | null }; + +export type ZoomMeetingFragment = { __typename?: 'ZoomMeeting', joinUrl: string, password?: string | null }; + +export type SignupInviteMutationVariables = Exact<{ + attributes: UserAttributes; + inviteId: Scalars['String']; +}>; + + +export type SignupInviteMutation = { __typename?: 'RootMutationType', signup?: { __typename?: 'User', jwt?: string | null } | null }; + +export type RealizeInviteMutationVariables = Exact<{ + id: Scalars['String']; +}>; + + +export type RealizeInviteMutation = { __typename?: 'RootMutationType', realizeInvite?: { __typename?: 'User', jwt?: string | null } | null }; + +export type InviteQueryVariables = Exact<{ + id: Scalars['String']; +}>; + + +export type InviteQuery = { __typename?: 'RootQueryType', invite?: { __typename?: 'Invite', id: string, email?: string | null, existing: boolean, account?: { __typename?: 'Account', id: string, name?: string | null, billingCustomerId?: string | null, backgroundColor?: string | null } | null, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, account: { __typename?: 'Account', id: string, name?: string | null, billingCustomerId?: string | null, backgroundColor?: string | null }, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null } | null }; + +export type MetricFragment = { __typename?: 'Metric', name: string, tags?: Array<{ __typename?: 'MetricTag', name: string, value: string } | null> | null, values?: Array<{ __typename?: 'MetricValue', time?: Date | null, value?: number | null } | null> | null }; + +export type PageInfoFragment = { __typename?: 'PageInfo', endCursor?: string | null, hasNextPage: boolean }; + +export type OidcProviderFragment = { __typename?: 'OidcProvider', id: string, clientId: string, authMethod: OidcAuthMethod, clientSecret: string, redirectUris?: Array | null, bindings?: Array<{ __typename?: 'OidcProviderBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null, configuration?: { __typename?: 'OuathConfiguration', issuer?: string | null, authorizationEndpoint?: string | null, tokenEndpoint?: string | null, jwksUri?: string | null, userinfoEndpoint?: string | null } | null }; + +export type OAuthInfoFragment = { __typename?: 'OauthInfo', provider: OauthProvider, authorizeUrl: string }; + +export type LimitFragment = { __typename?: 'Limit', dimension: string, quantity: number }; + +export type LineItemFragment = { __typename?: 'LineItem', name: string, dimension: string, cost: number, period?: string | null, type?: PlanType | null }; + +export type ServiceLevelFragment = { __typename?: 'ServiceLevel', minSeverity?: number | null, maxSeverity?: number | null, responseTime?: number | null }; + +export type PlanFragment = { __typename?: 'Plan', id: string, name: string, cost: number, period?: string | null, serviceLevels?: Array<{ __typename?: 'ServiceLevel', minSeverity?: number | null, maxSeverity?: number | null, responseTime?: number | null } | null> | null, lineItems?: { __typename?: 'PlanLineItems', included?: Array<{ __typename?: 'Limit', dimension: string, quantity: number } | null> | null, items?: Array<{ __typename?: 'LineItem', name: string, dimension: string, cost: number, period?: string | null, type?: PlanType | null } | null> | null } | null, metadata?: { __typename?: 'PlanMetadata', features?: Array<{ __typename?: 'PlanFeature', name: string, description: string } | null> | null } | null }; + +export type SubscriptionFragment = { __typename?: 'RepositorySubscription', id: string, plan?: { __typename?: 'Plan', id: string, name: string, cost: number, period?: string | null, serviceLevels?: Array<{ __typename?: 'ServiceLevel', minSeverity?: number | null, maxSeverity?: number | null, responseTime?: number | null } | null> | null, lineItems?: { __typename?: 'PlanLineItems', included?: Array<{ __typename?: 'Limit', dimension: string, quantity: number } | null> | null, items?: Array<{ __typename?: 'LineItem', name: string, dimension: string, cost: number, period?: string | null, type?: PlanType | null } | null> | null } | null, metadata?: { __typename?: 'PlanMetadata', features?: Array<{ __typename?: 'PlanFeature', name: string, description: string } | null> | null } | null } | null, lineItems?: { __typename?: 'SubscriptionLineItems', items?: Array<{ __typename?: 'Limit', dimension: string, quantity: number } | null> | null } | null }; + +export type InvoiceItemFragment = { __typename?: 'InvoiceItem', amount: number, currency: string, description?: string | null }; + +export type InvoiceFragment = { __typename?: 'Invoice', number: string, amountDue: number, amountPaid: number, currency: string, status?: string | null, createdAt?: Date | null, hostedInvoiceUrl?: string | null, lines?: Array<{ __typename?: 'InvoiceItem', amount: number, currency: string, description?: string | null } | null> | null }; + +export type CardFragment = { __typename?: 'Card', id: string, last4: string, expMonth: number, expYear: number, name?: string | null, brand: string }; + +export type SubscriptionQueryVariables = Exact<{ [key: string]: never; }>; + + +export type SubscriptionQuery = { __typename?: 'RootQueryType', account?: { __typename?: 'Account', billingCustomerId?: string | null, grandfatheredUntil?: Date | null, delinquentAt?: Date | null, userCount?: string | null, clusterCount?: string | null, availableFeatures?: { __typename?: 'PlanFeatures', userManagement?: boolean | null, audit?: boolean | null } | null, subscription?: { __typename?: 'PlatformSubscription', id: string, plan?: { __typename?: 'PlatformPlan', id: string, period: PaymentPeriod, lineItems?: Array<{ __typename?: 'PlatformPlanItem', dimension: LineItemDimension, cost: number } | null> | null } | null } | null, billingAddress?: { __typename?: 'Address', name?: string | null, line1?: string | null, line2?: string | null, zip?: string | null, state?: string | null, city?: string | null, country?: string | null } | null } | null }; + +export type UpdateAccountBillingMutationVariables = Exact<{ + attributes: AccountAttributes; +}>; + + +export type UpdateAccountBillingMutation = { __typename?: 'RootMutationType', updateAccount?: { __typename?: 'Account', id: string } | null }; + +export type UpgradeToProfessionalPlanMutationVariables = Exact<{ + planId: Scalars['ID']; +}>; + + +export type UpgradeToProfessionalPlanMutation = { __typename?: 'RootMutationType', createPlatformSubscription?: { __typename?: 'PlatformSubscription', id: string } | null }; + +export type DowngradeToFreePlanMutationMutationVariables = Exact<{ [key: string]: never; }>; + + +export type DowngradeToFreePlanMutationMutation = { __typename?: 'RootMutationType', deletePlatformSubscription?: { __typename?: 'Account', id: string } | null }; + +export type CardsQueryVariables = Exact<{ [key: string]: never; }>; + + +export type CardsQuery = { __typename?: 'RootQueryType', me?: { __typename?: 'User', id: string, cards?: { __typename?: 'CardConnection', edges?: Array<{ __typename?: 'CardEdge', node?: { __typename?: 'Card', id: string, last4: string, expMonth: number, expYear: number, name?: string | null, brand: string } | null } | null> | null } | null } | null }; + +export type CreateCardMutationVariables = Exact<{ + source: Scalars['String']; + address?: InputMaybe; +}>; + + +export type CreateCardMutation = { __typename?: 'RootMutationType', createCard?: { __typename?: 'Account', id: string } | null }; + +export type DeleteCardMutationVariables = Exact<{ + id: Scalars['ID']; +}>; + + +export type DeleteCardMutation = { __typename?: 'RootMutationType', deleteCard?: { __typename?: 'Account', id: string } | null }; + +export type RecipeFragment = { __typename?: 'Recipe', id: string, name: string, description?: string | null, restricted?: boolean | null, provider?: Provider | null, tests?: Array<{ __typename?: 'RecipeTest', type: TestType, name: string, message?: string | null, args?: Array<{ __typename?: 'TestArgument', name: string, repo: string, key: string } | null> | null } | null> | null, repository?: { __typename?: 'Repository', id: string, name: string } | null, oidcSettings?: { __typename?: 'OidcSettings', uriFormat?: string | null, uriFormats?: Array | null, authMethod: OidcAuthMethod, domainKey?: string | null, subdomain?: boolean | null } | null, recipeSections?: Array<{ __typename?: 'RecipeSection', index?: number | null, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, installation?: { __typename?: 'Installation', id: string, context?: Map | null, license?: string | null, licenseKey?: string | null, acmeKeyId?: string | null, acmeSecret?: string | null, autoUpgrade?: boolean | null, trackTag: string, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, oidcProvider?: { __typename?: 'OidcProvider', id: string, clientId: string, authMethod: OidcAuthMethod, clientSecret: string, redirectUris?: Array | null, bindings?: Array<{ __typename?: 'OidcProviderBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null, configuration?: { __typename?: 'OuathConfiguration', issuer?: string | null, authorizationEndpoint?: string | null, tokenEndpoint?: string | null, jwksUri?: string | null, userinfoEndpoint?: string | null } | null } | null } | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, recipeItems?: Array<{ __typename?: 'RecipeItem', id?: string | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null, readme?: string | null, package?: string | null, description?: string | null, latestVersion?: string | null, valuesTemplate?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, configuration?: Array<{ __typename?: 'RecipeConfiguration', name?: string | null, type?: Datatype | null, default?: string | null, documentation?: string | null, optional?: boolean | null, placeholder?: string | null, functionName?: string | null, condition?: { __typename?: 'RecipeCondition', field: string, operation: Operation, value?: string | null } | null, validation?: { __typename?: 'RecipeValidation', type: ValidationType, regex?: string | null, message: string } | null } | null> | null } | null> | null, configuration?: Array<{ __typename?: 'RecipeConfiguration', name?: string | null, type?: Datatype | null, default?: string | null, documentation?: string | null, optional?: boolean | null, placeholder?: string | null, functionName?: string | null, condition?: { __typename?: 'RecipeCondition', field: string, operation: Operation, value?: string | null } | null, validation?: { __typename?: 'RecipeValidation', type: ValidationType, regex?: string | null, message: string } | null } | null> | null } | null> | null }; + +export type RecipeItemFragment = { __typename?: 'RecipeItem', id?: string | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null, readme?: string | null, package?: string | null, description?: string | null, latestVersion?: string | null, valuesTemplate?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, configuration?: Array<{ __typename?: 'RecipeConfiguration', name?: string | null, type?: Datatype | null, default?: string | null, documentation?: string | null, optional?: boolean | null, placeholder?: string | null, functionName?: string | null, condition?: { __typename?: 'RecipeCondition', field: string, operation: Operation, value?: string | null } | null, validation?: { __typename?: 'RecipeValidation', type: ValidationType, regex?: string | null, message: string } | null } | null> | null }; + +export type RecipeSectionFragment = { __typename?: 'RecipeSection', index?: number | null, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, installation?: { __typename?: 'Installation', id: string, context?: Map | null, license?: string | null, licenseKey?: string | null, acmeKeyId?: string | null, acmeSecret?: string | null, autoUpgrade?: boolean | null, trackTag: string, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, oidcProvider?: { __typename?: 'OidcProvider', id: string, clientId: string, authMethod: OidcAuthMethod, clientSecret: string, redirectUris?: Array | null, bindings?: Array<{ __typename?: 'OidcProviderBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null, configuration?: { __typename?: 'OuathConfiguration', issuer?: string | null, authorizationEndpoint?: string | null, tokenEndpoint?: string | null, jwksUri?: string | null, userinfoEndpoint?: string | null } | null } | null } | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, recipeItems?: Array<{ __typename?: 'RecipeItem', id?: string | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null, readme?: string | null, package?: string | null, description?: string | null, latestVersion?: string | null, valuesTemplate?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, configuration?: Array<{ __typename?: 'RecipeConfiguration', name?: string | null, type?: Datatype | null, default?: string | null, documentation?: string | null, optional?: boolean | null, placeholder?: string | null, functionName?: string | null, condition?: { __typename?: 'RecipeCondition', field: string, operation: Operation, value?: string | null } | null, validation?: { __typename?: 'RecipeValidation', type: ValidationType, regex?: string | null, message: string } | null } | null> | null } | null> | null, configuration?: Array<{ __typename?: 'RecipeConfiguration', name?: string | null, type?: Datatype | null, default?: string | null, documentation?: string | null, optional?: boolean | null, placeholder?: string | null, functionName?: string | null, condition?: { __typename?: 'RecipeCondition', field: string, operation: Operation, value?: string | null } | null, validation?: { __typename?: 'RecipeValidation', type: ValidationType, regex?: string | null, message: string } | null } | null> | null }; + +export type RecipeConfigurationFragment = { __typename?: 'RecipeConfiguration', name?: string | null, type?: Datatype | null, default?: string | null, documentation?: string | null, optional?: boolean | null, placeholder?: string | null, functionName?: string | null, condition?: { __typename?: 'RecipeCondition', field: string, operation: Operation, value?: string | null } | null, validation?: { __typename?: 'RecipeValidation', type: ValidationType, regex?: string | null, message: string } | null }; + +export type StackFragment = { __typename?: 'Stack', id: string, name: string, displayName?: string | null, description?: string | null, featured?: boolean | null, creator?: { __typename?: 'User', id: string, name: string } | null, collections?: Array<{ __typename?: 'StackCollection', id: string, provider: Provider, bundles?: Array<{ __typename?: 'StackRecipe', recipe: { __typename?: 'Recipe', repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, tags?: Array<{ __typename?: 'Tag', tag: string } | null> | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null } } | null> | null } | null> | null }; + +export type GetRecipeQueryVariables = Exact<{ + repo?: InputMaybe; + name?: InputMaybe; + id?: InputMaybe; +}>; + + +export type GetRecipeQuery = { __typename?: 'RootQueryType', recipe?: { __typename?: 'Recipe', id: string, name: string, description?: string | null, restricted?: boolean | null, provider?: Provider | null, recipeDependencies?: Array<{ __typename?: 'Recipe', id: string, name: string, description?: string | null, restricted?: boolean | null, provider?: Provider | null, tests?: Array<{ __typename?: 'RecipeTest', type: TestType, name: string, message?: string | null, args?: Array<{ __typename?: 'TestArgument', name: string, repo: string, key: string } | null> | null } | null> | null, repository?: { __typename?: 'Repository', id: string, name: string } | null, oidcSettings?: { __typename?: 'OidcSettings', uriFormat?: string | null, uriFormats?: Array | null, authMethod: OidcAuthMethod, domainKey?: string | null, subdomain?: boolean | null } | null, recipeSections?: Array<{ __typename?: 'RecipeSection', index?: number | null, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, installation?: { __typename?: 'Installation', id: string, context?: Map | null, license?: string | null, licenseKey?: string | null, acmeKeyId?: string | null, acmeSecret?: string | null, autoUpgrade?: boolean | null, trackTag: string, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, oidcProvider?: { __typename?: 'OidcProvider', id: string, clientId: string, authMethod: OidcAuthMethod, clientSecret: string, redirectUris?: Array | null, bindings?: Array<{ __typename?: 'OidcProviderBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null, configuration?: { __typename?: 'OuathConfiguration', issuer?: string | null, authorizationEndpoint?: string | null, tokenEndpoint?: string | null, jwksUri?: string | null, userinfoEndpoint?: string | null } | null } | null } | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, recipeItems?: Array<{ __typename?: 'RecipeItem', id?: string | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null, readme?: string | null, package?: string | null, description?: string | null, latestVersion?: string | null, valuesTemplate?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, configuration?: Array<{ __typename?: 'RecipeConfiguration', name?: string | null, type?: Datatype | null, default?: string | null, documentation?: string | null, optional?: boolean | null, placeholder?: string | null, functionName?: string | null, condition?: { __typename?: 'RecipeCondition', field: string, operation: Operation, value?: string | null } | null, validation?: { __typename?: 'RecipeValidation', type: ValidationType, regex?: string | null, message: string } | null } | null> | null } | null> | null, configuration?: Array<{ __typename?: 'RecipeConfiguration', name?: string | null, type?: Datatype | null, default?: string | null, documentation?: string | null, optional?: boolean | null, placeholder?: string | null, functionName?: string | null, condition?: { __typename?: 'RecipeCondition', field: string, operation: Operation, value?: string | null } | null, validation?: { __typename?: 'RecipeValidation', type: ValidationType, regex?: string | null, message: string } | null } | null> | null } | null> | null } | null> | null, tests?: Array<{ __typename?: 'RecipeTest', type: TestType, name: string, message?: string | null, args?: Array<{ __typename?: 'TestArgument', name: string, repo: string, key: string } | null> | null } | null> | null, repository?: { __typename?: 'Repository', id: string, name: string } | null, oidcSettings?: { __typename?: 'OidcSettings', uriFormat?: string | null, uriFormats?: Array | null, authMethod: OidcAuthMethod, domainKey?: string | null, subdomain?: boolean | null } | null, recipeSections?: Array<{ __typename?: 'RecipeSection', index?: number | null, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, installation?: { __typename?: 'Installation', id: string, context?: Map | null, license?: string | null, licenseKey?: string | null, acmeKeyId?: string | null, acmeSecret?: string | null, autoUpgrade?: boolean | null, trackTag: string, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, oidcProvider?: { __typename?: 'OidcProvider', id: string, clientId: string, authMethod: OidcAuthMethod, clientSecret: string, redirectUris?: Array | null, bindings?: Array<{ __typename?: 'OidcProviderBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null, configuration?: { __typename?: 'OuathConfiguration', issuer?: string | null, authorizationEndpoint?: string | null, tokenEndpoint?: string | null, jwksUri?: string | null, userinfoEndpoint?: string | null } | null } | null } | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, recipeItems?: Array<{ __typename?: 'RecipeItem', id?: string | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null, readme?: string | null, package?: string | null, description?: string | null, latestVersion?: string | null, valuesTemplate?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, configuration?: Array<{ __typename?: 'RecipeConfiguration', name?: string | null, type?: Datatype | null, default?: string | null, documentation?: string | null, optional?: boolean | null, placeholder?: string | null, functionName?: string | null, condition?: { __typename?: 'RecipeCondition', field: string, operation: Operation, value?: string | null } | null, validation?: { __typename?: 'RecipeValidation', type: ValidationType, regex?: string | null, message: string } | null } | null> | null } | null> | null, configuration?: Array<{ __typename?: 'RecipeConfiguration', name?: string | null, type?: Datatype | null, default?: string | null, documentation?: string | null, optional?: boolean | null, placeholder?: string | null, functionName?: string | null, condition?: { __typename?: 'RecipeCondition', field: string, operation: Operation, value?: string | null } | null, validation?: { __typename?: 'RecipeValidation', type: ValidationType, regex?: string | null, message: string } | null } | null> | null } | null> | null } | null }; + +export type ListRecipesQueryVariables = Exact<{ + repositoryName?: InputMaybe; + repositoryId?: InputMaybe; + provider?: InputMaybe; +}>; + + +export type ListRecipesQuery = { __typename?: 'RootQueryType', recipes?: { __typename?: 'RecipeConnection', edges?: Array<{ __typename?: 'RecipeEdge', node?: { __typename?: 'Recipe', id: string, name: string, description?: string | null, restricted?: boolean | null, provider?: Provider | null, tests?: Array<{ __typename?: 'RecipeTest', type: TestType, name: string, message?: string | null, args?: Array<{ __typename?: 'TestArgument', name: string, repo: string, key: string } | null> | null } | null> | null, repository?: { __typename?: 'Repository', id: string, name: string } | null, oidcSettings?: { __typename?: 'OidcSettings', uriFormat?: string | null, uriFormats?: Array | null, authMethod: OidcAuthMethod, domainKey?: string | null, subdomain?: boolean | null } | null, recipeSections?: Array<{ __typename?: 'RecipeSection', index?: number | null, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, installation?: { __typename?: 'Installation', id: string, context?: Map | null, license?: string | null, licenseKey?: string | null, acmeKeyId?: string | null, acmeSecret?: string | null, autoUpgrade?: boolean | null, trackTag: string, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, oidcProvider?: { __typename?: 'OidcProvider', id: string, clientId: string, authMethod: OidcAuthMethod, clientSecret: string, redirectUris?: Array | null, bindings?: Array<{ __typename?: 'OidcProviderBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null, configuration?: { __typename?: 'OuathConfiguration', issuer?: string | null, authorizationEndpoint?: string | null, tokenEndpoint?: string | null, jwksUri?: string | null, userinfoEndpoint?: string | null } | null } | null } | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, recipeItems?: Array<{ __typename?: 'RecipeItem', id?: string | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null, readme?: string | null, package?: string | null, description?: string | null, latestVersion?: string | null, valuesTemplate?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, configuration?: Array<{ __typename?: 'RecipeConfiguration', name?: string | null, type?: Datatype | null, default?: string | null, documentation?: string | null, optional?: boolean | null, placeholder?: string | null, functionName?: string | null, condition?: { __typename?: 'RecipeCondition', field: string, operation: Operation, value?: string | null } | null, validation?: { __typename?: 'RecipeValidation', type: ValidationType, regex?: string | null, message: string } | null } | null> | null } | null> | null, configuration?: Array<{ __typename?: 'RecipeConfiguration', name?: string | null, type?: Datatype | null, default?: string | null, documentation?: string | null, optional?: boolean | null, placeholder?: string | null, functionName?: string | null, condition?: { __typename?: 'RecipeCondition', field: string, operation: Operation, value?: string | null } | null, validation?: { __typename?: 'RecipeValidation', type: ValidationType, regex?: string | null, message: string } | null } | null> | null } | null> | null } | null } | null> | null } | null }; + +export type CreateRecipeMutationVariables = Exact<{ + name: Scalars['String']; + attributes: RecipeAttributes; +}>; + + +export type CreateRecipeMutation = { __typename?: 'RootMutationType', createRecipe?: { __typename?: 'Recipe', id: string } | null }; + +export type InstallRecipeMutationVariables = Exact<{ + id: Scalars['ID']; +}>; + + +export type InstallRecipeMutation = { __typename?: 'RootMutationType', installRecipe?: Array<{ __typename?: 'Installation', id: string } | null> | null }; + +export type CreateStackMutationVariables = Exact<{ + attributes: StackAttributes; +}>; + + +export type CreateStackMutation = { __typename?: 'RootMutationType', createStack?: { __typename?: 'Stack', id: string } | null }; + +export type GetStackQueryVariables = Exact<{ + name: Scalars['String']; + provider: Provider; +}>; + + +export type GetStackQuery = { __typename?: 'RootQueryType', stack?: { __typename?: 'Stack', id: string, name: string, displayName?: string | null, description?: string | null, featured?: boolean | null, creator?: { __typename?: 'User', id: string, name: string } | null, collections?: Array<{ __typename?: 'StackCollection', id: string, provider: Provider, bundles?: Array<{ __typename?: 'StackRecipe', recipe: { __typename?: 'Recipe', repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, tags?: Array<{ __typename?: 'Tag', tag: string } | null> | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null } } | null> | null } | null> | null } | null }; + +export type ListStacksQueryVariables = Exact<{ + featured?: InputMaybe; + cursor?: InputMaybe; +}>; + + +export type ListStacksQuery = { __typename?: 'RootQueryType', stacks?: { __typename?: 'StackConnection', edges?: Array<{ __typename?: 'StackEdge', node?: { __typename?: 'Stack', id: string, name: string, displayName?: string | null, description?: string | null, featured?: boolean | null, creator?: { __typename?: 'User', id: string, name: string } | null, collections?: Array<{ __typename?: 'StackCollection', id: string, provider: Provider, bundles?: Array<{ __typename?: 'StackRecipe', recipe: { __typename?: 'Recipe', repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, tags?: Array<{ __typename?: 'Tag', tag: string } | null> | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null } } | null> | null } | null> | null } | null } | null> | null } | null }; + +export type CreateQuickStackMutationVariables = Exact<{ + applicationIds?: InputMaybe> | InputMaybe>; + provider: Provider; +}>; + + +export type CreateQuickStackMutation = { __typename?: 'RootMutationType', quickStack?: { __typename?: 'Stack', id: string, name: string } | null }; + +export type InstallStackShellMutationVariables = Exact<{ + name: Scalars['String']; + context: ContextAttributes; + oidc: Scalars['Boolean']; +}>; + + +export type InstallStackShellMutation = { __typename?: 'RootMutationType', installStackShell?: Array<{ __typename?: 'Recipe', id: string, name: string } | null> | null }; + +export type ApplyLockFragment = { __typename?: 'ApplyLock', id: string, lock?: string | null }; + +export type CategoryFragment = { __typename?: 'CategoryInfo', category?: Category | null, count?: number | null }; + +export type RepoFragment = { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null }; + +export type RepositoryFragment = { __typename?: 'Repository', id: string, name: string, notes?: string | null, icon?: string | null, darkIcon?: string | null, description?: string | null, publisher?: { __typename?: 'Publisher', name: string } | null, recipes?: Array<{ __typename?: 'Recipe', name: string } | null> | null }; + +export type DependenciesFragment = { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null }; + +export type IntegrationFragment = { __typename?: 'Integration', id: string, name: string, icon?: string | null, sourceUrl?: string | null, description?: string | null, tags?: Array<{ __typename?: 'Tag', tag: string } | null> | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null }; + +export type RepositoryQueryVariables = Exact<{ + id?: InputMaybe; + name?: InputMaybe; +}>; + + +export type RepositoryQuery = { __typename?: 'RootQueryType', repository?: { __typename?: 'Repository', editable?: boolean | null, publicKey?: string | null, secrets?: Map | null, readme?: string | null, mainBranch?: string | null, gitUrl?: string | null, homepage?: string | null, documentation?: string | null, id: string, name: string, notes?: string | null, description?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, artifacts?: Array<{ __typename?: 'Artifact', id?: string | null, name?: string | null, blob?: string | null, type?: ArtifactType | null, platform?: ArtifactPlatform | null, arch?: string | null, filesize?: number | null, sha?: string | null, readme?: string | null, insertedAt?: Date | null, updatedAt?: Date | null } | null> | null, installation?: { __typename?: 'Installation', id: string, context?: Map | null, license?: string | null, licenseKey?: string | null, acmeKeyId?: string | null, acmeSecret?: string | null, autoUpgrade?: boolean | null, trackTag: string, oidcProvider?: { __typename?: 'OidcProvider', id: string, clientId: string, authMethod: OidcAuthMethod, clientSecret: string, redirectUris?: Array | null, bindings?: Array<{ __typename?: 'OidcProviderBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null, configuration?: { __typename?: 'OuathConfiguration', issuer?: string | null, authorizationEndpoint?: string | null, tokenEndpoint?: string | null, jwksUri?: string | null, userinfoEndpoint?: string | null } | null } | null, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null } | null, tags?: Array<{ __typename?: 'Tag', tag: string } | null> | null, license?: { __typename?: 'License', name?: string | null, url?: string | null } | null, community?: { __typename?: 'Community', discord?: string | null, slack?: string | null, homepage?: string | null, gitUrl?: string | null, twitter?: string | null } | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null }; + +export type CreateResourceDefinitionMutationVariables = Exact<{ + name: Scalars['String']; + input: ResourceDefinitionAttributes; +}>; + + +export type CreateResourceDefinitionMutation = { __typename?: 'RootMutationType', updateRepository?: { __typename?: 'Repository', id: string } | null }; + +export type CreateIntegrationMutationVariables = Exact<{ + name: Scalars['String']; + attrs: IntegrationAttributes; +}>; + + +export type CreateIntegrationMutation = { __typename?: 'RootMutationType', createIntegration?: { __typename?: 'Integration', id: string } | null }; + +export type UpdateRepositoryMutationVariables = Exact<{ + name: Scalars['String']; + attrs: RepositoryAttributes; +}>; + + +export type UpdateRepositoryMutation = { __typename?: 'RootMutationType', updateRepository?: { __typename?: 'Repository', id: string } | null }; + +export type CreateRepositoryMutationVariables = Exact<{ + name: Scalars['String']; + publisher: Scalars['String']; + attributes: RepositoryAttributes; +}>; + + +export type CreateRepositoryMutation = { __typename?: 'RootMutationType', upsertRepository?: { __typename?: 'Repository', id: string } | null }; + +export type AcquireLockMutationVariables = Exact<{ + name: Scalars['String']; +}>; + + +export type AcquireLockMutation = { __typename?: 'RootMutationType', acquireLock?: { __typename?: 'ApplyLock', id: string, lock?: string | null } | null }; + +export type ReleaseLockMutationVariables = Exact<{ + name: Scalars['String']; + attrs: LockAttributes; +}>; + + +export type ReleaseLockMutation = { __typename?: 'RootMutationType', releaseLock?: { __typename?: 'ApplyLock', id: string, lock?: string | null } | null }; + +export type UnlockRepositoryMutationVariables = Exact<{ + name: Scalars['String']; +}>; + + +export type UnlockRepositoryMutation = { __typename?: 'RootMutationType', unlockRepository?: number | null }; + +export type ListRepositoriesQueryVariables = Exact<{ + q?: InputMaybe; + installed?: InputMaybe; + first?: InputMaybe; + provider?: InputMaybe; +}>; + + +export type ListRepositoriesQuery = { __typename?: 'RootQueryType', repositories?: { __typename?: 'RepositoryConnection', edges?: Array<{ __typename?: 'RepositoryEdge', node?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, icon?: string | null, darkIcon?: string | null, description?: string | null, publisher?: { __typename?: 'Publisher', name: string } | null, recipes?: Array<{ __typename?: 'Recipe', name: string } | null> | null } | null } | null> | null } | null }; + +export type ScaffoldsQueryVariables = Exact<{ + app: Scalars['String']; + pub: Scalars['String']; + cat: Category; + ing?: InputMaybe; + pg?: InputMaybe; +}>; + + +export type ScaffoldsQuery = { __typename?: 'RootQueryType', scaffold?: Array<{ __typename?: 'ScaffoldFile', path?: string | null, content?: string | null } | null> | null }; + +export type DeleteRepositoryMutationVariables = Exact<{ + id: Scalars['ID']; +}>; + + +export type DeleteRepositoryMutation = { __typename?: 'RootMutationType', deleteRepository?: { __typename?: 'Repository', id: string } | null }; + +export type GetTfProvidersQueryVariables = Exact<{ [key: string]: never; }>; + + +export type GetTfProvidersQuery = { __typename?: 'RootQueryType', terraformProviders?: Array | null }; + +export type GetTfProviderScaffoldQueryVariables = Exact<{ + name: Provider; + vsn?: InputMaybe; +}>; + + +export type GetTfProviderScaffoldQuery = { __typename?: 'RootQueryType', terraformProvider?: { __typename?: 'TerraformProvider', name?: Provider | null, content?: string | null } | null }; + +export type CloudShellFragment = { __typename?: 'CloudShell', id: string, aesKey: string, gitUrl: string, alive: boolean, provider: Provider, subdomain: string, cluster: string, status?: { __typename?: 'ShellStatus', ready?: boolean | null, initialized?: boolean | null, containersReady?: boolean | null, podScheduled?: boolean | null } | null }; + +export type DemoProjectFragment = { __typename?: 'DemoProject', id: string, projectId: string, credentials?: string | null, ready?: boolean | null, state?: DemoProjectState | null }; + +export type GetShellQueryVariables = Exact<{ [key: string]: never; }>; + + +export type GetShellQuery = { __typename?: 'RootQueryType', shell?: { __typename?: 'CloudShell', id: string, aesKey: string, gitUrl: string, alive: boolean, provider: Provider, subdomain: string, cluster: string, status?: { __typename?: 'ShellStatus', ready?: boolean | null, initialized?: boolean | null, containersReady?: boolean | null, podScheduled?: boolean | null } | null } | null }; + +export type DeleteShellMutationVariables = Exact<{ [key: string]: never; }>; + + +export type DeleteShellMutation = { __typename?: 'RootMutationType', deleteShell?: { __typename?: 'CloudShell', id: string, aesKey: string, gitUrl: string, alive: boolean, provider: Provider, subdomain: string, cluster: string, status?: { __typename?: 'ShellStatus', ready?: boolean | null, initialized?: boolean | null, containersReady?: boolean | null, podScheduled?: boolean | null } | null } | null }; + +export type TerraformFragment = { __typename?: 'Terraform', id?: string | null, name?: string | null, readme?: string | null, package?: string | null, description?: string | null, latestVersion?: string | null, valuesTemplate?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null }; + +export type TerraformInstallationFragment = { __typename?: 'TerraformInstallation', id?: string | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null, readme?: string | null, package?: string | null, description?: string | null, latestVersion?: string | null, valuesTemplate?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, version?: { __typename?: 'Version', id: string, helm?: Map | null, readme?: string | null, valuesTemplate?: string | null, version: string, insertedAt?: Date | null, package?: string | null, crds?: Array<{ __typename?: 'Crd', id: string, name: string, blob?: string | null } | null> | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null } | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null }; + +export type GetTerraformQueryVariables = Exact<{ + id: Scalars['ID']; +}>; + + +export type GetTerraformQuery = { __typename?: 'RootQueryType', terraform?: { __typename?: 'TerraformConnection', edges?: Array<{ __typename?: 'TerraformEdge', node?: { __typename?: 'Terraform', id?: string | null, name?: string | null, readme?: string | null, package?: string | null, description?: string | null, latestVersion?: string | null, valuesTemplate?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null } | null> | null } | null }; + +export type GetTerraformInstallationsQueryVariables = Exact<{ + id: Scalars['ID']; +}>; + + +export type GetTerraformInstallationsQuery = { __typename?: 'RootQueryType', terraformInstallations?: { __typename?: 'TerraformInstallationConnection', edges?: Array<{ __typename?: 'TerraformInstallationEdge', node?: { __typename?: 'TerraformInstallation', id?: string | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null, readme?: string | null, package?: string | null, description?: string | null, latestVersion?: string | null, valuesTemplate?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, version?: { __typename?: 'Version', id: string, helm?: Map | null, readme?: string | null, valuesTemplate?: string | null, version: string, insertedAt?: Date | null, package?: string | null, crds?: Array<{ __typename?: 'Crd', id: string, name: string, blob?: string | null } | null> | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null } | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null } | null } | null> | null } | null }; + +export type UploadTerraformMutationVariables = Exact<{ + repoName: Scalars['String']; + name: Scalars['String']; + uploadOrUrl: Scalars['UploadOrUrl']; +}>; + + +export type UploadTerraformMutation = { __typename?: 'RootMutationType', uploadTerraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null, readme?: string | null, package?: string | null, description?: string | null, latestVersion?: string | null, valuesTemplate?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null }; + +export type UninstallTerraformMutationVariables = Exact<{ + id: Scalars['ID']; +}>; + + +export type UninstallTerraformMutation = { __typename?: 'RootMutationType', uninstallTerraform?: { __typename?: 'TerraformInstallation', id?: string | null } | null }; + +export type StepFragment = { __typename?: 'TestStep', id: string, name: string, status: TestStatus, hasLogs?: boolean | null, description: string, insertedAt?: Date | null, updatedAt?: Date | null }; + +export type TestFragment = { __typename?: 'Test', id: string, name?: string | null, promoteTag: string, status: TestStatus, insertedAt?: Date | null, updatedAt?: Date | null, steps?: Array<{ __typename?: 'TestStep', id: string, name: string, status: TestStatus, hasLogs?: boolean | null, description: string, insertedAt?: Date | null, updatedAt?: Date | null } | null> | null }; + +export type CreateTestMutationVariables = Exact<{ + name: Scalars['String']; + attrs: TestAttributes; +}>; + + +export type CreateTestMutation = { __typename?: 'RootMutationType', createTest?: { __typename?: 'Test', id: string, name?: string | null, promoteTag: string, status: TestStatus, insertedAt?: Date | null, updatedAt?: Date | null, steps?: Array<{ __typename?: 'TestStep', id: string, name: string, status: TestStatus, hasLogs?: boolean | null, description: string, insertedAt?: Date | null, updatedAt?: Date | null } | null> | null } | null }; + +export type UpdateTestMutationVariables = Exact<{ + id: Scalars['ID']; + attrs: TestAttributes; +}>; + + +export type UpdateTestMutation = { __typename?: 'RootMutationType', updateTest?: { __typename?: 'Test', id: string, name?: string | null, promoteTag: string, status: TestStatus, insertedAt?: Date | null, updatedAt?: Date | null, steps?: Array<{ __typename?: 'TestStep', id: string, name: string, status: TestStatus, hasLogs?: boolean | null, description: string, insertedAt?: Date | null, updatedAt?: Date | null } | null> | null } | null }; + +export type UpdateStepMutationVariables = Exact<{ + id: Scalars['ID']; + logs: Scalars['UploadOrUrl']; +}>; + + +export type UpdateStepMutation = { __typename?: 'RootMutationType', updateStep?: { __typename?: 'TestStep', id: string } | null }; + +export type PublishLogsMutationVariables = Exact<{ + id: Scalars['ID']; + logs: Scalars['String']; +}>; + + +export type PublishLogsMutation = { __typename?: 'RootMutationType', publishLogs?: { __typename?: 'TestStep', id: string } | null }; + +export type UpgradeQueueFragment = { __typename?: 'UpgradeQueue', id: string, acked?: string | null, name?: string | null, domain?: string | null, git?: string | null, pingedAt?: Date | null, provider?: Provider | null }; + +export type RolloutFragment = { __typename?: 'Rollout', id: string, event?: string | null, cursor?: string | null, count?: number | null, status: RolloutStatus, heartbeat?: Date | null }; + +export type UpgradeFragment = { __typename?: 'Upgrade', id: string, message?: string | null, insertedAt?: Date | null, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null }; + +export type DeferredUpdateFragment = { __typename?: 'DeferredUpdate', id: string, dequeueAt?: Date | null, attempts?: number | null, insertedAt?: Date | null, version?: { __typename?: 'Version', version: string } | null }; + +export type AccountFragment = { __typename?: 'Account', id: string, name?: string | null, billingCustomerId?: string | null, backgroundColor?: string | null }; + +export type GroupFragment = { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null }; + +export type UserFragment = { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null }; + +export type ImpersonationPolicyFragment = { __typename?: 'ImpersonationPolicy', id: string, bindings?: Array<{ __typename?: 'ImpersonationPolicyBinding', id: string, group?: { __typename?: 'Group', id: string, name: string } | null, user?: { __typename?: 'User', id: string, name: string, email: string } | null } | null> | null }; + +export type GroupMemberFragment = { __typename?: 'GroupMember', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null }; + +export type TokenFragment = { __typename?: 'PersistedToken', id?: string | null, token?: string | null, insertedAt?: Date | null }; + +export type TokenAuditFragment = { __typename?: 'PersistedTokenAudit', ip?: string | null, timestamp?: Date | null, count?: number | null, country?: string | null, city?: string | null, latitude?: string | null, longitude?: string | null }; + +export type AddressFragment = { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null }; + +export type PublisherFragment = { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null }; + +export type WebhookFragment = { __typename?: 'Webhook', id?: string | null, url?: string | null, secret?: string | null, insertedAt?: Date | null }; + +export type RoleBindingFragment = { __typename?: 'RoleBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null }; + +export type RoleFragment = { __typename?: 'Role', id: string, name: string, description?: string | null, repositories?: Array | null, permissions?: Array | null, roleBindings?: Array<{ __typename?: 'RoleBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null }; + +export type PublicKeyFragment = { __typename?: 'PublicKey', id: string, name: string, digest: string, insertedAt?: Date | null, content: string, user: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } }; + +export type EabCredentialFragment = { __typename?: 'EabCredential', id: string, keyId: string, hmacKey: string, cluster: string, provider: Provider, insertedAt?: Date | null }; + +export type MeQueryVariables = Exact<{ [key: string]: never; }>; + + +export type MeQuery = { __typename?: 'RootQueryType', me?: { __typename?: 'User', loginMethod?: LoginMethod | null, hasInstallations?: boolean | null, id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, account: { __typename?: 'Account', id: string, name?: string | null, billingCustomerId?: string | null, backgroundColor?: string | null, rootUser?: { __typename?: 'User', id: string, name: string, email: string } | null, domainMappings?: Array<{ __typename?: 'DomainMapping', id: string, domain: string, enableSso?: boolean | null } | null> | null }, publisher?: { __typename?: 'Publisher', billingAccountId?: string | null, id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, boundRoles?: Array<{ __typename?: 'Role', id: string, name: string, description?: string | null, repositories?: Array | null, permissions?: Array | null, roleBindings?: Array<{ __typename?: 'RoleBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null } | null> | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, configuration?: { __typename?: 'PluralConfiguration', stripeConnectId?: string | null, stripePublishableKey?: string | null, registry?: string | null, gitCommit?: string | null } | null }; + +export type GetLoginMethodQueryVariables = Exact<{ + email: Scalars['String']; +}>; + + +export type GetLoginMethodQuery = { __typename?: 'RootQueryType', loginMethod?: { __typename?: 'LoginMethodResponse', loginMethod: LoginMethod, token?: string | null } | null }; + +export type ListTokensQueryVariables = Exact<{ [key: string]: never; }>; + + +export type ListTokensQuery = { __typename?: 'RootQueryType', tokens?: { __typename?: 'PersistedTokenConnection', edges?: Array<{ __typename?: 'PersistedTokenEdge', node?: { __typename?: 'PersistedToken', token?: string | null } | null } | null> | null } | null }; + +export type ListKeysQueryVariables = Exact<{ + emails?: InputMaybe> | InputMaybe>; +}>; + + +export type ListKeysQuery = { __typename?: 'RootQueryType', publicKeys?: { __typename?: 'PublicKeyConnection', edges?: Array<{ __typename?: 'PublicKeyEdge', node?: { __typename?: 'PublicKey', id: string, name: string, digest: string, insertedAt?: Date | null, content: string, user: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } } | null } | null> | null } | null }; + +export type GetEabCredentialQueryVariables = Exact<{ + cluster: Scalars['String']; + provider: Provider; +}>; + + +export type GetEabCredentialQuery = { __typename?: 'RootQueryType', eabCredential?: { __typename?: 'EabCredential', id: string, keyId: string, hmacKey: string, cluster: string, provider: Provider, insertedAt?: Date | null } | null }; + +export type DevLoginMutationVariables = Exact<{ [key: string]: never; }>; + + +export type DevLoginMutation = { __typename?: 'RootMutationType', deviceLogin?: { __typename?: 'DeviceLogin', loginUrl: string, deviceToken: string } | null }; + +export type LoginMutationVariables = Exact<{ + email: Scalars['String']; + password: Scalars['String']; + deviceToken?: InputMaybe; +}>; + + +export type LoginMutation = { __typename?: 'RootMutationType', login?: { __typename?: 'User', jwt?: string | null } | null }; + +export type ImpersonateServiceAccountMutationVariables = Exact<{ + email?: InputMaybe; +}>; + + +export type ImpersonateServiceAccountMutation = { __typename?: 'RootMutationType', impersonateServiceAccount?: { __typename?: 'User', jwt?: string | null, email: string } | null }; + +export type CreateAccessTokenMutationVariables = Exact<{ [key: string]: never; }>; + + +export type CreateAccessTokenMutation = { __typename?: 'RootMutationType', createToken?: { __typename?: 'PersistedToken', token?: string | null } | null }; + +export type CreateKeyMutationVariables = Exact<{ + key: Scalars['String']; + name: Scalars['String']; +}>; + + +export type CreateKeyMutation = { __typename?: 'RootMutationType', createPublicKey?: { __typename?: 'PublicKey', id: string } | null }; + +export type DeleteEabCredentialMutationVariables = Exact<{ + cluster: Scalars['String']; + provider: Provider; +}>; + + +export type DeleteEabCredentialMutation = { __typename?: 'RootMutationType', deleteEabKey?: { __typename?: 'EabCredential', id: string } | null }; + +export type CreateEventMutationVariables = Exact<{ + attrs: UserEventAttributes; +}>; + + +export type CreateEventMutation = { __typename?: 'RootMutationType', createUserEvent?: boolean | null }; + +export type LoginMethodQueryVariables = Exact<{ + email: Scalars['String']; + host?: InputMaybe; +}>; + + +export type LoginMethodQuery = { __typename?: 'RootQueryType', loginMethod?: { __typename?: 'LoginMethodResponse', loginMethod: LoginMethod, token?: string | null, authorizeUrl?: string | null } | null }; + +export type SignupMutationVariables = Exact<{ + attributes: UserAttributes; + account?: InputMaybe; + deviceToken?: InputMaybe; +}>; + + +export type SignupMutation = { __typename?: 'RootMutationType', signup?: { __typename?: 'User', jwt?: string | null, onboarding?: OnboardingState | null } | null }; + +export type PasswordlessLoginMutationVariables = Exact<{ + token: Scalars['String']; +}>; + + +export type PasswordlessLoginMutation = { __typename?: 'RootMutationType', passwordlessLogin?: { __typename?: 'User', jwt?: string | null } | null }; + +export type PollLoginTokenMutationVariables = Exact<{ + token: Scalars['String']; + deviceToken?: InputMaybe; +}>; + + +export type PollLoginTokenMutation = { __typename?: 'RootMutationType', loginToken?: { __typename?: 'User', jwt?: string | null } | null }; + +export type OauthUrlsQueryVariables = Exact<{ + host?: InputMaybe; +}>; + + +export type OauthUrlsQuery = { __typename?: 'RootQueryType', oauthUrls?: Array<{ __typename?: 'OauthInfo', provider: OauthProvider, authorizeUrl: string } | null> | null }; + +export type AcceptLoginMutationVariables = Exact<{ + challenge: Scalars['String']; +}>; + + +export type AcceptLoginMutation = { __typename?: 'RootMutationType', acceptLogin?: { __typename?: 'OauthResponse', redirectTo: string } | null }; + +export type CreateResetTokenMutationVariables = Exact<{ + attributes: ResetTokenAttributes; +}>; + + +export type CreateResetTokenMutation = { __typename?: 'RootMutationType', createResetToken?: boolean | null }; + +export type RealizeResetTokenMutationVariables = Exact<{ + id: Scalars['ID']; + attributes: ResetTokenRealization; +}>; + + +export type RealizeResetTokenMutation = { __typename?: 'RootMutationType', realizeResetToken?: boolean | null }; + +export type ResetTokenQueryVariables = Exact<{ + id: Scalars['ID']; +}>; + + +export type ResetTokenQuery = { __typename?: 'RootQueryType', resetToken?: { __typename?: 'ResetToken', type: ResetTokenType, user: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } } | null }; + +export type VersionTagFragment = { __typename?: 'VersionTag', id: string, tag: string, version?: { __typename?: 'Version', id: string } | null }; + +export type VersionFragment = { __typename?: 'Version', id: string, helm?: Map | null, readme?: string | null, valuesTemplate?: string | null, version: string, insertedAt?: Date | null, package?: string | null, crds?: Array<{ __typename?: 'Crd', id: string, name: string, blob?: string | null } | null> | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null } | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null }; + +export type UpdateVersionMutationVariables = Exact<{ + spec?: InputMaybe; + attributes: VersionAttributes; +}>; + + +export type UpdateVersionMutation = { __typename?: 'RootMutationType', updateVersion?: { __typename?: 'Version', id: string } | null }; + +export const UserFragmentDoc = gql` + fragment User on User { + id + name + email + avatar + provider + demoing + demoed + onboarding + onboardingChecklist { + dismissed + status + } + emailConfirmed + emailConfirmBy + backgroundColor + serviceAccount + roles { + admin + } +} + `; +export const AddressFragmentDoc = gql` + fragment Address on Address { + line1 + line2 + city + country + state + zip +} + `; +export const PublisherFragmentDoc = gql` + fragment Publisher on Publisher { + id + name + phone + avatar + description + backgroundColor + owner { + ...User + } + address { + ...Address + } +} + ${UserFragmentDoc} +${AddressFragmentDoc}`; +export const RepoFragmentDoc = gql` + fragment Repo on Repository { + id + name + notes + description + documentation + icon + darkIcon + private + trending + verified + category + oauthSettings { + uriFormat + authMethod + } + publisher { + ...Publisher + } + recipes { + name + provider + description + } +} + ${PublisherFragmentDoc}`; +export const GroupFragmentDoc = gql` + fragment Group on Group { + id + name + global + description +} + `; +export const IntegrationWebhookFragmentDoc = gql` + fragment IntegrationWebhook on IntegrationWebhook { + id + name + url + secret + actions +} + `; +export const RoleBindingFragmentDoc = gql` + fragment RoleBinding on RoleBinding { + id + user { + ...User + } + group { + ...Group + } +} + ${UserFragmentDoc} +${GroupFragmentDoc}`; +export const RoleFragmentDoc = gql` + fragment Role on Role { + id + name + description + repositories + permissions + roleBindings { + ...RoleBinding + } +} + ${RoleBindingFragmentDoc}`; +export const CrdFragmentDoc = gql` + fragment Crd on Crd { + id + name + blob +} + `; +export const DependenciesFragmentDoc = gql` + fragment Dependencies on Dependencies { + dependencies { + name + repo + type + version + optional + } + wait + application + providers + secrets + wirings { + terraform + helm + } + providerWirings + outputs +} + `; +export const ChartFragmentDoc = gql` + fragment Chart on Chart { + id + name + description + latestVersion + dependencies { + ...Dependencies + } + insertedAt +} + ${DependenciesFragmentDoc}`; +export const VersionFragmentDoc = gql` + fragment Version on Version { + id + helm + readme + valuesTemplate + version + insertedAt + package + crds { + ...Crd + } + chart { + ...Chart + } + terraform { + id + name + } + dependencies { + ...Dependencies + } +} + ${CrdFragmentDoc} +${ChartFragmentDoc} +${DependenciesFragmentDoc}`; +export const AuditFragmentDoc = gql` + fragment Audit on Audit { + id + action + ip + country + city + latitude + longitude + actor { + ...User + } + repository { + ...Repo + } + group { + ...Group + } + integrationWebhook { + ...IntegrationWebhook + } + role { + ...Role + } + version { + ...Version + } + image { + id + tag + dockerRepository { + name + } + } + insertedAt +} + ${UserFragmentDoc} +${RepoFragmentDoc} +${GroupFragmentDoc} +${IntegrationWebhookFragmentDoc} +${RoleFragmentDoc} +${VersionFragmentDoc}`; +export const PolicyBindingFragmentDoc = gql` + fragment PolicyBinding on PolicyBinding { + id + group { + id + name + } + user { + id + name + email + } +} + `; +export const DnsDomainFragmentDoc = gql` + fragment DnsDomain on DnsDomain { + id + name + creator { + ...User + } + accessPolicy { + id + bindings { + ...PolicyBinding + } + } + insertedAt +} + ${UserFragmentDoc} +${PolicyBindingFragmentDoc}`; +export const InviteFragmentDoc = gql` + fragment Invite on Invite { + id + secureId + email + insertedAt +} + `; +export const OidcLoginFragmentDoc = gql` + fragment OidcLogin on OidcLogin { + ip + country + city + latitude + longitude + user { + ...User + } + owner { + ...User + } + repository { + ...Repo + } + insertedAt +} + ${UserFragmentDoc} +${RepoFragmentDoc}`; +export const ArtifactFragmentDoc = gql` + fragment Artifact on Artifact { + id + name + blob + type + platform + arch + filesize + sha + readme + insertedAt + updatedAt +} + `; +export const ChartInstallationFragmentDoc = gql` + fragment ChartInstallation on ChartInstallation { + id + chart { + ...Chart + dependencies { + ...Dependencies + } + } + version { + ...Version + } +} + ${ChartFragmentDoc} +${DependenciesFragmentDoc} +${VersionFragmentDoc}`; +export const ScanViolationFragmentDoc = gql` + fragment ScanViolation on ScanViolation { + ruleName + description + ruleId + severity + category + resourceName + resourceType + file + line +} + `; +export const ScanErrorFragmentDoc = gql` + fragment ScanError on ScanError { + message +} + `; +export const PackageScanFragmentDoc = gql` + fragment PackageScan on PackageScan { + id + grade + violations { + ...ScanViolation + } + errors { + ...ScanError + } +} + ${ScanViolationFragmentDoc} +${ScanErrorFragmentDoc}`; +export const DnsRecordFragmentDoc = gql` + fragment DnsRecord on DnsRecord { + id + name + type + records + cluster + provider + creator { + ...User + } + insertedAt +} + ${UserFragmentDoc}`; +export const DockerRepoFragmentDoc = gql` + fragment DockerRepo on DockerRepository { + id + name + public + repository { + id + name + } + insertedAt + updatedAt +} + `; +export const DockerRepositoryFragmentDoc = gql` + fragment DockerRepository on DockerRepository { + id + name + public + repository { + id + name + editable + } + insertedAt + updatedAt +} + `; +export const DockerImageFragmentDoc = gql` + fragment DockerImage on DockerImage { + id + tag + digest + scannedAt + grade + insertedAt + updatedAt +} + `; +export const VulnerabilityFragmentDoc = gql` + fragment Vulnerability on Vulnerability { + id + title + description + vulnerabilityId + package + installedVersion + fixedVersion + source + url + severity + score + cvss { + attackVector + attackComplexity + privilegesRequired + userInteraction + confidentiality + integrity + availability + } + layer { + digest + diffId + } +} + `; +export const PostmortemFragmentDoc = gql` + fragment Postmortem on Postmortem { + id + content + actionItems { + type + link + } +} + `; +export const FollowerFragmentDoc = gql` + fragment Follower on Follower { + id + incident { + id + } + user { + ...User + } + preferences { + message + incidentUpdate + mention + } +} + ${UserFragmentDoc}`; +export const ServiceLevelFragmentDoc = gql` + fragment ServiceLevel on ServiceLevel { + minSeverity + maxSeverity + responseTime +} + `; +export const LimitFragmentDoc = gql` + fragment Limit on Limit { + dimension + quantity +} + `; +export const LineItemFragmentDoc = gql` + fragment LineItem on LineItem { + name + dimension + cost + period + type +} + `; +export const PlanFragmentDoc = gql` + fragment Plan on Plan { + id + name + cost + period + serviceLevels { + ...ServiceLevel + } + lineItems { + included { + ...Limit + } + items { + ...LineItem + } + } + metadata { + features { + name + description + } + } +} + ${ServiceLevelFragmentDoc} +${LimitFragmentDoc} +${LineItemFragmentDoc}`; +export const SlimSubscriptionFragmentDoc = gql` + fragment SlimSubscription on SlimSubscription { + id + lineItems { + items { + dimension + quantity + } + } + plan { + ...Plan + } +} + ${PlanFragmentDoc}`; +export const ClusterInformationFragmentDoc = gql` + fragment ClusterInformation on ClusterInformation { + version + gitCommit + platform +} + `; +export const IncidentFragmentDoc = gql` + fragment Incident on Incident { + id + title + description + severity + status + notificationCount + nextResponseAt + creator { + ...User + } + owner { + ...User + } + repository { + ...Repo + } + subscription { + ...SlimSubscription + } + clusterInformation { + ...ClusterInformation + } + tags { + tag + } + insertedAt +} + ${UserFragmentDoc} +${RepoFragmentDoc} +${SlimSubscriptionFragmentDoc} +${ClusterInformationFragmentDoc}`; +export const IncidentHistoryFragmentDoc = gql` + fragment IncidentHistory on IncidentHistory { + id + action + changes { + key + prev + next + } + actor { + ...User + } + insertedAt +} + ${UserFragmentDoc}`; +export const FileFragmentDoc = gql` + fragment File on File { + id + blob + mediaType + contentType + filesize + filename +} + `; +export const IncidentMessageFragmentDoc = gql` + fragment IncidentMessage on IncidentMessage { + id + text + creator { + ...User + } + reactions { + name + creator { + id + email + } + } + file { + ...File + } + entities { + type + user { + ...User + } + text + startIndex + endIndex + } + insertedAt +} + ${UserFragmentDoc} +${FileFragmentDoc}`; +export const NotificationFragmentDoc = gql` + fragment Notification on Notification { + id + type + msg + actor { + ...User + } + incident { + id + title + repository { + id + name + icon + darkIcon + } + } + message { + text + } + repository { + id + name + icon + darkIcon + } + insertedAt +} + ${UserFragmentDoc}`; +export const WebhookLogFragmentDoc = gql` + fragment WebhookLog on WebhookLog { + id + state + status + payload + response + insertedAt +} + `; +export const OauthIntegrationFragmentDoc = gql` + fragment OauthIntegration on OauthIntegration { + id + service + insertedAt +} + `; +export const ZoomMeetingFragmentDoc = gql` + fragment ZoomMeeting on ZoomMeeting { + joinUrl + password +} + `; +export const MetricFragmentDoc = gql` + fragment Metric on Metric { + name + tags { + name + value + } + values { + time + value + } +} + `; +export const PageInfoFragmentDoc = gql` + fragment PageInfo on PageInfo { + endCursor + hasNextPage +} + `; +export const OAuthInfoFragmentDoc = gql` + fragment OAuthInfo on OauthInfo { + provider + authorizeUrl +} + `; +export const SubscriptionFragmentDoc = gql` + fragment Subscription on RepositorySubscription { + id + plan { + ...Plan + } + lineItems { + items { + ...Limit + } + } +} + ${PlanFragmentDoc} +${LimitFragmentDoc}`; +export const InvoiceItemFragmentDoc = gql` + fragment InvoiceItem on InvoiceItem { + amount + currency + description +} + `; +export const InvoiceFragmentDoc = gql` + fragment Invoice on Invoice { + number + amountDue + amountPaid + currency + status + createdAt + hostedInvoiceUrl + lines { + ...InvoiceItem + } +} + ${InvoiceItemFragmentDoc}`; +export const CardFragmentDoc = gql` + fragment Card on Card { + id + last4 + expMonth + expYear + name + brand +} + `; +export const OidcProviderFragmentDoc = gql` + fragment OIDCProvider on OidcProvider { + id + clientId + authMethod + clientSecret + redirectUris + bindings { + id + user { + ...User + } + group { + ...Group + } + } + configuration { + issuer + authorizationEndpoint + tokenEndpoint + jwksUri + userinfoEndpoint + } +} + ${UserFragmentDoc} +${GroupFragmentDoc}`; +export const InstallationFragmentDoc = gql` + fragment Installation on Installation { + id + context + license + licenseKey + acmeKeyId + acmeSecret + autoUpgrade + trackTag + repository { + ...Repo + } + user { + ...User + } + oidcProvider { + ...OIDCProvider + } +} + ${RepoFragmentDoc} +${UserFragmentDoc} +${OidcProviderFragmentDoc}`; +export const TerraformFragmentDoc = gql` + fragment Terraform on Terraform { + id + name + readme + package + description + latestVersion + dependencies { + ...Dependencies + } + valuesTemplate + insertedAt +} + ${DependenciesFragmentDoc}`; +export const RecipeConfigurationFragmentDoc = gql` + fragment RecipeConfiguration on RecipeConfiguration { + name + type + default + documentation + optional + placeholder + functionName + condition { + field + operation + value + } + validation { + type + regex + message + } +} + `; +export const RecipeItemFragmentDoc = gql` + fragment RecipeItem on RecipeItem { + id + chart { + ...Chart + } + terraform { + ...Terraform + } + configuration { + ...RecipeConfiguration + } +} + ${ChartFragmentDoc} +${TerraformFragmentDoc} +${RecipeConfigurationFragmentDoc}`; +export const RecipeSectionFragmentDoc = gql` + fragment RecipeSection on RecipeSection { + index + repository { + ...Repo + installation { + ...Installation + } + } + recipeItems { + ...RecipeItem + } + configuration { + ...RecipeConfiguration + } +} + ${RepoFragmentDoc} +${InstallationFragmentDoc} +${RecipeItemFragmentDoc} +${RecipeConfigurationFragmentDoc}`; +export const RecipeFragmentDoc = gql` + fragment Recipe on Recipe { + id + name + description + restricted + provider + tests { + type + name + message + args { + name + repo + key + } + } + repository { + id + name + } + oidcSettings { + uriFormat + uriFormats + authMethod + domainKey + subdomain + } + recipeSections { + ...RecipeSection + } +} + ${RecipeSectionFragmentDoc}`; +export const StackFragmentDoc = gql` + fragment Stack on Stack { + id + name + displayName + description + featured + creator { + id + name + } + collections { + id + provider + bundles { + recipe { + repository { + ...Repo + tags { + tag + } + } + } + } + } +} + ${RepoFragmentDoc}`; +export const ApplyLockFragmentDoc = gql` + fragment ApplyLock on ApplyLock { + id + lock +} + `; +export const CategoryFragmentDoc = gql` + fragment Category on CategoryInfo { + category + count +} + `; +export const RepositoryFragmentDoc = gql` + fragment Repository on Repository { + id + name + notes + icon + darkIcon + description + publisher { + name + } + recipes { + name + } +} + `; +export const IntegrationFragmentDoc = gql` + fragment Integration on Integration { + id + name + icon + sourceUrl + description + tags { + tag + } + publisher { + ...Publisher + } +} + ${PublisherFragmentDoc}`; +export const CloudShellFragmentDoc = gql` + fragment CloudShell on CloudShell { + id + aesKey + gitUrl + alive + provider + subdomain + cluster + status { + ready + initialized + containersReady + podScheduled + } +} + `; +export const DemoProjectFragmentDoc = gql` + fragment DemoProject on DemoProject { + id + projectId + credentials + ready + state +} + `; +export const TerraformInstallationFragmentDoc = gql` + fragment TerraformInstallation on TerraformInstallation { + id + terraform { + ...Terraform + } + version { + ...Version + } +} + ${TerraformFragmentDoc} +${VersionFragmentDoc}`; +export const StepFragmentDoc = gql` + fragment Step on TestStep { + id + name + status + hasLogs + description + insertedAt + updatedAt +} + `; +export const TestFragmentDoc = gql` + fragment Test on Test { + id + name + promoteTag + status + insertedAt + updatedAt + steps { + ...Step + } +} + ${StepFragmentDoc}`; +export const UpgradeQueueFragmentDoc = gql` + fragment UpgradeQueue on UpgradeQueue { + id + acked + name + domain + git + pingedAt + provider +} + `; +export const RolloutFragmentDoc = gql` + fragment Rollout on Rollout { + id + event + cursor + count + status + heartbeat +} + `; +export const UpgradeFragmentDoc = gql` + fragment Upgrade on Upgrade { + id + message + repository { + ...Repo + } + insertedAt +} + ${RepoFragmentDoc}`; +export const DeferredUpdateFragmentDoc = gql` + fragment DeferredUpdate on DeferredUpdate { + id + dequeueAt + attempts + version { + version + } + insertedAt +} + `; +export const AccountFragmentDoc = gql` + fragment Account on Account { + id + name + billingCustomerId + backgroundColor +} + `; +export const ImpersonationPolicyFragmentDoc = gql` + fragment ImpersonationPolicy on ImpersonationPolicy { + id + bindings { + id + group { + id + name + } + user { + id + name + email + } + } +} + `; +export const GroupMemberFragmentDoc = gql` + fragment GroupMember on GroupMember { + id + user { + ...User + } +} + ${UserFragmentDoc}`; +export const TokenFragmentDoc = gql` + fragment Token on PersistedToken { + id + token + insertedAt +} + `; +export const TokenAuditFragmentDoc = gql` + fragment TokenAudit on PersistedTokenAudit { + ip + timestamp + count + country + city + latitude + longitude +} + `; +export const WebhookFragmentDoc = gql` + fragment Webhook on Webhook { + id + url + secret + insertedAt +} + `; +export const PublicKeyFragmentDoc = gql` + fragment PublicKey on PublicKey { + id + name + digest + insertedAt + content + user { + ...User + } +} + ${UserFragmentDoc}`; +export const EabCredentialFragmentDoc = gql` + fragment EabCredential on EabCredential { + id + keyId + hmacKey + cluster + provider + insertedAt +} + `; +export const VersionTagFragmentDoc = gql` + fragment VersionTag on VersionTag { + id + tag + version { + id + } +} + `; +export const UpdateAccountDocument = gql` + mutation UpdateAccount($attributes: AccountAttributes!) { + updateAccount(attributes: $attributes) { + ...Account + domainMappings { + id + domain + enableSso + } + } +} + ${AccountFragmentDoc}`; +export type UpdateAccountMutationFn = Apollo.MutationFunction; + +/** + * __useUpdateAccountMutation__ + * + * To run a mutation, you first call `useUpdateAccountMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useUpdateAccountMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [updateAccountMutation, { data, loading, error }] = useUpdateAccountMutation({ + * variables: { + * attributes: // value for 'attributes' + * }, + * }); + */ +export function useUpdateAccountMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(UpdateAccountDocument, options); + } +export type UpdateAccountMutationHookResult = ReturnType; +export type UpdateAccountMutationResult = Apollo.MutationResult; +export type UpdateAccountMutationOptions = Apollo.BaseMutationOptions; +export const ListArtifactsDocument = gql` + query ListArtifacts($id: ID!) { + repository(id: $id) { + artifacts { + ...Artifact + } + } +} + ${ArtifactFragmentDoc}`; + +/** + * __useListArtifactsQuery__ + * + * To run a query within a React component, call `useListArtifactsQuery` and pass it any options that fit your needs. + * When your component renders, `useListArtifactsQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useListArtifactsQuery({ + * variables: { + * id: // value for 'id' + * }, + * }); + */ +export function useListArtifactsQuery(baseOptions: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(ListArtifactsDocument, options); + } +export function useListArtifactsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(ListArtifactsDocument, options); + } +export type ListArtifactsQueryHookResult = ReturnType; +export type ListArtifactsLazyQueryHookResult = ReturnType; +export type ListArtifactsQueryResult = Apollo.QueryResult; +export const CreateArtifactDocument = gql` + mutation CreateArtifact($repoName: String!, $name: String!, $readme: String!, $artifactType: String!, $platform: String!, $blob: UploadOrUrl!, $arch: String) { + createArtifact(repositoryName: $repoName, attributes: {name: $name, blob: $blob, readme: $readme, type: $artifactType, platform: $platform, arch: $arch}) { + ...Artifact + } +} + ${ArtifactFragmentDoc}`; +export type CreateArtifactMutationFn = Apollo.MutationFunction; + +/** + * __useCreateArtifactMutation__ + * + * To run a mutation, you first call `useCreateArtifactMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useCreateArtifactMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [createArtifactMutation, { data, loading, error }] = useCreateArtifactMutation({ + * variables: { + * repoName: // value for 'repoName' + * name: // value for 'name' + * readme: // value for 'readme' + * artifactType: // value for 'artifactType' + * platform: // value for 'platform' + * blob: // value for 'blob' + * arch: // value for 'arch' + * }, + * }); + */ +export function useCreateArtifactMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(CreateArtifactDocument, options); + } +export type CreateArtifactMutationHookResult = ReturnType; +export type CreateArtifactMutationResult = Apollo.MutationResult; +export type CreateArtifactMutationOptions = Apollo.BaseMutationOptions; +export const GetChartsDocument = gql` + query GetCharts($id: ID!) { + charts(repositoryId: $id, first: 100) { + edges { + node { + ...Chart + } + } + } +} + ${ChartFragmentDoc}`; + +/** + * __useGetChartsQuery__ + * + * To run a query within a React component, call `useGetChartsQuery` and pass it any options that fit your needs. + * When your component renders, `useGetChartsQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useGetChartsQuery({ + * variables: { + * id: // value for 'id' + * }, + * }); + */ +export function useGetChartsQuery(baseOptions: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(GetChartsDocument, options); + } +export function useGetChartsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(GetChartsDocument, options); + } +export type GetChartsQueryHookResult = ReturnType; +export type GetChartsLazyQueryHookResult = ReturnType; +export type GetChartsQueryResult = Apollo.QueryResult; +export const GetVersionsDocument = gql` + query GetVersions($id: ID!) { + versions(chartId: $id, first: 100) { + edges { + node { + ...Version + } + } + } +} + ${VersionFragmentDoc}`; + +/** + * __useGetVersionsQuery__ + * + * To run a query within a React component, call `useGetVersionsQuery` and pass it any options that fit your needs. + * When your component renders, `useGetVersionsQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useGetVersionsQuery({ + * variables: { + * id: // value for 'id' + * }, + * }); + */ +export function useGetVersionsQuery(baseOptions: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(GetVersionsDocument, options); + } +export function useGetVersionsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(GetVersionsDocument, options); + } +export type GetVersionsQueryHookResult = ReturnType; +export type GetVersionsLazyQueryHookResult = ReturnType; +export type GetVersionsQueryResult = Apollo.QueryResult; +export const GetChartInstallationsDocument = gql` + query GetChartInstallations($id: ID!) { + chartInstallations(repositoryId: $id, first: 100) { + edges { + node { + ...ChartInstallation + } + } + } +} + ${ChartInstallationFragmentDoc}`; + +/** + * __useGetChartInstallationsQuery__ + * + * To run a query within a React component, call `useGetChartInstallationsQuery` and pass it any options that fit your needs. + * When your component renders, `useGetChartInstallationsQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useGetChartInstallationsQuery({ + * variables: { + * id: // value for 'id' + * }, + * }); + */ +export function useGetChartInstallationsQuery(baseOptions: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(GetChartInstallationsDocument, options); + } +export function useGetChartInstallationsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(GetChartInstallationsDocument, options); + } +export type GetChartInstallationsQueryHookResult = ReturnType; +export type GetChartInstallationsLazyQueryHookResult = ReturnType; +export type GetChartInstallationsQueryResult = Apollo.QueryResult; +export const GetPackageInstallationsDocument = gql` + query GetPackageInstallations($id: ID!) { + chartInstallations(repositoryId: $id, first: 100) { + edges { + node { + ...ChartInstallation + } + } + } + terraformInstallations(repositoryId: $id, first: 100) { + edges { + node { + ...TerraformInstallation + } + } + } +} + ${ChartInstallationFragmentDoc} +${TerraformInstallationFragmentDoc}`; + +/** + * __useGetPackageInstallationsQuery__ + * + * To run a query within a React component, call `useGetPackageInstallationsQuery` and pass it any options that fit your needs. + * When your component renders, `useGetPackageInstallationsQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useGetPackageInstallationsQuery({ + * variables: { + * id: // value for 'id' + * }, + * }); + */ +export function useGetPackageInstallationsQuery(baseOptions: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(GetPackageInstallationsDocument, options); + } +export function useGetPackageInstallationsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(GetPackageInstallationsDocument, options); + } +export type GetPackageInstallationsQueryHookResult = ReturnType; +export type GetPackageInstallationsLazyQueryHookResult = ReturnType; +export type GetPackageInstallationsQueryResult = Apollo.QueryResult; +export const CreateCrdDocument = gql` + mutation CreateCrd($chartName: ChartName!, $name: String!, $blob: UploadOrUrl!) { + createCrd(chartName: $chartName, attributes: {name: $name, blob: $blob}) { + id + } +} + `; +export type CreateCrdMutationFn = Apollo.MutationFunction; + +/** + * __useCreateCrdMutation__ + * + * To run a mutation, you first call `useCreateCrdMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useCreateCrdMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [createCrdMutation, { data, loading, error }] = useCreateCrdMutation({ + * variables: { + * chartName: // value for 'chartName' + * name: // value for 'name' + * blob: // value for 'blob' + * }, + * }); + */ +export function useCreateCrdMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(CreateCrdDocument, options); + } +export type CreateCrdMutationHookResult = ReturnType; +export type CreateCrdMutationResult = Apollo.MutationResult; +export type CreateCrdMutationOptions = Apollo.BaseMutationOptions; +export const UninstallChartDocument = gql` + mutation UninstallChart($id: ID!) { + deleteChartInstallation(id: $id) { + id + } +} + `; +export type UninstallChartMutationFn = Apollo.MutationFunction; + +/** + * __useUninstallChartMutation__ + * + * To run a mutation, you first call `useUninstallChartMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useUninstallChartMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [uninstallChartMutation, { data, loading, error }] = useUninstallChartMutation({ + * variables: { + * id: // value for 'id' + * }, + * }); + */ +export function useUninstallChartMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(UninstallChartDocument, options); + } +export type UninstallChartMutationHookResult = ReturnType; +export type UninstallChartMutationResult = Apollo.MutationResult; +export type UninstallChartMutationOptions = Apollo.BaseMutationOptions; +export const GetDnsRecordsDocument = gql` + query GetDnsRecords($cluster: String!, $provider: Provider!) { + dnsRecords(cluster: $cluster, provider: $provider, first: 500) { + edges { + node { + ...DnsRecord + } + } + } +} + ${DnsRecordFragmentDoc}`; + +/** + * __useGetDnsRecordsQuery__ + * + * To run a query within a React component, call `useGetDnsRecordsQuery` and pass it any options that fit your needs. + * When your component renders, `useGetDnsRecordsQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useGetDnsRecordsQuery({ + * variables: { + * cluster: // value for 'cluster' + * provider: // value for 'provider' + * }, + * }); + */ +export function useGetDnsRecordsQuery(baseOptions: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(GetDnsRecordsDocument, options); + } +export function useGetDnsRecordsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(GetDnsRecordsDocument, options); + } +export type GetDnsRecordsQueryHookResult = ReturnType; +export type GetDnsRecordsLazyQueryHookResult = ReturnType; +export type GetDnsRecordsQueryResult = Apollo.QueryResult; +export const CreateDnsRecordDocument = gql` + mutation CreateDnsRecord($cluster: String!, $provider: Provider!, $attributes: DnsRecordAttributes!) { + createDnsRecord(cluster: $cluster, provider: $provider, attributes: $attributes) { + ...DnsRecord + } +} + ${DnsRecordFragmentDoc}`; +export type CreateDnsRecordMutationFn = Apollo.MutationFunction; + +/** + * __useCreateDnsRecordMutation__ + * + * To run a mutation, you first call `useCreateDnsRecordMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useCreateDnsRecordMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [createDnsRecordMutation, { data, loading, error }] = useCreateDnsRecordMutation({ + * variables: { + * cluster: // value for 'cluster' + * provider: // value for 'provider' + * attributes: // value for 'attributes' + * }, + * }); + */ +export function useCreateDnsRecordMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(CreateDnsRecordDocument, options); + } +export type CreateDnsRecordMutationHookResult = ReturnType; +export type CreateDnsRecordMutationResult = Apollo.MutationResult; +export type CreateDnsRecordMutationOptions = Apollo.BaseMutationOptions; +export const DeleteDnsRecordDocument = gql` + mutation DeleteDnsRecord($name: String!, $type: DnsRecordType!) { + deleteDnsRecord(name: $name, type: $type) { + ...DnsRecord + } +} + ${DnsRecordFragmentDoc}`; +export type DeleteDnsRecordMutationFn = Apollo.MutationFunction; + +/** + * __useDeleteDnsRecordMutation__ + * + * To run a mutation, you first call `useDeleteDnsRecordMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useDeleteDnsRecordMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [deleteDnsRecordMutation, { data, loading, error }] = useDeleteDnsRecordMutation({ + * variables: { + * name: // value for 'name' + * type: // value for 'type' + * }, + * }); + */ +export function useDeleteDnsRecordMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(DeleteDnsRecordDocument, options); + } +export type DeleteDnsRecordMutationHookResult = ReturnType; +export type DeleteDnsRecordMutationResult = Apollo.MutationResult; +export type DeleteDnsRecordMutationOptions = Apollo.BaseMutationOptions; +export const CreateDomainDocument = gql` + mutation CreateDomain($name: String!) { + provisionDomain(name: $name) { + ...DnsDomain + } +} + ${DnsDomainFragmentDoc}`; +export type CreateDomainMutationFn = Apollo.MutationFunction; + +/** + * __useCreateDomainMutation__ + * + * To run a mutation, you first call `useCreateDomainMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useCreateDomainMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [createDomainMutation, { data, loading, error }] = useCreateDomainMutation({ + * variables: { + * name: // value for 'name' + * }, + * }); + */ +export function useCreateDomainMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(CreateDomainDocument, options); + } +export type CreateDomainMutationHookResult = ReturnType; +export type CreateDomainMutationResult = Apollo.MutationResult; +export type CreateDomainMutationOptions = Apollo.BaseMutationOptions; +export const GroupMembersDocument = gql` + query GroupMembers($cursor: String, $id: ID!) { + groupMembers(groupId: $id, after: $cursor, first: 20) { + pageInfo { + ...PageInfo + } + edges { + node { + ...GroupMember + } + } + } +} + ${PageInfoFragmentDoc} +${GroupMemberFragmentDoc}`; + +/** + * __useGroupMembersQuery__ + * + * To run a query within a React component, call `useGroupMembersQuery` and pass it any options that fit your needs. + * When your component renders, `useGroupMembersQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useGroupMembersQuery({ + * variables: { + * cursor: // value for 'cursor' + * id: // value for 'id' + * }, + * }); + */ +export function useGroupMembersQuery(baseOptions: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(GroupMembersDocument, options); + } +export function useGroupMembersLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(GroupMembersDocument, options); + } +export type GroupMembersQueryHookResult = ReturnType; +export type GroupMembersLazyQueryHookResult = ReturnType; +export type GroupMembersQueryResult = Apollo.QueryResult; +export const CreateGroupMemberDocument = gql` + mutation CreateGroupMember($groupId: ID!, $userId: ID!) { + createGroupMember(groupId: $groupId, userId: $userId) { + ...GroupMember + } +} + ${GroupMemberFragmentDoc}`; +export type CreateGroupMemberMutationFn = Apollo.MutationFunction; + +/** + * __useCreateGroupMemberMutation__ + * + * To run a mutation, you first call `useCreateGroupMemberMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useCreateGroupMemberMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [createGroupMemberMutation, { data, loading, error }] = useCreateGroupMemberMutation({ + * variables: { + * groupId: // value for 'groupId' + * userId: // value for 'userId' + * }, + * }); + */ +export function useCreateGroupMemberMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(CreateGroupMemberDocument, options); + } +export type CreateGroupMemberMutationHookResult = ReturnType; +export type CreateGroupMemberMutationResult = Apollo.MutationResult; +export type CreateGroupMemberMutationOptions = Apollo.BaseMutationOptions; +export const DeleteGroupMemberDocument = gql` + mutation DeleteGroupMember($groupId: ID!, $userId: ID!) { + deleteGroupMember(groupId: $groupId, userId: $userId) { + ...GroupMember + } +} + ${GroupMemberFragmentDoc}`; +export type DeleteGroupMemberMutationFn = Apollo.MutationFunction; + +/** + * __useDeleteGroupMemberMutation__ + * + * To run a mutation, you first call `useDeleteGroupMemberMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useDeleteGroupMemberMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [deleteGroupMemberMutation, { data, loading, error }] = useDeleteGroupMemberMutation({ + * variables: { + * groupId: // value for 'groupId' + * userId: // value for 'userId' + * }, + * }); + */ +export function useDeleteGroupMemberMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(DeleteGroupMemberDocument, options); + } +export type DeleteGroupMemberMutationHookResult = ReturnType; +export type DeleteGroupMemberMutationResult = Apollo.MutationResult; +export type DeleteGroupMemberMutationOptions = Apollo.BaseMutationOptions; +export const CreateGroupDocument = gql` + mutation CreateGroup($attributes: GroupAttributes!) { + createGroup(attributes: $attributes) { + ...Group + } +} + ${GroupFragmentDoc}`; +export type CreateGroupMutationFn = Apollo.MutationFunction; + +/** + * __useCreateGroupMutation__ + * + * To run a mutation, you first call `useCreateGroupMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useCreateGroupMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [createGroupMutation, { data, loading, error }] = useCreateGroupMutation({ + * variables: { + * attributes: // value for 'attributes' + * }, + * }); + */ +export function useCreateGroupMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(CreateGroupDocument, options); + } +export type CreateGroupMutationHookResult = ReturnType; +export type CreateGroupMutationResult = Apollo.MutationResult; +export type CreateGroupMutationOptions = Apollo.BaseMutationOptions; +export const UpdateGroupDocument = gql` + mutation UpdateGroup($id: ID!, $attributes: GroupAttributes!) { + updateGroup(groupId: $id, attributes: $attributes) { + ...Group + } +} + ${GroupFragmentDoc}`; +export type UpdateGroupMutationFn = Apollo.MutationFunction; + +/** + * __useUpdateGroupMutation__ + * + * To run a mutation, you first call `useUpdateGroupMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useUpdateGroupMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [updateGroupMutation, { data, loading, error }] = useUpdateGroupMutation({ + * variables: { + * id: // value for 'id' + * attributes: // value for 'attributes' + * }, + * }); + */ +export function useUpdateGroupMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(UpdateGroupDocument, options); + } +export type UpdateGroupMutationHookResult = ReturnType; +export type UpdateGroupMutationResult = Apollo.MutationResult; +export type UpdateGroupMutationOptions = Apollo.BaseMutationOptions; +export const DeleteGroupDocument = gql` + mutation DeleteGroup($id: ID!) { + deleteGroup(groupId: $id) { + ...Group + } +} + ${GroupFragmentDoc}`; +export type DeleteGroupMutationFn = Apollo.MutationFunction; + +/** + * __useDeleteGroupMutation__ + * + * To run a mutation, you first call `useDeleteGroupMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useDeleteGroupMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [deleteGroupMutation, { data, loading, error }] = useDeleteGroupMutation({ + * variables: { + * id: // value for 'id' + * }, + * }); + */ +export function useDeleteGroupMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(DeleteGroupDocument, options); + } +export type DeleteGroupMutationHookResult = ReturnType; +export type DeleteGroupMutationResult = Apollo.MutationResult; +export type DeleteGroupMutationOptions = Apollo.BaseMutationOptions; +export const GroupsDocument = gql` + query Groups($q: String, $cursor: String) { + groups(q: $q, first: 20, after: $cursor) { + pageInfo { + ...PageInfo + } + edges { + node { + ...Group + } + } + } +} + ${PageInfoFragmentDoc} +${GroupFragmentDoc}`; + +/** + * __useGroupsQuery__ + * + * To run a query within a React component, call `useGroupsQuery` and pass it any options that fit your needs. + * When your component renders, `useGroupsQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useGroupsQuery({ + * variables: { + * q: // value for 'q' + * cursor: // value for 'cursor' + * }, + * }); + */ +export function useGroupsQuery(baseOptions?: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(GroupsDocument, options); + } +export function useGroupsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(GroupsDocument, options); + } +export type GroupsQueryHookResult = ReturnType; +export type GroupsLazyQueryHookResult = ReturnType; +export type GroupsQueryResult = Apollo.QueryResult; +export const GetInstallationDocument = gql` + query GetInstallation($name: String) { + installation(name: $name) { + ...Installation + } +} + ${InstallationFragmentDoc}`; + +/** + * __useGetInstallationQuery__ + * + * To run a query within a React component, call `useGetInstallationQuery` and pass it any options that fit your needs. + * When your component renders, `useGetInstallationQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useGetInstallationQuery({ + * variables: { + * name: // value for 'name' + * }, + * }); + */ +export function useGetInstallationQuery(baseOptions?: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(GetInstallationDocument, options); + } +export function useGetInstallationLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(GetInstallationDocument, options); + } +export type GetInstallationQueryHookResult = ReturnType; +export type GetInstallationLazyQueryHookResult = ReturnType; +export type GetInstallationQueryResult = Apollo.QueryResult; +export const GetInstallationByIdDocument = gql` + query GetInstallationById($id: ID) { + installation(id: $id) { + ...Installation + } +} + ${InstallationFragmentDoc}`; + +/** + * __useGetInstallationByIdQuery__ + * + * To run a query within a React component, call `useGetInstallationByIdQuery` and pass it any options that fit your needs. + * When your component renders, `useGetInstallationByIdQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useGetInstallationByIdQuery({ + * variables: { + * id: // value for 'id' + * }, + * }); + */ +export function useGetInstallationByIdQuery(baseOptions?: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(GetInstallationByIdDocument, options); + } +export function useGetInstallationByIdLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(GetInstallationByIdDocument, options); + } +export type GetInstallationByIdQueryHookResult = ReturnType; +export type GetInstallationByIdLazyQueryHookResult = ReturnType; +export type GetInstallationByIdQueryResult = Apollo.QueryResult; +export const GetInstallationsDocument = gql` + query GetInstallations($first: Int) { + installations(first: $first) { + edges { + node { + ...Installation + } + } + } +} + ${InstallationFragmentDoc}`; + +/** + * __useGetInstallationsQuery__ + * + * To run a query within a React component, call `useGetInstallationsQuery` and pass it any options that fit your needs. + * When your component renders, `useGetInstallationsQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useGetInstallationsQuery({ + * variables: { + * first: // value for 'first' + * }, + * }); + */ +export function useGetInstallationsQuery(baseOptions?: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(GetInstallationsDocument, options); + } +export function useGetInstallationsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(GetInstallationsDocument, options); + } +export type GetInstallationsQueryHookResult = ReturnType; +export type GetInstallationsLazyQueryHookResult = ReturnType; +export type GetInstallationsQueryResult = Apollo.QueryResult; +export const UpsertOidcProviderDocument = gql` + mutation UpsertOidcProvider($id: ID!, $attributes: OidcAttributes!) { + upsertOidcProvider(installationId: $id, attributes: $attributes) { + id + } +} + `; +export type UpsertOidcProviderMutationFn = Apollo.MutationFunction; + +/** + * __useUpsertOidcProviderMutation__ + * + * To run a mutation, you first call `useUpsertOidcProviderMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useUpsertOidcProviderMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [upsertOidcProviderMutation, { data, loading, error }] = useUpsertOidcProviderMutation({ + * variables: { + * id: // value for 'id' + * attributes: // value for 'attributes' + * }, + * }); + */ +export function useUpsertOidcProviderMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(UpsertOidcProviderDocument, options); + } +export type UpsertOidcProviderMutationHookResult = ReturnType; +export type UpsertOidcProviderMutationResult = Apollo.MutationResult; +export type UpsertOidcProviderMutationOptions = Apollo.BaseMutationOptions; +export const SignupInviteDocument = gql` + mutation SignupInvite($attributes: UserAttributes!, $inviteId: String!) { + signup(attributes: $attributes, inviteId: $inviteId) { + jwt + } +} + `; +export type SignupInviteMutationFn = Apollo.MutationFunction; + +/** + * __useSignupInviteMutation__ + * + * To run a mutation, you first call `useSignupInviteMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useSignupInviteMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [signupInviteMutation, { data, loading, error }] = useSignupInviteMutation({ + * variables: { + * attributes: // value for 'attributes' + * inviteId: // value for 'inviteId' + * }, + * }); + */ +export function useSignupInviteMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(SignupInviteDocument, options); + } +export type SignupInviteMutationHookResult = ReturnType; +export type SignupInviteMutationResult = Apollo.MutationResult; +export type SignupInviteMutationOptions = Apollo.BaseMutationOptions; +export const RealizeInviteDocument = gql` + mutation RealizeInvite($id: String!) { + realizeInvite(id: $id) { + jwt + } +} + `; +export type RealizeInviteMutationFn = Apollo.MutationFunction; + +/** + * __useRealizeInviteMutation__ + * + * To run a mutation, you first call `useRealizeInviteMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useRealizeInviteMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [realizeInviteMutation, { data, loading, error }] = useRealizeInviteMutation({ + * variables: { + * id: // value for 'id' + * }, + * }); + */ +export function useRealizeInviteMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(RealizeInviteDocument, options); + } +export type RealizeInviteMutationHookResult = ReturnType; +export type RealizeInviteMutationResult = Apollo.MutationResult; +export type RealizeInviteMutationOptions = Apollo.BaseMutationOptions; +export const InviteDocument = gql` + query Invite($id: String!) { + invite(id: $id) { + id + email + existing + account { + ...Account + } + user { + ...User + account { + ...Account + } + } + } +} + ${AccountFragmentDoc} +${UserFragmentDoc}`; + +/** + * __useInviteQuery__ + * + * To run a query within a React component, call `useInviteQuery` and pass it any options that fit your needs. + * When your component renders, `useInviteQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useInviteQuery({ + * variables: { + * id: // value for 'id' + * }, + * }); + */ +export function useInviteQuery(baseOptions: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(InviteDocument, options); + } +export function useInviteLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(InviteDocument, options); + } +export type InviteQueryHookResult = ReturnType; +export type InviteLazyQueryHookResult = ReturnType; +export type InviteQueryResult = Apollo.QueryResult; +export const SubscriptionDocument = gql` + query Subscription { + account { + billingCustomerId + grandfatheredUntil + delinquentAt + userCount + clusterCount + availableFeatures { + userManagement + audit + } + subscription { + id + plan { + id + period + lineItems { + dimension + cost + } + } + } + billingAddress { + name + line1 + line2 + zip + state + city + country + } + } +} + `; + +/** + * __useSubscriptionQuery__ + * + * To run a query within a React component, call `useSubscriptionQuery` and pass it any options that fit your needs. + * When your component renders, `useSubscriptionQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useSubscriptionQuery({ + * variables: { + * }, + * }); + */ +export function useSubscriptionQuery(baseOptions?: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(SubscriptionDocument, options); + } +export function useSubscriptionLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(SubscriptionDocument, options); + } +export type SubscriptionQueryHookResult = ReturnType; +export type SubscriptionLazyQueryHookResult = ReturnType; +export type SubscriptionQueryResult = Apollo.QueryResult; +export const UpdateAccountBillingDocument = gql` + mutation UpdateAccountBilling($attributes: AccountAttributes!) { + updateAccount(attributes: $attributes) { + id + } +} + `; +export type UpdateAccountBillingMutationFn = Apollo.MutationFunction; + +/** + * __useUpdateAccountBillingMutation__ + * + * To run a mutation, you first call `useUpdateAccountBillingMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useUpdateAccountBillingMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [updateAccountBillingMutation, { data, loading, error }] = useUpdateAccountBillingMutation({ + * variables: { + * attributes: // value for 'attributes' + * }, + * }); + */ +export function useUpdateAccountBillingMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(UpdateAccountBillingDocument, options); + } +export type UpdateAccountBillingMutationHookResult = ReturnType; +export type UpdateAccountBillingMutationResult = Apollo.MutationResult; +export type UpdateAccountBillingMutationOptions = Apollo.BaseMutationOptions; +export const UpgradeToProfessionalPlanDocument = gql` + mutation UpgradeToProfessionalPlan($planId: ID!) { + createPlatformSubscription(planId: $planId) { + id + } +} + `; +export type UpgradeToProfessionalPlanMutationFn = Apollo.MutationFunction; + +/** + * __useUpgradeToProfessionalPlanMutation__ + * + * To run a mutation, you first call `useUpgradeToProfessionalPlanMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useUpgradeToProfessionalPlanMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [upgradeToProfessionalPlanMutation, { data, loading, error }] = useUpgradeToProfessionalPlanMutation({ + * variables: { + * planId: // value for 'planId' + * }, + * }); + */ +export function useUpgradeToProfessionalPlanMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(UpgradeToProfessionalPlanDocument, options); + } +export type UpgradeToProfessionalPlanMutationHookResult = ReturnType; +export type UpgradeToProfessionalPlanMutationResult = Apollo.MutationResult; +export type UpgradeToProfessionalPlanMutationOptions = Apollo.BaseMutationOptions; +export const DowngradeToFreePlanMutationDocument = gql` + mutation DowngradeToFreePlanMutation { + deletePlatformSubscription { + id + } +} + `; +export type DowngradeToFreePlanMutationMutationFn = Apollo.MutationFunction; + +/** + * __useDowngradeToFreePlanMutationMutation__ + * + * To run a mutation, you first call `useDowngradeToFreePlanMutationMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useDowngradeToFreePlanMutationMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [downgradeToFreePlanMutationMutation, { data, loading, error }] = useDowngradeToFreePlanMutationMutation({ + * variables: { + * }, + * }); + */ +export function useDowngradeToFreePlanMutationMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(DowngradeToFreePlanMutationDocument, options); + } +export type DowngradeToFreePlanMutationMutationHookResult = ReturnType; +export type DowngradeToFreePlanMutationMutationResult = Apollo.MutationResult; +export type DowngradeToFreePlanMutationMutationOptions = Apollo.BaseMutationOptions; +export const CardsDocument = gql` + query Cards { + me { + id + cards(first: 100) { + edges { + node { + ...Card + } + } + } + } +} + ${CardFragmentDoc}`; + +/** + * __useCardsQuery__ + * + * To run a query within a React component, call `useCardsQuery` and pass it any options that fit your needs. + * When your component renders, `useCardsQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useCardsQuery({ + * variables: { + * }, + * }); + */ +export function useCardsQuery(baseOptions?: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(CardsDocument, options); + } +export function useCardsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(CardsDocument, options); + } +export type CardsQueryHookResult = ReturnType; +export type CardsLazyQueryHookResult = ReturnType; +export type CardsQueryResult = Apollo.QueryResult; +export const CreateCardDocument = gql` + mutation CreateCard($source: String!, $address: AddressAttributes) { + createCard(source: $source, address: $address) { + id + } +} + `; +export type CreateCardMutationFn = Apollo.MutationFunction; + +/** + * __useCreateCardMutation__ + * + * To run a mutation, you first call `useCreateCardMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useCreateCardMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [createCardMutation, { data, loading, error }] = useCreateCardMutation({ + * variables: { + * source: // value for 'source' + * address: // value for 'address' + * }, + * }); + */ +export function useCreateCardMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(CreateCardDocument, options); + } +export type CreateCardMutationHookResult = ReturnType; +export type CreateCardMutationResult = Apollo.MutationResult; +export type CreateCardMutationOptions = Apollo.BaseMutationOptions; +export const DeleteCardDocument = gql` + mutation DeleteCard($id: ID!) { + deleteCard(id: $id) { + id + } +} + `; +export type DeleteCardMutationFn = Apollo.MutationFunction; + +/** + * __useDeleteCardMutation__ + * + * To run a mutation, you first call `useDeleteCardMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useDeleteCardMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [deleteCardMutation, { data, loading, error }] = useDeleteCardMutation({ + * variables: { + * id: // value for 'id' + * }, + * }); + */ +export function useDeleteCardMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(DeleteCardDocument, options); + } +export type DeleteCardMutationHookResult = ReturnType; +export type DeleteCardMutationResult = Apollo.MutationResult; +export type DeleteCardMutationOptions = Apollo.BaseMutationOptions; +export const GetRecipeDocument = gql` + query GetRecipe($repo: String, $name: String, $id: ID) { + recipe(repo: $repo, name: $name, id: $id) { + ...Recipe + recipeDependencies { + ...Recipe + } + } +} + ${RecipeFragmentDoc}`; + +/** + * __useGetRecipeQuery__ + * + * To run a query within a React component, call `useGetRecipeQuery` and pass it any options that fit your needs. + * When your component renders, `useGetRecipeQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useGetRecipeQuery({ + * variables: { + * repo: // value for 'repo' + * name: // value for 'name' + * id: // value for 'id' + * }, + * }); + */ +export function useGetRecipeQuery(baseOptions?: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(GetRecipeDocument, options); + } +export function useGetRecipeLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(GetRecipeDocument, options); + } +export type GetRecipeQueryHookResult = ReturnType; +export type GetRecipeLazyQueryHookResult = ReturnType; +export type GetRecipeQueryResult = Apollo.QueryResult; +export const ListRecipesDocument = gql` + query ListRecipes($repositoryName: String, $repositoryId: ID, $provider: Provider) { + recipes(repositoryName: $repositoryName, provider: $provider, first: 500, repositoryId: $repositoryId) { + edges { + node { + ...Recipe + } + } + } +} + ${RecipeFragmentDoc}`; + +/** + * __useListRecipesQuery__ + * + * To run a query within a React component, call `useListRecipesQuery` and pass it any options that fit your needs. + * When your component renders, `useListRecipesQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useListRecipesQuery({ + * variables: { + * repositoryName: // value for 'repositoryName' + * repositoryId: // value for 'repositoryId' + * provider: // value for 'provider' + * }, + * }); + */ +export function useListRecipesQuery(baseOptions?: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(ListRecipesDocument, options); + } +export function useListRecipesLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(ListRecipesDocument, options); + } +export type ListRecipesQueryHookResult = ReturnType; +export type ListRecipesLazyQueryHookResult = ReturnType; +export type ListRecipesQueryResult = Apollo.QueryResult; +export const CreateRecipeDocument = gql` + mutation CreateRecipe($name: String!, $attributes: RecipeAttributes!) { + createRecipe(repositoryName: $name, attributes: $attributes) { + id + } +} + `; +export type CreateRecipeMutationFn = Apollo.MutationFunction; + +/** + * __useCreateRecipeMutation__ + * + * To run a mutation, you first call `useCreateRecipeMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useCreateRecipeMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [createRecipeMutation, { data, loading, error }] = useCreateRecipeMutation({ + * variables: { + * name: // value for 'name' + * attributes: // value for 'attributes' + * }, + * }); + */ +export function useCreateRecipeMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(CreateRecipeDocument, options); + } +export type CreateRecipeMutationHookResult = ReturnType; +export type CreateRecipeMutationResult = Apollo.MutationResult; +export type CreateRecipeMutationOptions = Apollo.BaseMutationOptions; +export const InstallRecipeDocument = gql` + mutation InstallRecipe($id: ID!) { + installRecipe(recipeId: $id, context: "{}") { + id + } +} + `; +export type InstallRecipeMutationFn = Apollo.MutationFunction; + +/** + * __useInstallRecipeMutation__ + * + * To run a mutation, you first call `useInstallRecipeMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useInstallRecipeMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [installRecipeMutation, { data, loading, error }] = useInstallRecipeMutation({ + * variables: { + * id: // value for 'id' + * }, + * }); + */ +export function useInstallRecipeMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(InstallRecipeDocument, options); + } +export type InstallRecipeMutationHookResult = ReturnType; +export type InstallRecipeMutationResult = Apollo.MutationResult; +export type InstallRecipeMutationOptions = Apollo.BaseMutationOptions; +export const CreateStackDocument = gql` + mutation CreateStack($attributes: StackAttributes!) { + createStack(attributes: $attributes) { + id + } +} + `; +export type CreateStackMutationFn = Apollo.MutationFunction; + +/** + * __useCreateStackMutation__ + * + * To run a mutation, you first call `useCreateStackMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useCreateStackMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [createStackMutation, { data, loading, error }] = useCreateStackMutation({ + * variables: { + * attributes: // value for 'attributes' + * }, + * }); + */ +export function useCreateStackMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(CreateStackDocument, options); + } +export type CreateStackMutationHookResult = ReturnType; +export type CreateStackMutationResult = Apollo.MutationResult; +export type CreateStackMutationOptions = Apollo.BaseMutationOptions; +export const GetStackDocument = gql` + query GetStack($name: String!, $provider: Provider!) { + stack(name: $name, provider: $provider) { + ...Stack + } +} + ${StackFragmentDoc}`; + +/** + * __useGetStackQuery__ + * + * To run a query within a React component, call `useGetStackQuery` and pass it any options that fit your needs. + * When your component renders, `useGetStackQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useGetStackQuery({ + * variables: { + * name: // value for 'name' + * provider: // value for 'provider' + * }, + * }); + */ +export function useGetStackQuery(baseOptions: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(GetStackDocument, options); + } +export function useGetStackLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(GetStackDocument, options); + } +export type GetStackQueryHookResult = ReturnType; +export type GetStackLazyQueryHookResult = ReturnType; +export type GetStackQueryResult = Apollo.QueryResult; +export const ListStacksDocument = gql` + query ListStacks($featured: Boolean, $cursor: String) { + stacks(first: 100, after: $cursor, featured: $featured) { + edges { + node { + ...Stack + } + } + } +} + ${StackFragmentDoc}`; + +/** + * __useListStacksQuery__ + * + * To run a query within a React component, call `useListStacksQuery` and pass it any options that fit your needs. + * When your component renders, `useListStacksQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useListStacksQuery({ + * variables: { + * featured: // value for 'featured' + * cursor: // value for 'cursor' + * }, + * }); + */ +export function useListStacksQuery(baseOptions?: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(ListStacksDocument, options); + } +export function useListStacksLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(ListStacksDocument, options); + } +export type ListStacksQueryHookResult = ReturnType; +export type ListStacksLazyQueryHookResult = ReturnType; +export type ListStacksQueryResult = Apollo.QueryResult; +export const CreateQuickStackDocument = gql` + mutation CreateQuickStack($applicationIds: [ID], $provider: Provider!) { + quickStack(repositoryIds: $applicationIds, provider: $provider) { + id + name + } +} + `; +export type CreateQuickStackMutationFn = Apollo.MutationFunction; + +/** + * __useCreateQuickStackMutation__ + * + * To run a mutation, you first call `useCreateQuickStackMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useCreateQuickStackMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [createQuickStackMutation, { data, loading, error }] = useCreateQuickStackMutation({ + * variables: { + * applicationIds: // value for 'applicationIds' + * provider: // value for 'provider' + * }, + * }); + */ +export function useCreateQuickStackMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(CreateQuickStackDocument, options); + } +export type CreateQuickStackMutationHookResult = ReturnType; +export type CreateQuickStackMutationResult = Apollo.MutationResult; +export type CreateQuickStackMutationOptions = Apollo.BaseMutationOptions; +export const InstallStackShellDocument = gql` + mutation InstallStackShell($name: String!, $context: ContextAttributes!, $oidc: Boolean!) { + installStackShell(name: $name, context: $context, oidc: $oidc) { + id + name + } +} + `; +export type InstallStackShellMutationFn = Apollo.MutationFunction; + +/** + * __useInstallStackShellMutation__ + * + * To run a mutation, you first call `useInstallStackShellMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useInstallStackShellMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [installStackShellMutation, { data, loading, error }] = useInstallStackShellMutation({ + * variables: { + * name: // value for 'name' + * context: // value for 'context' + * oidc: // value for 'oidc' + * }, + * }); + */ +export function useInstallStackShellMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(InstallStackShellDocument, options); + } +export type InstallStackShellMutationHookResult = ReturnType; +export type InstallStackShellMutationResult = Apollo.MutationResult; +export type InstallStackShellMutationOptions = Apollo.BaseMutationOptions; +export const RepositoryDocument = gql` + query Repository($id: ID, $name: String) { + repository(id: $id, name: $name) { + ...Repo + editable + publicKey + secrets + artifacts { + ...Artifact + } + installation { + ...Installation + oidcProvider { + ...OIDCProvider + } + } + tags { + tag + } + readme + mainBranch + gitUrl + homepage + license { + name + url + } + documentation + community { + discord + slack + homepage + gitUrl + twitter + } + } +} + ${RepoFragmentDoc} +${ArtifactFragmentDoc} +${InstallationFragmentDoc} +${OidcProviderFragmentDoc}`; + +/** + * __useRepositoryQuery__ + * + * To run a query within a React component, call `useRepositoryQuery` and pass it any options that fit your needs. + * When your component renders, `useRepositoryQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useRepositoryQuery({ + * variables: { + * id: // value for 'id' + * name: // value for 'name' + * }, + * }); + */ +export function useRepositoryQuery(baseOptions?: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(RepositoryDocument, options); + } +export function useRepositoryLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(RepositoryDocument, options); + } +export type RepositoryQueryHookResult = ReturnType; +export type RepositoryLazyQueryHookResult = ReturnType; +export type RepositoryQueryResult = Apollo.QueryResult; +export const CreateResourceDefinitionDocument = gql` + mutation CreateResourceDefinition($name: String!, $input: ResourceDefinitionAttributes!) { + updateRepository(repositoryName: $name, attributes: {integrationResourceDefinition: $input}) { + id + } +} + `; +export type CreateResourceDefinitionMutationFn = Apollo.MutationFunction; + +/** + * __useCreateResourceDefinitionMutation__ + * + * To run a mutation, you first call `useCreateResourceDefinitionMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useCreateResourceDefinitionMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [createResourceDefinitionMutation, { data, loading, error }] = useCreateResourceDefinitionMutation({ + * variables: { + * name: // value for 'name' + * input: // value for 'input' + * }, + * }); + */ +export function useCreateResourceDefinitionMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(CreateResourceDefinitionDocument, options); + } +export type CreateResourceDefinitionMutationHookResult = ReturnType; +export type CreateResourceDefinitionMutationResult = Apollo.MutationResult; +export type CreateResourceDefinitionMutationOptions = Apollo.BaseMutationOptions; +export const CreateIntegrationDocument = gql` + mutation CreateIntegration($name: String!, $attrs: IntegrationAttributes!) { + createIntegration(repositoryName: $name, attributes: $attrs) { + id + } +} + `; +export type CreateIntegrationMutationFn = Apollo.MutationFunction; + +/** + * __useCreateIntegrationMutation__ + * + * To run a mutation, you first call `useCreateIntegrationMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useCreateIntegrationMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [createIntegrationMutation, { data, loading, error }] = useCreateIntegrationMutation({ + * variables: { + * name: // value for 'name' + * attrs: // value for 'attrs' + * }, + * }); + */ +export function useCreateIntegrationMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(CreateIntegrationDocument, options); + } +export type CreateIntegrationMutationHookResult = ReturnType; +export type CreateIntegrationMutationResult = Apollo.MutationResult; +export type CreateIntegrationMutationOptions = Apollo.BaseMutationOptions; +export const UpdateRepositoryDocument = gql` + mutation UpdateRepository($name: String!, $attrs: RepositoryAttributes!) { + updateRepository(repositoryName: $name, attributes: $attrs) { + id + } +} + `; +export type UpdateRepositoryMutationFn = Apollo.MutationFunction; + +/** + * __useUpdateRepositoryMutation__ + * + * To run a mutation, you first call `useUpdateRepositoryMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useUpdateRepositoryMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [updateRepositoryMutation, { data, loading, error }] = useUpdateRepositoryMutation({ + * variables: { + * name: // value for 'name' + * attrs: // value for 'attrs' + * }, + * }); + */ +export function useUpdateRepositoryMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(UpdateRepositoryDocument, options); + } +export type UpdateRepositoryMutationHookResult = ReturnType; +export type UpdateRepositoryMutationResult = Apollo.MutationResult; +export type UpdateRepositoryMutationOptions = Apollo.BaseMutationOptions; +export const CreateRepositoryDocument = gql` + mutation CreateRepository($name: String!, $publisher: String!, $attributes: RepositoryAttributes!) { + upsertRepository(name: $name, publisher: $publisher, attributes: $attributes) { + id + } +} + `; +export type CreateRepositoryMutationFn = Apollo.MutationFunction; + +/** + * __useCreateRepositoryMutation__ + * + * To run a mutation, you first call `useCreateRepositoryMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useCreateRepositoryMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [createRepositoryMutation, { data, loading, error }] = useCreateRepositoryMutation({ + * variables: { + * name: // value for 'name' + * publisher: // value for 'publisher' + * attributes: // value for 'attributes' + * }, + * }); + */ +export function useCreateRepositoryMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(CreateRepositoryDocument, options); + } +export type CreateRepositoryMutationHookResult = ReturnType; +export type CreateRepositoryMutationResult = Apollo.MutationResult; +export type CreateRepositoryMutationOptions = Apollo.BaseMutationOptions; +export const AcquireLockDocument = gql` + mutation AcquireLock($name: String!) { + acquireLock(repository: $name) { + ...ApplyLock + } +} + ${ApplyLockFragmentDoc}`; +export type AcquireLockMutationFn = Apollo.MutationFunction; + +/** + * __useAcquireLockMutation__ + * + * To run a mutation, you first call `useAcquireLockMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useAcquireLockMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [acquireLockMutation, { data, loading, error }] = useAcquireLockMutation({ + * variables: { + * name: // value for 'name' + * }, + * }); + */ +export function useAcquireLockMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(AcquireLockDocument, options); + } +export type AcquireLockMutationHookResult = ReturnType; +export type AcquireLockMutationResult = Apollo.MutationResult; +export type AcquireLockMutationOptions = Apollo.BaseMutationOptions; +export const ReleaseLockDocument = gql` + mutation ReleaseLock($name: String!, $attrs: LockAttributes!) { + releaseLock(repository: $name, attributes: $attrs) { + ...ApplyLock + } +} + ${ApplyLockFragmentDoc}`; +export type ReleaseLockMutationFn = Apollo.MutationFunction; + +/** + * __useReleaseLockMutation__ + * + * To run a mutation, you first call `useReleaseLockMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useReleaseLockMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [releaseLockMutation, { data, loading, error }] = useReleaseLockMutation({ + * variables: { + * name: // value for 'name' + * attrs: // value for 'attrs' + * }, + * }); + */ +export function useReleaseLockMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(ReleaseLockDocument, options); + } +export type ReleaseLockMutationHookResult = ReturnType; +export type ReleaseLockMutationResult = Apollo.MutationResult; +export type ReleaseLockMutationOptions = Apollo.BaseMutationOptions; +export const UnlockRepositoryDocument = gql` + mutation UnlockRepository($name: String!) { + unlockRepository(name: $name) +} + `; +export type UnlockRepositoryMutationFn = Apollo.MutationFunction; + +/** + * __useUnlockRepositoryMutation__ + * + * To run a mutation, you first call `useUnlockRepositoryMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useUnlockRepositoryMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [unlockRepositoryMutation, { data, loading, error }] = useUnlockRepositoryMutation({ + * variables: { + * name: // value for 'name' + * }, + * }); + */ +export function useUnlockRepositoryMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(UnlockRepositoryDocument, options); + } +export type UnlockRepositoryMutationHookResult = ReturnType; +export type UnlockRepositoryMutationResult = Apollo.MutationResult; +export type UnlockRepositoryMutationOptions = Apollo.BaseMutationOptions; +export const ListRepositoriesDocument = gql` + query ListRepositories($q: String, $installed: Boolean, $first: Int = 100, $provider: Provider = null) { + repositories(q: $q, first: $first, installed: $installed, provider: $provider) { + edges { + node { + ...Repository + } + } + } +} + ${RepositoryFragmentDoc}`; + +/** + * __useListRepositoriesQuery__ + * + * To run a query within a React component, call `useListRepositoriesQuery` and pass it any options that fit your needs. + * When your component renders, `useListRepositoriesQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useListRepositoriesQuery({ + * variables: { + * q: // value for 'q' + * installed: // value for 'installed' + * first: // value for 'first' + * provider: // value for 'provider' + * }, + * }); + */ +export function useListRepositoriesQuery(baseOptions?: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(ListRepositoriesDocument, options); + } +export function useListRepositoriesLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(ListRepositoriesDocument, options); + } +export type ListRepositoriesQueryHookResult = ReturnType; +export type ListRepositoriesLazyQueryHookResult = ReturnType; +export type ListRepositoriesQueryResult = Apollo.QueryResult; +export const ScaffoldsDocument = gql` + query Scaffolds($app: String!, $pub: String!, $cat: Category!, $ing: Boolean, $pg: Boolean) { + scaffold(application: $app, publisher: $pub, category: $cat, ingress: $ing, postgres: $pg) { + path + content + } +} + `; + +/** + * __useScaffoldsQuery__ + * + * To run a query within a React component, call `useScaffoldsQuery` and pass it any options that fit your needs. + * When your component renders, `useScaffoldsQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useScaffoldsQuery({ + * variables: { + * app: // value for 'app' + * pub: // value for 'pub' + * cat: // value for 'cat' + * ing: // value for 'ing' + * pg: // value for 'pg' + * }, + * }); + */ +export function useScaffoldsQuery(baseOptions: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(ScaffoldsDocument, options); + } +export function useScaffoldsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(ScaffoldsDocument, options); + } +export type ScaffoldsQueryHookResult = ReturnType; +export type ScaffoldsLazyQueryHookResult = ReturnType; +export type ScaffoldsQueryResult = Apollo.QueryResult; +export const DeleteRepositoryDocument = gql` + mutation DeleteRepository($id: ID!) { + deleteRepository(repositoryId: $id) { + id + } +} + `; +export type DeleteRepositoryMutationFn = Apollo.MutationFunction; + +/** + * __useDeleteRepositoryMutation__ + * + * To run a mutation, you first call `useDeleteRepositoryMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useDeleteRepositoryMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [deleteRepositoryMutation, { data, loading, error }] = useDeleteRepositoryMutation({ + * variables: { + * id: // value for 'id' + * }, + * }); + */ +export function useDeleteRepositoryMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(DeleteRepositoryDocument, options); + } +export type DeleteRepositoryMutationHookResult = ReturnType; +export type DeleteRepositoryMutationResult = Apollo.MutationResult; +export type DeleteRepositoryMutationOptions = Apollo.BaseMutationOptions; +export const GetTfProvidersDocument = gql` + query GetTfProviders { + terraformProviders +} + `; + +/** + * __useGetTfProvidersQuery__ + * + * To run a query within a React component, call `useGetTfProvidersQuery` and pass it any options that fit your needs. + * When your component renders, `useGetTfProvidersQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useGetTfProvidersQuery({ + * variables: { + * }, + * }); + */ +export function useGetTfProvidersQuery(baseOptions?: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(GetTfProvidersDocument, options); + } +export function useGetTfProvidersLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(GetTfProvidersDocument, options); + } +export type GetTfProvidersQueryHookResult = ReturnType; +export type GetTfProvidersLazyQueryHookResult = ReturnType; +export type GetTfProvidersQueryResult = Apollo.QueryResult; +export const GetTfProviderScaffoldDocument = gql` + query GetTfProviderScaffold($name: Provider!, $vsn: String) { + terraformProvider(name: $name, vsn: $vsn) { + name + content + } +} + `; + +/** + * __useGetTfProviderScaffoldQuery__ + * + * To run a query within a React component, call `useGetTfProviderScaffoldQuery` and pass it any options that fit your needs. + * When your component renders, `useGetTfProviderScaffoldQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useGetTfProviderScaffoldQuery({ + * variables: { + * name: // value for 'name' + * vsn: // value for 'vsn' + * }, + * }); + */ +export function useGetTfProviderScaffoldQuery(baseOptions: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(GetTfProviderScaffoldDocument, options); + } +export function useGetTfProviderScaffoldLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(GetTfProviderScaffoldDocument, options); + } +export type GetTfProviderScaffoldQueryHookResult = ReturnType; +export type GetTfProviderScaffoldLazyQueryHookResult = ReturnType; +export type GetTfProviderScaffoldQueryResult = Apollo.QueryResult; +export const GetShellDocument = gql` + query GetShell { + shell { + ...CloudShell + } +} + ${CloudShellFragmentDoc}`; + +/** + * __useGetShellQuery__ + * + * To run a query within a React component, call `useGetShellQuery` and pass it any options that fit your needs. + * When your component renders, `useGetShellQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useGetShellQuery({ + * variables: { + * }, + * }); + */ +export function useGetShellQuery(baseOptions?: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(GetShellDocument, options); + } +export function useGetShellLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(GetShellDocument, options); + } +export type GetShellQueryHookResult = ReturnType; +export type GetShellLazyQueryHookResult = ReturnType; +export type GetShellQueryResult = Apollo.QueryResult; +export const DeleteShellDocument = gql` + mutation DeleteShell { + deleteShell { + ...CloudShell + } +} + ${CloudShellFragmentDoc}`; +export type DeleteShellMutationFn = Apollo.MutationFunction; + +/** + * __useDeleteShellMutation__ + * + * To run a mutation, you first call `useDeleteShellMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useDeleteShellMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [deleteShellMutation, { data, loading, error }] = useDeleteShellMutation({ + * variables: { + * }, + * }); + */ +export function useDeleteShellMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(DeleteShellDocument, options); + } +export type DeleteShellMutationHookResult = ReturnType; +export type DeleteShellMutationResult = Apollo.MutationResult; +export type DeleteShellMutationOptions = Apollo.BaseMutationOptions; +export const GetTerraformDocument = gql` + query GetTerraform($id: ID!) { + terraform(repositoryId: $id, first: 100) { + edges { + node { + ...Terraform + } + } + } +} + ${TerraformFragmentDoc}`; + +/** + * __useGetTerraformQuery__ + * + * To run a query within a React component, call `useGetTerraformQuery` and pass it any options that fit your needs. + * When your component renders, `useGetTerraformQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useGetTerraformQuery({ + * variables: { + * id: // value for 'id' + * }, + * }); + */ +export function useGetTerraformQuery(baseOptions: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(GetTerraformDocument, options); + } +export function useGetTerraformLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(GetTerraformDocument, options); + } +export type GetTerraformQueryHookResult = ReturnType; +export type GetTerraformLazyQueryHookResult = ReturnType; +export type GetTerraformQueryResult = Apollo.QueryResult; +export const GetTerraformInstallationsDocument = gql` + query GetTerraformInstallations($id: ID!) { + terraformInstallations(repositoryId: $id, first: 100) { + edges { + node { + ...TerraformInstallation + } + } + } +} + ${TerraformInstallationFragmentDoc}`; + +/** + * __useGetTerraformInstallationsQuery__ + * + * To run a query within a React component, call `useGetTerraformInstallationsQuery` and pass it any options that fit your needs. + * When your component renders, `useGetTerraformInstallationsQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useGetTerraformInstallationsQuery({ + * variables: { + * id: // value for 'id' + * }, + * }); + */ +export function useGetTerraformInstallationsQuery(baseOptions: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(GetTerraformInstallationsDocument, options); + } +export function useGetTerraformInstallationsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(GetTerraformInstallationsDocument, options); + } +export type GetTerraformInstallationsQueryHookResult = ReturnType; +export type GetTerraformInstallationsLazyQueryHookResult = ReturnType; +export type GetTerraformInstallationsQueryResult = Apollo.QueryResult; +export const UploadTerraformDocument = gql` + mutation UploadTerraform($repoName: String!, $name: String!, $uploadOrUrl: UploadOrUrl!) { + uploadTerraform(repositoryName: $repoName, name: $name, attributes: {name: $name, package: $uploadOrUrl}) { + ...Terraform + } +} + ${TerraformFragmentDoc}`; +export type UploadTerraformMutationFn = Apollo.MutationFunction; + +/** + * __useUploadTerraformMutation__ + * + * To run a mutation, you first call `useUploadTerraformMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useUploadTerraformMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [uploadTerraformMutation, { data, loading, error }] = useUploadTerraformMutation({ + * variables: { + * repoName: // value for 'repoName' + * name: // value for 'name' + * uploadOrUrl: // value for 'uploadOrUrl' + * }, + * }); + */ +export function useUploadTerraformMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(UploadTerraformDocument, options); + } +export type UploadTerraformMutationHookResult = ReturnType; +export type UploadTerraformMutationResult = Apollo.MutationResult; +export type UploadTerraformMutationOptions = Apollo.BaseMutationOptions; +export const UninstallTerraformDocument = gql` + mutation UninstallTerraform($id: ID!) { + uninstallTerraform(id: $id) { + id + } +} + `; +export type UninstallTerraformMutationFn = Apollo.MutationFunction; + +/** + * __useUninstallTerraformMutation__ + * + * To run a mutation, you first call `useUninstallTerraformMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useUninstallTerraformMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [uninstallTerraformMutation, { data, loading, error }] = useUninstallTerraformMutation({ + * variables: { + * id: // value for 'id' + * }, + * }); + */ +export function useUninstallTerraformMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(UninstallTerraformDocument, options); + } +export type UninstallTerraformMutationHookResult = ReturnType; +export type UninstallTerraformMutationResult = Apollo.MutationResult; +export type UninstallTerraformMutationOptions = Apollo.BaseMutationOptions; +export const CreateTestDocument = gql` + mutation CreateTest($name: String!, $attrs: TestAttributes!) { + createTest(name: $name, attributes: $attrs) { + ...Test + } +} + ${TestFragmentDoc}`; +export type CreateTestMutationFn = Apollo.MutationFunction; + +/** + * __useCreateTestMutation__ + * + * To run a mutation, you first call `useCreateTestMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useCreateTestMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [createTestMutation, { data, loading, error }] = useCreateTestMutation({ + * variables: { + * name: // value for 'name' + * attrs: // value for 'attrs' + * }, + * }); + */ +export function useCreateTestMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(CreateTestDocument, options); + } +export type CreateTestMutationHookResult = ReturnType; +export type CreateTestMutationResult = Apollo.MutationResult; +export type CreateTestMutationOptions = Apollo.BaseMutationOptions; +export const UpdateTestDocument = gql` + mutation UpdateTest($id: ID!, $attrs: TestAttributes!) { + updateTest(id: $id, attributes: $attrs) { + ...Test + } +} + ${TestFragmentDoc}`; +export type UpdateTestMutationFn = Apollo.MutationFunction; + +/** + * __useUpdateTestMutation__ + * + * To run a mutation, you first call `useUpdateTestMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useUpdateTestMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [updateTestMutation, { data, loading, error }] = useUpdateTestMutation({ + * variables: { + * id: // value for 'id' + * attrs: // value for 'attrs' + * }, + * }); + */ +export function useUpdateTestMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(UpdateTestDocument, options); + } +export type UpdateTestMutationHookResult = ReturnType; +export type UpdateTestMutationResult = Apollo.MutationResult; +export type UpdateTestMutationOptions = Apollo.BaseMutationOptions; +export const UpdateStepDocument = gql` + mutation UpdateStep($id: ID!, $logs: UploadOrUrl!) { + updateStep(id: $id, attributes: {logs: $logs}) { + id + } +} + `; +export type UpdateStepMutationFn = Apollo.MutationFunction; + +/** + * __useUpdateStepMutation__ + * + * To run a mutation, you first call `useUpdateStepMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useUpdateStepMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [updateStepMutation, { data, loading, error }] = useUpdateStepMutation({ + * variables: { + * id: // value for 'id' + * logs: // value for 'logs' + * }, + * }); + */ +export function useUpdateStepMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(UpdateStepDocument, options); + } +export type UpdateStepMutationHookResult = ReturnType; +export type UpdateStepMutationResult = Apollo.MutationResult; +export type UpdateStepMutationOptions = Apollo.BaseMutationOptions; +export const PublishLogsDocument = gql` + mutation PublishLogs($id: ID!, $logs: String!) { + publishLogs(id: $id, logs: $logs) { + id + } +} + `; +export type PublishLogsMutationFn = Apollo.MutationFunction; + +/** + * __usePublishLogsMutation__ + * + * To run a mutation, you first call `usePublishLogsMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `usePublishLogsMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [publishLogsMutation, { data, loading, error }] = usePublishLogsMutation({ + * variables: { + * id: // value for 'id' + * logs: // value for 'logs' + * }, + * }); + */ +export function usePublishLogsMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(PublishLogsDocument, options); + } +export type PublishLogsMutationHookResult = ReturnType; +export type PublishLogsMutationResult = Apollo.MutationResult; +export type PublishLogsMutationOptions = Apollo.BaseMutationOptions; +export const MeDocument = gql` + query Me { + me { + ...User + loginMethod + hasInstallations + account { + ...Account + rootUser { + id + name + email + } + domainMappings { + id + domain + enableSso + } + } + publisher { + ...Publisher + billingAccountId + } + boundRoles { + ...Role + } + } + configuration { + stripeConnectId + stripePublishableKey + registry + gitCommit + } +} + ${UserFragmentDoc} +${AccountFragmentDoc} +${PublisherFragmentDoc} +${RoleFragmentDoc}`; + +/** + * __useMeQuery__ + * + * To run a query within a React component, call `useMeQuery` and pass it any options that fit your needs. + * When your component renders, `useMeQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useMeQuery({ + * variables: { + * }, + * }); + */ +export function useMeQuery(baseOptions?: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(MeDocument, options); + } +export function useMeLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(MeDocument, options); + } +export type MeQueryHookResult = ReturnType; +export type MeLazyQueryHookResult = ReturnType; +export type MeQueryResult = Apollo.QueryResult; +export const GetLoginMethodDocument = gql` + query GetLoginMethod($email: String!) { + loginMethod(email: $email) { + loginMethod + token + } +} + `; + +/** + * __useGetLoginMethodQuery__ + * + * To run a query within a React component, call `useGetLoginMethodQuery` and pass it any options that fit your needs. + * When your component renders, `useGetLoginMethodQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useGetLoginMethodQuery({ + * variables: { + * email: // value for 'email' + * }, + * }); + */ +export function useGetLoginMethodQuery(baseOptions: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(GetLoginMethodDocument, options); + } +export function useGetLoginMethodLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(GetLoginMethodDocument, options); + } +export type GetLoginMethodQueryHookResult = ReturnType; +export type GetLoginMethodLazyQueryHookResult = ReturnType; +export type GetLoginMethodQueryResult = Apollo.QueryResult; +export const ListTokensDocument = gql` + query ListTokens { + tokens(first: 3) { + edges { + node { + token + } + } + } +} + `; + +/** + * __useListTokensQuery__ + * + * To run a query within a React component, call `useListTokensQuery` and pass it any options that fit your needs. + * When your component renders, `useListTokensQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useListTokensQuery({ + * variables: { + * }, + * }); + */ +export function useListTokensQuery(baseOptions?: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(ListTokensDocument, options); + } +export function useListTokensLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(ListTokensDocument, options); + } +export type ListTokensQueryHookResult = ReturnType; +export type ListTokensLazyQueryHookResult = ReturnType; +export type ListTokensQueryResult = Apollo.QueryResult; +export const ListKeysDocument = gql` + query ListKeys($emails: [String]) { + publicKeys(emails: $emails, first: 1000) { + edges { + node { + ...PublicKey + } + } + } +} + ${PublicKeyFragmentDoc}`; + +/** + * __useListKeysQuery__ + * + * To run a query within a React component, call `useListKeysQuery` and pass it any options that fit your needs. + * When your component renders, `useListKeysQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useListKeysQuery({ + * variables: { + * emails: // value for 'emails' + * }, + * }); + */ +export function useListKeysQuery(baseOptions?: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(ListKeysDocument, options); + } +export function useListKeysLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(ListKeysDocument, options); + } +export type ListKeysQueryHookResult = ReturnType; +export type ListKeysLazyQueryHookResult = ReturnType; +export type ListKeysQueryResult = Apollo.QueryResult; +export const GetEabCredentialDocument = gql` + query GetEabCredential($cluster: String!, $provider: Provider!) { + eabCredential(cluster: $cluster, provider: $provider) { + ...EabCredential + } +} + ${EabCredentialFragmentDoc}`; + +/** + * __useGetEabCredentialQuery__ + * + * To run a query within a React component, call `useGetEabCredentialQuery` and pass it any options that fit your needs. + * When your component renders, `useGetEabCredentialQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useGetEabCredentialQuery({ + * variables: { + * cluster: // value for 'cluster' + * provider: // value for 'provider' + * }, + * }); + */ +export function useGetEabCredentialQuery(baseOptions: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(GetEabCredentialDocument, options); + } +export function useGetEabCredentialLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(GetEabCredentialDocument, options); + } +export type GetEabCredentialQueryHookResult = ReturnType; +export type GetEabCredentialLazyQueryHookResult = ReturnType; +export type GetEabCredentialQueryResult = Apollo.QueryResult; +export const DevLoginDocument = gql` + mutation DevLogin { + deviceLogin { + loginUrl + deviceToken + } +} + `; +export type DevLoginMutationFn = Apollo.MutationFunction; + +/** + * __useDevLoginMutation__ + * + * To run a mutation, you first call `useDevLoginMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useDevLoginMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [devLoginMutation, { data, loading, error }] = useDevLoginMutation({ + * variables: { + * }, + * }); + */ +export function useDevLoginMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(DevLoginDocument, options); + } +export type DevLoginMutationHookResult = ReturnType; +export type DevLoginMutationResult = Apollo.MutationResult; +export type DevLoginMutationOptions = Apollo.BaseMutationOptions; +export const LoginDocument = gql` + mutation Login($email: String!, $password: String!, $deviceToken: String) { + login(email: $email, password: $password, deviceToken: $deviceToken) { + jwt + } +} + `; +export type LoginMutationFn = Apollo.MutationFunction; + +/** + * __useLoginMutation__ + * + * To run a mutation, you first call `useLoginMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useLoginMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [loginMutation, { data, loading, error }] = useLoginMutation({ + * variables: { + * email: // value for 'email' + * password: // value for 'password' + * deviceToken: // value for 'deviceToken' + * }, + * }); + */ +export function useLoginMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(LoginDocument, options); + } +export type LoginMutationHookResult = ReturnType; +export type LoginMutationResult = Apollo.MutationResult; +export type LoginMutationOptions = Apollo.BaseMutationOptions; +export const ImpersonateServiceAccountDocument = gql` + mutation ImpersonateServiceAccount($email: String) { + impersonateServiceAccount(email: $email) { + jwt + email + } +} + `; +export type ImpersonateServiceAccountMutationFn = Apollo.MutationFunction; + +/** + * __useImpersonateServiceAccountMutation__ + * + * To run a mutation, you first call `useImpersonateServiceAccountMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useImpersonateServiceAccountMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [impersonateServiceAccountMutation, { data, loading, error }] = useImpersonateServiceAccountMutation({ + * variables: { + * email: // value for 'email' + * }, + * }); + */ +export function useImpersonateServiceAccountMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(ImpersonateServiceAccountDocument, options); + } +export type ImpersonateServiceAccountMutationHookResult = ReturnType; +export type ImpersonateServiceAccountMutationResult = Apollo.MutationResult; +export type ImpersonateServiceAccountMutationOptions = Apollo.BaseMutationOptions; +export const CreateAccessTokenDocument = gql` + mutation CreateAccessToken { + createToken { + token + } +} + `; +export type CreateAccessTokenMutationFn = Apollo.MutationFunction; + +/** + * __useCreateAccessTokenMutation__ + * + * To run a mutation, you first call `useCreateAccessTokenMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useCreateAccessTokenMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [createAccessTokenMutation, { data, loading, error }] = useCreateAccessTokenMutation({ + * variables: { + * }, + * }); + */ +export function useCreateAccessTokenMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(CreateAccessTokenDocument, options); + } +export type CreateAccessTokenMutationHookResult = ReturnType; +export type CreateAccessTokenMutationResult = Apollo.MutationResult; +export type CreateAccessTokenMutationOptions = Apollo.BaseMutationOptions; +export const CreateKeyDocument = gql` + mutation CreateKey($key: String!, $name: String!) { + createPublicKey(attributes: {content: $key, name: $name}) { + id + } +} + `; +export type CreateKeyMutationFn = Apollo.MutationFunction; + +/** + * __useCreateKeyMutation__ + * + * To run a mutation, you first call `useCreateKeyMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useCreateKeyMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [createKeyMutation, { data, loading, error }] = useCreateKeyMutation({ + * variables: { + * key: // value for 'key' + * name: // value for 'name' + * }, + * }); + */ +export function useCreateKeyMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(CreateKeyDocument, options); + } +export type CreateKeyMutationHookResult = ReturnType; +export type CreateKeyMutationResult = Apollo.MutationResult; +export type CreateKeyMutationOptions = Apollo.BaseMutationOptions; +export const DeleteEabCredentialDocument = gql` + mutation DeleteEabCredential($cluster: String!, $provider: Provider!) { + deleteEabKey(cluster: $cluster, provider: $provider) { + id + } +} + `; +export type DeleteEabCredentialMutationFn = Apollo.MutationFunction; + +/** + * __useDeleteEabCredentialMutation__ + * + * To run a mutation, you first call `useDeleteEabCredentialMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useDeleteEabCredentialMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [deleteEabCredentialMutation, { data, loading, error }] = useDeleteEabCredentialMutation({ + * variables: { + * cluster: // value for 'cluster' + * provider: // value for 'provider' + * }, + * }); + */ +export function useDeleteEabCredentialMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(DeleteEabCredentialDocument, options); + } +export type DeleteEabCredentialMutationHookResult = ReturnType; +export type DeleteEabCredentialMutationResult = Apollo.MutationResult; +export type DeleteEabCredentialMutationOptions = Apollo.BaseMutationOptions; +export const CreateEventDocument = gql` + mutation CreateEvent($attrs: UserEventAttributes!) { + createUserEvent(attributes: $attrs) +} + `; +export type CreateEventMutationFn = Apollo.MutationFunction; + +/** + * __useCreateEventMutation__ + * + * To run a mutation, you first call `useCreateEventMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useCreateEventMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [createEventMutation, { data, loading, error }] = useCreateEventMutation({ + * variables: { + * attrs: // value for 'attrs' + * }, + * }); + */ +export function useCreateEventMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(CreateEventDocument, options); + } +export type CreateEventMutationHookResult = ReturnType; +export type CreateEventMutationResult = Apollo.MutationResult; +export type CreateEventMutationOptions = Apollo.BaseMutationOptions; +export const LoginMethodDocument = gql` + query LoginMethod($email: String!, $host: String) { + loginMethod(email: $email, host: $host) { + loginMethod + token + authorizeUrl + } +} + `; + +/** + * __useLoginMethodQuery__ + * + * To run a query within a React component, call `useLoginMethodQuery` and pass it any options that fit your needs. + * When your component renders, `useLoginMethodQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useLoginMethodQuery({ + * variables: { + * email: // value for 'email' + * host: // value for 'host' + * }, + * }); + */ +export function useLoginMethodQuery(baseOptions: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(LoginMethodDocument, options); + } +export function useLoginMethodLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(LoginMethodDocument, options); + } +export type LoginMethodQueryHookResult = ReturnType; +export type LoginMethodLazyQueryHookResult = ReturnType; +export type LoginMethodQueryResult = Apollo.QueryResult; +export const SignupDocument = gql` + mutation Signup($attributes: UserAttributes!, $account: AccountAttributes, $deviceToken: String) { + signup(attributes: $attributes, account: $account, deviceToken: $deviceToken) { + jwt + onboarding + } +} + `; +export type SignupMutationFn = Apollo.MutationFunction; + +/** + * __useSignupMutation__ + * + * To run a mutation, you first call `useSignupMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useSignupMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [signupMutation, { data, loading, error }] = useSignupMutation({ + * variables: { + * attributes: // value for 'attributes' + * account: // value for 'account' + * deviceToken: // value for 'deviceToken' + * }, + * }); + */ +export function useSignupMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(SignupDocument, options); + } +export type SignupMutationHookResult = ReturnType; +export type SignupMutationResult = Apollo.MutationResult; +export type SignupMutationOptions = Apollo.BaseMutationOptions; +export const PasswordlessLoginDocument = gql` + mutation PasswordlessLogin($token: String!) { + passwordlessLogin(token: $token) { + jwt + } +} + `; +export type PasswordlessLoginMutationFn = Apollo.MutationFunction; + +/** + * __usePasswordlessLoginMutation__ + * + * To run a mutation, you first call `usePasswordlessLoginMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `usePasswordlessLoginMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [passwordlessLoginMutation, { data, loading, error }] = usePasswordlessLoginMutation({ + * variables: { + * token: // value for 'token' + * }, + * }); + */ +export function usePasswordlessLoginMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(PasswordlessLoginDocument, options); + } +export type PasswordlessLoginMutationHookResult = ReturnType; +export type PasswordlessLoginMutationResult = Apollo.MutationResult; +export type PasswordlessLoginMutationOptions = Apollo.BaseMutationOptions; +export const PollLoginTokenDocument = gql` + mutation PollLoginToken($token: String!, $deviceToken: String) { + loginToken(token: $token, deviceToken: $deviceToken) { + jwt + } +} + `; +export type PollLoginTokenMutationFn = Apollo.MutationFunction; + +/** + * __usePollLoginTokenMutation__ + * + * To run a mutation, you first call `usePollLoginTokenMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `usePollLoginTokenMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [pollLoginTokenMutation, { data, loading, error }] = usePollLoginTokenMutation({ + * variables: { + * token: // value for 'token' + * deviceToken: // value for 'deviceToken' + * }, + * }); + */ +export function usePollLoginTokenMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(PollLoginTokenDocument, options); + } +export type PollLoginTokenMutationHookResult = ReturnType; +export type PollLoginTokenMutationResult = Apollo.MutationResult; +export type PollLoginTokenMutationOptions = Apollo.BaseMutationOptions; +export const OauthUrlsDocument = gql` + query OauthUrls($host: String) { + oauthUrls(host: $host) { + provider + authorizeUrl + } +} + `; + +/** + * __useOauthUrlsQuery__ + * + * To run a query within a React component, call `useOauthUrlsQuery` and pass it any options that fit your needs. + * When your component renders, `useOauthUrlsQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useOauthUrlsQuery({ + * variables: { + * host: // value for 'host' + * }, + * }); + */ +export function useOauthUrlsQuery(baseOptions?: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(OauthUrlsDocument, options); + } +export function useOauthUrlsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(OauthUrlsDocument, options); + } +export type OauthUrlsQueryHookResult = ReturnType; +export type OauthUrlsLazyQueryHookResult = ReturnType; +export type OauthUrlsQueryResult = Apollo.QueryResult; +export const AcceptLoginDocument = gql` + mutation AcceptLogin($challenge: String!) { + acceptLogin(challenge: $challenge) { + redirectTo + } +} + `; +export type AcceptLoginMutationFn = Apollo.MutationFunction; + +/** + * __useAcceptLoginMutation__ + * + * To run a mutation, you first call `useAcceptLoginMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useAcceptLoginMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [acceptLoginMutation, { data, loading, error }] = useAcceptLoginMutation({ + * variables: { + * challenge: // value for 'challenge' + * }, + * }); + */ +export function useAcceptLoginMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(AcceptLoginDocument, options); + } +export type AcceptLoginMutationHookResult = ReturnType; +export type AcceptLoginMutationResult = Apollo.MutationResult; +export type AcceptLoginMutationOptions = Apollo.BaseMutationOptions; +export const CreateResetTokenDocument = gql` + mutation CreateResetToken($attributes: ResetTokenAttributes!) { + createResetToken(attributes: $attributes) +} + `; +export type CreateResetTokenMutationFn = Apollo.MutationFunction; + +/** + * __useCreateResetTokenMutation__ + * + * To run a mutation, you first call `useCreateResetTokenMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useCreateResetTokenMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [createResetTokenMutation, { data, loading, error }] = useCreateResetTokenMutation({ + * variables: { + * attributes: // value for 'attributes' + * }, + * }); + */ +export function useCreateResetTokenMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(CreateResetTokenDocument, options); + } +export type CreateResetTokenMutationHookResult = ReturnType; +export type CreateResetTokenMutationResult = Apollo.MutationResult; +export type CreateResetTokenMutationOptions = Apollo.BaseMutationOptions; +export const RealizeResetTokenDocument = gql` + mutation RealizeResetToken($id: ID!, $attributes: ResetTokenRealization!) { + realizeResetToken(id: $id, attributes: $attributes) +} + `; +export type RealizeResetTokenMutationFn = Apollo.MutationFunction; + +/** + * __useRealizeResetTokenMutation__ + * + * To run a mutation, you first call `useRealizeResetTokenMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useRealizeResetTokenMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [realizeResetTokenMutation, { data, loading, error }] = useRealizeResetTokenMutation({ + * variables: { + * id: // value for 'id' + * attributes: // value for 'attributes' + * }, + * }); + */ +export function useRealizeResetTokenMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(RealizeResetTokenDocument, options); + } +export type RealizeResetTokenMutationHookResult = ReturnType; +export type RealizeResetTokenMutationResult = Apollo.MutationResult; +export type RealizeResetTokenMutationOptions = Apollo.BaseMutationOptions; +export const ResetTokenDocument = gql` + query ResetToken($id: ID!) { + resetToken(id: $id) { + type + user { + ...User + } + } +} + ${UserFragmentDoc}`; + +/** + * __useResetTokenQuery__ + * + * To run a query within a React component, call `useResetTokenQuery` and pass it any options that fit your needs. + * When your component renders, `useResetTokenQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useResetTokenQuery({ + * variables: { + * id: // value for 'id' + * }, + * }); + */ +export function useResetTokenQuery(baseOptions: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(ResetTokenDocument, options); + } +export function useResetTokenLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(ResetTokenDocument, options); + } +export type ResetTokenQueryHookResult = ReturnType; +export type ResetTokenLazyQueryHookResult = ReturnType; +export type ResetTokenQueryResult = Apollo.QueryResult; +export const UpdateVersionDocument = gql` + mutation UpdateVersion($spec: VersionSpec, $attributes: VersionAttributes!) { + updateVersion(spec: $spec, attributes: $attributes) { + id + } +} + `; +export type UpdateVersionMutationFn = Apollo.MutationFunction; + +/** + * __useUpdateVersionMutation__ + * + * To run a mutation, you first call `useUpdateVersionMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useUpdateVersionMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [updateVersionMutation, { data, loading, error }] = useUpdateVersionMutation({ + * variables: { + * spec: // value for 'spec' + * attributes: // value for 'attributes' + * }, + * }); + */ +export function useUpdateVersionMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(UpdateVersionDocument, options); + } +export type UpdateVersionMutationHookResult = ReturnType; +export type UpdateVersionMutationResult = Apollo.MutationResult; +export type UpdateVersionMutationOptions = Apollo.BaseMutationOptions; \ No newline at end of file diff --git a/pkg/ui/web/src/graphql/groups.graphql b/pkg/ui/web/src/graphql/groups.graphql new file mode 100644 index 00000000..1363fb51 --- /dev/null +++ b/pkg/ui/web/src/graphql/groups.graphql @@ -0,0 +1,55 @@ +query GroupMembers($cursor: String, $id: ID!) { + groupMembers(groupId: $id, after: $cursor, first: 20) { + pageInfo { + ...PageInfo + } + edges { + node { + ...GroupMember + } + } + } +} + +mutation CreateGroupMember($groupId: ID!, $userId: ID!) { + createGroupMember(groupId: $groupId, userId: $userId) { + ...GroupMember + } +} + +mutation DeleteGroupMember($groupId: ID!, $userId: ID!) { + deleteGroupMember(groupId: $groupId, userId: $userId) { + ...GroupMember + } +} + +mutation CreateGroup($attributes: GroupAttributes!) { + createGroup(attributes: $attributes) { + ...Group + } +} + +mutation UpdateGroup($id: ID!, $attributes: GroupAttributes!) { + updateGroup(groupId: $id, attributes: $attributes) { + ...Group + } +} + +mutation DeleteGroup($id: ID!) { + deleteGroup(groupId: $id) { + ...Group + } +} + +query Groups($q: String, $cursor: String) { + groups(q: $q, first: 20, after: $cursor) { + pageInfo { + ...PageInfo + } + edges { + node { + ...Group + } + } + } +} diff --git a/pkg/ui/web/src/graphql/incidents.graphql b/pkg/ui/web/src/graphql/incidents.graphql new file mode 100644 index 00000000..c9b0fd62 --- /dev/null +++ b/pkg/ui/web/src/graphql/incidents.graphql @@ -0,0 +1,82 @@ +fragment Postmortem on Postmortem { + id + content + actionItems { type link } +} + +fragment Follower on Follower { + id + incident { id } + user { ...User } + preferences { message incidentUpdate mention } +} + +#TODO: not that this was changed as it needs to be unique. Whatever queries/mutations use this fragment needs to be updated +fragment SlimSubscription on SlimSubscription { + id + lineItems { items { dimension quantity } } + plan { ...Plan } +} + + +fragment ClusterInformation on ClusterInformation { + version + gitCommit + platform +} + + +fragment Incident on Incident { + id + title + description + severity + status + notificationCount + nextResponseAt + creator { ...User } + owner { ...User } + repository { ...Repo } + subscription { ...SlimSubscription } + clusterInformation { ...ClusterInformation } + tags { tag } + insertedAt +} + +fragment IncidentHistory on IncidentHistory { + id + action + changes { key prev next } + actor { ...User } + insertedAt +} + +fragment File on File { + id + blob + mediaType + contentType + filesize + filename +} + +fragment IncidentMessage on IncidentMessage { + id + text + creator { ...User } + reactions { name creator { id email } } + file { ...File } + entities { type user { ...User } text startIndex endIndex } + insertedAt +} + +fragment Notification on Notification { + id + type + msg + actor { ...User } + incident { id title repository { id name icon darkIcon } } + message { text } + repository { id name icon darkIcon } + insertedAt +} diff --git a/pkg/ui/web/src/graphql/installations.graphql b/pkg/ui/web/src/graphql/installations.graphql new file mode 100644 index 00000000..e3a0873d --- /dev/null +++ b/pkg/ui/web/src/graphql/installations.graphql @@ -0,0 +1,38 @@ +fragment Installation on Installation { + id + context + license + licenseKey + acmeKeyId + acmeSecret + autoUpgrade + trackTag + repository { ...Repo } + # repository { ...Repository } + user { ...User } + oidcProvider { ...OIDCProvider } +} + +query GetInstallation($name: String) { + installation(name: $name) { + ...Installation + } +} + +query GetInstallationById($id: ID) { + installation(id: $id) { + ...Installation + } +} + +query GetInstallations($first: Int) { + installations(first: $first) { + edges { node { ...Installation } } + } +} + +mutation UpsertOidcProvider($id: ID!, $attributes: OidcAttributes!) { + upsertOidcProvider(installationId: $id, attributes: $attributes) { + id + } +} diff --git a/pkg/ui/web/src/graphql/integrations.graphql b/pkg/ui/web/src/graphql/integrations.graphql new file mode 100644 index 00000000..9e0d57fe --- /dev/null +++ b/pkg/ui/web/src/graphql/integrations.graphql @@ -0,0 +1,27 @@ +fragment IntegrationWebhook on IntegrationWebhook { + id + name + url + secret + actions +} + +fragment WebhookLog on WebhookLog { + id + state + status + payload + response + insertedAt +} + +fragment OauthIntegration on OauthIntegration { + id + service + insertedAt +} + +fragment ZoomMeeting on ZoomMeeting { + joinUrl + password +} diff --git a/pkg/ui/web/src/graphql/invite.graphql b/pkg/ui/web/src/graphql/invite.graphql new file mode 100644 index 00000000..ece3e5e4 --- /dev/null +++ b/pkg/ui/web/src/graphql/invite.graphql @@ -0,0 +1,28 @@ +mutation SignupInvite($attributes: UserAttributes!, $inviteId: String!) { + signup(attributes: $attributes, inviteId: $inviteId) { + jwt + } +} + +mutation RealizeInvite($id: String!) { + realizeInvite(id: $id) { + jwt + } +} + +query Invite($id: String!) { + invite(id: $id) { + id + email + existing + account { + ...Account + } + user { + ...User + account { + ...Account + } + } + } +} diff --git a/pkg/ui/web/src/graphql/metrics.graphql b/pkg/ui/web/src/graphql/metrics.graphql new file mode 100644 index 00000000..6e99c9cb --- /dev/null +++ b/pkg/ui/web/src/graphql/metrics.graphql @@ -0,0 +1,5 @@ +fragment Metric on Metric { + name + tags { name value } + values { time value } +} diff --git a/pkg/ui/web/src/graphql/misc.graphql b/pkg/ui/web/src/graphql/misc.graphql new file mode 100644 index 00000000..0ab1b147 --- /dev/null +++ b/pkg/ui/web/src/graphql/misc.graphql @@ -0,0 +1,4 @@ +fragment PageInfo on PageInfo { + endCursor + hasNextPage +} diff --git a/pkg/ui/web/src/graphql/oauth.graphql b/pkg/ui/web/src/graphql/oauth.graphql new file mode 100644 index 00000000..175cee84 --- /dev/null +++ b/pkg/ui/web/src/graphql/oauth.graphql @@ -0,0 +1,24 @@ +fragment OIDCProvider on OidcProvider { + id + clientId + authMethod + clientSecret + redirectUris + bindings { + id + user { ...User } + group { ...Group } + } + configuration { + issuer + authorizationEndpoint + tokenEndpoint + jwksUri + userinfoEndpoint + } +} + +fragment OAuthInfo on OauthInfo { + provider + authorizeUrl +} diff --git a/pkg/ui/web/src/graphql/payments.graphql b/pkg/ui/web/src/graphql/payments.graphql new file mode 100644 index 00000000..d92afd13 --- /dev/null +++ b/pkg/ui/web/src/graphql/payments.graphql @@ -0,0 +1,142 @@ +fragment Limit on Limit { + dimension + quantity +} + +fragment LineItem on LineItem { + name + dimension + cost + period + type +} + +fragment ServiceLevel on ServiceLevel { + minSeverity + maxSeverity + responseTime +} + +fragment Plan on Plan { + id + name + cost + period + serviceLevels { ...ServiceLevel } + lineItems { + included { ...Limit } + items { ...LineItem } + } + metadata { features { name description } } +} + +fragment Subscription on RepositorySubscription { + id + plan { ...Plan } + lineItems { items { ...Limit } } +} + + +fragment InvoiceItem on InvoiceItem { + amount + currency + description +} + + +fragment Invoice on Invoice { + number + amountDue + amountPaid + currency + status + createdAt + hostedInvoiceUrl + lines { ...InvoiceItem } +} + +fragment Card on Card { + id + last4 + expMonth + expYear + name + brand +} + +query Subscription { + account { + billingCustomerId + grandfatheredUntil + delinquentAt + userCount + clusterCount + availableFeatures { + userManagement + audit + } + subscription { + id + plan { + id + period + lineItems { + dimension + cost + } + } + } + billingAddress { + name + line1 + line2 + zip + state + city + country + } + } +} + +mutation UpdateAccountBilling($attributes: AccountAttributes!) { + updateAccount(attributes: $attributes) { + id + } +} + +mutation UpgradeToProfessionalPlan($planId: ID!) { + createPlatformSubscription(planId: $planId) { + id + } +} + +mutation DowngradeToFreePlanMutation { + deletePlatformSubscription { + id + } +} + +query Cards { + me { + id + cards(first: 100) { + edges { + node { + ...Card + } + } + } + } +} + +mutation CreateCard($source: String!, $address: AddressAttributes) { + createCard(source: $source, address: $address) { + id + } +} + +mutation DeleteCard($id: ID!) { + deleteCard(id: $id) { + id + } +} diff --git a/pkg/ui/web/src/graphql/recipes.graphql b/pkg/ui/web/src/graphql/recipes.graphql new file mode 100644 index 00000000..d12aeb87 --- /dev/null +++ b/pkg/ui/web/src/graphql/recipes.graphql @@ -0,0 +1,134 @@ +fragment Recipe on Recipe { + id + name + description + restricted + provider + tests { + type + name + message + args { name repo key } + } + repository { id name } + oidcSettings { + uriFormat + uriFormats + authMethod + domainKey + subdomain + } + recipeSections { ...RecipeSection } +} + +fragment RecipeItem on RecipeItem { + id + chart { ...Chart } + terraform { ...Terraform } + configuration { ...RecipeConfiguration } +} + +fragment RecipeSection on RecipeSection { + index + repository { + ...Repo + installation { ...Installation } + } + recipeItems { ...RecipeItem } + configuration { ...RecipeConfiguration } +} + +fragment RecipeConfiguration on RecipeConfiguration { + name + type + default + documentation + optional + placeholder + functionName + condition { field operation value } + validation { type regex message } +} + +fragment Stack on Stack { + id + name + displayName + description + featured + creator { + id + name + } + collections { + id + provider + bundles { + recipe { + repository { + ...Repo + tags { + tag + } + } + } + } + } +} + +query GetRecipe($repo: String, $name: String, $id: ID) { + recipe(repo: $repo, name: $name, id: $id) { + ...Recipe + recipeDependencies { ...Recipe } + } +} + +query ListRecipes($repositoryName: String, $repositoryId: ID, $provider: Provider) { + recipes(repositoryName: $repositoryName, provider: $provider, first: 500, repositoryId: $repositoryId) { + edges { node { ...Recipe } } + } +} + +mutation CreateRecipe($name: String!, $attributes: RecipeAttributes!) { + createRecipe(repositoryName: $name, attributes: $attributes) { + id + } +} + +mutation InstallRecipe($id: ID!) { + installRecipe(recipeId: $id, context: "{}") { + id + } +} + +mutation CreateStack($attributes: StackAttributes!) { + createStack(attributes: $attributes) { + id + } +} + +query GetStack($name: String!, $provider: Provider!) { + stack(name: $name, provider: $provider) { + ...Stack + } +} + +query ListStacks($featured: Boolean, $cursor: String) { + stacks(first: 100, after: $cursor, featured: $featured) { + edges { node { ...Stack } } + } +} + +mutation CreateQuickStack($applicationIds: [ID], $provider: Provider!) { + quickStack(repositoryIds: $applicationIds, provider: $provider) { + id + name + } +} + +mutation InstallStackShell($name: String!, $context: ContextAttributes!, $oidc: Boolean!) { + installStackShell(name: $name, context: $context, oidc: $oidc) { + id + name + } +} \ No newline at end of file diff --git a/pkg/ui/web/src/graphql/repos.graphql b/pkg/ui/web/src/graphql/repos.graphql new file mode 100644 index 00000000..1eb5512c --- /dev/null +++ b/pkg/ui/web/src/graphql/repos.graphql @@ -0,0 +1,160 @@ +fragment ApplyLock on ApplyLock { + id + lock +} + +fragment Category on CategoryInfo { + category + count +} + +fragment Repo on Repository { + id + name + notes + description + documentation + icon + darkIcon + private + trending + verified + category + oauthSettings { + uriFormat + authMethod + } + publisher { + ...Publisher + } + recipes { + name + provider + description + } +} + +fragment Repository on Repository { + id + name + notes + icon + darkIcon + description + publisher { name } + recipes { name } +} + +fragment Dependencies on Dependencies { + dependencies { + name + repo + type + version + optional + } + wait + application + providers + secrets + wirings { terraform helm } + providerWirings + outputs +} + + +fragment Integration on Integration { + id + name + icon + sourceUrl + description + tags { tag } + publisher { ...Publisher } +} + +query Repository($id: ID, $name: String) { + repository(id: $id, name: $name) { + ...Repo + editable + publicKey + secrets + artifacts { + ...Artifact + } + installation { + ...Installation + oidcProvider { + ...OIDCProvider + } + } + tags { + tag + } + readme + mainBranch + gitUrl + homepage + license { + name + url + } + documentation + community { + discord + slack + homepage + gitUrl + twitter + } + } +} + +mutation CreateResourceDefinition($name: String!, $input: ResourceDefinitionAttributes!) { + updateRepository(repositoryName: $name, attributes: {integrationResourceDefinition: $input}) { + id + } +} + +mutation CreateIntegration($name: String!, $attrs: IntegrationAttributes!) { + createIntegration(repositoryName: $name, attributes: $attrs) { id } +} + +mutation UpdateRepository($name: String!, $attrs: RepositoryAttributes!) { + updateRepository(repositoryName: $name, attributes: $attrs) { id } +} + +mutation CreateRepository($name: String!, $publisher: String!, $attributes: RepositoryAttributes!) { + upsertRepository(name: $name, publisher: $publisher, attributes: $attributes) { id } +} + +mutation AcquireLock($name: String!) { + acquireLock(repository: $name) { ...ApplyLock } +} + +mutation ReleaseLock($name: String!, $attrs: LockAttributes!) { + releaseLock(repository: $name, attributes: $attrs) { ...ApplyLock } +} + +mutation UnlockRepository($name: String!) { + unlockRepository(name: $name) +} + +query ListRepositories($q: String, $installed: Boolean, $first: Int = 100, $provider: Provider = null) { + repositories(q: $q, first: $first, installed: $installed, provider: $provider) { + edges { node { ...Repository } } + } +} + +query Scaffolds($app: String!, $pub: String!, $cat: Category!, $ing: Boolean, $pg: Boolean) { + scaffold(application: $app, publisher: $pub, category: $cat, ingress: $ing, postgres: $pg) { + path + content + } +} + +mutation DeleteRepository($id: ID!) { + deleteRepository(repositoryId: $id){ + id + } +} diff --git a/pkg/ui/web/src/graphql/scaffolds.graphql b/pkg/ui/web/src/graphql/scaffolds.graphql new file mode 100644 index 00000000..e75fb666 --- /dev/null +++ b/pkg/ui/web/src/graphql/scaffolds.graphql @@ -0,0 +1,10 @@ +query GetTfProviders{ + terraformProviders +} + +query GetTfProviderScaffold($name: Provider!, $vsn: String) { + terraformProvider(name: $name, vsn: $vsn) { + name + content + } +} diff --git a/pkg/ui/web/src/graphql/shells.graphql b/pkg/ui/web/src/graphql/shells.graphql new file mode 100644 index 00000000..80be3d27 --- /dev/null +++ b/pkg/ui/web/src/graphql/shells.graphql @@ -0,0 +1,31 @@ +fragment CloudShell on CloudShell { + id + aesKey + gitUrl + alive + provider + subdomain + cluster + status { + ready + initialized + containersReady + podScheduled + } +} + +fragment DemoProject on DemoProject { + id + projectId + credentials + ready + state +} + +query GetShell { + shell { ...CloudShell } +} + +mutation DeleteShell { + deleteShell { ...CloudShell } +} diff --git a/pkg/ui/web/src/graphql/terraforms.graphql b/pkg/ui/web/src/graphql/terraforms.graphql new file mode 100644 index 00000000..766efca6 --- /dev/null +++ b/pkg/ui/web/src/graphql/terraforms.graphql @@ -0,0 +1,47 @@ +fragment Terraform on Terraform { + id + name + readme + package + description + latestVersion + dependencies { ...Dependencies } + valuesTemplate + insertedAt +} + +fragment TerraformInstallation on TerraformInstallation { + id + terraform { ...Terraform } + version { ...Version } +} + +query GetTerraform($id: ID!) { + terraform(repositoryId: $id, first: 100) { + edges { + node { + ...Terraform + } + } + } +} + +query GetTerraformInstallations($id: ID!) { + terraformInstallations(repositoryId: $id, first: 100) { + edges { + node { + ...TerraformInstallation + } + } + } +} + +mutation UploadTerraform($repoName: String!, $name: String!, $uploadOrUrl: UploadOrUrl!) { + uploadTerraform(repositoryName: $repoName, name: $name, attributes: {name: $name, package: $uploadOrUrl}) { + ...Terraform + } +} + +mutation UninstallTerraform($id: ID!) { + uninstallTerraform(id: $id) { id } +} diff --git a/pkg/ui/web/src/graphql/tests.graphql b/pkg/ui/web/src/graphql/tests.graphql new file mode 100644 index 00000000..0a7afde4 --- /dev/null +++ b/pkg/ui/web/src/graphql/tests.graphql @@ -0,0 +1,40 @@ +fragment Step on TestStep { + id + name + status + hasLogs + description + insertedAt + updatedAt +} + + +fragment Test on Test { + id + name + promoteTag + status + insertedAt + updatedAt + steps { ...Step } +} + +mutation CreateTest($name: String!, $attrs: TestAttributes!) { + createTest(name: $name, attributes: $attrs) { + ...Test + } +} + +mutation UpdateTest($id: ID!, $attrs: TestAttributes!) { + updateTest(id: $id, attributes: $attrs) { + ...Test + } +} + +mutation UpdateStep($id: ID!, $logs: UploadOrUrl!) { + updateStep(id: $id, attributes: {logs: $logs}) { id } +} + +mutation PublishLogs($id: ID!, $logs: String!) { + publishLogs(id: $id, logs: $logs) { id } +} diff --git a/pkg/ui/web/src/graphql/upgrades.graphql b/pkg/ui/web/src/graphql/upgrades.graphql new file mode 100644 index 00000000..4d9feb2b --- /dev/null +++ b/pkg/ui/web/src/graphql/upgrades.graphql @@ -0,0 +1,33 @@ +fragment UpgradeQueue on UpgradeQueue { + id + acked + name + domain + git + pingedAt + provider +} + +fragment Rollout on Rollout { + id + event + cursor + count + status + heartbeat +} + +fragment Upgrade on Upgrade { + id + message + repository { ...Repo } + insertedAt +} + +fragment DeferredUpdate on DeferredUpdate { + id + dequeueAt + attempts + version { version } + insertedAt +} diff --git a/pkg/ui/web/src/graphql/users.graphql b/pkg/ui/web/src/graphql/users.graphql new file mode 100644 index 00000000..9c831d13 --- /dev/null +++ b/pkg/ui/web/src/graphql/users.graphql @@ -0,0 +1,278 @@ +fragment Account on Account { + id + name + billingCustomerId + backgroundColor +} + +fragment Group on Group { + id + name + global + description +} + +fragment User on User { + id + name + email + avatar + provider + demoing + demoed + onboarding + onboardingChecklist { dismissed status } + emailConfirmed + emailConfirmBy + backgroundColor + serviceAccount + roles { admin } +} + +fragment ImpersonationPolicy on ImpersonationPolicy { + id + bindings { + id + group { id name } + user { id name email } + } +} + +fragment GroupMember on GroupMember { + id + user { ...User } +} + +fragment Token on PersistedToken { + id + token + insertedAt +} + +fragment TokenAudit on PersistedTokenAudit { + ip + timestamp + count + country + city + latitude + longitude +} + +fragment Address on Address { + line1 + line2 + city + country + state + zip +} + +fragment Publisher on Publisher { + id + name + phone + avatar + description + backgroundColor + owner { ...User } + address { ...Address } +} + +fragment Webhook on Webhook { + id + url + secret + insertedAt +} + +fragment RoleBinding on RoleBinding { + id + user { ...User } + group { ...Group } +} + +fragment Role on Role { + id + name + description + repositories + permissions + roleBindings { ...RoleBinding } +} + +fragment PublicKey on PublicKey { + id + name + digest + insertedAt + content + user { ...User } +} + +fragment EabCredential on EabCredential { + id + keyId + hmacKey + cluster + provider + insertedAt +} + +query Me{ + me { + ...User + loginMethod + hasInstallations + account { + ...Account + rootUser { id, name, email } + domainMappings { id domain enableSso } + } + publisher { + ...Publisher + billingAccountId + } + boundRoles { ...Role } + } + configuration { + stripeConnectId + stripePublishableKey + registry + gitCommit + } +} + +query GetLoginMethod($email: String!) { + loginMethod(email: $email) { loginMethod token } +} + +query ListTokens{ + tokens(first: 3) { + edges { node { token } } + } +} + +query ListKeys($emails: [String]) { + publicKeys(emails: $emails, first: 1000) { + edges { node { ...PublicKey } } + } +} + +query GetEabCredential($cluster: String!, $provider: Provider!) { + eabCredential(cluster: $cluster, provider: $provider) { + ...EabCredential + } +} + +mutation DevLogin { + deviceLogin { loginUrl deviceToken } +} + +mutation Login($email: String!, $password: String!, $deviceToken: String) { + login(email: $email, password: $password, deviceToken: $deviceToken) { + jwt + } +} + +mutation ImpersonateServiceAccount($email: String) { + impersonateServiceAccount(email: $email) { jwt email } +} + +mutation CreateAccessToken{ + createToken { token } +} + +mutation CreateKey($key: String!, $name: String!) { + createPublicKey(attributes: {content: $key, name: $name}) { id } +} + +mutation DeleteEabCredential($cluster: String!, $provider: Provider!) { + deleteEabKey(cluster: $cluster, provider: $provider) { + id + } +} + +mutation CreateEvent($attrs: UserEventAttributes!) { + createUserEvent(attributes: $attrs) +} + +query LoginMethod($email: String!, $host: String) { + loginMethod(email: $email, host: $host) { + loginMethod + token + authorizeUrl + } +} + +mutation Signup( + $attributes: UserAttributes! + $account: AccountAttributes + $deviceToken: String +) { + signup( + attributes: $attributes + account: $account + deviceToken: $deviceToken + ) { + jwt + onboarding + } +} + +mutation PasswordlessLogin($token: String!) { + passwordlessLogin(token: $token) { + jwt + } +} + +mutation PollLoginToken($token: String!, $deviceToken: String) { + loginToken(token: $token, deviceToken: $deviceToken) { + jwt + } +} + +query OauthUrls($host: String) { + oauthUrls(host: $host) { + provider + authorizeUrl + } +} + +query LoginMethod($email: String!, $host: String) { + loginMethod(email: $email, host: $host) { + loginMethod + token + authorizeUrl + } +} + +query OauthUrls($host: String) { + oauthUrls(host: $host) { + provider + authorizeUrl + } +} + +mutation AcceptLogin($challenge: String!) { + acceptLogin(challenge: $challenge) { + redirectTo + } +} + +mutation CreateResetToken($attributes: ResetTokenAttributes!) { + createResetToken(attributes: $attributes) +} + +mutation RealizeResetToken($id: ID!, $attributes: ResetTokenRealization!) { + realizeResetToken(id: $id, attributes: $attributes) +} + +query ResetToken($id: ID!) { + resetToken(id: $id) { + type + user { + ...User + } + } +} diff --git a/pkg/ui/web/src/graphql/versions.graphql b/pkg/ui/web/src/graphql/versions.graphql new file mode 100644 index 00000000..62661b90 --- /dev/null +++ b/pkg/ui/web/src/graphql/versions.graphql @@ -0,0 +1,23 @@ +fragment VersionTag on VersionTag { + id + tag + version { id } +} + +fragment Version on Version { + id + helm + readme + valuesTemplate + version + insertedAt + package + crds { ...Crd } + chart { ...Chart } + terraform { id name } + dependencies { ...Dependencies } +} + +mutation UpdateVersion($spec: VersionSpec, $attributes: VersionAttributes!) { + updateVersion(spec: $spec, attributes: $attributes) { id } +} diff --git a/pkg/ui/web/src/grommet/fileInputTheme.tsx b/pkg/ui/web/src/grommet/fileInputTheme.tsx new file mode 100644 index 00000000..d36c647c --- /dev/null +++ b/pkg/ui/web/src/grommet/fileInputTheme.tsx @@ -0,0 +1,56 @@ +import { CloseIcon } from '@pluralsh/design-system' + +export const fileInputTheme = ({ + selected = false, error = false, theme, +}: { + selected?: boolean; + error?: boolean; + theme: any; +}) => ({ + fileInput: { + message: { + size: 'small', + }, + hover: { + border: { + color: error + ? theme.colors['border-error'] + : selected + ? theme.colors['border-success'] + : theme.colors['border-input'], + }, + background: { + color: theme.colors['fill-one-hover'], + opacity: 1, + }, + }, + dragOver: { + border: { + color: theme.colors['border-outline-focused'], + }, + background: { + color: theme.colors['fill-one-hover'], + opacity: 1, + }, + }, + background: { + color: theme.colors['fill-one'], + opacity: 1, + }, + round: { + size: `${theme.borderRadiuses.medium}px`, + }, + border: { + size: `${theme.borderWidths.default}px`, + opacity: false, + color: error + ? theme.colors['border-error'] + : selected + ? theme.colors['border-success'] + : theme.colors['border-input'], + }, + icons: { + remove: CloseIcon, + }, + }, +}) diff --git a/pkg/ui/web/src/hooks/useWails.ts b/pkg/ui/web/src/hooks/useWails.ts new file mode 100644 index 00000000..37196714 --- /dev/null +++ b/pkg/ui/web/src/hooks/useWails.ts @@ -0,0 +1,89 @@ +import { + Dispatch, + useCallback, + useEffect, + useState, +} from 'react' + +import { Binding, ClientBindingFactory } from '../services/wails' + +type Error = any // TODO: figure out the type + +interface QueryResponse { + data?: T + error: Error + loading: boolean + refetch: Dispatch +} + +type OperationVariables = Record; + +interface QueryOptions { + variables?: TVariables +} + +function useWailsQuery(binding: Binding, + options?: QueryOptions): QueryResponse { + const bindingFn = ClientBindingFactory(binding) + const [loading, setLoading] = useState(false) + const [data, setData] = useState() + const [error, setError] = useState() + + const fetch = useCallback(() => { + setLoading(true) + setError(undefined) + setData(undefined) + + bindingFn(options?.variables ?? {}).then(res => setData(res)) + .catch(err => setError(err)) + .finally(() => setLoading(false)) + }, [bindingFn, options?.variables]) + + const refetch = useCallback(() => { + if (loading) return + + fetch() + }, [fetch, loading]) + + useEffect(() => fetch(), [fetch]) + + return { + data, + loading, + error, + refetch, + } as QueryResponse +} + +interface UpdateReponse { + error: Error + loading: boolean + update: Dispatch + data?: T +} + +function useWailsUpdate(binding: Binding, + options?: QueryOptions): UpdateReponse { + const bindingFn = ClientBindingFactory(binding) + const [loading, setLoading] = useState(false) + const [data, setData] = useState() + const [error, setError] = useState() + + const update = useCallback(() => { + setLoading(true) + + bindingFn(options?.variables ?? {}) + .then(data => setData(data)) + .catch(err => setError(err)) + .finally(() => setLoading(false)) + }, [bindingFn, options?.variables]) + + return { + error, + loading, + update, + data, + } +} + +export { useWailsQuery, useWailsUpdate } diff --git a/pkg/ui/web/src/layout/Header.tsx b/pkg/ui/web/src/layout/Header.tsx new file mode 100644 index 00000000..6b7ba181 --- /dev/null +++ b/pkg/ui/web/src/layout/Header.tsx @@ -0,0 +1,45 @@ +import { Button, CloseIcon, PluralLogoFull } from '@pluralsh/design-system' +import React, { useCallback } from 'react' +import styled from 'styled-components' + +import { Close } from '../../wailsjs/go/ui/Window' + +const Header = styled(HeaderUnstyled)(({ theme }) => ({ + // Make window draggable via header + ...theme.partials.draggable, + + // Layout + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between', + + // Spacing + padding: `${theme.spacing.medium}px ${theme.spacing.large}px`, + + // Theming + background: theme.colors['fill-one'], + borderBottom: theme.borders.default, +})) + +function HeaderUnstyled({ ...props }): React.ReactElement { + const onClose = useCallback(Close, []) + + return ( +
    + + +
    + ) +} + +export default Header diff --git a/pkg/ui/web/src/main.tsx b/pkg/ui/web/src/main.tsx new file mode 100644 index 00000000..95bde501 --- /dev/null +++ b/pkg/ui/web/src/main.tsx @@ -0,0 +1,9 @@ +import React from 'react' +import { createRoot } from 'react-dom/client' + +import Plural from './Plural' + +const container = document.getElementById('root') +const root = createRoot(container!) + +root.render() diff --git a/pkg/ui/web/src/routes/installer/Application.tsx b/pkg/ui/web/src/routes/installer/Application.tsx new file mode 100644 index 00000000..6240e046 --- /dev/null +++ b/pkg/ui/web/src/routes/installer/Application.tsx @@ -0,0 +1,138 @@ +import { useQuery } from '@apollo/client' +import { Chip, WizardStep, useActive } from '@pluralsh/design-system' +import { Div, Span } from 'honorable' +import { + ReactElement, + useContext, + useEffect, + useMemo, + useState, +} from 'react' + +import Loader from '../../components/loader/Loader' +import { WailsContext } from '../../context/wails' +import { + GetRecipeDocument, + ListRecipesDocument, + Recipe, + RecipeEdge, +} from '../../graphql/generated/graphql' + +import { Configuration } from './Configuration' + +interface StepData { + id: string | undefined, + context: Record + oidc: boolean + skipped?: boolean, +} + +const toConfig = config => (config ? Object.keys(config) + .map(key => ({ [key]: { value: config[key], valid: true } })) + .reduce((acc, entry) => ({ ...acc, ...entry }), {}) : undefined) + +export function Application({ provider, ...props }: any): ReactElement { + const { active, setData } = useActive() + const { context: { configuration } } = useContext(WailsContext) + const [context, setContext] = useState>(active.data?.context || {}) + const [valid, setValid] = useState(true) + const [oidc, setOIDC] = useState(active.data?.oidc ?? true) + const { data: { recipes: { edges: recipeEdges } = { edges: undefined } } = {} } = useQuery(ListRecipesDocument, { + variables: { repositoryId: active.key }, + }) + + const { node: recipeBase } = recipeEdges?.find((recipe: RecipeEdge) => recipe!.node!.provider === provider) || { node: undefined } + const { data: recipe } = useQuery<{recipe: Recipe}>(GetRecipeDocument, { + variables: { id: recipeBase?.id }, + skip: !recipeBase, + }) + + const recipeContext = useMemo(() => toConfig(configuration?.[active.label!]), [active.label, configuration]) + const mergedContext = useMemo>(() => ({ ...recipeContext, ...context }), [recipeContext, context]) + const stepData = useMemo(() => ({ + ...active.data, ...{ id: recipe?.recipe.id }, ...{ context: mergedContext }, ...{ oidc }, + }), [active.data, recipe?.recipe.id, mergedContext, oidc]) + + useEffect(() => { + const valid = Object.values(context).every(({ valid }) => valid) + + setValid(valid) + }, [context, setValid]) + + // Update step data on change + useEffect(() => setData(stepData), [stepData, setData]) + + if (!recipe) { + return ( + + + + ) + } + + if (recipe.recipe?.restricted) { + return ( + +
    + Cannot install app + + This application has been marked restricted because it requires configuration, like ssh keys, that are only able to be securely configured locally. + +
    +
    + ) + } + + return ( + +
    + + configure {active.label} + + {active.isDependency && ( + Dependency + + )} +
    + +
    + ) +} diff --git a/pkg/ui/web/src/routes/installer/Configuration.tsx b/pkg/ui/web/src/routes/installer/Configuration.tsx new file mode 100644 index 00000000..2d1e6d9a --- /dev/null +++ b/pkg/ui/web/src/routes/installer/Configuration.tsx @@ -0,0 +1,111 @@ +import { + Dispatch, + ReactElement, + SetStateAction, + useCallback, + useEffect, + useMemo, +} from 'react' +import { Flex, Span, Switch } from 'honorable' +import { useActive, useNavigation } from '@pluralsh/design-system' + +import { + Datatype, + Maybe, + Operation as OperationType, + Recipe, + RecipeConfiguration, +} from '../../graphql/generated/graphql' + +import { ConfigurationItem } from './ConfigurationItem' + +const available = (config, context) => { + if (!config.condition) return true + + const { condition } = config + + switch (condition.operation) { + case OperationType.Not: + return !(context[condition.field]?.value) + case OperationType.Prefix: + return context[condition.field]?.value?.startsWith(condition.value) ?? false + case OperationType.Eq: + return context[condition.field]?.value + } + + return true +} + +interface ConfigurationProps { + recipe: Recipe, + context: Record + setContext: Dispatch>> + oidc?: boolean + setOIDC: Dispatch +} + +export function Configuration({ + recipe, context, setContext, oidc, setOIDC, +}: ConfigurationProps): ReactElement { + const { + active, completed, setCompleted, setData, + } = useActive>() + const { onNext } = useNavigation() + const sections = recipe.recipeSections + const configurations = sections!.filter(section => section!.repository!.name === active.label).map(section => section!.configuration).flat().filter(c => !!c) + const setValue = useCallback(( + fieldName, value, valid = true, type = Datatype.String + ) => setContext(context => ({ ...context, ...{ [fieldName]: { value, valid, type } } })), [setContext]) + const hiddenConfigurations = useMemo(() => configurations.filter(conf => !available(conf, context)), [configurations, context]) + + useEffect(() => { + hiddenConfigurations.forEach(conf => { + setContext(context => ({ ...context, ...{ [conf!.name!]: { value: context[conf!.name!]?.value, valid: true, type: Datatype.String } } })) + }) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [hiddenConfigurations.length, setContext]) + + useEffect(() => { + if (configurations.length === 0 && !completed && active.data?.id) setCompleted(true) + }, [configurations.length, completed, active.data?.id, setCompleted]) + + useEffect(() => { + if (configurations.length === 0 && !active.data?.skipped && completed) { + setData({ ...active.data, ...{ skipped: true } }) + onNext() + } + }, [active.data, completed, configurations.length, onNext, setData]) + + return ( + + {configurations.filter(conf => available(conf, context)).map((conf?: Maybe) => ( + + ))} + {configurations?.length === 0 && ( + Nothing needs doing here! You can continue. + + )} + {recipe.oidcEnabled && ( +
    + setOIDC(checked)} + >Enable OIDC + +
    + )} +
    + ) +} diff --git a/pkg/ui/web/src/routes/installer/ConfigurationFileInput.tsx b/pkg/ui/web/src/routes/installer/ConfigurationFileInput.tsx new file mode 100644 index 00000000..ac3948ac --- /dev/null +++ b/pkg/ui/web/src/routes/installer/ConfigurationFileInput.tsx @@ -0,0 +1,51 @@ +import { ComponentProps, useCallback, useState } from 'react' +import { Span } from 'honorable' +import { FileInput, ThemeContext } from 'grommet' +import { useTheme } from 'styled-components' + +import { fileInputTheme } from '../../grommet/fileInputTheme' + +export default function ConfigurationFileInput({ + value, + onChange, ...props +}: { onChange: (f:{file: File | null, text: string}) => void; value: string } & Omit< + ComponentProps, 'onChange' +>) { + const [fileSelected, setFileSelected] = useState(!!value) + const theme = useTheme() + + const readFile = useCallback(async (files: FileList | undefined | null) => { + setFileSelected(false) + + const file = files?.item(0) ?? null + const text = await file?.text() ?? '' + + setFileSelected(!!file) + onChange({ text, file }) + }, + [onChange]) + + const messages = value ? { dropPrompt: '********', browse: 'Choose a different file' } : { + dropPrompt: 'Drop your file here', + browse: 'Select file', + } + + return ( + + readFile(event?.target?.files)} + renderFile={file => ( + + {file.name} + + )} + {...props} + /> + + ) +} diff --git a/pkg/ui/web/src/routes/installer/ConfigurationItem.tsx b/pkg/ui/web/src/routes/installer/ConfigurationItem.tsx new file mode 100644 index 00000000..1397cfc4 --- /dev/null +++ b/pkg/ui/web/src/routes/installer/ConfigurationItem.tsx @@ -0,0 +1,183 @@ +import { FormField, Input } from '@pluralsh/design-system' +import { Switch } from 'honorable' +import StartCase from 'lodash/startCase' +import { + useContext, + useEffect, + useMemo, + useState, +} from 'react' + +import { WailsContext } from '../../context/wails' +import { Datatype } from '../../graphql/generated/graphql' +import { PluralProject } from '../../types/client' + +import ConfigurationFileInput from './ConfigurationFileInput' + +type ModifierFunction = (value: string, trim?: boolean) => string + +const modifierFactory = (type: Datatype, project: PluralProject): ModifierFunction => { + switch (type) { + case Datatype.String: + case Datatype.Int: + case Datatype.Password: + return stringModifier + case Datatype.Bucket: + return bucketModifier.bind({ project }) + case Datatype.Domain: + return domainModifier.bind({ project }) + } + + return stringModifier +} + +const stringModifier = value => value + +function bucketModifier(this: {project: PluralProject}, value: string, trim = false) { + const { project } = this + const bucketPrefix = project?.bucketPrefix + const cluster = project?.cluster + const prefix = `${bucketPrefix}-${cluster}-` + + if (trim) return value?.replace(prefix, '') + + return bucketPrefix && cluster ? `${prefix}${value}` : value +} +function domainModifier(this: {project: PluralProject}, value: string, trim = false) { + const { project } = this + const subdomain = project?.network?.subdomain || '' + const suffix = subdomain ? `.${subdomain}` : '' + + if (trim) return value?.replace(suffix, '') + + return subdomain ? `${value}${suffix}` : value +} + +const createValidator = (regex: RegExp, optional: boolean, error: string) => (value): {valid: boolean, message: string} => ({ + valid: (value ? regex.test(value) : optional), + message: error, +}) + +function ConfigurationField({ + config, ctx, setValue, +}) { + const { + name, + default: defaultValue, + placeholder, + documentation, + validation, + optional, + type, + } = config + const { project } = useContext(WailsContext) + + const value = useMemo(() => ctx[name]?.value, [ctx, name]) + const validator = useMemo(() => createValidator(new RegExp(validation?.regex ? `^${validation?.regex}$` : /.*/), + config.optional, + validation?.message), + [config.optional, validation?.message, validation?.regex]) + const { valid, message } = useMemo(() => validator(value), [validator, value]) + const modifier = useMemo(() => modifierFactory(config.type, project), + [config.type, project]) + + const isFile = type === Datatype.File + + const [local, setLocal] = useState(modifier(value, true) || (isFile ? null : defaultValue)) + + useEffect(() => (local + ? setValue( + name, modifier(local), valid, type + ) + : setValue( + name, local, valid, type + )), + [local, modifier, name, setValue, type, valid]) + + const isInt = type === Datatype.Int + const isPassword + = type === Datatype.Password + || ['private_key', 'public_key'].includes(config.name) + + const inputFieldType = isInt + ? 'number' + : isPassword + ? 'password' + : 'text' + + return ( + + {isFile ? ( + { + setLocal(val?.text ?? '') + }} + /> + ) : ( + setLocal(value)} + /> + )} + + ) +} + +function BoolConfiguration({ config: { name, default: def }, ctx, setValue }) { + const value: boolean = `${ctx[name]?.value}`.toLowerCase() === 'true' + + useEffect(() => { + if (value === undefined && def) { + setValue(name, def) + } + }, [value, def, name, setValue]) + + return ( + setValue(name, checked)} + > + {StartCase(name)} + + ) +} + +export function ConfigurationItem({ config, ctx, setValue }) { + switch (config.type) { + case Datatype.Bool: + return ( + + ) + default: + return ( + + ) + } +} diff --git a/pkg/ui/web/src/routes/installer/Installer.tsx b/pkg/ui/web/src/routes/installer/Installer.tsx new file mode 100644 index 00000000..28147984 --- /dev/null +++ b/pkg/ui/web/src/routes/installer/Installer.tsx @@ -0,0 +1,113 @@ +import { ApolloError, useApolloClient, useQuery } from '@apollo/client' +import { + GraphQLToast, + Wizard, + WizardNavigation, + WizardStepConfig, + WizardStepper, +} from '@pluralsh/design-system' +import React, { + useCallback, + useContext, + useEffect, + useMemo, + useState, +} from 'react' +import { useNavigate } from 'react-router-dom' +import styled from 'styled-components' + +import Loader from '../../components/loader/Loader' +import { WailsContext } from '../../context/wails' +import { ListRepositoriesDocument, ListRepositoriesQueryVariables, RootQueryType } from '../../graphql/generated/graphql' +import { Routes } from '../routes' + +import { buildSteps, install, toDefaultSteps } from './helpers' + +const FILTERED_APPS = ['bootstrap', 'ingress-nginx', 'postgres'] +const FORCED_APPS = { + console: 'The Plural Console will allow you to monitor, upgrade, and deploy applications easily from one centralized place.', +} + +const Installer = styled(InstallerUnstyled)(() => ({ + height: '100%', +})) + +function InstallerUnstyled({ ...props }): React.ReactElement { + const navigate = useNavigate() + const client = useApolloClient() + const { project: { provider } } = useContext(WailsContext) + + const [stepsLoading, setStepsLoading] = useState(false) + const [steps, setSteps] = useState>() + const [error, setError] = useState() + const [defaultSteps, setDefaultSteps] = useState>([]) + + const { data: connection } = useQuery, ListRepositoriesQueryVariables>(ListRepositoriesDocument, { + variables: { + installed: false, + provider, + }, + fetchPolicy: 'network-only', + }) + + const applications = useMemo(() => connection + ?.repositories + ?.edges + ?.map(repo => repo!.node) + .filter(app => ((!app?.private ?? true)) && !FILTERED_APPS.includes(app!.name)), [connection?.repositories?.edges]) + + const onInstall = useCallback((payload: Array) => { + setStepsLoading(true) + + install(client, payload) + .then(() => navigate(Routes.Next)) + .catch(err => setError(err)) + .finally(() => setStepsLoading(false)) + }, [client, navigate]) + + const onSelect = useCallback((selectedApplications: Array) => { + const build = async () => { + const steps = await buildSteps(client, provider!, selectedApplications) + + setSteps(steps) + } + + setStepsLoading(true) + build().finally(() => setStepsLoading(false)) + }, [client, provider]) + + useEffect(() => setDefaultSteps(toDefaultSteps(applications, provider!, { ...FORCED_APPS })), [applications?.length, provider]) + + if (!applications || defaultSteps.length === 0) { + return + } + + return ( +
    + + {{ + stepper: , + navigation: , + }} + + + {error && ( + setError(undefined)} + margin="medium" + closeTimeout={20000} + /> + )} +
    + ) +} + +export default Installer diff --git a/pkg/ui/web/src/routes/installer/helpers.tsx b/pkg/ui/web/src/routes/installer/helpers.tsx new file mode 100644 index 00000000..425f2108 --- /dev/null +++ b/pkg/ui/web/src/routes/installer/helpers.tsx @@ -0,0 +1,121 @@ +import { ApolloClient } from '@apollo/client' + +import { + AppsIcon, + InstallIcon, + WizardInstaller, + WizardPicker, + WizardStepConfig, +} from '@pluralsh/design-system' + +import { + Datatype, + GetRecipeDocument, + ListRecipesDocument, + Provider, + Recipe, + RecipeSection, + RootQueryType, +} from '../../graphql/generated/graphql' +import { Binding, ClientBindingFactory } from '../../services/wails' + +import { Application } from './Application' + +const toPickerItems = (applications: Array, provider: Provider, forcedApps: any): Array => applications?.map(app => ({ + key: app.id, + label: app.name, + imageUrl: app.icon, + node: , + isRequired: Object.keys(forcedApps).includes(app.name), + tooltip: forcedApps[app.name], +})) || [] + +const toDefaultSteps = (applications: any, provider: Provider, forcedApps: any): Array => [{ + key: 'apps', + label: 'Apps', + Icon: AppsIcon, + node: , + isDefault: true, +}, +{ + key: 'placeholder', + isPlaceholder: true, +}, +{ + key: 'install', + label: 'Install', + Icon: InstallIcon, + node: , + isDefault: true, +}] + +const toDependencySteps = (applications: {section: RecipeSection, dependencyOf: Set}[], provider: Provider): Array => [...applications.map(app => ({ + key: app.section.repository!.id, + label: app.section.repository!.name, + imageUrl: app.section.repository!.icon!, + node: , + isDependency: true, + dependencyOf: app.dependencyOf, +}))] + +const buildSteps = async (client: ApolloClient, provider: Provider, selectedApplications: Array) => { + const dependencyMap = new Map}>() + + for (const app of selectedApplications) { + const { data: { recipes } = {} } = await client.query>({ + query: ListRecipesDocument, + variables: { repositoryId: app.key }, + }) + + const { node: recipeBase } = recipes?.edges?.find(edge => edge!.node!.provider === provider) || { node: undefined } + + if (!recipeBase) continue + + const { data: recipe } = await client.query<{recipe: Recipe}>({ + query: GetRecipeDocument, + variables: { id: recipeBase?.id }, + }) + + const sections = recipe.recipe.recipeSections!.filter(section => section!.repository!.name !== app.label) + + sections.forEach(section => { + if (selectedApplications.find(app => app.key === section!.repository!.id)) return + + if (!dependencyMap.has(section!.repository!.name)) { + dependencyMap.set(section!.repository!.name, { section: section!, dependencyOf: new Set([app.label!]) }) + + return + } + + const dep = dependencyMap.get(section!.repository!.name)! + const dependencyOf: Array = [...Array.from(dep.dependencyOf.values()), app.label!] + + dependencyMap.set(section!.repository!.name, { section: section!, dependencyOf: new Set(dependencyOf) }) + }) + } + + return toDependencySteps(Array.from(dependencyMap.values()), provider) +} + +const install = async (client: ApolloClient, apps: Array>) => { + const toAPIContext = context => ({ ...Object.keys(context || {}).reduce((acc, key) => ({ ...acc, [key]: context[key].value }), {}) }) + const toDataTypeValues = (context, datatype) => Object.keys(context || {}).reduce((acc: Array, key) => (context[key].type === datatype ? [...acc, context[key].value] : [...acc]), []) + const install = ClientBindingFactory(Binding.Install) + const domains = apps.reduce((acc: Array, app) => [...acc, ...toDataTypeValues(app.data?.context || {}, Datatype.Domain)], []) + const buckets = apps.reduce((acc: Array, app) => [...acc, ...toDataTypeValues(app.data?.context || {}, Datatype.Bucket)], []) + + // Filter out some form validation fields from context + apps = apps.map(app => ({ ...app, data: { ...app.data, context: toAPIContext(app.data.context ?? {}) } })) + + return install(apps.map(app => ({ ...app, dependencyOf: Array.from(app.dependencyOf ?? []) })), domains, buckets) +} + +export { + toDependencySteps, toDefaultSteps, buildSteps, toPickerItems, install, +} diff --git a/pkg/ui/web/src/routes/installer/route.tsx b/pkg/ui/web/src/routes/installer/route.tsx new file mode 100644 index 00000000..e94d78a0 --- /dev/null +++ b/pkg/ui/web/src/routes/installer/route.tsx @@ -0,0 +1,12 @@ +import React from 'react' +import { DataRouteObject } from 'react-router-dom' + +const Installer = React.lazy(() => import('./Installer')) + +const route: DataRouteObject = { + id: 'installer', + index: true, + element: , +} + +export { route as installerRoute } diff --git a/pkg/ui/web/src/routes/nextsteps/NextSteps.tsx b/pkg/ui/web/src/routes/nextsteps/NextSteps.tsx new file mode 100644 index 00000000..9e263c36 --- /dev/null +++ b/pkg/ui/web/src/routes/nextsteps/NextSteps.tsx @@ -0,0 +1,87 @@ +import { Button, Codeline } from '@pluralsh/design-system' +import React, { useCallback } from 'react' +import { useNavigate } from 'react-router-dom' +import styled from 'styled-components' + +import { Close, SetClipboard } from '../../../wailsjs/go/ui/Window' +import { Routes } from '../routes' + +const NextSteps = styled(NextStepsUnstyled)(({ theme }) => ({ + height: '100%', + display: 'flex', + flexDirection: 'column', + justifyContent: 'center', + gap: theme.spacing.medium, + + '.title': { + ...theme.partials.text.title2, + + display: 'flex', + flexDirection: 'column', + alignSelf: 'center', + alignItems: 'center', + textAlign: 'center', + paddingBottom: theme.spacing.xxxlarge, + }, + + '.description': { + ...theme.partials.text.body1, + + alignSelf: 'center', + }, + + '.codeline': { + ...theme.partials.text.body2, + + paddingTop: theme.spacing.xxlarge, + }, + + '.actions': { + display: 'flex', + justifyContent: 'space-between', + paddingTop: theme.spacing.xlarge, + }, +})) + +function NextStepsUnstyled({ ...props }): React.ReactElement { + const onClose = useCallback(Close, []) + const onCopy = useCallback((text: string) => SetClipboard(text), []) + const navigate = useNavigate() + + return ( +
    + + Almost done! + Follow the next steps to complete your installations. + + + Copy and run below command to build your applications: + plural build + + + Copy and run below command to deploy your applications: + plural deploy --commit "Installed few apps with Plural" + + +
    + + +
    +
    + ) +} + +export default NextSteps diff --git a/pkg/ui/web/src/routes/nextsteps/route.tsx b/pkg/ui/web/src/routes/nextsteps/route.tsx new file mode 100644 index 00000000..48236b8f --- /dev/null +++ b/pkg/ui/web/src/routes/nextsteps/route.tsx @@ -0,0 +1,14 @@ +import React from 'react' +import { DataRouteObject } from 'react-router-dom' + +import { Routes } from '../routes' + +const NextSteps = React.lazy(() => import('./NextSteps')) + +const route: DataRouteObject = { + id: 'next', + path: Routes.Next, + element: , +} + +export { route as nextStepsRoute } diff --git a/pkg/ui/web/src/routes/root.tsx b/pkg/ui/web/src/routes/root.tsx new file mode 100644 index 00000000..dd818656 --- /dev/null +++ b/pkg/ui/web/src/routes/root.tsx @@ -0,0 +1,51 @@ +import { ApolloProvider } from '@apollo/client' +import { LoadingSpinner } from '@pluralsh/design-system' +import React, { Suspense, useContext, useMemo } from 'react' +import { + DataRouteObject, + Outlet, + RouteObject, + useNavigate, +} from 'react-router-dom' +import styled from 'styled-components' + +import { WailsContext } from '../context/wails' +import Header from '../layout/Header' +import { newApolloClient } from '../services/apollo' + +import { Routes } from './routes' + +const Root = styled(RootUnstyled)(({ theme }) => ({ + display: 'flex', + flexDirection: 'column' as const, + height: '100%', + overflow: 'hidden', + + '.content': { + padding: theme.spacing.xxlarge, + flexGrow: 1, + overflowY: 'auto', + }, +})) + +function RootUnstyled({ ...props }): React.ReactElement { + const { token } = useContext(WailsContext) + const client = useMemo(() => newApolloClient(token), [token]) + + return ( +
    + +
    +
    + +
    + ) +} + +const route = (children: Array): RouteObject => ({ + path: Routes.Root, + element: }>, + children, +}) + +export { route as createRootRoute } diff --git a/pkg/ui/web/src/routes/router.tsx b/pkg/ui/web/src/routes/router.tsx new file mode 100644 index 00000000..b0f47bd6 --- /dev/null +++ b/pkg/ui/web/src/routes/router.tsx @@ -0,0 +1,15 @@ +import { createHashRouter } from 'react-router-dom' + +import { installerRoute } from './installer/route' +import { nextStepsRoute } from './nextsteps/route' + +import { createRootRoute } from './root' + +const router = createHashRouter([ + createRootRoute([ + installerRoute, + nextStepsRoute, + ]), +]) + +export { router } diff --git a/pkg/ui/web/src/routes/routes.ts b/pkg/ui/web/src/routes/routes.ts new file mode 100644 index 00000000..fe9825e2 --- /dev/null +++ b/pkg/ui/web/src/routes/routes.ts @@ -0,0 +1,6 @@ +enum Routes { + Root = '/', + Next = 'next', +} + +export { Routes } diff --git a/pkg/ui/web/src/services/apollo.ts b/pkg/ui/web/src/services/apollo.ts new file mode 100644 index 00000000..6159c00a --- /dev/null +++ b/pkg/ui/web/src/services/apollo.ts @@ -0,0 +1,46 @@ +import { create } from '@absinthe/socket' +import { createAbsintheSocketLink } from '@absinthe/socket-apollo-link' +import { + ApolloClient, + ApolloLink, + HttpLink, + InMemoryCache, + NormalizedCacheObject, +} from '@apollo/client' +import { setContext } from '@apollo/client/link/context' +import { RetryLink } from '@apollo/client/link/retry' +import { Socket as PhoenixSocket } from 'phoenix' + +const API_HOST = 'app.plural.sh' +const GQL_URL = `https://${API_HOST}/gql` +const WS_URI = `wss://${API_HOST}/socket` + +// const splitLink = split(({ query }) => { +// const definition = getMainDefinition(query) +// +// return ( +// definition.kind === 'OperationDefinition' +// && definition.operation === 'subscription' +// ) +// }, +// socketLink, +// retryLink.concat(resetToken).concat(httpLink),) + +export function newApolloClient(token: string): ApolloClient { + const authLink = setContext(() => ({ headers: token ? { authorization: `Bearer ${token}` } : {} })) + const httpLink = new HttpLink({ uri: GQL_URL }) + const absintheSocket = create(new PhoenixSocket(WS_URI, { params: () => (token ? { Authorization: `Bearer ${token}` } : {}) })) + const socketLink = createAbsintheSocketLink(absintheSocket) + const retryLink = new RetryLink({ + delay: { initial: 200 }, + attempts: { + max: Infinity, + retryIf: error => !!error, + }, + }) + + return new ApolloClient({ + link: ApolloLink.from([authLink, httpLink]), + cache: new InMemoryCache(), + }) +} diff --git a/pkg/ui/web/src/services/wails.ts b/pkg/ui/web/src/services/wails.ts new file mode 100644 index 00000000..d8d273bb --- /dev/null +++ b/pkg/ui/web/src/services/wails.ts @@ -0,0 +1,59 @@ +import { WizardStepConfig } from '@pluralsh/design-system' + +import { ui } from '../../wailsjs/go/models' +import { + Context, + Install, + Project, + Token, +} from '../../wailsjs/go/ui/Client' +import { SetClipboard } from '../../wailsjs/go/ui/Window' +import { + Client, + ClientBinding, + PluralContext, + PluralProject, +} from '../types/client' + +import Application = ui.Application; + +/** + * List of supported client methods based on API Go client. + * @see pkg/api/client.go + */ +enum Binding { + Token = 'Token', + Project = 'Project', + Context = 'Context', + Install = 'Install', + SetClipboard = 'SetClipboard', +} + +/** + * Client mapping from defined bindings to exposed Go backend methods. + * Abstracts the backend calls and wraps them with proper return types + * to simplify usage in the UI. + * @see Binding + */ +const Plural: Client = { + [Binding.Token]: (): Promise => Token(), + [Binding.Project]: (): Promise => Project() as Promise, + [Binding.Context]: (): Promise => Context() as Promise, + [Binding.Install]: (apps: Array, domains: Array, buckets: Array): Promise => Install(apps as Array, domains, buckets) as Promise, + [Binding.SetClipboard]: (text: string): Promise => SetClipboard(text), +} + +/** + * Factory that simplifies getting wrapped client binding methods. + * @param binding + * @constructor + */ +function ClientBindingFactory(binding: Binding): ClientBinding { + const bindingFn: ClientBinding = Plural[binding] as ClientBinding + + if (!bindingFn) throw new Error(`Unsupported client endpoint: ${binding}`) + + return bindingFn +} + +export { ClientBindingFactory, Binding } diff --git a/pkg/ui/web/src/styled/fonts.ts b/pkg/ui/web/src/styled/fonts.ts new file mode 100644 index 00000000..f0ab91ff --- /dev/null +++ b/pkg/ui/web/src/styled/fonts.ts @@ -0,0 +1,87 @@ +import { createGlobalStyle } from 'styled-components' + +// language=SCSS +const FontStyles = createGlobalStyle(() => ` + @font-face { + font-family: 'Monument'; + src: url("/fonts/monument-regular.otf") format("opentype"); + font-weight: 400; + } + + @font-face { + font-family: 'Monument'; + src: url("/fonts/monument-medium.woff") format("woff"); + font-weight: 450; + } + + @font-face { + font-family: 'Monument'; + src: url("/fonts/monument-medium.woff") format("woff"); + font-weight: 500; + } + + @font-face { + font-family: 'Monument'; + src: url("/fonts/monument-bold.woff") format("woff"); + font-weight: 500; + } + + @font-face { + font-family: 'Monument'; + src: url("/fonts/monument-regular-italic.woff") format("woff"); + font-weight: 400; + font-style: italic; + } + + @font-face { + font-family: 'Monument'; + src: url("/fonts/monument-medium-italic.woff") format("woff"); + font-weight: 500; + font-style: italic; + } + + @font-face { + font-family: 'Monument'; + src: url("/fonts/monument-bold-italic.woff") format("woff"); + font-weight: 600; + font-style: italic; + } + + @font-face { + font-family: 'Monument Semi-Mono'; + src: url("/fonts/ABCMonumentGroteskSemi-Mono-Regular.woff") format("woff"); + font-weight: 400; + } + + @font-face { + font-family: 'Monument Semi-Mono'; + src: url("/fonts/ABCMonumentGroteskSemi-Mono-Medium.woff") format("woff"); + font-weight: 500; + } + + @font-face { + font-family: 'Monument Semi-Mono'; + src: url("/fonts/ABCMonumentGroteskSemi-Mono-Heavy.woff") format("woff"); + font-weight: 600; + } + + @font-face { + font-family: 'Monument Mono'; + src: url("/fonts/ABCMonumentGroteskMono-Regular.woff") format("woff"); + font-weight: 400; + } + + @font-face { + font-family: 'Monument Mono'; + src: url("/fonts/ABCMonumentGroteskMono-Medium.woff") format("woff"); + font-weight: 500; + } + + @font-face { + font-family: 'Monument Mono'; + src: url("/fonts/ABCMonumentGroteskMono-Heavy.woff") format("woff"); + font-weight: 600; + } +`) + +export { FontStyles } diff --git a/pkg/ui/web/src/styled/global.ts b/pkg/ui/web/src/styled/global.ts new file mode 100644 index 00000000..5f2d90f9 --- /dev/null +++ b/pkg/ui/web/src/styled/global.ts @@ -0,0 +1,22 @@ +import { createGlobalStyle } from 'styled-components' + +// language=SCSS +const GlobalStyles = createGlobalStyle(({ theme }) => ` + html, body, #root { + // Layout + height: 100vh; + padding: 0; + margin: 0; + + // Fonts + font-size: 14px; + font-family: Inter, Helvetica, Arial, "sans-serif"; + line-height: 20px; + + // Theming + background: ${theme.colors['fill-zero']}; + color: ${theme.colors.text}; + } +`) + +export { GlobalStyles } diff --git a/pkg/ui/web/src/styled/scrollbar.ts b/pkg/ui/web/src/styled/scrollbar.ts new file mode 100644 index 00000000..95f4c5ef --- /dev/null +++ b/pkg/ui/web/src/styled/scrollbar.ts @@ -0,0 +1,5 @@ +import { createGlobalStyle } from 'styled-components' + +const ScrollbarStyles = createGlobalStyle(({ theme }) => theme.partials.scrollBar({ fillLevel: 0 })) + +export { ScrollbarStyles } diff --git a/pkg/ui/web/src/styled/theme.ts b/pkg/ui/web/src/styled/theme.ts new file mode 100644 index 00000000..d0ef4f2a --- /dev/null +++ b/pkg/ui/web/src/styled/theme.ts @@ -0,0 +1,11 @@ +import { styledTheme } from '@pluralsh/design-system' + +const theme = { + ...styledTheme, + partials: { + ...styledTheme.partials, + draggable: { '--wails-draggable': 'drag' }, + }, +} + +export { theme } diff --git a/pkg/ui/web/src/types/client.d.ts b/pkg/ui/web/src/types/client.d.ts new file mode 100644 index 00000000..bfdc8f04 --- /dev/null +++ b/pkg/ui/web/src/types/client.d.ts @@ -0,0 +1,31 @@ +import { Provider } from '../graphql/generated/graphql' +import { Binding } from '../services/client' + +type ClientBinding = (...args: any) => Promise +type Client = {[key in Binding]: ClientBinding} + +interface NetworkConfig { + subdomain: string + pluralDns: bool +} + +interface PluralProject { + cluster: string + bucket: string + project: string + provider: Provider + region: string + bucketPrefix: string + network: NetworkConfig + context: Map +} + +interface PluralContext { + buckets: Array + domains: Array + configuration: Record> +} + +export type { + Client, ClientBinding, PluralProject, PluralContext, +} diff --git a/pkg/ui/web/src/types/styled.d.ts b/pkg/ui/web/src/types/styled.d.ts new file mode 100644 index 00000000..fe94d823 --- /dev/null +++ b/pkg/ui/web/src/types/styled.d.ts @@ -0,0 +1,13 @@ +// import original module declarations +import 'styled-components' +import { theme } from '../styled/theme' + +import { DEFAULT_THEME } from '../theme' + +type StyledTheme = typeof theme & typeof DEFAULT_THEME + +// and extend them! +declare module 'styled-components' { + // eslint-disable-next-line @typescript-eslint/no-empty-interface + export interface DefaultTheme extends StyledTheme {} +} diff --git a/pkg/ui/web/src/vite-env.d.ts b/pkg/ui/web/src/vite-env.d.ts new file mode 100644 index 00000000..11f02fe2 --- /dev/null +++ b/pkg/ui/web/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/pkg/ui/web/style.css b/pkg/ui/web/style.css new file mode 100644 index 00000000..061c2db8 --- /dev/null +++ b/pkg/ui/web/style.css @@ -0,0 +1,3 @@ +html, body { + width: 100vh; +} \ No newline at end of file diff --git a/pkg/ui/web/tsconfig.json b/pkg/ui/web/tsconfig.json new file mode 100644 index 00000000..49e6a537 --- /dev/null +++ b/pkg/ui/web/tsconfig.json @@ -0,0 +1,32 @@ +{ + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "lib": [ + "DOM", + "DOM.Iterable", + "ESNext" + ], + "allowJs": false, + "skipLibCheck": true, + "esModuleInterop": false, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "ESNext", + "moduleResolution": "Node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + "noImplicitAny": false + }, + "include": [ + "src" + ], + "references": [ + { + "path": "./tsconfig.node.json" + } + ] +} diff --git a/pkg/ui/web/tsconfig.node.json b/pkg/ui/web/tsconfig.node.json new file mode 100644 index 00000000..b8afcc8f --- /dev/null +++ b/pkg/ui/web/tsconfig.node.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "allowSyntheticDefaultImports": true + }, + "include": [ + "vite.config.ts" + ] +} diff --git a/pkg/ui/web/vite.config.ts b/pkg/ui/web/vite.config.ts new file mode 100644 index 00000000..5a33944a --- /dev/null +++ b/pkg/ui/web/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +}) diff --git a/pkg/ui/web/wailsjs/go/models.ts b/pkg/ui/web/wailsjs/go/models.ts new file mode 100755 index 00000000..4119e4dc --- /dev/null +++ b/pkg/ui/web/wailsjs/go/models.ts @@ -0,0 +1,77 @@ +export namespace manifest { + + export class Context { + protect?: string[]; + // Go type: Globals + globals?: any; + + static createFrom(source: any = {}) { + return new Context(source); + } + + constructor(source: any = {}) { + if ('string' === typeof source) source = JSON.parse(source); + this.protect = source["protect"]; + this.globals = this.convertValues(source["globals"], null); + } + + convertValues(a: any, classs: any, asMap: boolean = false): any { + if (!a) { + return a; + } + if (a.slice) { + return (a as any[]).map(elem => this.convertValues(elem, classs)); + } else if ("object" === typeof a) { + if (asMap) { + for (const key of Object.keys(a)) { + a[key] = new classs(a[key]); + } + return a; + } + return new classs(a); + } + return a; + } + } + export class NetworkConfig { + subdomain: string; + pluralDns: boolean; + + static createFrom(source: any = {}) { + return new NetworkConfig(source); + } + + constructor(source: any = {}) { + if ('string' === typeof source) source = JSON.parse(source); + this.subdomain = source["subdomain"]; + this.pluralDns = source["pluralDns"]; + } + } + +} + +export namespace ui { + + export class Application { + key: string; + label: string; + isDependency: boolean; + dependencyOf: {[key: string]: any}; + data: {[key: string]: any}; + + static createFrom(source: any = {}) { + return new Application(source); + } + + constructor(source: any = {}) { + if ('string' === typeof source) source = JSON.parse(source); + this.key = source["key"]; + this.label = source["label"]; + this.isDependency = source["isDependency"]; + this.dependencyOf = source["dependencyOf"]; + this.data = source["data"]; + } + } + +} + diff --git a/pkg/ui/web/wailsjs/go/ui/Client.d.ts b/pkg/ui/web/wailsjs/go/ui/Client.d.ts new file mode 100755 index 00000000..90dacd19 --- /dev/null +++ b/pkg/ui/web/wailsjs/go/ui/Client.d.ts @@ -0,0 +1,11 @@ +// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL +// This file is automatically generated. DO NOT EDIT +import {ui} from '../models'; + +export function Context():Promise; + +export function Install(arg1:Array,arg2:Array,arg3:Array):Promise; + +export function Project():Promise; + +export function Token():Promise; diff --git a/pkg/ui/web/wailsjs/go/ui/Client.js b/pkg/ui/web/wailsjs/go/ui/Client.js new file mode 100755 index 00000000..88c3440e --- /dev/null +++ b/pkg/ui/web/wailsjs/go/ui/Client.js @@ -0,0 +1,19 @@ +// @ts-check +// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL +// This file is automatically generated. DO NOT EDIT + +export function Context() { + return window['go']['ui']['Client']['Context'](); +} + +export function Install(arg1, arg2, arg3) { + return window['go']['ui']['Client']['Install'](arg1, arg2, arg3); +} + +export function Project() { + return window['go']['ui']['Client']['Project'](); +} + +export function Token() { + return window['go']['ui']['Client']['Token'](); +} diff --git a/pkg/ui/web/wailsjs/go/ui/Window.d.ts b/pkg/ui/web/wailsjs/go/ui/Window.d.ts new file mode 100755 index 00000000..ec70ec46 --- /dev/null +++ b/pkg/ui/web/wailsjs/go/ui/Window.d.ts @@ -0,0 +1,6 @@ +// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL +// This file is automatically generated. DO NOT EDIT + +export function Close():Promise; + +export function SetClipboard(arg1:string):Promise; diff --git a/pkg/ui/web/wailsjs/go/ui/Window.js b/pkg/ui/web/wailsjs/go/ui/Window.js new file mode 100755 index 00000000..8b1baf3b --- /dev/null +++ b/pkg/ui/web/wailsjs/go/ui/Window.js @@ -0,0 +1,11 @@ +// @ts-check +// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL +// This file is automatically generated. DO NOT EDIT + +export function Close() { + return window['go']['ui']['Window']['Close'](); +} + +export function SetClipboard(arg1) { + return window['go']['ui']['Window']['SetClipboard'](arg1); +} diff --git a/pkg/ui/web/wailsjs/runtime/package.json b/pkg/ui/web/wailsjs/runtime/package.json new file mode 100755 index 00000000..1e7c8a5d --- /dev/null +++ b/pkg/ui/web/wailsjs/runtime/package.json @@ -0,0 +1,24 @@ +{ + "name": "@wailsapp/runtime", + "version": "2.0.0", + "description": "Wails Javascript runtime library", + "main": "runtime.js", + "types": "runtime.d.ts", + "scripts": { + }, + "repository": { + "type": "git", + "url": "git+https://github.com/wailsapp/wails.git" + }, + "keywords": [ + "Wails", + "Javascript", + "Go" + ], + "author": "Lea Anthony ", + "license": "MIT", + "bugs": { + "url": "https://github.com/wailsapp/wails/issues" + }, + "homepage": "https://github.com/wailsapp/wails#readme" +} diff --git a/pkg/ui/web/wailsjs/runtime/runtime.d.ts b/pkg/ui/web/wailsjs/runtime/runtime.d.ts new file mode 100755 index 00000000..a3723f94 --- /dev/null +++ b/pkg/ui/web/wailsjs/runtime/runtime.d.ts @@ -0,0 +1,235 @@ +/* + _ __ _ __ +| | / /___ _(_) /____ +| | /| / / __ `/ / / ___/ +| |/ |/ / /_/ / / (__ ) +|__/|__/\__,_/_/_/____/ +The electron alternative for Go +(c) Lea Anthony 2019-present +*/ + +export interface Position { + x: number; + y: number; +} + +export interface Size { + w: number; + h: number; +} + +export interface Screen { + isCurrent: boolean; + isPrimary: boolean; + width : number + height : number +} + +// Environment information such as platform, buildtype, ... +export interface EnvironmentInfo { + buildType: string; + platform: string; + arch: string; +} + +// [EventsEmit](https://wails.io/docs/reference/runtime/events#eventsemit) +// emits the given event. Optional data may be passed with the event. +// This will trigger any event listeners. +export function EventsEmit(eventName: string, ...data: any): void; + +// [EventsOn](https://wails.io/docs/reference/runtime/events#eventson) sets up a listener for the given event name. +export function EventsOn(eventName: string, callback: (...data: any) => void): () => void; + +// [EventsOnMultiple](https://wails.io/docs/reference/runtime/events#eventsonmultiple) +// sets up a listener for the given event name, but will only trigger a given number times. +export function EventsOnMultiple(eventName: string, callback: (...data: any) => void, maxCallbacks: number): () => void; + +// [EventsOnce](https://wails.io/docs/reference/runtime/events#eventsonce) +// sets up a listener for the given event name, but will only trigger once. +export function EventsOnce(eventName: string, callback: (...data: any) => void): () => void; + +// [EventsOff](https://wails.io/docs/reference/runtime/events#eventsoff) +// unregisters the listener for the given event name. +export function EventsOff(eventName: string, ...additionalEventNames: string[]): void; + +// [EventsOffAll](https://wails.io/docs/reference/runtime/events#eventsoffall) +// unregisters all listeners. +export function EventsOffAll(): void; + +// [LogPrint](https://wails.io/docs/reference/runtime/log#logprint) +// logs the given message as a raw message +export function LogPrint(message: string): void; + +// [LogTrace](https://wails.io/docs/reference/runtime/log#logtrace) +// logs the given message at the `trace` log level. +export function LogTrace(message: string): void; + +// [LogDebug](https://wails.io/docs/reference/runtime/log#logdebug) +// logs the given message at the `debug` log level. +export function LogDebug(message: string): void; + +// [LogError](https://wails.io/docs/reference/runtime/log#logerror) +// logs the given message at the `error` log level. +export function LogError(message: string): void; + +// [LogFatal](https://wails.io/docs/reference/runtime/log#logfatal) +// logs the given message at the `fatal` log level. +// The application will quit after calling this method. +export function LogFatal(message: string): void; + +// [LogInfo](https://wails.io/docs/reference/runtime/log#loginfo) +// logs the given message at the `info` log level. +export function LogInfo(message: string): void; + +// [LogWarning](https://wails.io/docs/reference/runtime/log#logwarning) +// logs the given message at the `warning` log level. +export function LogWarning(message: string): void; + +// [WindowReload](https://wails.io/docs/reference/runtime/window#windowreload) +// Forces a reload by the main application as well as connected browsers. +export function WindowReload(): void; + +// [WindowReloadApp](https://wails.io/docs/reference/runtime/window#windowreloadapp) +// Reloads the application frontend. +export function WindowReloadApp(): void; + +// [WindowSetAlwaysOnTop](https://wails.io/docs/reference/runtime/window#windowsetalwaysontop) +// Sets the window AlwaysOnTop or not on top. +export function WindowSetAlwaysOnTop(b: boolean): void; + +// [WindowSetSystemDefaultTheme](https://wails.io/docs/next/reference/runtime/window#windowsetsystemdefaulttheme) +// *Windows only* +// Sets window theme to system default (dark/light). +export function WindowSetSystemDefaultTheme(): void; + +// [WindowSetLightTheme](https://wails.io/docs/next/reference/runtime/window#windowsetlighttheme) +// *Windows only* +// Sets window to light theme. +export function WindowSetLightTheme(): void; + +// [WindowSetDarkTheme](https://wails.io/docs/next/reference/runtime/window#windowsetdarktheme) +// *Windows only* +// Sets window to dark theme. +export function WindowSetDarkTheme(): void; + +// [WindowCenter](https://wails.io/docs/reference/runtime/window#windowcenter) +// Centers the window on the monitor the window is currently on. +export function WindowCenter(): void; + +// [WindowSetTitle](https://wails.io/docs/reference/runtime/window#windowsettitle) +// Sets the text in the window title bar. +export function WindowSetTitle(title: string): void; + +// [WindowFullscreen](https://wails.io/docs/reference/runtime/window#windowfullscreen) +// Makes the window full screen. +export function WindowFullscreen(): void; + +// [WindowUnfullscreen](https://wails.io/docs/reference/runtime/window#windowunfullscreen) +// Restores the previous window dimensions and position prior to full screen. +export function WindowUnfullscreen(): void; + +// [WindowIsFullscreen](https://wails.io/docs/reference/runtime/window#windowisfullscreen) +// Returns the state of the window, i.e. whether the window is in full screen mode or not. +export function WindowIsFullscreen(): Promise; + +// [WindowSetSize](https://wails.io/docs/reference/runtime/window#windowsetsize) +// Sets the width and height of the window. +export function WindowSetSize(width: number, height: number): Promise; + +// [WindowGetSize](https://wails.io/docs/reference/runtime/window#windowgetsize) +// Gets the width and height of the window. +export function WindowGetSize(): Promise; + +// [WindowSetMaxSize](https://wails.io/docs/reference/runtime/window#windowsetmaxsize) +// Sets the maximum window size. Will resize the window if the window is currently larger than the given dimensions. +// Setting a size of 0,0 will disable this constraint. +export function WindowSetMaxSize(width: number, height: number): void; + +// [WindowSetMinSize](https://wails.io/docs/reference/runtime/window#windowsetminsize) +// Sets the minimum window size. Will resize the window if the window is currently smaller than the given dimensions. +// Setting a size of 0,0 will disable this constraint. +export function WindowSetMinSize(width: number, height: number): void; + +// [WindowSetPosition](https://wails.io/docs/reference/runtime/window#windowsetposition) +// Sets the window position relative to the monitor the window is currently on. +export function WindowSetPosition(x: number, y: number): void; + +// [WindowGetPosition](https://wails.io/docs/reference/runtime/window#windowgetposition) +// Gets the window position relative to the monitor the window is currently on. +export function WindowGetPosition(): Promise; + +// [WindowHide](https://wails.io/docs/reference/runtime/window#windowhide) +// Hides the window. +export function WindowHide(): void; + +// [WindowShow](https://wails.io/docs/reference/runtime/window#windowshow) +// Shows the window, if it is currently hidden. +export function WindowShow(): void; + +// [WindowMaximise](https://wails.io/docs/reference/runtime/window#windowmaximise) +// Maximises the window to fill the screen. +export function WindowMaximise(): void; + +// [WindowToggleMaximise](https://wails.io/docs/reference/runtime/window#windowtogglemaximise) +// Toggles between Maximised and UnMaximised. +export function WindowToggleMaximise(): void; + +// [WindowUnmaximise](https://wails.io/docs/reference/runtime/window#windowunmaximise) +// Restores the window to the dimensions and position prior to maximising. +export function WindowUnmaximise(): void; + +// [WindowIsMaximised](https://wails.io/docs/reference/runtime/window#windowismaximised) +// Returns the state of the window, i.e. whether the window is maximised or not. +export function WindowIsMaximised(): Promise; + +// [WindowMinimise](https://wails.io/docs/reference/runtime/window#windowminimise) +// Minimises the window. +export function WindowMinimise(): void; + +// [WindowUnminimise](https://wails.io/docs/reference/runtime/window#windowunminimise) +// Restores the window to the dimensions and position prior to minimising. +export function WindowUnminimise(): void; + +// [WindowIsMinimised](https://wails.io/docs/reference/runtime/window#windowisminimised) +// Returns the state of the window, i.e. whether the window is minimised or not. +export function WindowIsMinimised(): Promise; + +// [WindowIsNormal](https://wails.io/docs/reference/runtime/window#windowisnormal) +// Returns the state of the window, i.e. whether the window is normal or not. +export function WindowIsNormal(): Promise; + +// [WindowSetBackgroundColour](https://wails.io/docs/reference/runtime/window#windowsetbackgroundcolour) +// Sets the background colour of the window to the given RGBA colour definition. This colour will show through for all transparent pixels. +export function WindowSetBackgroundColour(R: number, G: number, B: number, A: number): void; + +// [ScreenGetAll](https://wails.io/docs/reference/runtime/window#screengetall) +// Gets the all screens. Call this anew each time you want to refresh data from the underlying windowing system. +export function ScreenGetAll(): Promise; + +// [BrowserOpenURL](https://wails.io/docs/reference/runtime/browser#browseropenurl) +// Opens the given URL in the system browser. +export function BrowserOpenURL(url: string): void; + +// [Environment](https://wails.io/docs/reference/runtime/intro#environment) +// Returns information about the environment +export function Environment(): Promise; + +// [Quit](https://wails.io/docs/reference/runtime/intro#quit) +// Quits the application. +export function Quit(): void; + +// [Hide](https://wails.io/docs/reference/runtime/intro#hide) +// Hides the application. +export function Hide(): void; + +// [Show](https://wails.io/docs/reference/runtime/intro#show) +// Shows the application. +export function Show(): void; + +// [ClipboardGetText](https://wails.io/docs/reference/runtime/clipboard#clipboardgettext) +// Returns the current text stored on clipboard +export function ClipboardGetText(): Promise; + +// [ClipboardSetText](https://wails.io/docs/reference/runtime/clipboard#clipboardsettext) +// Sets a text on the clipboard +export function ClipboardSetText(text: string): Promise; diff --git a/pkg/ui/web/wailsjs/runtime/runtime.js b/pkg/ui/web/wailsjs/runtime/runtime.js new file mode 100755 index 00000000..bd4f371a --- /dev/null +++ b/pkg/ui/web/wailsjs/runtime/runtime.js @@ -0,0 +1,202 @@ +/* + _ __ _ __ +| | / /___ _(_) /____ +| | /| / / __ `/ / / ___/ +| |/ |/ / /_/ / / (__ ) +|__/|__/\__,_/_/_/____/ +The electron alternative for Go +(c) Lea Anthony 2019-present +*/ + +export function LogPrint(message) { + window.runtime.LogPrint(message); +} + +export function LogTrace(message) { + window.runtime.LogTrace(message); +} + +export function LogDebug(message) { + window.runtime.LogDebug(message); +} + +export function LogInfo(message) { + window.runtime.LogInfo(message); +} + +export function LogWarning(message) { + window.runtime.LogWarning(message); +} + +export function LogError(message) { + window.runtime.LogError(message); +} + +export function LogFatal(message) { + window.runtime.LogFatal(message); +} + +export function EventsOnMultiple(eventName, callback, maxCallbacks) { + return window.runtime.EventsOnMultiple(eventName, callback, maxCallbacks); +} + +export function EventsOn(eventName, callback) { + return EventsOnMultiple(eventName, callback, -1); +} + +export function EventsOff(eventName, ...additionalEventNames) { + return window.runtime.EventsOff(eventName, ...additionalEventNames); +} + +export function EventsOnce(eventName, callback) { + return EventsOnMultiple(eventName, callback, 1); +} + +export function EventsEmit(eventName) { + let args = [eventName].slice.call(arguments); + return window.runtime.EventsEmit.apply(null, args); +} + +export function WindowReload() { + window.runtime.WindowReload(); +} + +export function WindowReloadApp() { + window.runtime.WindowReloadApp(); +} + +export function WindowSetAlwaysOnTop(b) { + window.runtime.WindowSetAlwaysOnTop(b); +} + +export function WindowSetSystemDefaultTheme() { + window.runtime.WindowSetSystemDefaultTheme(); +} + +export function WindowSetLightTheme() { + window.runtime.WindowSetLightTheme(); +} + +export function WindowSetDarkTheme() { + window.runtime.WindowSetDarkTheme(); +} + +export function WindowCenter() { + window.runtime.WindowCenter(); +} + +export function WindowSetTitle(title) { + window.runtime.WindowSetTitle(title); +} + +export function WindowFullscreen() { + window.runtime.WindowFullscreen(); +} + +export function WindowUnfullscreen() { + window.runtime.WindowUnfullscreen(); +} + +export function WindowIsFullscreen() { + return window.runtime.WindowIsFullscreen(); +} + +export function WindowGetSize() { + return window.runtime.WindowGetSize(); +} + +export function WindowSetSize(width, height) { + window.runtime.WindowSetSize(width, height); +} + +export function WindowSetMaxSize(width, height) { + window.runtime.WindowSetMaxSize(width, height); +} + +export function WindowSetMinSize(width, height) { + window.runtime.WindowSetMinSize(width, height); +} + +export function WindowSetPosition(x, y) { + window.runtime.WindowSetPosition(x, y); +} + +export function WindowGetPosition() { + return window.runtime.WindowGetPosition(); +} + +export function WindowHide() { + window.runtime.WindowHide(); +} + +export function WindowShow() { + window.runtime.WindowShow(); +} + +export function WindowMaximise() { + window.runtime.WindowMaximise(); +} + +export function WindowToggleMaximise() { + window.runtime.WindowToggleMaximise(); +} + +export function WindowUnmaximise() { + window.runtime.WindowUnmaximise(); +} + +export function WindowIsMaximised() { + return window.runtime.WindowIsMaximised(); +} + +export function WindowMinimise() { + window.runtime.WindowMinimise(); +} + +export function WindowUnminimise() { + window.runtime.WindowUnminimise(); +} + +export function WindowSetBackgroundColour(R, G, B, A) { + window.runtime.WindowSetBackgroundColour(R, G, B, A); +} + +export function ScreenGetAll() { + return window.runtime.ScreenGetAll(); +} + +export function WindowIsMinimised() { + return window.runtime.WindowIsMinimised(); +} + +export function WindowIsNormal() { + return window.runtime.WindowIsNormal(); +} + +export function BrowserOpenURL(url) { + window.runtime.BrowserOpenURL(url); +} + +export function Environment() { + return window.runtime.Environment(); +} + +export function Quit() { + window.runtime.Quit(); +} + +export function Hide() { + window.runtime.Hide(); +} + +export function Show() { + window.runtime.Show(); +} + +export function ClipboardGetText() { + return window.runtime.ClipboardGetText(); +} + +export function ClipboardSetText(text) { + return window.runtime.ClipboardSetText(text); +} \ No newline at end of file diff --git a/pkg/ui/web/yarn.lock b/pkg/ui/web/yarn.lock new file mode 100644 index 00000000..4f2b311b --- /dev/null +++ b/pkg/ui/web/yarn.lock @@ -0,0 +1,11336 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 6 + cacheKey: 8 + +"@absinthe/socket-apollo-link@npm:0.2.1": + version: 0.2.1 + resolution: "@absinthe/socket-apollo-link@npm:0.2.1" + dependencies: + "@absinthe/socket": 0.2.1 + "@babel/runtime": 7.2.0 + apollo-link: 1.2.5 + core-js: 2.6.0 + flow-static-land: 0.2.8 + graphql: 14.0.2 + zen-observable: 0.8.11 + checksum: 238c276a8995e6a316561aeb43eb1b36da8b778ccc4cb556d6ddbfd75b233b359dbdf3c957823234b13194d357ae7536d93848689767896787ba3c360e33e2ec + languageName: node + linkType: hard + +"@absinthe/socket@npm:0.2.1": + version: 0.2.1 + resolution: "@absinthe/socket@npm:0.2.1" + dependencies: + "@babel/runtime": 7.2.0 + "@jumpn/utils-array": 0.3.4 + "@jumpn/utils-composite": 0.7.0 + "@jumpn/utils-graphql": 0.6.0 + core-js: 2.6.0 + zen-observable: 0.8.11 + peerDependencies: + phoenix: ^1.4.0 + checksum: c9601b18f5036b123a82b5c59fbb2ca3c8031ccb510d1cf70e0dda5fcba88979886caff1fc4c8590ab2e8c8e98004a37421d404261343351adab7ec6ef1f82fd + languageName: node + linkType: hard + +"@ampproject/remapping@npm:^2.1.0, @ampproject/remapping@npm:^2.2.0": + version: 2.2.0 + resolution: "@ampproject/remapping@npm:2.2.0" + dependencies: + "@jridgewell/gen-mapping": ^0.1.0 + "@jridgewell/trace-mapping": ^0.3.9 + checksum: d74d170d06468913921d72430259424b7e4c826b5a7d39ff839a29d547efb97dc577caa8ba3fb5cf023624e9af9d09651afc3d4112a45e2050328abc9b3a2292 + languageName: node + linkType: hard + +"@apollo/client@npm:3.7.10": + version: 3.7.10 + resolution: "@apollo/client@npm:3.7.10" + dependencies: + "@graphql-typed-document-node/core": ^3.1.1 + "@wry/context": ^0.7.0 + "@wry/equality": ^0.5.0 + "@wry/trie": ^0.3.0 + graphql-tag: ^2.12.6 + hoist-non-react-statics: ^3.3.2 + optimism: ^0.16.1 + prop-types: ^15.7.2 + response-iterator: ^0.2.6 + symbol-observable: ^4.0.0 + ts-invariant: ^0.10.3 + tslib: ^2.3.0 + zen-observable-ts: ^1.2.5 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + graphql-ws: ^5.5.5 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + subscriptions-transport-ws: ^0.9.0 || ^0.11.0 + peerDependenciesMeta: + graphql-ws: + optional: true + react: + optional: true + react-dom: + optional: true + subscriptions-transport-ws: + optional: true + checksum: d74a68f8042e76e3a81990c79a89aefc07c8899d354f3b469591356508001005106bba0fa953652c3ec19756d44bdec6730ac98f62fa836bd76acbcb7eff42ce + languageName: node + linkType: hard + +"@ardatan/relay-compiler@npm:12.0.0": + version: 12.0.0 + resolution: "@ardatan/relay-compiler@npm:12.0.0" + dependencies: + "@babel/core": ^7.14.0 + "@babel/generator": ^7.14.0 + "@babel/parser": ^7.14.0 + "@babel/runtime": ^7.0.0 + "@babel/traverse": ^7.14.0 + "@babel/types": ^7.0.0 + babel-preset-fbjs: ^3.4.0 + chalk: ^4.0.0 + fb-watchman: ^2.0.0 + fbjs: ^3.0.0 + glob: ^7.1.1 + immutable: ~3.7.6 + invariant: ^2.2.4 + nullthrows: ^1.1.1 + relay-runtime: 12.0.0 + signedsource: ^1.0.0 + yargs: ^15.3.1 + peerDependencies: + graphql: "*" + bin: + relay-compiler: bin/relay-compiler + checksum: f0cec120d02961ee8652e0dde72d9e425bc97cad5d0f767d8764cfd30952294eb2838432f33e4da8bb6999d0c13dcd1df128280666bfea373294d98aa8033ae7 + languageName: node + linkType: hard + +"@ardatan/sync-fetch@npm:^0.0.1": + version: 0.0.1 + resolution: "@ardatan/sync-fetch@npm:0.0.1" + dependencies: + node-fetch: ^2.6.1 + checksum: af39bdfb4c2b35bd2c6acc540a5e302730dae17e73d3a18cd1a4aa50c1c741cb1869dffdef1379c491da5ad2e3cfa2bf3a8064e6046c12b46c6a97f54f100a8d + languageName: node + linkType: hard + +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/code-frame@npm:7.18.6" + dependencies: + "@babel/highlight": ^7.18.6 + checksum: 195e2be3172d7684bf95cff69ae3b7a15a9841ea9d27d3c843662d50cdd7d6470fd9c8e64be84d031117e4a4083486effba39f9aef6bbb2c89f7f21bcfba33ba + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.17.7, @babel/compat-data@npm:^7.20.1, @babel/compat-data@npm:^7.20.5": + version: 7.21.0 + resolution: "@babel/compat-data@npm:7.21.0" + checksum: dbf632c532f9c75ba0be7d1dc9f6cd3582501af52f10a6b90415d634ec5878735bd46064c91673b10317af94d4cc99c4da5bd9d955978cdccb7905fc33291e4d + languageName: node + linkType: hard + +"@babel/core@npm:7.20.12": + version: 7.20.12 + resolution: "@babel/core@npm:7.20.12" + dependencies: + "@ampproject/remapping": ^2.1.0 + "@babel/code-frame": ^7.18.6 + "@babel/generator": ^7.20.7 + "@babel/helper-compilation-targets": ^7.20.7 + "@babel/helper-module-transforms": ^7.20.11 + "@babel/helpers": ^7.20.7 + "@babel/parser": ^7.20.7 + "@babel/template": ^7.20.7 + "@babel/traverse": ^7.20.12 + "@babel/types": ^7.20.7 + convert-source-map: ^1.7.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.2.2 + semver: ^6.3.0 + checksum: 62e6c3e2149a70b5c9729ef5f0d3e2e97e9dcde89fc039c8d8e3463d5d7ba9b29ee84d10faf79b61532ac1645aa62f2bd42338320617e6e3a8a4d8e2a27076e7 + languageName: node + linkType: hard + +"@babel/core@npm:^7.14.0, @babel/core@npm:^7.20.12": + version: 7.21.3 + resolution: "@babel/core@npm:7.21.3" + dependencies: + "@ampproject/remapping": ^2.2.0 + "@babel/code-frame": ^7.18.6 + "@babel/generator": ^7.21.3 + "@babel/helper-compilation-targets": ^7.20.7 + "@babel/helper-module-transforms": ^7.21.2 + "@babel/helpers": ^7.21.0 + "@babel/parser": ^7.21.3 + "@babel/template": ^7.20.7 + "@babel/traverse": ^7.21.3 + "@babel/types": ^7.21.3 + convert-source-map: ^1.7.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.2.2 + semver: ^6.3.0 + checksum: bef25fbea96f461bf79bd1d0e4f0cdce679fd5ada464a89c1141ddba59ae1adfdbb23e04440c266ed525712d33d5ffd818cd8b0c25b1dee0e648d5559516153a + languageName: node + linkType: hard + +"@babel/eslint-parser@npm:7.19.1": + version: 7.19.1 + resolution: "@babel/eslint-parser@npm:7.19.1" + dependencies: + "@nicolo-ribaudo/eslint-scope-5-internals": 5.1.1-v1 + eslint-visitor-keys: ^2.1.0 + semver: ^6.3.0 + peerDependencies: + "@babel/core": ">=7.11.0" + eslint: ^7.5.0 || ^8.0.0 + checksum: 6d5360f62f25ed097250657deb1bc4c4f51a5f5f2fe456e98cda13727753fdf7a11a109b4cfa03ef0dd6ced3beaeb703b76193c1141e29434d1f91f1bac0517d + languageName: node + linkType: hard + +"@babel/generator@npm:^7.14.0, @babel/generator@npm:^7.18.13, @babel/generator@npm:^7.20.7, @babel/generator@npm:^7.21.3": + version: 7.21.3 + resolution: "@babel/generator@npm:7.21.3" + dependencies: + "@babel/types": ^7.21.3 + "@jridgewell/gen-mapping": ^0.3.2 + "@jridgewell/trace-mapping": ^0.3.17 + jsesc: ^2.5.1 + checksum: be6bb5a32a0273260b91210d4137b7b5da148a2db8dd324654275cb0af865ae59de5e1536e93ac83423b2586415059e1c24cf94293026755cf995757238da749 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.21.1": + version: 7.21.1 + resolution: "@babel/generator@npm:7.21.1" + dependencies: + "@babel/types": ^7.21.0 + "@jridgewell/gen-mapping": ^0.3.2 + "@jridgewell/trace-mapping": ^0.3.17 + jsesc: ^2.5.1 + checksum: 69085a211ff91a7a608ee3f86e6fcb9cf5e724b756d792a713b0c328a671cd3e423e1ef1b12533f366baba0616caffe0a7ba9d328727eab484de5961badbef00 + languageName: node + linkType: hard + +"@babel/helper-annotate-as-pure@npm:^7.16.0, @babel/helper-annotate-as-pure@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/helper-annotate-as-pure@npm:7.18.6" + dependencies: + "@babel/types": ^7.18.6 + checksum: 88ccd15ced475ef2243fdd3b2916a29ea54c5db3cd0cfabf9d1d29ff6e63b7f7cd1c27264137d7a40ac2e978b9b9a542c332e78f40eb72abe737a7400788fc1b + languageName: node + linkType: hard + +"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.18.6": + version: 7.18.9 + resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.18.9" + dependencies: + "@babel/helper-explode-assignable-expression": ^7.18.6 + "@babel/types": ^7.18.9 + checksum: b4bc214cb56329daff6cc18a7f7a26aeafb55a1242e5362f3d47fe3808421f8c7cd91fff95d6b9b7ccb67e14e5a67d944e49dbe026942bfcbfda19b1c72a8e72 + languageName: node + linkType: hard + +"@babel/helper-compilation-targets@npm:^7.17.7, @babel/helper-compilation-targets@npm:^7.18.9, @babel/helper-compilation-targets@npm:^7.20.0, @babel/helper-compilation-targets@npm:^7.20.7": + version: 7.20.7 + resolution: "@babel/helper-compilation-targets@npm:7.20.7" + dependencies: + "@babel/compat-data": ^7.20.5 + "@babel/helper-validator-option": ^7.18.6 + browserslist: ^4.21.3 + lru-cache: ^5.1.1 + semver: ^6.3.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 8c32c873ba86e2e1805b30e0807abd07188acbe00ebb97576f0b09061cc65007f1312b589eccb4349c5a8c7f8bb9f2ab199d41da7030bf103d9f347dcd3a3cf4 + languageName: node + linkType: hard + +"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.21.0": + version: 7.21.0 + resolution: "@babel/helper-create-class-features-plugin@npm:7.21.0" + dependencies: + "@babel/helper-annotate-as-pure": ^7.18.6 + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-function-name": ^7.21.0 + "@babel/helper-member-expression-to-functions": ^7.21.0 + "@babel/helper-optimise-call-expression": ^7.18.6 + "@babel/helper-replace-supers": ^7.20.7 + "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 + "@babel/helper-split-export-declaration": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 3e781d91d1056ea9b3a0395f3017492594a8b86899119b4a1645227c31727b8bec9bc8f6b72e86b1c5cf2dd6690893d2e8c5baff4974c429e616ead089552a21 + languageName: node + linkType: hard + +"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.20.5": + version: 7.21.0 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.21.0" + dependencies: + "@babel/helper-annotate-as-pure": ^7.18.6 + regexpu-core: ^5.3.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 63a6396a4e9444edc7e97617845583ea5cf059573d0b4cc566869f38576d543e37fde0edfcc21d6dfb7962ed241e909561714dc41c5213198bac04e0983b04f2 + languageName: node + linkType: hard + +"@babel/helper-define-polyfill-provider@npm:^0.3.3": + version: 0.3.3 + resolution: "@babel/helper-define-polyfill-provider@npm:0.3.3" + dependencies: + "@babel/helper-compilation-targets": ^7.17.7 + "@babel/helper-plugin-utils": ^7.16.7 + debug: ^4.1.1 + lodash.debounce: ^4.0.8 + resolve: ^1.14.2 + semver: ^6.1.2 + peerDependencies: + "@babel/core": ^7.4.0-0 + checksum: 8e3fe75513302e34f6d92bd67b53890e8545e6c5bca8fe757b9979f09d68d7e259f6daea90dc9e01e332c4f8781bda31c5fe551c82a277f9bc0bec007aed497c + languageName: node + linkType: hard + +"@babel/helper-environment-visitor@npm:^7.18.9": + version: 7.18.9 + resolution: "@babel/helper-environment-visitor@npm:7.18.9" + checksum: b25101f6162ddca2d12da73942c08ad203d7668e06663df685634a8fde54a98bc015f6f62938e8554457a592a024108d45b8f3e651fd6dcdb877275b73cc4420 + languageName: node + linkType: hard + +"@babel/helper-explode-assignable-expression@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/helper-explode-assignable-expression@npm:7.18.6" + dependencies: + "@babel/types": ^7.18.6 + checksum: 225cfcc3376a8799023d15dc95000609e9d4e7547b29528c7f7111a0e05493ffb12c15d70d379a0bb32d42752f340233c4115bded6d299bc0c3ab7a12be3d30f + languageName: node + linkType: hard + +"@babel/helper-function-name@npm:^7.18.9, @babel/helper-function-name@npm:^7.19.0, @babel/helper-function-name@npm:^7.21.0": + version: 7.21.0 + resolution: "@babel/helper-function-name@npm:7.21.0" + dependencies: + "@babel/template": ^7.20.7 + "@babel/types": ^7.21.0 + checksum: d63e63c3e0e3e8b3138fa47b0cd321148a300ef12b8ee951196994dcd2a492cc708aeda94c2c53759a5c9177fffaac0fd8778791286746f72a000976968daf4e + languageName: node + linkType: hard + +"@babel/helper-hoist-variables@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/helper-hoist-variables@npm:7.18.6" + dependencies: + "@babel/types": ^7.18.6 + checksum: fd9c35bb435fda802bf9ff7b6f2df06308a21277c6dec2120a35b09f9de68f68a33972e2c15505c1a1a04b36ec64c9ace97d4a9e26d6097b76b4396b7c5fa20f + languageName: node + linkType: hard + +"@babel/helper-member-expression-to-functions@npm:^7.20.7, @babel/helper-member-expression-to-functions@npm:^7.21.0": + version: 7.21.0 + resolution: "@babel/helper-member-expression-to-functions@npm:7.21.0" + dependencies: + "@babel/types": ^7.21.0 + checksum: 49cbb865098195fe82ba22da3a8fe630cde30dcd8ebf8ad5f9a24a2b685150c6711419879cf9d99b94dad24cff9244d8c2a890d3d7ec75502cd01fe58cff5b5d + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:^7.0.0, @babel/helper-module-imports@npm:^7.16.0, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/helper-module-imports@npm:7.18.6" + dependencies: + "@babel/types": ^7.18.6 + checksum: f393f8a3b3304b1b7a288a38c10989de754f01d29caf62ce7c4e5835daf0a27b81f3ac687d9d2780d39685aae7b55267324b512150e7b2be967b0c493b6a1def + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.18.6, @babel/helper-module-transforms@npm:^7.20.11, @babel/helper-module-transforms@npm:^7.21.2": + version: 7.21.2 + resolution: "@babel/helper-module-transforms@npm:7.21.2" + dependencies: + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-module-imports": ^7.18.6 + "@babel/helper-simple-access": ^7.20.2 + "@babel/helper-split-export-declaration": ^7.18.6 + "@babel/helper-validator-identifier": ^7.19.1 + "@babel/template": ^7.20.7 + "@babel/traverse": ^7.21.2 + "@babel/types": ^7.21.2 + checksum: 8a1c129a4f90bdf97d8b6e7861732c9580f48f877aaaafbc376ce2482febebcb8daaa1de8bc91676d12886487603f8c62a44f9e90ee76d6cac7f9225b26a49e1 + languageName: node + linkType: hard + +"@babel/helper-optimise-call-expression@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/helper-optimise-call-expression@npm:7.18.6" + dependencies: + "@babel/types": ^7.18.6 + checksum: e518fe8418571405e21644cfb39cf694f30b6c47b10b006609a92469ae8b8775cbff56f0b19732343e2ea910641091c5a2dc73b56ceba04e116a33b0f8bd2fbd + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.16.7, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.18.9, @babel/helper-plugin-utils@npm:^7.19.0, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": + version: 7.20.2 + resolution: "@babel/helper-plugin-utils@npm:7.20.2" + checksum: f6cae53b7fdb1bf3abd50fa61b10b4470985b400cc794d92635da1e7077bb19729f626adc0741b69403d9b6e411cddddb9c0157a709cc7c4eeb41e663be5d74b + languageName: node + linkType: hard + +"@babel/helper-remap-async-to-generator@npm:^7.18.9": + version: 7.18.9 + resolution: "@babel/helper-remap-async-to-generator@npm:7.18.9" + dependencies: + "@babel/helper-annotate-as-pure": ^7.18.6 + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-wrap-function": ^7.18.9 + "@babel/types": ^7.18.9 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 4be6076192308671b046245899b703ba090dbe7ad03e0bea897bb2944ae5b88e5e85853c9d1f83f643474b54c578d8ac0800b80341a86e8538264a725fbbefec + languageName: node + linkType: hard + +"@babel/helper-replace-supers@npm:^7.18.6, @babel/helper-replace-supers@npm:^7.20.7": + version: 7.20.7 + resolution: "@babel/helper-replace-supers@npm:7.20.7" + dependencies: + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-member-expression-to-functions": ^7.20.7 + "@babel/helper-optimise-call-expression": ^7.18.6 + "@babel/template": ^7.20.7 + "@babel/traverse": ^7.20.7 + "@babel/types": ^7.20.7 + checksum: b8e0087c9b0c1446e3c6f3f72b73b7e03559c6b570e2cfbe62c738676d9ebd8c369a708cf1a564ef88113b4330750a50232ee1131d303d478b7a5e65e46fbc7c + languageName: node + linkType: hard + +"@babel/helper-simple-access@npm:^7.20.2": + version: 7.20.2 + resolution: "@babel/helper-simple-access@npm:7.20.2" + dependencies: + "@babel/types": ^7.20.2 + checksum: ad1e96ee2e5f654ffee2369a586e5e8d2722bf2d8b028a121b4c33ebae47253f64d420157b9f0a8927aea3a9e0f18c0103e74fdd531815cf3650a0a4adca11a1 + languageName: node + linkType: hard + +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.20.0": + version: 7.20.0 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.20.0" + dependencies: + "@babel/types": ^7.20.0 + checksum: 34da8c832d1c8a546e45d5c1d59755459ffe43629436707079989599b91e8c19e50e73af7a4bd09c95402d389266731b0d9c5f69e372d8ebd3a709c05c80d7dd + languageName: node + linkType: hard + +"@babel/helper-split-export-declaration@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/helper-split-export-declaration@npm:7.18.6" + dependencies: + "@babel/types": ^7.18.6 + checksum: c6d3dede53878f6be1d869e03e9ffbbb36f4897c7cc1527dc96c56d127d834ffe4520a6f7e467f5b6f3c2843ea0e81a7819d66ae02f707f6ac057f3d57943a2b + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.19.4": + version: 7.19.4 + resolution: "@babel/helper-string-parser@npm:7.19.4" + checksum: b2f8a3920b30dfac81ec282ac4ad9598ea170648f8254b10f475abe6d944808fb006aab325d3eb5a8ad3bea8dfa888cfa6ef471050dae5748497c110ec060943 + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.19.1": + version: 7.19.1 + resolution: "@babel/helper-validator-identifier@npm:7.19.1" + checksum: 0eca5e86a729162af569b46c6c41a63e18b43dbe09fda1d2a3c8924f7d617116af39cac5e4cd5d431bb760b4dca3c0970e0c444789b1db42bcf1fa41fbad0a3a + languageName: node + linkType: hard + +"@babel/helper-validator-option@npm:^7.18.6": + version: 7.21.0 + resolution: "@babel/helper-validator-option@npm:7.21.0" + checksum: 8ece4c78ffa5461fd8ab6b6e57cc51afad59df08192ed5d84b475af4a7193fc1cb794b59e3e7be64f3cdc4df7ac78bf3dbb20c129d7757ae078e6279ff8c2f07 + languageName: node + linkType: hard + +"@babel/helper-wrap-function@npm:^7.18.9": + version: 7.20.5 + resolution: "@babel/helper-wrap-function@npm:7.20.5" + dependencies: + "@babel/helper-function-name": ^7.19.0 + "@babel/template": ^7.18.10 + "@babel/traverse": ^7.20.5 + "@babel/types": ^7.20.5 + checksum: 11a6fc28334368a193a9cb3ad16f29cd7603bab958433efc82ebe59fa6556c227faa24f07ce43983f7a85df826f71d441638442c4315e90a554fe0a70ca5005b + languageName: node + linkType: hard + +"@babel/helpers@npm:^7.20.7, @babel/helpers@npm:^7.21.0": + version: 7.21.0 + resolution: "@babel/helpers@npm:7.21.0" + dependencies: + "@babel/template": ^7.20.7 + "@babel/traverse": ^7.21.0 + "@babel/types": ^7.21.0 + checksum: 9370dad2bb665c551869a08ac87c8bdafad53dbcdce1f5c5d498f51811456a3c005d9857562715151a0f00b2e912ac8d89f56574f837b5689f5f5072221cdf54 + languageName: node + linkType: hard + +"@babel/highlight@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/highlight@npm:7.18.6" + dependencies: + "@babel/helper-validator-identifier": ^7.18.6 + chalk: ^2.0.0 + js-tokens: ^4.0.0 + checksum: 92d8ee61549de5ff5120e945e774728e5ccd57fd3b2ed6eace020ec744823d4a98e242be1453d21764a30a14769ecd62170fba28539b211799bbaf232bbb2789 + languageName: node + linkType: hard + +"@babel/parser@npm:^7.14.0, @babel/parser@npm:^7.16.8, @babel/parser@npm:^7.21.3": + version: 7.21.3 + resolution: "@babel/parser@npm:7.21.3" + bin: + parser: ./bin/babel-parser.js + checksum: a71e6456a1260c2a943736b56cc0acdf5f2a53c6c79e545f56618967e51f9b710d1d3359264e7c979313a7153741b1d95ad8860834cc2ab4ce4f428b13cc07be + languageName: node + linkType: hard + +"@babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.2": + version: 7.21.2 + resolution: "@babel/parser@npm:7.21.2" + bin: + parser: ./bin/babel-parser.js + checksum: e2b89de2c63d4cdd2cafeaea34f389bba729727eec7a8728f736bc472a59396059e3e9fe322c9bed8fd126d201fb609712949dc8783f4cae4806acd9a73da6ff + languageName: node + linkType: hard + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 845bd280c55a6a91d232cfa54eaf9708ec71e594676fe705794f494bb8b711d833b752b59d1a5c154695225880c23dbc9cab0e53af16fd57807976cd3ff41b8d + languageName: node + linkType: hard + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.18.9": + version: 7.20.7 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.20.7" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 + "@babel/plugin-proposal-optional-chaining": ^7.20.7 + peerDependencies: + "@babel/core": ^7.13.0 + checksum: d610f532210bee5342f5b44a12395ccc6d904e675a297189bc1e401cc185beec09873da523466d7fec34ae1574f7a384235cba1ccc9fe7b89ba094167897c845 + languageName: node + linkType: hard + +"@babel/plugin-proposal-async-generator-functions@npm:^7.20.1": + version: 7.20.7 + resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.20.7" + dependencies: + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-remap-async-to-generator": ^7.18.9 + "@babel/plugin-syntax-async-generators": ^7.8.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 111109ee118c9e69982f08d5e119eab04190b36a0f40e22e873802d941956eee66d2aa5a15f5321e51e3f9aa70a91136451b987fe15185ef8cc547ac88937723 + languageName: node + linkType: hard + +"@babel/plugin-proposal-class-properties@npm:^7.0.0, @babel/plugin-proposal-class-properties@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-proposal-class-properties@npm:7.18.6" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.18.6 + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 49a78a2773ec0db56e915d9797e44fd079ab8a9b2e1716e0df07c92532f2c65d76aeda9543883916b8e0ff13606afeffa67c5b93d05b607bc87653ad18a91422 + languageName: node + linkType: hard + +"@babel/plugin-proposal-class-static-block@npm:^7.18.6": + version: 7.21.0 + resolution: "@babel/plugin-proposal-class-static-block@npm:7.21.0" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.21.0 + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/plugin-syntax-class-static-block": ^7.14.5 + peerDependencies: + "@babel/core": ^7.12.0 + checksum: 236c0ad089e7a7acab776cc1d355330193314bfcd62e94e78f2df35817c6144d7e0e0368976778afd6b7c13e70b5068fa84d7abbf967d4f182e60d03f9ef802b + languageName: node + linkType: hard + +"@babel/plugin-proposal-dynamic-import@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-proposal-dynamic-import@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": ^7.18.6 + "@babel/plugin-syntax-dynamic-import": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 96b1c8a8ad8171d39e9ab106be33bde37ae09b22fb2c449afee9a5edf3c537933d79d963dcdc2694d10677cb96da739cdf1b53454e6a5deab9801f28a818bb2f + languageName: node + linkType: hard + +"@babel/plugin-proposal-export-namespace-from@npm:^7.18.9": + version: 7.18.9 + resolution: "@babel/plugin-proposal-export-namespace-from@npm:7.18.9" + dependencies: + "@babel/helper-plugin-utils": ^7.18.9 + "@babel/plugin-syntax-export-namespace-from": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 84ff22bacc5d30918a849bfb7e0e90ae4c5b8d8b65f2ac881803d1cf9068dffbe53bd657b0e4bc4c20b4db301b1c85f1e74183cf29a0dd31e964bd4e97c363ef + languageName: node + linkType: hard + +"@babel/plugin-proposal-json-strings@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-proposal-json-strings@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": ^7.18.6 + "@babel/plugin-syntax-json-strings": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 25ba0e6b9d6115174f51f7c6787e96214c90dd4026e266976b248a2ed417fe50fddae72843ffb3cbe324014a18632ce5648dfac77f089da858022b49fd608cb3 + languageName: node + linkType: hard + +"@babel/plugin-proposal-logical-assignment-operators@npm:^7.18.9": + version: 7.20.7 + resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.20.7" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: cdd7b8136cc4db3f47714d5266f9e7b592a2ac5a94a5878787ce08890e97c8ab1ca8e94b27bfeba7b0f2b1549a026d9fc414ca2196de603df36fb32633bbdc19 + languageName: node + linkType: hard + +"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": ^7.18.6 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 949c9ddcdecdaec766ee610ef98f965f928ccc0361dd87cf9f88cf4896a6ccd62fce063d4494778e50da99dea63d270a1be574a62d6ab81cbe9d85884bf55a7d + languageName: node + linkType: hard + +"@babel/plugin-proposal-numeric-separator@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-proposal-numeric-separator@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": ^7.18.6 + "@babel/plugin-syntax-numeric-separator": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: f370ea584c55bf4040e1f78c80b4eeb1ce2e6aaa74f87d1a48266493c33931d0b6222d8cee3a082383d6bb648ab8d6b7147a06f974d3296ef3bc39c7851683ec + languageName: node + linkType: hard + +"@babel/plugin-proposal-object-rest-spread@npm:^7.0.0, @babel/plugin-proposal-object-rest-spread@npm:^7.20.2": + version: 7.20.7 + resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.20.7" + dependencies: + "@babel/compat-data": ^7.20.5 + "@babel/helper-compilation-targets": ^7.20.7 + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-transform-parameters": ^7.20.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 1329db17009964bc644484c660eab717cb3ca63ac0ab0f67c651a028d1bc2ead51dc4064caea283e46994f1b7221670a35cbc0b4beb6273f55e915494b5aa0b2 + languageName: node + linkType: hard + +"@babel/plugin-proposal-optional-catch-binding@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-proposal-optional-catch-binding@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": ^7.18.6 + "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7b5b39fb5d8d6d14faad6cb68ece5eeb2fd550fb66b5af7d7582402f974f5bc3684641f7c192a5a57e0f59acfae4aada6786be1eba030881ddc590666eff4d1e + languageName: node + linkType: hard + +"@babel/plugin-proposal-optional-chaining@npm:^7.18.9, @babel/plugin-proposal-optional-chaining@npm:^7.20.7": + version: 7.21.0 + resolution: "@babel/plugin-proposal-optional-chaining@npm:7.21.0" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 11c5449e01b18bb8881e8e005a577fa7be2fe5688e2382c8822d51f8f7005342a301a46af7b273b1f5645f9a7b894c428eee8526342038a275ef6ba4c8d8d746 + languageName: node + linkType: hard + +"@babel/plugin-proposal-private-methods@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-proposal-private-methods@npm:7.18.6" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.18.6 + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 22d8502ee96bca99ad2c8393e8493e2b8d4507576dd054490fd8201a36824373440106f5b098b6d821b026c7e72b0424ff4aeca69ed5f42e48f029d3a156d5ad + languageName: node + linkType: hard + +"@babel/plugin-proposal-private-property-in-object@npm:^7.18.6": + version: 7.21.0 + resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0" + dependencies: + "@babel/helper-annotate-as-pure": ^7.18.6 + "@babel/helper-create-class-features-plugin": ^7.21.0 + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/plugin-syntax-private-property-in-object": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: add881a6a836635c41d2710551fdf777e2c07c0b691bf2baacc5d658dd64107479df1038680d6e67c468bfc6f36fb8920025d6bac2a1df0a81b867537d40ae78 + languageName: node + linkType: hard + +"@babel/plugin-proposal-unicode-property-regex@npm:^7.18.6, @babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": + version: 7.18.6 + resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.18.6" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.18.6 + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: a8575ecb7ff24bf6c6e94808d5c84bb5a0c6dd7892b54f09f4646711ba0ee1e1668032b3c43e3e1dfec2c5716c302e851ac756c1645e15882d73df6ad21ae951 + languageName: node + linkType: hard + +"@babel/plugin-syntax-async-generators@npm:^7.8.4": + version: 7.8.4 + resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7ed1c1d9b9e5b64ef028ea5e755c0be2d4e5e4e3d6cf7df757b9a8c4cfa4193d268176d0f1f7fbecdda6fe722885c7fda681f480f3741d8a2d26854736f05367 + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-properties@npm:^7.0.0, @babel/plugin-syntax-class-properties@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 24f34b196d6342f28d4bad303612d7ff566ab0a013ce89e775d98d6f832969462e7235f3e7eaf17678a533d4be0ba45d3ae34ab4e5a9dcbda5d98d49e5efa2fc + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-static-block@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3e80814b5b6d4fe17826093918680a351c2d34398a914ce6e55d8083d72a9bdde4fbaf6a2dcea0e23a03de26dc2917ae3efd603d27099e2b98380345703bf948 + languageName: node + linkType: hard + +"@babel/plugin-syntax-dynamic-import@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ce307af83cf433d4ec42932329fad25fa73138ab39c7436882ea28742e1c0066626d224e0ad2988724c82644e41601cef607b36194f695cb78a1fcdc959637bd + languageName: node + linkType: hard + +"@babel/plugin-syntax-export-namespace-from@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-export-namespace-from@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 85740478be5b0de185228e7814451d74ab8ce0a26fcca7613955262a26e99e8e15e9da58f60c754b84515d4c679b590dbd3f2148f0f58025f4ae706f1c5a5d4a + languageName: node + linkType: hard + +"@babel/plugin-syntax-flow@npm:^7.0.0, @babel/plugin-syntax-flow@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-syntax-flow@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: abe82062b3eef14de7d2b3c0e4fecf80a3e796ca497e9df616d12dd250968abf71495ee85a955b43a6c827137203f0c409450cf792732ed0d6907c806580ea71 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-assertions@npm:7.20.0, @babel/plugin-syntax-import-assertions@npm:^7.20.0": + version: 7.20.0 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.20.0" + dependencies: + "@babel/helper-plugin-utils": ^7.19.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 6a86220e0aae40164cd3ffaf80e7c076a1be02a8f3480455dddbae05fda8140f429290027604df7a11b3f3f124866e8a6d69dbfa1dda61ee7377b920ad144d5b + languageName: node + linkType: hard + +"@babel/plugin-syntax-json-strings@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: bf5aea1f3188c9a507e16efe030efb996853ca3cadd6512c51db7233cc58f3ac89ff8c6bdfb01d30843b161cfe7d321e1bf28da82f7ab8d7e6bc5464666f354a + languageName: node + linkType: hard + +"@babel/plugin-syntax-jsx@npm:^7.0.0, @babel/plugin-syntax-jsx@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-syntax-jsx@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 6d37ea972970195f1ffe1a54745ce2ae456e0ac6145fae9aa1480f297248b262ea6ebb93010eddb86ebfacb94f57c05a1fc5d232b9a67325b09060299d515c67 + languageName: node + linkType: hard + +"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: aff33577037e34e515911255cdbb1fd39efee33658aa00b8a5fd3a4b903585112d037cce1cc9e4632f0487dc554486106b79ccd5ea63a2e00df4363f6d4ff886 + languageName: node + linkType: hard + +"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 87aca4918916020d1fedba54c0e232de408df2644a425d153be368313fdde40d96088feed6c4e5ab72aac89be5d07fef2ddf329a15109c5eb65df006bf2580d1 + languageName: node + linkType: hard + +"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 01ec5547bd0497f76cc903ff4d6b02abc8c05f301c88d2622b6d834e33a5651aa7c7a3d80d8d57656a4588f7276eba357f6b7e006482f5b564b7a6488de493a1 + languageName: node + linkType: hard + +"@babel/plugin-syntax-object-rest-spread@npm:^7.0.0, @babel/plugin-syntax-object-rest-spread@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: fddcf581a57f77e80eb6b981b10658421bc321ba5f0a5b754118c6a92a5448f12a0c336f77b8abf734841e102e5126d69110a306eadb03ca3e1547cab31f5cbf + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 910d90e72bc90ea1ce698e89c1027fed8845212d5ab588e35ef91f13b93143845f94e2539d831dc8d8ededc14ec02f04f7bd6a8179edd43a326c784e7ed7f0b9 + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: eef94d53a1453361553c1f98b68d17782861a04a392840341bc91780838dd4e695209c783631cf0de14c635758beafb6a3a65399846ffa4386bff90639347f30 + languageName: node + linkType: hard + +"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b317174783e6e96029b743ccff2a67d63d38756876e7e5d0ba53a322e38d9ca452c13354a57de1ad476b4c066dbae699e0ca157441da611117a47af88985ecda + languageName: node + linkType: hard + +"@babel/plugin-syntax-top-level-await@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: bbd1a56b095be7820029b209677b194db9b1d26691fe999856462e66b25b281f031f3dfd91b1619e9dcf95bebe336211833b854d0fb8780d618e35667c2d0d7e + languageName: node + linkType: hard + +"@babel/plugin-transform-arrow-functions@npm:^7.0.0, @babel/plugin-transform-arrow-functions@npm:^7.18.6": + version: 7.20.7 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.20.7" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b43cabe3790c2de7710abe32df9a30005eddb2050dadd5d122c6872f679e5710e410f1b90c8f99a2aff7b614cccfecf30e7fd310236686f60d3ed43fd80b9847 + languageName: node + linkType: hard + +"@babel/plugin-transform-async-to-generator@npm:^7.18.6": + version: 7.20.7 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.20.7" + dependencies: + "@babel/helper-module-imports": ^7.18.6 + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-remap-async-to-generator": ^7.18.9 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: fe9ee8a5471b4317c1b9ea92410ace8126b52a600d7cfbfe1920dcac6fb0fad647d2e08beb4fd03c630eb54430e6c72db11e283e3eddc49615c68abd39430904 + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoped-functions@npm:^7.0.0, @babel/plugin-transform-block-scoped-functions@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0a0df61f94601e3666bf39f2cc26f5f7b22a94450fb93081edbed967bd752ce3f81d1227fefd3799f5ee2722171b5e28db61379234d1bb85b6ec689589f99d7e + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoping@npm:^7.0.0, @babel/plugin-transform-block-scoping@npm:^7.20.2": + version: 7.21.0 + resolution: "@babel/plugin-transform-block-scoping@npm:7.21.0" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 15aacaadbecf96b53a750db1be4990b0d89c7f5bc3e1794b63b49fb219638c1fd25d452d15566d7e5ddf5b5f4e1a0a0055c35c1c7aee323c7b114bf49f66f4b0 + languageName: node + linkType: hard + +"@babel/plugin-transform-classes@npm:^7.0.0, @babel/plugin-transform-classes@npm:^7.20.2": + version: 7.21.0 + resolution: "@babel/plugin-transform-classes@npm:7.21.0" + dependencies: + "@babel/helper-annotate-as-pure": ^7.18.6 + "@babel/helper-compilation-targets": ^7.20.7 + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-function-name": ^7.21.0 + "@babel/helper-optimise-call-expression": ^7.18.6 + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-replace-supers": ^7.20.7 + "@babel/helper-split-export-declaration": ^7.18.6 + globals: ^11.1.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 088ae152074bd0e90f64659169255bfe50393e637ec8765cb2a518848b11b0299e66b91003728fd0a41563a6fdc6b8d548ece698a314fd5447f5489c22e466b7 + languageName: node + linkType: hard + +"@babel/plugin-transform-computed-properties@npm:^7.0.0, @babel/plugin-transform-computed-properties@npm:^7.18.9": + version: 7.20.7 + resolution: "@babel/plugin-transform-computed-properties@npm:7.20.7" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/template": ^7.20.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: be70e54bda8b469146459f429e5f2bd415023b87b2d5af8b10e48f465ffb02847a3ed162ca60378c004b82db848e4d62e90010d41ded7e7176b6d8d1c2911139 + languageName: node + linkType: hard + +"@babel/plugin-transform-destructuring@npm:^7.0.0, @babel/plugin-transform-destructuring@npm:^7.20.2": + version: 7.21.3 + resolution: "@babel/plugin-transform-destructuring@npm:7.21.3" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 43ebbe0bfa20287e34427be7c2200ce096c20913775ea75268fb47fe0e55f9510800587e6052c42fe6dffa0daaad95dd465c3e312fd1ef9785648384c45417ac + languageName: node + linkType: hard + +"@babel/plugin-transform-dotall-regex@npm:^7.18.6, @babel/plugin-transform-dotall-regex@npm:^7.4.4": + version: 7.18.6 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.18.6" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.18.6 + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: cbe5d7063eb8f8cca24cd4827bc97f5641166509e58781a5f8aa47fb3d2d786ce4506a30fca2e01f61f18792783a5cb5d96bf5434c3dd1ad0de8c9cc625a53da + languageName: node + linkType: hard + +"@babel/plugin-transform-duplicate-keys@npm:^7.18.9": + version: 7.18.9 + resolution: "@babel/plugin-transform-duplicate-keys@npm:7.18.9" + dependencies: + "@babel/helper-plugin-utils": ^7.18.9 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 220bf4a9fec5c4d4a7b1de38810350260e8ea08481bf78332a464a21256a95f0df8cd56025f346238f09b04f8e86d4158fafc9f4af57abaef31637e3b58bd4fe + languageName: node + linkType: hard + +"@babel/plugin-transform-exponentiation-operator@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.18.6" + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor": ^7.18.6 + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7f70222f6829c82a36005508d34ddbe6fd0974ae190683a8670dd6ff08669aaf51fef2209d7403f9bd543cb2d12b18458016c99a6ed0332ccedb3ea127b01229 + languageName: node + linkType: hard + +"@babel/plugin-transform-flow-strip-types@npm:^7.0.0": + version: 7.21.0 + resolution: "@babel/plugin-transform-flow-strip-types@npm:7.21.0" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/plugin-syntax-flow": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: a45951c57265c366f95db9a5e70a62cfc3eafafa3f3d23295357577b5fc139d053d45416cdbdf4a0a387e41cefc434ab94dd6c3048d03b094ff6d041dd10a0b0 + languageName: node + linkType: hard + +"@babel/plugin-transform-for-of@npm:^7.0.0, @babel/plugin-transform-for-of@npm:^7.18.8": + version: 7.21.0 + resolution: "@babel/plugin-transform-for-of@npm:7.21.0" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 2f3f86ca1fab2929fcda6a87e4303d5c635b5f96dc9a45fd4ca083308a3020c79ac33b9543eb4640ef2b79f3586a00ab2d002a7081adb9e9d7440dce30781034 + languageName: node + linkType: hard + +"@babel/plugin-transform-function-name@npm:^7.0.0, @babel/plugin-transform-function-name@npm:^7.18.9": + version: 7.18.9 + resolution: "@babel/plugin-transform-function-name@npm:7.18.9" + dependencies: + "@babel/helper-compilation-targets": ^7.18.9 + "@babel/helper-function-name": ^7.18.9 + "@babel/helper-plugin-utils": ^7.18.9 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 62dd9c6cdc9714704efe15545e782ee52d74dc73916bf954b4d3bee088fb0ec9e3c8f52e751252433656c09f744b27b757fc06ed99bcde28e8a21600a1d8e597 + languageName: node + linkType: hard + +"@babel/plugin-transform-literals@npm:^7.0.0, @babel/plugin-transform-literals@npm:^7.18.9": + version: 7.18.9 + resolution: "@babel/plugin-transform-literals@npm:7.18.9" + dependencies: + "@babel/helper-plugin-utils": ^7.18.9 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3458dd2f1a47ac51d9d607aa18f3d321cbfa8560a985199185bed5a906bb0c61ba85575d386460bac9aed43fdd98940041fae5a67dff286f6f967707cff489f8 + languageName: node + linkType: hard + +"@babel/plugin-transform-member-expression-literals@npm:^7.0.0, @babel/plugin-transform-member-expression-literals@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 35a3d04f6693bc6b298c05453d85ee6e41cc806538acb6928427e0e97ae06059f97d2f07d21495fcf5f70d3c13a242e2ecbd09d5c1fcb1b1a73ff528dcb0b695 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-amd@npm:^7.19.6": + version: 7.20.11 + resolution: "@babel/plugin-transform-modules-amd@npm:7.20.11" + dependencies: + "@babel/helper-module-transforms": ^7.20.11 + "@babel/helper-plugin-utils": ^7.20.2 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 23665c1c20c8f11c89382b588fb9651c0756d130737a7625baeaadbd3b973bc5bfba1303bedffa8fb99db1e6d848afb01016e1df2b69b18303e946890c790001 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-commonjs@npm:^7.0.0, @babel/plugin-transform-modules-commonjs@npm:^7.19.6": + version: 7.21.2 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.21.2" + dependencies: + "@babel/helper-module-transforms": ^7.21.2 + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-simple-access": ^7.20.2 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 65aa06e3e3792f39b99eb5f807034693ff0ecf80438580f7ae504f4c4448ef04147b1889ea5e6f60f3ad4a12ebbb57c6f1f979a249dadbd8d11fe22f4441918b + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-systemjs@npm:^7.19.6": + version: 7.20.11 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.20.11" + dependencies: + "@babel/helper-hoist-variables": ^7.18.6 + "@babel/helper-module-transforms": ^7.20.11 + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-validator-identifier": ^7.19.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 4546c47587f88156d66c7eb7808e903cf4bb3f6ba6ac9bc8e3af2e29e92eb9f0b3f44d52043bfd24eb25fa7827fd7b6c8bfeac0cac7584e019b87e1ecbd0e673 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-umd@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-modules-umd@npm:7.18.6" + dependencies: + "@babel/helper-module-transforms": ^7.18.6 + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c3b6796c6f4579f1ba5ab0cdcc73910c1e9c8e1e773c507c8bb4da33072b3ae5df73c6d68f9126dab6e99c24ea8571e1563f8710d7c421fac1cde1e434c20153 + languageName: node + linkType: hard + +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.19.1": + version: 7.20.5 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.20.5" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.20.5 + "@babel/helper-plugin-utils": ^7.20.2 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 528c95fb1087e212f17e1c6456df041b28a83c772b9c93d2e407c9d03b72182b0d9d126770c1d6e0b23aab052599ceaf25ed6a2c0627f4249be34a83f6fae853 + languageName: node + linkType: hard + +"@babel/plugin-transform-new-target@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-new-target@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: bd780e14f46af55d0ae8503b3cb81ca86dcc73ed782f177e74f498fff934754f9e9911df1f8f3bd123777eed7c1c1af4d66abab87c8daae5403e7719a6b845d1 + languageName: node + linkType: hard + +"@babel/plugin-transform-object-super@npm:^7.0.0, @babel/plugin-transform-object-super@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-object-super@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-replace-supers": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0fcb04e15deea96ae047c21cb403607d49f06b23b4589055993365ebd7a7d7541334f06bf9642e90075e66efce6ebaf1eb0ef066fbbab802d21d714f1aac3aef + languageName: node + linkType: hard + +"@babel/plugin-transform-parameters@npm:^7.0.0, @babel/plugin-transform-parameters@npm:^7.20.1, @babel/plugin-transform-parameters@npm:^7.20.7": + version: 7.21.3 + resolution: "@babel/plugin-transform-parameters@npm:7.21.3" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c92128d7b1fcf54e2cab186c196bbbf55a9a6de11a83328dc2602649c9dc6d16ef73712beecd776cd49bfdc624b5f56740f4a53568d3deb9505ec666bc869da3 + languageName: node + linkType: hard + +"@babel/plugin-transform-property-literals@npm:^7.0.0, @babel/plugin-transform-property-literals@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-property-literals@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 1c16e64de554703f4b547541de2edda6c01346dd3031d4d29e881aa7733785cd26d53611a4ccf5353f4d3e69097bb0111c0a93ace9e683edd94fea28c4484144 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-display-name@npm:^7.0.0, @babel/plugin-transform-react-display-name@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-react-display-name@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 51c087ab9e41ef71a29335587da28417536c6f816c292e092ffc0e0985d2f032656801d4dd502213ce32481f4ba6c69402993ffa67f0818a07606ff811e4be49 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx-development@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-react-jsx-development@npm:7.18.6" + dependencies: + "@babel/plugin-transform-react-jsx": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ec9fa65db66f938b75c45e99584367779ac3e0af8afc589187262e1337c7c4205ea312877813ae4df9fb93d766627b8968d74ac2ba702e4883b1dbbe4953ecee + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx-self@npm:^7.18.6": + version: 7.21.0 + resolution: "@babel/plugin-transform-react-jsx-self@npm:7.21.0" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 696f74c04a265409ccd46e333ff762e6011d394e6972128b5d97db4c1647289141bc7ebd45ab2bab99b60932f9793e8f89ee9432d3bde19962de2100456f6147 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx-source@npm:^7.19.6": + version: 7.19.6 + resolution: "@babel/plugin-transform-react-jsx-source@npm:7.19.6" + dependencies: + "@babel/helper-plugin-utils": ^7.19.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 1e9e29a4efc5b79840bd4f68e404f5ab7765ce48c7bd22f12f2b185f9c782c66933bdf54a1b21879e4e56e6b50b4e88aca82789ecb1f61123af6dfa9ab16c555 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx@npm:^7.0.0, @babel/plugin-transform-react-jsx@npm:^7.18.6": + version: 7.21.0 + resolution: "@babel/plugin-transform-react-jsx@npm:7.21.0" + dependencies: + "@babel/helper-annotate-as-pure": ^7.18.6 + "@babel/helper-module-imports": ^7.18.6 + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/plugin-syntax-jsx": ^7.18.6 + "@babel/types": ^7.21.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c77d277d2e55b489a9b9be185c3eed5d8e2c87046778810f8e47ee3c87b47e64cad93c02211c968486c7958fd05ce203c66779446484c98a7b3a69bec687d5dc + languageName: node + linkType: hard + +"@babel/plugin-transform-react-pure-annotations@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.18.6" + dependencies: + "@babel/helper-annotate-as-pure": ^7.18.6 + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 97c4873d409088f437f9084d084615948198dd87fc6723ada0e7e29c5a03623c2f3e03df3f52e7e7d4d23be32a08ea00818bff302812e48713c706713bd06219 + languageName: node + linkType: hard + +"@babel/plugin-transform-regenerator@npm:^7.18.6": + version: 7.20.5 + resolution: "@babel/plugin-transform-regenerator@npm:7.20.5" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + regenerator-transform: ^0.15.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 13164861e71fb23d84c6270ef5330b03c54d5d661c2c7468f28e21c4f8598558ca0c8c3cb1d996219352946e849d270a61372bc93c8fbe9676e78e3ffd0dea07 + languageName: node + linkType: hard + +"@babel/plugin-transform-reserved-words@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-reserved-words@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0738cdc30abdae07c8ec4b233b30c31f68b3ff0eaa40eddb45ae607c066127f5fa99ddad3c0177d8e2832e3a7d3ad115775c62b431ebd6189c40a951b867a80c + languageName: node + linkType: hard + +"@babel/plugin-transform-shorthand-properties@npm:^7.0.0, @babel/plugin-transform-shorthand-properties@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b8e4e8acc2700d1e0d7d5dbfd4fdfb935651913de6be36e6afb7e739d8f9ca539a5150075a0f9b79c88be25ddf45abb912fe7abf525f0b80f5b9d9860de685d7 + languageName: node + linkType: hard + +"@babel/plugin-transform-spread@npm:^7.0.0, @babel/plugin-transform-spread@npm:^7.19.0": + version: 7.20.7 + resolution: "@babel/plugin-transform-spread@npm:7.20.7" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 8ea698a12da15718aac7489d4cde10beb8a3eea1f66167d11ab1e625033641e8b328157fd1a0b55dd6531933a160c01fc2e2e61132a385cece05f26429fd0cc2 + languageName: node + linkType: hard + +"@babel/plugin-transform-sticky-regex@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 68ea18884ae9723443ffa975eb736c8c0d751265859cd3955691253f7fee37d7a0f7efea96c8a062876af49a257a18ea0ed5fea0d95a7b3611ce40f7ee23aee3 + languageName: node + linkType: hard + +"@babel/plugin-transform-template-literals@npm:^7.0.0, @babel/plugin-transform-template-literals@npm:^7.18.9": + version: 7.18.9 + resolution: "@babel/plugin-transform-template-literals@npm:7.18.9" + dependencies: + "@babel/helper-plugin-utils": ^7.18.9 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3d2fcd79b7c345917f69b92a85bdc3ddd68ce2c87dc70c7d61a8373546ccd1f5cb8adc8540b49dfba08e1b82bb7b3bbe23a19efdb2b9c994db2db42906ca9fb2 + languageName: node + linkType: hard + +"@babel/plugin-transform-typeof-symbol@npm:^7.18.9": + version: 7.18.9 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.18.9" + dependencies: + "@babel/helper-plugin-utils": ^7.18.9 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: e754e0d8b8a028c52e10c148088606e3f7a9942c57bd648fc0438e5b4868db73c386a5ed47ab6d6f0594aae29ee5ffc2ffc0f7ebee7fae560a066d6dea811cd4 + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-escapes@npm:^7.18.10": + version: 7.18.10 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.18.10" + dependencies: + "@babel/helper-plugin-utils": ^7.18.9 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: f5baca55cb3c11bc08ec589f5f522d85c1ab509b4d11492437e45027d64ae0b22f0907bd1381e8d7f2a436384bb1f9ad89d19277314242c5c2671a0f91d0f9cd + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-regex@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.18.6" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.18.6 + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: d9e18d57536a2d317fb0b7c04f8f55347f3cfacb75e636b4c6fa2080ab13a3542771b5120e726b598b815891fc606d1472ac02b749c69fd527b03847f22dc25e + languageName: node + linkType: hard + +"@babel/preset-env@npm:7.20.2": + version: 7.20.2 + resolution: "@babel/preset-env@npm:7.20.2" + dependencies: + "@babel/compat-data": ^7.20.1 + "@babel/helper-compilation-targets": ^7.20.0 + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-validator-option": ^7.18.6 + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.18.6 + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.18.9 + "@babel/plugin-proposal-async-generator-functions": ^7.20.1 + "@babel/plugin-proposal-class-properties": ^7.18.6 + "@babel/plugin-proposal-class-static-block": ^7.18.6 + "@babel/plugin-proposal-dynamic-import": ^7.18.6 + "@babel/plugin-proposal-export-namespace-from": ^7.18.9 + "@babel/plugin-proposal-json-strings": ^7.18.6 + "@babel/plugin-proposal-logical-assignment-operators": ^7.18.9 + "@babel/plugin-proposal-nullish-coalescing-operator": ^7.18.6 + "@babel/plugin-proposal-numeric-separator": ^7.18.6 + "@babel/plugin-proposal-object-rest-spread": ^7.20.2 + "@babel/plugin-proposal-optional-catch-binding": ^7.18.6 + "@babel/plugin-proposal-optional-chaining": ^7.18.9 + "@babel/plugin-proposal-private-methods": ^7.18.6 + "@babel/plugin-proposal-private-property-in-object": ^7.18.6 + "@babel/plugin-proposal-unicode-property-regex": ^7.18.6 + "@babel/plugin-syntax-async-generators": ^7.8.4 + "@babel/plugin-syntax-class-properties": ^7.12.13 + "@babel/plugin-syntax-class-static-block": ^7.14.5 + "@babel/plugin-syntax-dynamic-import": ^7.8.3 + "@babel/plugin-syntax-export-namespace-from": ^7.8.3 + "@babel/plugin-syntax-import-assertions": ^7.20.0 + "@babel/plugin-syntax-json-strings": ^7.8.3 + "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + "@babel/plugin-syntax-numeric-separator": ^7.10.4 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + "@babel/plugin-syntax-private-property-in-object": ^7.14.5 + "@babel/plugin-syntax-top-level-await": ^7.14.5 + "@babel/plugin-transform-arrow-functions": ^7.18.6 + "@babel/plugin-transform-async-to-generator": ^7.18.6 + "@babel/plugin-transform-block-scoped-functions": ^7.18.6 + "@babel/plugin-transform-block-scoping": ^7.20.2 + "@babel/plugin-transform-classes": ^7.20.2 + "@babel/plugin-transform-computed-properties": ^7.18.9 + "@babel/plugin-transform-destructuring": ^7.20.2 + "@babel/plugin-transform-dotall-regex": ^7.18.6 + "@babel/plugin-transform-duplicate-keys": ^7.18.9 + "@babel/plugin-transform-exponentiation-operator": ^7.18.6 + "@babel/plugin-transform-for-of": ^7.18.8 + "@babel/plugin-transform-function-name": ^7.18.9 + "@babel/plugin-transform-literals": ^7.18.9 + "@babel/plugin-transform-member-expression-literals": ^7.18.6 + "@babel/plugin-transform-modules-amd": ^7.19.6 + "@babel/plugin-transform-modules-commonjs": ^7.19.6 + "@babel/plugin-transform-modules-systemjs": ^7.19.6 + "@babel/plugin-transform-modules-umd": ^7.18.6 + "@babel/plugin-transform-named-capturing-groups-regex": ^7.19.1 + "@babel/plugin-transform-new-target": ^7.18.6 + "@babel/plugin-transform-object-super": ^7.18.6 + "@babel/plugin-transform-parameters": ^7.20.1 + "@babel/plugin-transform-property-literals": ^7.18.6 + "@babel/plugin-transform-regenerator": ^7.18.6 + "@babel/plugin-transform-reserved-words": ^7.18.6 + "@babel/plugin-transform-shorthand-properties": ^7.18.6 + "@babel/plugin-transform-spread": ^7.19.0 + "@babel/plugin-transform-sticky-regex": ^7.18.6 + "@babel/plugin-transform-template-literals": ^7.18.9 + "@babel/plugin-transform-typeof-symbol": ^7.18.9 + "@babel/plugin-transform-unicode-escapes": ^7.18.10 + "@babel/plugin-transform-unicode-regex": ^7.18.6 + "@babel/preset-modules": ^0.1.5 + "@babel/types": ^7.20.2 + babel-plugin-polyfill-corejs2: ^0.3.3 + babel-plugin-polyfill-corejs3: ^0.6.0 + babel-plugin-polyfill-regenerator: ^0.4.1 + core-js-compat: ^3.25.1 + semver: ^6.3.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ece2d7e9c7789db6116e962b8e1a55eb55c110c44c217f0c8f6ffea4ca234954e66557f7bd019b7affadf7fbb3a53ccc807e93fc935aacd48146234b73b6947e + languageName: node + linkType: hard + +"@babel/preset-modules@npm:^0.1.5": + version: 0.1.5 + resolution: "@babel/preset-modules@npm:0.1.5" + dependencies: + "@babel/helper-plugin-utils": ^7.0.0 + "@babel/plugin-proposal-unicode-property-regex": ^7.4.4 + "@babel/plugin-transform-dotall-regex": ^7.4.4 + "@babel/types": ^7.4.4 + esutils: ^2.0.2 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 8430e0e9e9d520b53e22e8c4c6a5a080a12b63af6eabe559c2310b187bd62ae113f3da82ba33e9d1d0f3230930ca702843aae9dd226dec51f7d7114dc1f51c10 + languageName: node + linkType: hard + +"@babel/preset-react@npm:7.18.6": + version: 7.18.6 + resolution: "@babel/preset-react@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-validator-option": ^7.18.6 + "@babel/plugin-transform-react-display-name": ^7.18.6 + "@babel/plugin-transform-react-jsx": ^7.18.6 + "@babel/plugin-transform-react-jsx-development": ^7.18.6 + "@babel/plugin-transform-react-pure-annotations": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 540d9cf0a0cc0bb07e6879994e6fb7152f87dafbac880b56b65e2f528134c7ba33e0cd140b58700c77b2ebf4c81fa6468fed0ba391462d75efc7f8c1699bb4c3 + languageName: node + linkType: hard + +"@babel/regjsgen@npm:^0.8.0": + version: 0.8.0 + resolution: "@babel/regjsgen@npm:0.8.0" + checksum: 89c338fee774770e5a487382170711014d49a68eb281e74f2b5eac88f38300a4ad545516a7786a8dd5702e9cf009c94c2f582d200f077ac5decd74c56b973730 + languageName: node + linkType: hard + +"@babel/runtime@npm:7.2.0": + version: 7.2.0 + resolution: "@babel/runtime@npm:7.2.0" + dependencies: + regenerator-runtime: ^0.12.0 + checksum: c0f156eba9700f8e467926a668d5eb77a83f2630873dac7f5cbf77f1a1807299c2cca6a6231c0a494164c279e8c30ca15572d15ecd9fe20b2f20c21764bde543 + languageName: node + linkType: hard + +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7": + version: 7.21.0 + resolution: "@babel/runtime@npm:7.21.0" + dependencies: + regenerator-runtime: ^0.13.11 + checksum: 7b33e25bfa9e0e1b9e8828bb61b2d32bdd46b41b07ba7cb43319ad08efc6fda8eb89445193e67d6541814627df0ca59122c0ea795e412b99c5183a0540d338ab + languageName: node + linkType: hard + +"@babel/template@npm:^7.18.10, @babel/template@npm:^7.20.7": + version: 7.20.7 + resolution: "@babel/template@npm:7.20.7" + dependencies: + "@babel/code-frame": ^7.18.6 + "@babel/parser": ^7.20.7 + "@babel/types": ^7.20.7 + checksum: 2eb1a0ab8d415078776bceb3473d07ab746e6bb4c2f6ca46ee70efb284d75c4a32bb0cd6f4f4946dec9711f9c0780e8e5d64b743208deac6f8e9858afadc349e + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.16.8, @babel/traverse@npm:^7.20.12, @babel/traverse@npm:^7.20.5, @babel/traverse@npm:^7.20.7, @babel/traverse@npm:^7.21.3, @babel/traverse@npm:^7.4.5": + version: 7.21.3 + resolution: "@babel/traverse@npm:7.21.3" + dependencies: + "@babel/code-frame": ^7.18.6 + "@babel/generator": ^7.21.3 + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-function-name": ^7.21.0 + "@babel/helper-hoist-variables": ^7.18.6 + "@babel/helper-split-export-declaration": ^7.18.6 + "@babel/parser": ^7.21.3 + "@babel/types": ^7.21.3 + debug: ^4.1.0 + globals: ^11.1.0 + checksum: 0af5bcd47a2fc501592b90ac1feae9d449afb9ab0772a4f6e68230f4cd3a475795d538c1de3f880fe3414b6c2820bac84d02c6549eea796f39d74a603717447b + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.21.0, @babel/traverse@npm:^7.21.2": + version: 7.21.2 + resolution: "@babel/traverse@npm:7.21.2" + dependencies: + "@babel/code-frame": ^7.18.6 + "@babel/generator": ^7.21.1 + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-function-name": ^7.21.0 + "@babel/helper-hoist-variables": ^7.18.6 + "@babel/helper-split-export-declaration": ^7.18.6 + "@babel/parser": ^7.21.2 + "@babel/types": ^7.21.2 + debug: ^4.1.0 + globals: ^11.1.0 + checksum: d851e3f5cfbdc2fac037a014eae7b0707709de50f7d2fbb82ffbf932d3eeba90a77431529371d6e544f8faaf8c6540eeb18fdd8d1c6fa2b61acea0fb47e18d4b + languageName: node + linkType: hard + +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.16.8, @babel/types@npm:^7.18.13, @babel/types@npm:^7.18.9, @babel/types@npm:^7.20.0, @babel/types@npm:^7.20.5, @babel/types@npm:^7.21.3, @babel/types@npm:^7.4.4": + version: 7.21.3 + resolution: "@babel/types@npm:7.21.3" + dependencies: + "@babel/helper-string-parser": ^7.19.4 + "@babel/helper-validator-identifier": ^7.19.1 + to-fast-properties: ^2.0.0 + checksum: b750274718ba9cefd0b81836c464009bb6ba339fccce51b9baff497a0a2d96c044c61dc90cf203cec0adc770454b53a9681c3f7716883c802b85ab84c365ba35 + languageName: node + linkType: hard + +"@babel/types@npm:^7.18.6, @babel/types@npm:^7.20.2, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.0, @babel/types@npm:^7.21.2, @babel/types@npm:^7.8.3": + version: 7.21.2 + resolution: "@babel/types@npm:7.21.2" + dependencies: + "@babel/helper-string-parser": ^7.19.4 + "@babel/helper-validator-identifier": ^7.19.1 + to-fast-properties: ^2.0.0 + checksum: a45a52acde139e575502c6de42c994bdbe262bafcb92ae9381fb54cdf1a3672149086843fda655c7683ce9806e998fd002bbe878fa44984498d0fdc7935ce7ff + languageName: node + linkType: hard + +"@emotion/babel-plugin@npm:^11.10.6": + version: 11.10.6 + resolution: "@emotion/babel-plugin@npm:11.10.6" + dependencies: + "@babel/helper-module-imports": ^7.16.7 + "@babel/runtime": ^7.18.3 + "@emotion/hash": ^0.9.0 + "@emotion/memoize": ^0.8.0 + "@emotion/serialize": ^1.1.1 + babel-plugin-macros: ^3.1.0 + convert-source-map: ^1.5.0 + escape-string-regexp: ^4.0.0 + find-root: ^1.1.0 + source-map: ^0.5.7 + stylis: 4.1.3 + checksum: 3eed138932e8edf2598352e69ad949b9db3051a4d6fcff190dacbac9aa838d7ef708b9f3e6c48660625d9311dae82d73477ae4e7a31139feef5eb001a5528421 + languageName: node + linkType: hard + +"@emotion/cache@npm:^11.10.5": + version: 11.10.5 + resolution: "@emotion/cache@npm:11.10.5" + dependencies: + "@emotion/memoize": ^0.8.0 + "@emotion/sheet": ^1.2.1 + "@emotion/utils": ^1.2.0 + "@emotion/weak-memoize": ^0.3.0 + stylis: 4.1.3 + checksum: 1dd2d9af2d3ecbd3d4469ecdf91a335eef6034c851b57a474471b2d2280613eb35bbed98c0368cc4625f188619fbdaf04cf07e8107aaffce94b2178444c0fe7b + languageName: node + linkType: hard + +"@emotion/hash@npm:^0.9.0": + version: 0.9.0 + resolution: "@emotion/hash@npm:0.9.0" + checksum: b63428f7c8186607acdca5d003700cecf0ded519d0b5c5cc3b3154eafcad6ff433f8361bd2bac8882715b557e6f06945694aeb6ba8b25c6095d7a88570e2e0bb + languageName: node + linkType: hard + +"@emotion/is-prop-valid@npm:^1.1.0, @emotion/is-prop-valid@npm:^1.2.0": + version: 1.2.0 + resolution: "@emotion/is-prop-valid@npm:1.2.0" + dependencies: + "@emotion/memoize": ^0.8.0 + checksum: cc7a19850a4c5b24f1514665289442c8c641709e6f7711067ad550e05df331da0692a16148e85eda6f47e31b3261b64d74c5e25194d053223be16231f969d633 + languageName: node + linkType: hard + +"@emotion/memoize@npm:^0.8.0": + version: 0.8.0 + resolution: "@emotion/memoize@npm:0.8.0" + checksum: c87bb110b829edd8e1c13b90a6bc37cebc39af29c7599a1e66a48e06f9bec43e8e53495ba86278cc52e7589549492c8dfdc81d19f4fdec0cee6ba13d2ad2c928 + languageName: node + linkType: hard + +"@emotion/react@npm:11.10.6": + version: 11.10.6 + resolution: "@emotion/react@npm:11.10.6" + dependencies: + "@babel/runtime": ^7.18.3 + "@emotion/babel-plugin": ^11.10.6 + "@emotion/cache": ^11.10.5 + "@emotion/serialize": ^1.1.1 + "@emotion/use-insertion-effect-with-fallbacks": ^1.0.0 + "@emotion/utils": ^1.2.0 + "@emotion/weak-memoize": ^0.3.0 + hoist-non-react-statics: ^3.3.1 + peerDependencies: + react: ">=16.8.0" + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 4762042e39126ffaffe76052dc65c9bb0ba6b8893013687ba3cc13ed4dd834c31597f1230684c3c078e90aecc13ab6cd0e3cde0dec8b7761affd2571f4d80019 + languageName: node + linkType: hard + +"@emotion/serialize@npm:^1.1.1": + version: 1.1.1 + resolution: "@emotion/serialize@npm:1.1.1" + dependencies: + "@emotion/hash": ^0.9.0 + "@emotion/memoize": ^0.8.0 + "@emotion/unitless": ^0.8.0 + "@emotion/utils": ^1.2.0 + csstype: ^3.0.2 + checksum: 24cfd5b16e6f2335c032ca33804a876e0442aaf8f9c94d269d23735ebd194fb1ed142542dd92191a3e6ef8bad5bd560dfc5aaf363a1b70954726dbd4dd93085c + languageName: node + linkType: hard + +"@emotion/sheet@npm:^1.2.1": + version: 1.2.1 + resolution: "@emotion/sheet@npm:1.2.1" + checksum: ce78763588ea522438156344d9f592203e2da582d8d67b32e1b0b98eaba26994c6c270f8c7ad46442fc9c0a9f048685d819cd73ca87e544520fd06f0e24a1562 + languageName: node + linkType: hard + +"@emotion/styled@npm:11.10.6": + version: 11.10.6 + resolution: "@emotion/styled@npm:11.10.6" + dependencies: + "@babel/runtime": ^7.18.3 + "@emotion/babel-plugin": ^11.10.6 + "@emotion/is-prop-valid": ^1.2.0 + "@emotion/serialize": ^1.1.1 + "@emotion/use-insertion-effect-with-fallbacks": ^1.0.0 + "@emotion/utils": ^1.2.0 + peerDependencies: + "@emotion/react": ^11.0.0-rc.0 + react: ">=16.8.0" + peerDependenciesMeta: + "@types/react": + optional: true + checksum: ed0ee4bec3b63ee9c5eb8216b22646313ff1ada06c5183f128d25b73252126e9fde625e81c868be7ccd666b686a73076f923ce188dac25e93d5062ddffdad46f + languageName: node + linkType: hard + +"@emotion/stylis@npm:^0.8.4": + version: 0.8.5 + resolution: "@emotion/stylis@npm:0.8.5" + checksum: 67ff5958449b2374b329fb96e83cb9025775ffe1e79153b499537c6c8b2eb64b77f32d7b5d004d646973662356ceb646afd9269001b97c54439fceea3203ce65 + languageName: node + linkType: hard + +"@emotion/unitless@npm:^0.7.4": + version: 0.7.5 + resolution: "@emotion/unitless@npm:0.7.5" + checksum: f976e5345b53fae9414a7b2e7a949aa6b52f8bdbcc84458b1ddc0729e77ba1d1dfdff9960e0da60183877873d3a631fa24d9695dd714ed94bcd3ba5196586a6b + languageName: node + linkType: hard + +"@emotion/unitless@npm:^0.8.0": + version: 0.8.0 + resolution: "@emotion/unitless@npm:0.8.0" + checksum: 176141117ed23c0eb6e53a054a69c63e17ae532ec4210907a20b2208f91771821835f1c63dd2ec63e30e22fcc984026d7f933773ee6526dd038e0850919fae7a + languageName: node + linkType: hard + +"@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.0": + version: 1.0.0 + resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.0.0" + peerDependencies: + react: ">=16.8.0" + checksum: 4f06a3b48258c832aa8022a262572061a31ff078d377e9164cccc99951309d70f4466e774fe704461b2f8715007a82ed625a54a5c7a127c89017d3ce3187d4f1 + languageName: node + linkType: hard + +"@emotion/utils@npm:^1.2.0": + version: 1.2.0 + resolution: "@emotion/utils@npm:1.2.0" + checksum: 55457a49ddd4db6a014ea0454dc09eaa23eedfb837095c8ff90470cb26a303f7ceb5fcc1e2190ef64683e64cfd33d3ba3ca3109cd87d12bc9e379e4195c9a4dd + languageName: node + linkType: hard + +"@emotion/weak-memoize@npm:^0.3.0": + version: 0.3.0 + resolution: "@emotion/weak-memoize@npm:0.3.0" + checksum: f43ef4c8b7de70d9fa5eb3105921724651e4188e895beb71f0c5919dc899a7b8743e1fdd99d38b9092dd5722c7be2312ebb47fbdad0c4e38bea58f6df5885cc0 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.17.12": + version: 0.17.12 + resolution: "@esbuild/android-arm64@npm:0.17.12" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.17.12": + version: 0.17.12 + resolution: "@esbuild/android-arm@npm:0.17.12" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.17.12": + version: 0.17.12 + resolution: "@esbuild/android-x64@npm:0.17.12" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.17.12": + version: 0.17.12 + resolution: "@esbuild/darwin-arm64@npm:0.17.12" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.17.12": + version: 0.17.12 + resolution: "@esbuild/darwin-x64@npm:0.17.12" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.17.12": + version: 0.17.12 + resolution: "@esbuild/freebsd-arm64@npm:0.17.12" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.17.12": + version: 0.17.12 + resolution: "@esbuild/freebsd-x64@npm:0.17.12" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.17.12": + version: 0.17.12 + resolution: "@esbuild/linux-arm64@npm:0.17.12" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.17.12": + version: 0.17.12 + resolution: "@esbuild/linux-arm@npm:0.17.12" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.17.12": + version: 0.17.12 + resolution: "@esbuild/linux-ia32@npm:0.17.12" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.17.12": + version: 0.17.12 + resolution: "@esbuild/linux-loong64@npm:0.17.12" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.17.12": + version: 0.17.12 + resolution: "@esbuild/linux-mips64el@npm:0.17.12" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.17.12": + version: 0.17.12 + resolution: "@esbuild/linux-ppc64@npm:0.17.12" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.17.12": + version: 0.17.12 + resolution: "@esbuild/linux-riscv64@npm:0.17.12" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.17.12": + version: 0.17.12 + resolution: "@esbuild/linux-s390x@npm:0.17.12" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.17.12": + version: 0.17.12 + resolution: "@esbuild/linux-x64@npm:0.17.12" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.17.12": + version: 0.17.12 + resolution: "@esbuild/netbsd-x64@npm:0.17.12" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.17.12": + version: 0.17.12 + resolution: "@esbuild/openbsd-x64@npm:0.17.12" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.17.12": + version: 0.17.12 + resolution: "@esbuild/sunos-x64@npm:0.17.12" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.17.12": + version: 0.17.12 + resolution: "@esbuild/win32-arm64@npm:0.17.12" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.17.12": + version: 0.17.12 + resolution: "@esbuild/win32-ia32@npm:0.17.12" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.17.12": + version: 0.17.12 + resolution: "@esbuild/win32-x64@npm:0.17.12" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@eslint-community/eslint-utils@npm:^4.2.0": + version: 4.3.0 + resolution: "@eslint-community/eslint-utils@npm:4.3.0" + dependencies: + eslint-visitor-keys: ^3.3.0 + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: f487760a692f0f1fef76e248ad72976919576ba57edc2b1b1dc1d182553bae6b5bf7b078e654da85d04f0af8a485d20bd26280002768f4fbcd2e330078340cb0 + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.4.0": + version: 4.4.0 + resolution: "@eslint-community/regexpp@npm:4.4.0" + checksum: 2d127af0c752b80e8a782eacfe996a86925d21de92da3ffc6f9e615e701145e44a62e26bdd88bfac2cd76779c39ba8d9875a91046ec5e7e5f23cb647c247ea6a + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^1.4.1": + version: 1.4.1 + resolution: "@eslint/eslintrc@npm:1.4.1" + dependencies: + ajv: ^6.12.4 + debug: ^4.3.2 + espree: ^9.4.0 + globals: ^13.19.0 + ignore: ^5.2.0 + import-fresh: ^3.2.1 + js-yaml: ^4.1.0 + minimatch: ^3.1.2 + strip-json-comments: ^3.1.1 + checksum: cd3e5a8683db604739938b1c1c8b77927dc04fce3e28e0c88e7f2cd4900b89466baf83dfbad76b2b9e4d2746abdd00dd3f9da544d3e311633d8693f327d04cd7 + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^2.0.1": + version: 2.0.1 + resolution: "@eslint/eslintrc@npm:2.0.1" + dependencies: + ajv: ^6.12.4 + debug: ^4.3.2 + espree: ^9.5.0 + globals: ^13.19.0 + ignore: ^5.2.0 + import-fresh: ^3.2.1 + js-yaml: ^4.1.0 + minimatch: ^3.1.2 + strip-json-comments: ^3.1.1 + checksum: 56b9192a687a450db53a7b883daf9f0f447c43b3510189cf88808a7a2467c2a302a42a50f184cc6d5a9faf3d1df890a2ef0fd0d60b751f32a3e9dfea717c6b48 + languageName: node + linkType: hard + +"@eslint/js@npm:8.36.0": + version: 8.36.0 + resolution: "@eslint/js@npm:8.36.0" + checksum: b7d6b84b823c8c7784be390741196617565527b1f7c0977fde9455bfb57fd88f81c074a03dd878757d2c33fa29f24291e9ecbc1425710f067917324b55e1bf3a + languageName: node + linkType: hard + +"@floating-ui/core@npm:^1.2.4": + version: 1.2.4 + resolution: "@floating-ui/core@npm:1.2.4" + checksum: 1c163ea1804e2b0a28fda6e32efed0e242d0db8081fd24aab9d1cbb100f94a558709231c483bf74bf09a9204ea6e7845813d43b5322ceb6ee63285308f68f65b + languageName: node + linkType: hard + +"@floating-ui/dom@npm:^1.2.1": + version: 1.2.5 + resolution: "@floating-ui/dom@npm:1.2.5" + dependencies: + "@floating-ui/core": ^1.2.4 + checksum: a21c272a36c7cd7d337eaed82c1f8a81ccc5003d04cefa07591dc7fbb0a24d57a2c097b410593b5416145a68ac10a7a7a745c3cc4f8196268fa002364d28804b + languageName: node + linkType: hard + +"@floating-ui/react-dom-interactions@npm:0.13.3": + version: 0.13.3 + resolution: "@floating-ui/react-dom-interactions@npm:0.13.3" + dependencies: + "@floating-ui/react-dom": ^1.0.1 + aria-hidden: ^1.1.3 + tabbable: ^6.0.1 + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: a72a036628b9c423114b3654ae239b50fac14c191fcad402ebc4cd4818b7fe2fdce000791487cf6afcafd1b7eff35a99ffe15df4e1c3b3271fbb617717fc4df2 + languageName: node + linkType: hard + +"@floating-ui/react-dom@npm:^1.0.1": + version: 1.3.0 + resolution: "@floating-ui/react-dom@npm:1.3.0" + dependencies: + "@floating-ui/dom": ^1.2.1 + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: ce0ad3e3bbe43cfd15a6a0d5cccede02175c845862bfab52027995ab99c6b29630180dc7d146f76ebb34730f90a6ab9bf193c8984fe8d7f56062308e4ca98f77 + languageName: node + linkType: hard + +"@formatjs/ecma402-abstract@npm:1.14.3": + version: 1.14.3 + resolution: "@formatjs/ecma402-abstract@npm:1.14.3" + dependencies: + "@formatjs/intl-localematcher": 0.2.32 + tslib: ^2.4.0 + checksum: 504ae9775094adec611aa0bbc6dadec2360ba30c13331f376feacd75b23f856ac1e45e3c88a572fb91ff917e726d0cc7e6e1b6c5b73af48f53896592362c91d5 + languageName: node + linkType: hard + +"@formatjs/fast-memoize@npm:2.0.1": + version: 2.0.1 + resolution: "@formatjs/fast-memoize@npm:2.0.1" + dependencies: + tslib: ^2.4.0 + checksum: e434cdc53354666459c47556c403f0ed3391ebab0e851a64e5622d8d81e3b684a74a09c4bf5189885c66e743004601f64e2e2c8c70adf6b00071d4afea20f69d + languageName: node + linkType: hard + +"@formatjs/icu-messageformat-parser@npm:2.3.0": + version: 2.3.0 + resolution: "@formatjs/icu-messageformat-parser@npm:2.3.0" + dependencies: + "@formatjs/ecma402-abstract": 1.14.3 + "@formatjs/icu-skeleton-parser": 1.3.18 + tslib: ^2.4.0 + checksum: e8aca733bed81c94ec16fa9f1a88dbaf93a644a8c5796a6ab1e795112dd1f6c1e92528a123483d3034ac5e6b2b454481ef61f7e56e6e77f1467f9524be7fe331 + languageName: node + linkType: hard + +"@formatjs/icu-skeleton-parser@npm:1.3.18": + version: 1.3.18 + resolution: "@formatjs/icu-skeleton-parser@npm:1.3.18" + dependencies: + "@formatjs/ecma402-abstract": 1.14.3 + tslib: ^2.4.0 + checksum: 19655c452ed3c45db07b03c90fbfe6172655b0babb9579f2d9397ca2b3c56e5e17a3beed1d13af12104313e6ed1f14976d7c996756f1a59c977d6f3228518fad + languageName: node + linkType: hard + +"@formatjs/intl-localematcher@npm:0.2.32": + version: 0.2.32 + resolution: "@formatjs/intl-localematcher@npm:0.2.32" + dependencies: + tslib: ^2.4.0 + checksum: 477e18aabaf2e6e90fc12952a3cb6c0ebb40ad99414d6b9d2501c6348fbad58cacb433ec6630955cfd1491ea7630f32a9dc280bb27d0fb8a784251404a54140a + languageName: node + linkType: hard + +"@gar/promisify@npm:^1.1.3": + version: 1.1.3 + resolution: "@gar/promisify@npm:1.1.3" + checksum: 4059f790e2d07bf3c3ff3e0fec0daa8144fe35c1f6e0111c9921bd32106adaa97a4ab096ad7dab1e28ee6a9060083c4d1a4ada42a7f5f3f7a96b8812e2b757c1 + languageName: node + linkType: hard + +"@graphql-codegen/add@npm:4.0.1": + version: 4.0.1 + resolution: "@graphql-codegen/add@npm:4.0.1" + dependencies: + "@graphql-codegen/plugin-helpers": ^4.1.0 + tslib: ~2.5.0 + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 0a1ee993cda0fd2adbffd79db03007e9eaa32830607ba6d46c12414bd9e0f568cee8c0d9ad976915b35a4647ff3201364383e57e023ab7dfd3b18f7c69c464e8 + languageName: node + linkType: hard + +"@graphql-codegen/cli@npm:3.2.2": + version: 3.2.2 + resolution: "@graphql-codegen/cli@npm:3.2.2" + dependencies: + "@babel/generator": ^7.18.13 + "@babel/template": ^7.18.10 + "@babel/types": ^7.18.13 + "@graphql-codegen/core": ^3.1.0 + "@graphql-codegen/plugin-helpers": ^4.1.0 + "@graphql-tools/apollo-engine-loader": ^7.3.6 + "@graphql-tools/code-file-loader": ^7.3.17 + "@graphql-tools/git-loader": ^7.2.13 + "@graphql-tools/github-loader": ^7.3.20 + "@graphql-tools/graphql-file-loader": ^7.5.0 + "@graphql-tools/json-file-loader": ^7.4.1 + "@graphql-tools/load": ^7.8.0 + "@graphql-tools/prisma-loader": ^7.2.49 + "@graphql-tools/url-loader": ^7.13.2 + "@graphql-tools/utils": ^9.0.0 + "@parcel/watcher": ^2.1.0 + "@whatwg-node/fetch": ^0.8.0 + chalk: ^4.1.0 + cosmiconfig: ^7.0.0 + debounce: ^1.2.0 + detect-indent: ^6.0.0 + graphql-config: ^4.5.0 + inquirer: ^8.0.0 + is-glob: ^4.0.1 + jiti: ^1.17.1 + json-to-pretty-yaml: ^1.2.2 + listr2: ^4.0.5 + log-symbols: ^4.0.0 + micromatch: ^4.0.5 + shell-quote: ^1.7.3 + string-env-interpolation: ^1.0.1 + ts-log: ^2.2.3 + tslib: ^2.4.0 + yaml: ^1.10.0 + yargs: ^17.0.0 + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + bin: + gql-gen: cjs/bin.js + graphql-code-generator: cjs/bin.js + graphql-codegen: cjs/bin.js + graphql-codegen-esm: esm/bin.js + checksum: b94284ac538a3504f96c7d507c140b7cfee30042209c4230ffc3068f05b6b27c75e1922b31c696363ab43e34e472ed194cc72996bbb10f59991cd2a4a35ff36e + languageName: node + linkType: hard + +"@graphql-codegen/core@npm:^3.1.0": + version: 3.1.0 + resolution: "@graphql-codegen/core@npm:3.1.0" + dependencies: + "@graphql-codegen/plugin-helpers": ^4.1.0 + "@graphql-tools/schema": ^9.0.0 + "@graphql-tools/utils": ^9.1.1 + tslib: ~2.5.0 + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 7ace2b185242d00575b877b0bbb884c66915d246ba17a98c0ab82c2ee3a93ff2c9ae9d7d75a1d346de02ca8f12eb02801ffe2da4846da6e164b43176cd02dd8c + languageName: node + linkType: hard + +"@graphql-codegen/introspection@npm:3.0.1": + version: 3.0.1 + resolution: "@graphql-codegen/introspection@npm:3.0.1" + dependencies: + "@graphql-codegen/plugin-helpers": ^4.1.0 + "@graphql-codegen/visitor-plugin-common": ^3.0.1 + tslib: ~2.5.0 + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 054ce28956e63ec2e5dbc4b0d812d2ca6784c72a17c936e0066b3792071749ec14bc39a73cea2407221b503a26cd65cb2eb3da59d632681b60aeee767024bbe2 + languageName: node + linkType: hard + +"@graphql-codegen/plugin-helpers@npm:^2.7.2": + version: 2.7.2 + resolution: "@graphql-codegen/plugin-helpers@npm:2.7.2" + dependencies: + "@graphql-tools/utils": ^8.8.0 + change-case-all: 1.0.14 + common-tags: 1.8.2 + import-from: 4.0.0 + lodash: ~4.17.0 + tslib: ~2.4.0 + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 66e0d507ad5db60b67092ebf7632d464d56ab446ac8fd87c293e00d9016944912d8cf9199e3e026b0a9247a50f50c4118a44f49e13675db64211652cd6259b05 + languageName: node + linkType: hard + +"@graphql-codegen/plugin-helpers@npm:^4.1.0": + version: 4.1.0 + resolution: "@graphql-codegen/plugin-helpers@npm:4.1.0" + dependencies: + "@graphql-tools/utils": ^9.0.0 + change-case-all: 1.0.15 + common-tags: 1.8.2 + import-from: 4.0.0 + lodash: ~4.17.0 + tslib: ~2.5.0 + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: a4d89909d7a62bd7a93041b6073b1d46e912b42f7af1d15c44f7ed595ab1185b6c257cccf8272e0ae36ba22724578449d0e21524e8dbc21fb375da0620687868 + languageName: node + linkType: hard + +"@graphql-codegen/schema-ast@npm:^3.0.1": + version: 3.0.1 + resolution: "@graphql-codegen/schema-ast@npm:3.0.1" + dependencies: + "@graphql-codegen/plugin-helpers": ^4.1.0 + "@graphql-tools/utils": ^9.0.0 + tslib: ~2.5.0 + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 620aa67a4ae59ccb4609763b7347d05e2cec62bf1362be3e1e01fc00969cdbb858398542aa261128e5b5e3cb6808b77861bdcf82662e80326e72b418f25f465f + languageName: node + linkType: hard + +"@graphql-codegen/typescript-operations@npm:3.0.2": + version: 3.0.2 + resolution: "@graphql-codegen/typescript-operations@npm:3.0.2" + dependencies: + "@graphql-codegen/plugin-helpers": ^4.1.0 + "@graphql-codegen/typescript": ^3.0.2 + "@graphql-codegen/visitor-plugin-common": 3.0.2 + auto-bind: ~4.0.0 + tslib: ~2.5.0 + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 35005e34b978db6226c4e7018eaf346c77f0efcd2b121eb69af4669a2604a172415b50244867cc9701c41134a7a4312b92eeec82dcb756e282ba755aea1c4a28 + languageName: node + linkType: hard + +"@graphql-codegen/typescript-react-apollo@npm:3.3.7": + version: 3.3.7 + resolution: "@graphql-codegen/typescript-react-apollo@npm:3.3.7" + dependencies: + "@graphql-codegen/plugin-helpers": ^2.7.2 + "@graphql-codegen/visitor-plugin-common": 2.13.1 + auto-bind: ~4.0.0 + change-case-all: 1.0.14 + tslib: ~2.4.0 + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + graphql-tag: ^2.0.0 + checksum: e21d111ce1c968499a7f233d15801725f67745c53b70a3d6c6076824f81787e7dda34b248e8f606c8a4920dd0c078db1cf644ebd6ffde9b4e7b5b0cd652a4127 + languageName: node + linkType: hard + +"@graphql-codegen/typescript@npm:3.0.2, @graphql-codegen/typescript@npm:^3.0.2": + version: 3.0.2 + resolution: "@graphql-codegen/typescript@npm:3.0.2" + dependencies: + "@graphql-codegen/plugin-helpers": ^4.1.0 + "@graphql-codegen/schema-ast": ^3.0.1 + "@graphql-codegen/visitor-plugin-common": 3.0.2 + auto-bind: ~4.0.0 + tslib: ~2.5.0 + peerDependencies: + graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: e92dc54804b6ad45fb2499b91cb89743e455a984684e2b1df1b1a8f479a0bbffa5c625be97ccb55874ac8b7316a820b546e9e312b22eda78012acd5c27594a28 + languageName: node + linkType: hard + +"@graphql-codegen/visitor-plugin-common@npm:2.13.1": + version: 2.13.1 + resolution: "@graphql-codegen/visitor-plugin-common@npm:2.13.1" + dependencies: + "@graphql-codegen/plugin-helpers": ^2.7.2 + "@graphql-tools/optimize": ^1.3.0 + "@graphql-tools/relay-operation-optimizer": ^6.5.0 + "@graphql-tools/utils": ^8.8.0 + auto-bind: ~4.0.0 + change-case-all: 1.0.14 + dependency-graph: ^0.11.0 + graphql-tag: ^2.11.0 + parse-filepath: ^1.0.2 + tslib: ~2.4.0 + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 0c329aa6e435602f2f6c1569ec2091b7850f58cc5dca7ac763c38c82588545ec1110c1de587f5f3949b11ff96f94401d1e63e329607d78424583b276fd08f1ae + languageName: node + linkType: hard + +"@graphql-codegen/visitor-plugin-common@npm:3.0.2, @graphql-codegen/visitor-plugin-common@npm:^3.0.1": + version: 3.0.2 + resolution: "@graphql-codegen/visitor-plugin-common@npm:3.0.2" + dependencies: + "@graphql-codegen/plugin-helpers": ^4.1.0 + "@graphql-tools/optimize": ^1.3.0 + "@graphql-tools/relay-operation-optimizer": ^6.5.0 + "@graphql-tools/utils": ^9.0.0 + auto-bind: ~4.0.0 + change-case-all: 1.0.15 + dependency-graph: ^0.11.0 + graphql-tag: ^2.11.0 + parse-filepath: ^1.0.2 + tslib: ~2.5.0 + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: c8f941df7f8304b722b492ceaf15dddcf33e3a69bc29b54970908ffa12b14d92276958005bd307648e0cdc55f9e243d0fb390862f73a17a26bd50f6484ac42d6 + languageName: node + linkType: hard + +"@graphql-tools/apollo-engine-loader@npm:^7.3.6": + version: 7.3.26 + resolution: "@graphql-tools/apollo-engine-loader@npm:7.3.26" + dependencies: + "@ardatan/sync-fetch": ^0.0.1 + "@graphql-tools/utils": ^9.2.1 + "@whatwg-node/fetch": ^0.8.0 + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 2dd0324cd677c0a399a3cda6f155e4367ac38c8f6ec8a36c50931e97ce93d70f716f95575bcfda33d5a5b3c75f0ba04c73b82d22613f1a89e3c31965f576ae22 + languageName: node + linkType: hard + +"@graphql-tools/batch-execute@npm:^8.5.18": + version: 8.5.18 + resolution: "@graphql-tools/batch-execute@npm:8.5.18" + dependencies: + "@graphql-tools/utils": 9.2.1 + dataloader: 2.2.2 + tslib: ^2.4.0 + value-or-promise: 1.0.12 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 4a5b5dec502a91bd657a4ddad74965d050d3994c89f036225fac58657b5a275bb374224b20484e3ba773525e75a5552c4a5af7b6d52859ce3a3b32aec2412b6e + languageName: node + linkType: hard + +"@graphql-tools/code-file-loader@npm:^7.3.17": + version: 7.3.21 + resolution: "@graphql-tools/code-file-loader@npm:7.3.21" + dependencies: + "@graphql-tools/graphql-tag-pluck": 7.5.0 + "@graphql-tools/utils": 9.2.1 + globby: ^11.0.3 + tslib: ^2.4.0 + unixify: ^1.0.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 5d0d0a70bac673b4925a65f2283e3fcc5c093d2466a144cc577cb515d3de92ca2458d92842e02fe82a95d57d30ce6d2998b8ee5674393f7cd3df52f69671d565 + languageName: node + linkType: hard + +"@graphql-tools/delegate@npm:9.0.28, @graphql-tools/delegate@npm:^9.0.27": + version: 9.0.28 + resolution: "@graphql-tools/delegate@npm:9.0.28" + dependencies: + "@graphql-tools/batch-execute": ^8.5.18 + "@graphql-tools/executor": ^0.0.15 + "@graphql-tools/schema": ^9.0.16 + "@graphql-tools/utils": ^9.2.1 + dataloader: ^2.2.2 + tslib: ^2.5.0 + value-or-promise: ^1.0.12 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: e24c757ea15a2b654268194bbf76188fca6692486d1b019b0ad7d48c264f92b7b681a43c8a8355ace48a29f9dd566c20e8707b6cef281331a813f23ee1c94375 + languageName: node + linkType: hard + +"@graphql-tools/executor-graphql-ws@npm:^0.0.12": + version: 0.0.12 + resolution: "@graphql-tools/executor-graphql-ws@npm:0.0.12" + dependencies: + "@graphql-tools/utils": 9.2.1 + "@repeaterjs/repeater": 3.0.4 + "@types/ws": ^8.0.0 + graphql-ws: 5.12.0 + isomorphic-ws: 5.0.0 + tslib: ^2.4.0 + ws: 8.12.1 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 017f970c19e843c24da9f2b2cf45b5d922f5652b05e34c69fb27c3882618c8cc6a6ee008d4e767c1e74b2ba8630147ec8c7821996ff0eb1724f15dc27b95d1fd + languageName: node + linkType: hard + +"@graphql-tools/executor-http@npm:^0.1.7": + version: 0.1.9 + resolution: "@graphql-tools/executor-http@npm:0.1.9" + dependencies: + "@graphql-tools/utils": ^9.2.1 + "@repeaterjs/repeater": ^3.0.4 + "@whatwg-node/fetch": ^0.8.1 + dset: ^3.1.2 + extract-files: ^11.0.0 + meros: ^1.2.1 + tslib: ^2.4.0 + value-or-promise: ^1.0.12 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: de62f839c3775141f444a6a453bf8cd01e42257a915845180b7f840b59bb781c21eeb59f68b609dcbab5bae73bc9fa40f3d16449f23410bc616b1f347dedf1d1 + languageName: node + linkType: hard + +"@graphql-tools/executor-legacy-ws@npm:^0.0.9": + version: 0.0.9 + resolution: "@graphql-tools/executor-legacy-ws@npm:0.0.9" + dependencies: + "@graphql-tools/utils": 9.2.1 + "@types/ws": ^8.0.0 + isomorphic-ws: 5.0.0 + tslib: ^2.4.0 + ws: 8.12.1 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 9f35a38d1e064d4c82eee8d91d0b12552f75b65a413e1defc3831c726c6304f26b3651d3bd26aff3f58e049e40639ddf9b27f681a8bc49fdf11fb693e0d05392 + languageName: node + linkType: hard + +"@graphql-tools/executor@npm:^0.0.15": + version: 0.0.15 + resolution: "@graphql-tools/executor@npm:0.0.15" + dependencies: + "@graphql-tools/utils": 9.2.1 + "@graphql-typed-document-node/core": 3.1.2 + "@repeaterjs/repeater": 3.0.4 + tslib: ^2.4.0 + value-or-promise: 1.0.12 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 7a963d6fcd00bd9c2a42f35a33bc9178576a1eeac755ce69981aa1e2c61238953b7ab9c11ffcfc86e49fdcf4fc057698c6f7169d6be580298e286076276b1295 + languageName: node + linkType: hard + +"@graphql-tools/git-loader@npm:^7.2.13": + version: 7.2.20 + resolution: "@graphql-tools/git-loader@npm:7.2.20" + dependencies: + "@graphql-tools/graphql-tag-pluck": 7.5.0 + "@graphql-tools/utils": 9.2.1 + is-glob: 4.0.3 + micromatch: ^4.0.4 + tslib: ^2.4.0 + unixify: ^1.0.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: a0f16d44c60261eb9680f907d56b86ce3dda4642118ef3c436946f8e5dc1390151b9fd5ae75d34736c78d16e3e1191c1596bd8a86866fe2384ee7b73b9000e29 + languageName: node + linkType: hard + +"@graphql-tools/github-loader@npm:^7.3.20": + version: 7.3.27 + resolution: "@graphql-tools/github-loader@npm:7.3.27" + dependencies: + "@ardatan/sync-fetch": ^0.0.1 + "@graphql-tools/graphql-tag-pluck": ^7.4.6 + "@graphql-tools/utils": ^9.2.1 + "@whatwg-node/fetch": ^0.8.0 + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 467d5c9f0df5a26656dbd5939768335277eb25023331a359fd4748c2cd85de85affe8d7ac93ac9d51202ed208c54357561e32e2520fae28fdbc42dda72dd99f4 + languageName: node + linkType: hard + +"@graphql-tools/graphql-file-loader@npm:^7.3.7, @graphql-tools/graphql-file-loader@npm:^7.5.0": + version: 7.5.16 + resolution: "@graphql-tools/graphql-file-loader@npm:7.5.16" + dependencies: + "@graphql-tools/import": 6.7.17 + "@graphql-tools/utils": 9.2.1 + globby: ^11.0.3 + tslib: ^2.4.0 + unixify: ^1.0.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 5f9af56511a2f791677ad2601e745053d3f28b3afdf5542261e4bbf9924b9872244dcb0c9f6c7ca7fe91b658c12f4d91529efd9638653e112ad75bf79c915d78 + languageName: node + linkType: hard + +"@graphql-tools/graphql-tag-pluck@npm:7.5.0, @graphql-tools/graphql-tag-pluck@npm:^7.4.6": + version: 7.5.0 + resolution: "@graphql-tools/graphql-tag-pluck@npm:7.5.0" + dependencies: + "@babel/parser": ^7.16.8 + "@babel/plugin-syntax-import-assertions": 7.20.0 + "@babel/traverse": ^7.16.8 + "@babel/types": ^7.16.8 + "@graphql-tools/utils": 9.2.1 + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 47edaacdeafc4a464f8a51e047cafbb82a9a2700536a5b075eb4afad43c80b513a7b0ac4ad49a1e8a74b566ed7dfd677ebb0d0a967fe1e2ee66408cd5d4f294b + languageName: node + linkType: hard + +"@graphql-tools/import@npm:6.7.17": + version: 6.7.17 + resolution: "@graphql-tools/import@npm:6.7.17" + dependencies: + "@graphql-tools/utils": 9.2.1 + resolve-from: 5.0.0 + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 232debc4abed340f9ab04a9474e6f1af0f50d5b6b66dc6f7b7307872a27bd00745bc4fad1d7d00bf3503686766d2e26c9c42c4f1e2409111799ad80119a8303a + languageName: node + linkType: hard + +"@graphql-tools/json-file-loader@npm:^7.3.7, @graphql-tools/json-file-loader@npm:^7.4.1": + version: 7.4.17 + resolution: "@graphql-tools/json-file-loader@npm:7.4.17" + dependencies: + "@graphql-tools/utils": 9.2.1 + globby: ^11.0.3 + tslib: ^2.4.0 + unixify: ^1.0.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 54e4d1acf5bb1b55d72500b2ebb521d821edfb99ad7c1b0f0d6b2e3f87cfcda2d61ce6d4a886117ac11fb94354da6f7435f35a1ffdc359cf2e39da1d0fde76c5 + languageName: node + linkType: hard + +"@graphql-tools/load@npm:^7.5.5, @graphql-tools/load@npm:^7.8.0": + version: 7.8.13 + resolution: "@graphql-tools/load@npm:7.8.13" + dependencies: + "@graphql-tools/schema": 9.0.17 + "@graphql-tools/utils": 9.2.1 + p-limit: 3.1.0 + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: f8dafe3b1575a33234b798751a6ec4ee9d78bfb32055395da45f7081737d30f863fe5bb2cc8c2aadd5b46d3a443d1dec75d7f2cc58399c071ac35c8470cb7ff6 + languageName: node + linkType: hard + +"@graphql-tools/merge@npm:8.4.0, @graphql-tools/merge@npm:^8.2.6": + version: 8.4.0 + resolution: "@graphql-tools/merge@npm:8.4.0" + dependencies: + "@graphql-tools/utils": 9.2.1 + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 32265749833615ac2cb3d958318f5c46b7bd5ec858acfbad7136d379594ec3c98ba67ba5f04f4061187e5dfd52bb277155cd98fdeb2b4c5535c16bdb4f117ae0 + languageName: node + linkType: hard + +"@graphql-tools/optimize@npm:^1.3.0": + version: 1.3.1 + resolution: "@graphql-tools/optimize@npm:1.3.1" + dependencies: + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 4eed041bc3199a70ab426eeb10bc4af65f18fa0c5907613aec236fd7e14918d0f895e12489df6ff501562415eef64c99777a3ca6f6a4ee3c796b68e7cb778342 + languageName: node + linkType: hard + +"@graphql-tools/prisma-loader@npm:^7.2.49": + version: 7.2.65 + resolution: "@graphql-tools/prisma-loader@npm:7.2.65" + dependencies: + "@graphql-tools/url-loader": 7.17.14 + "@graphql-tools/utils": 9.2.1 + "@types/js-yaml": ^4.0.0 + "@types/json-stable-stringify": ^1.0.32 + chalk: ^4.1.0 + debug: ^4.3.1 + dotenv: ^16.0.0 + graphql-request: ^5.0.0 + http-proxy-agent: ^5.0.0 + https-proxy-agent: ^5.0.0 + isomorphic-fetch: ^3.0.0 + jose: ^4.11.4 + js-yaml: ^4.0.0 + json-stable-stringify: ^1.0.1 + lodash: ^4.17.20 + scuid: ^1.1.0 + tslib: ^2.4.0 + yaml-ast-parser: ^0.0.43 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 2354b7e2074b7a519984bb36f1923a1d24c26b83db5e3ad9c319a3e94365c469984fd8e0a442b9a1d6740e7b25830ae31069c89c2ae3c1ac63fa87b444d2b58f + languageName: node + linkType: hard + +"@graphql-tools/relay-operation-optimizer@npm:^6.5.0": + version: 6.5.17 + resolution: "@graphql-tools/relay-operation-optimizer@npm:6.5.17" + dependencies: + "@ardatan/relay-compiler": 12.0.0 + "@graphql-tools/utils": 9.2.1 + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 1e5163390b2834c2246c4842c9ca7b9a63cdff17f5b5afe5934bbb837b5b26e14e2144ef3fad992e3618d4012fb6736a71c34a38e1fdb4e628e3de7f74fac8bd + languageName: node + linkType: hard + +"@graphql-tools/schema@npm:9.0.17, @graphql-tools/schema@npm:^9.0.0, @graphql-tools/schema@npm:^9.0.16": + version: 9.0.17 + resolution: "@graphql-tools/schema@npm:9.0.17" + dependencies: + "@graphql-tools/merge": 8.4.0 + "@graphql-tools/utils": 9.2.1 + tslib: ^2.4.0 + value-or-promise: 1.0.12 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 1c6513dd88b47d07702d01a48941ee164c4090c69b2475b1dde48a3d8866ed48fd39a33d15510682f6d8c18d19ceb72b77104eb4edbb194f96a129cc03909e89 + languageName: node + linkType: hard + +"@graphql-tools/url-loader@npm:7.17.14, @graphql-tools/url-loader@npm:^7.13.2, @graphql-tools/url-loader@npm:^7.9.7": + version: 7.17.14 + resolution: "@graphql-tools/url-loader@npm:7.17.14" + dependencies: + "@ardatan/sync-fetch": ^0.0.1 + "@graphql-tools/delegate": ^9.0.27 + "@graphql-tools/executor-graphql-ws": ^0.0.12 + "@graphql-tools/executor-http": ^0.1.7 + "@graphql-tools/executor-legacy-ws": ^0.0.9 + "@graphql-tools/utils": ^9.2.1 + "@graphql-tools/wrap": ^9.3.8 + "@types/ws": ^8.0.0 + "@whatwg-node/fetch": ^0.8.0 + isomorphic-ws: ^5.0.0 + tslib: ^2.4.0 + value-or-promise: ^1.0.11 + ws: ^8.12.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: a9473c0d49299d4807c5ab881407b7e96989a06cc583bddd34eb059295fd847df982bf95b82fc713150ac60fe1ccdd1db78bc17e3903db44684b5cce0f7cb82a + languageName: node + linkType: hard + +"@graphql-tools/utils@npm:9.2.1, @graphql-tools/utils@npm:^9.0.0, @graphql-tools/utils@npm:^9.1.1, @graphql-tools/utils@npm:^9.2.1": + version: 9.2.1 + resolution: "@graphql-tools/utils@npm:9.2.1" + dependencies: + "@graphql-typed-document-node/core": ^3.1.1 + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 94ed12df5f49e5c338322ffd931236a687a3d5c443bf499f9baab5d4fcd9792234111142be8aa506a01ca2e82732996c4e1d8f6159ff9cc7fdc5c97f63e55226 + languageName: node + linkType: hard + +"@graphql-tools/utils@npm:^8.8.0": + version: 8.13.1 + resolution: "@graphql-tools/utils@npm:8.13.1" + dependencies: + tslib: ^2.4.0 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: ff04fdeb29e9ac596ea53386cd5b23cd741bb14c1997c6b0ba3c34ca165bd82b528a355e8c8e2ba726eb39e833ba9cbb0851ba0addb8c6d367089a1145bf9a49 + languageName: node + linkType: hard + +"@graphql-tools/wrap@npm:^9.3.8": + version: 9.3.8 + resolution: "@graphql-tools/wrap@npm:9.3.8" + dependencies: + "@graphql-tools/delegate": 9.0.28 + "@graphql-tools/schema": 9.0.17 + "@graphql-tools/utils": 9.2.1 + tslib: ^2.4.0 + value-or-promise: 1.0.12 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 1f280b939f1c8c33be8fbd92c0584e9125e30c59ce6f75f20657235d24e5a2c01eb3214eda9ae74d431d9da072cdfa6cedeafdc5b352dd33de439ba42402efcb + languageName: node + linkType: hard + +"@graphql-typed-document-node/core@npm:3.1.2": + version: 3.1.2 + resolution: "@graphql-typed-document-node/core@npm:3.1.2" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: a61afa025acdabd7833e4f654a5802fc1a526171f81e0c435c8e651050a5a0682499a2c7a51304ceb61fde36cd69fc7975ce5e1b16b9ba7ea474c649f33eea8b + languageName: node + linkType: hard + +"@graphql-typed-document-node/core@npm:^3.1.1": + version: 3.2.0 + resolution: "@graphql-typed-document-node/core@npm:3.2.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: fa44443accd28c8cf4cb96aaaf39d144a22e8b091b13366843f4e97d19c7bfeaf609ce3c7603a4aeffe385081eaf8ea245d078633a7324c11c5ec4b2011bb76d + languageName: node + linkType: hard + +"@humanwhocodes/config-array@npm:^0.11.8": + version: 0.11.8 + resolution: "@humanwhocodes/config-array@npm:0.11.8" + dependencies: + "@humanwhocodes/object-schema": ^1.2.1 + debug: ^4.1.1 + minimatch: ^3.0.5 + checksum: 0fd6b3c54f1674ce0a224df09b9c2f9846d20b9e54fabae1281ecfc04f2e6ad69bf19e1d6af6a28f88e8aa3990168b6cb9e1ef755868c3256a630605ec2cb1d3 + languageName: node + linkType: hard + +"@humanwhocodes/module-importer@npm:^1.0.1": + version: 1.0.1 + resolution: "@humanwhocodes/module-importer@npm:1.0.1" + checksum: 0fd22007db8034a2cdf2c764b140d37d9020bbfce8a49d3ec5c05290e77d4b0263b1b972b752df8c89e5eaa94073408f2b7d977aed131faf6cf396ebb5d7fb61 + languageName: node + linkType: hard + +"@humanwhocodes/object-schema@npm:^1.2.1": + version: 1.2.1 + resolution: "@humanwhocodes/object-schema@npm:1.2.1" + checksum: a824a1ec31591231e4bad5787641f59e9633827d0a2eaae131a288d33c9ef0290bd16fda8da6f7c0fcb014147865d12118df10db57f27f41e20da92369fcb3f1 + languageName: node + linkType: hard + +"@internationalized/date@npm:^3.1.0": + version: 3.1.0 + resolution: "@internationalized/date@npm:3.1.0" + dependencies: + "@swc/helpers": ^0.4.14 + checksum: 7ff8dd994a6efddcbe7d0c762504f81b2b9f87de858245fd974e9f87f7fb4cfe54918cc910f14aadadbb7575597e51ef10afa7cb529f4fd07fbc7ad72bdc9550 + languageName: node + linkType: hard + +"@internationalized/message@npm:^3.1.0": + version: 3.1.0 + resolution: "@internationalized/message@npm:3.1.0" + dependencies: + "@swc/helpers": ^0.4.14 + intl-messageformat: ^10.1.0 + checksum: 4e0be02342938369a384275be0fcc90677af7d710137b247248346c590f9f33314bf4c760a95205388f5c1e95dfaad2603988cdb2fefac06a677d59bee64dd11 + languageName: node + linkType: hard + +"@internationalized/number@npm:^3.2.0": + version: 3.2.0 + resolution: "@internationalized/number@npm:3.2.0" + dependencies: + "@swc/helpers": ^0.4.14 + checksum: 1e61b62a4f763b4327fa5687948792a95eb03b919696c64b27835e6e217462997e1b23d4fc984f45568bcb13174df0db7c0f5177d25fde9824d5a42333fc369a + languageName: node + linkType: hard + +"@internationalized/string@npm:^3.1.0": + version: 3.1.0 + resolution: "@internationalized/string@npm:3.1.0" + dependencies: + "@swc/helpers": ^0.4.14 + checksum: 0a47b1dcc2d75207ff1f7e9ffe300cfec94a3b9f361f309c76dfa0614babb8e48f788c6d23c33637f337b752c458731e495ca9c398eb00756efc229e591b12e9 + languageName: node + linkType: hard + +"@jridgewell/gen-mapping@npm:^0.1.0": + version: 0.1.1 + resolution: "@jridgewell/gen-mapping@npm:0.1.1" + dependencies: + "@jridgewell/set-array": ^1.0.0 + "@jridgewell/sourcemap-codec": ^1.4.10 + checksum: 3bcc21fe786de6ffbf35c399a174faab05eb23ce6a03e8769569de28abbf4facc2db36a9ddb0150545ae23a8d35a7cf7237b2aa9e9356a7c626fb4698287d5cc + languageName: node + linkType: hard + +"@jridgewell/gen-mapping@npm:^0.3.2": + version: 0.3.2 + resolution: "@jridgewell/gen-mapping@npm:0.3.2" + dependencies: + "@jridgewell/set-array": ^1.0.1 + "@jridgewell/sourcemap-codec": ^1.4.10 + "@jridgewell/trace-mapping": ^0.3.9 + checksum: 1832707a1c476afebe4d0fbbd4b9434fdb51a4c3e009ab1e9938648e21b7a97049fa6009393bdf05cab7504108413441df26d8a3c12193996e65493a4efb6882 + languageName: node + linkType: hard + +"@jridgewell/resolve-uri@npm:3.1.0": + version: 3.1.0 + resolution: "@jridgewell/resolve-uri@npm:3.1.0" + checksum: b5ceaaf9a110fcb2780d1d8f8d4a0bfd216702f31c988d8042e5f8fbe353c55d9b0f55a1733afdc64806f8e79c485d2464680ac48a0d9fcadb9548ee6b81d267 + languageName: node + linkType: hard + +"@jridgewell/set-array@npm:^1.0.0, @jridgewell/set-array@npm:^1.0.1": + version: 1.1.2 + resolution: "@jridgewell/set-array@npm:1.1.2" + checksum: 69a84d5980385f396ff60a175f7177af0b8da4ddb81824cb7016a9ef914eee9806c72b6b65942003c63f7983d4f39a5c6c27185bbca88eb4690b62075602e28e + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.13": + version: 1.4.14 + resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" + checksum: 61100637b6d173d3ba786a5dff019e1a74b1f394f323c1fee337ff390239f053b87266c7a948777f4b1ee68c01a8ad0ab61e5ff4abb5a012a0b091bec391ab97 + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.9": + version: 0.3.17 + resolution: "@jridgewell/trace-mapping@npm:0.3.17" + dependencies: + "@jridgewell/resolve-uri": 3.1.0 + "@jridgewell/sourcemap-codec": 1.4.14 + checksum: 9d703b859cff5cd83b7308fd457a431387db5db96bd781a63bf48e183418dd9d3d44e76b9e4ae13237f6abeeb25d739ec9215c1d5bfdd08f66f750a50074a339 + languageName: node + linkType: hard + +"@jumpn/utils-array@npm:0.3.4": + version: 0.3.4 + resolution: "@jumpn/utils-array@npm:0.3.4" + dependencies: + babel-polyfill: 6.26.0 + babel-runtime: 6.26.0 + flow-static-land: 0.2.7 + checksum: 4133d46ee6291a97aebe7972c9ad11ed5c3a180490d71649e06eda22a61212f391dc44529c4e5057971066dacce8557018fbcd54ff832390f12acaa01547a36d + languageName: node + linkType: hard + +"@jumpn/utils-composite@npm:0.7.0": + version: 0.7.0 + resolution: "@jumpn/utils-composite@npm:0.7.0" + dependencies: + "@jumpn/utils-array": 0.3.4 + babel-polyfill: 6.26.0 + babel-runtime: 6.26.0 + fast-deep-equal: 1.0.0 + flow-static-land: 0.2.8 + checksum: 1f835367ea3a320870498b8a0263f77b96e20ecd5facdfd7c5e8e2a5a1c1987ea28ecebb6b7b92db42c16d72383446a4f8e42b30e893379e62149cdc827dd3fa + languageName: node + linkType: hard + +"@jumpn/utils-graphql@npm:0.6.0": + version: 0.6.0 + resolution: "@jumpn/utils-graphql@npm:0.6.0" + dependencies: + "@babel/runtime": 7.2.0 + core-js: 2.6.0 + graphql: 14.0.2 + checksum: 66ec04d8a2170112160b42fdc506d366f1b64844de3ac06c10fd0d9ccc5a80f9aa0daae567a9d0a0b3a4ec537d17bc2eb0c03c514f08d07b9f64ba3bc857d8eb + languageName: node + linkType: hard + +"@monaco-editor/loader@npm:^1.3.2": + version: 1.3.2 + resolution: "@monaco-editor/loader@npm:1.3.2" + dependencies: + state-local: ^1.0.6 + peerDependencies: + monaco-editor: ">= 0.21.0 < 1" + checksum: 7a1b65052bbaf4ef826392687bd7cfaf839509611034d2d616783b5d3fee91ed304d9086517c3b5f9099707828c57c855ff43407b3c2f5ae480faebb104d4343 + languageName: node + linkType: hard + +"@monaco-editor/react@npm:4.4.6": + version: 4.4.6 + resolution: "@monaco-editor/react@npm:4.4.6" + dependencies: + "@monaco-editor/loader": ^1.3.2 + prop-types: ^15.7.2 + peerDependencies: + monaco-editor: ">= 0.25.0 < 1" + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: cb25b5ce153608c2a4291390456488e100c5e3ac48a913875c98182836e2a9f315d4f96e85cf6f7d4b1eadff8d08d13356e38891b472894155bcb2c4aeaf3b1c + languageName: node + linkType: hard + +"@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1": + version: 5.1.1-v1 + resolution: "@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1" + dependencies: + eslint-scope: 5.1.1 + checksum: f2e3b2d6a6e2d9f163ca22105910c9f850dc4897af0aea3ef0a5886b63d8e1ba6505b71c99cb78a3bba24a09557d601eb21c8dede3f3213753fcfef364eb0e57 + languageName: node + linkType: hard + +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" + dependencies: + "@nodelib/fs.stat": 2.0.5 + run-parallel: ^1.1.9 + checksum: a970d595bd23c66c880e0ef1817791432dbb7acbb8d44b7e7d0e7a22f4521260d4a83f7f9fd61d44fda4610105577f8f58a60718105fb38352baed612fd79e59 + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0 + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": 2.1.5 + fastq: ^1.6.0 + checksum: 190c643f156d8f8f277bf2a6078af1ffde1fd43f498f187c2db24d35b4b4b5785c02c7dc52e356497b9a1b65b13edc996de08de0b961c32844364da02986dc53 + languageName: node + linkType: hard + +"@npmcli/fs@npm:^2.1.0": + version: 2.1.2 + resolution: "@npmcli/fs@npm:2.1.2" + dependencies: + "@gar/promisify": ^1.1.3 + semver: ^7.3.5 + checksum: 405074965e72d4c9d728931b64d2d38e6ea12066d4fad651ac253d175e413c06fe4350970c783db0d749181da8fe49c42d3880bd1cbc12cd68e3a7964d820225 + languageName: node + linkType: hard + +"@npmcli/move-file@npm:^2.0.0": + version: 2.0.1 + resolution: "@npmcli/move-file@npm:2.0.1" + dependencies: + mkdirp: ^1.0.4 + rimraf: ^3.0.2 + checksum: 52dc02259d98da517fae4cb3a0a3850227bdae4939dda1980b788a7670636ca2b4a01b58df03dd5f65c1e3cb70c50fa8ce5762b582b3f499ec30ee5ce1fd9380 + languageName: node + linkType: hard + +"@parcel/watcher@npm:^2.1.0": + version: 2.1.0 + resolution: "@parcel/watcher@npm:2.1.0" + dependencies: + is-glob: ^4.0.3 + micromatch: ^4.0.5 + node-addon-api: ^3.2.1 + node-gyp: latest + node-gyp-build: ^4.3.0 + checksum: 17f512ad6d5dbb40053ceea7091f8af754afc63786b8f050b225b89a8ba24900468aad8bc4edb25c0349b4c0c8d061f50aa19242c0af52cbc30e6ebf50c7bf4c + languageName: node + linkType: hard + +"@peculiar/asn1-schema@npm:^2.3.6": + version: 2.3.6 + resolution: "@peculiar/asn1-schema@npm:2.3.6" + dependencies: + asn1js: ^3.0.5 + pvtsutils: ^1.3.2 + tslib: ^2.4.0 + checksum: fc09387c6e3dea07fca21b54ea8c71ce3ec0f8c92377237e51aef729f0c2df92781aa7a18a546a6fe809519faeaa222df576ec21a35c6095037a78677204a55b + languageName: node + linkType: hard + +"@peculiar/json-schema@npm:^1.1.12": + version: 1.1.12 + resolution: "@peculiar/json-schema@npm:1.1.12" + dependencies: + tslib: ^2.0.0 + checksum: b26ececdc23c5ef25837f8be8d1eb5e1c8bb6e9ae7227ac59ffea57fff56bd05137734e7685e9100595d3d88d906dff638ef8d1df54264c388d3eac1b05aa060 + languageName: node + linkType: hard + +"@peculiar/webcrypto@npm:^1.4.0": + version: 1.4.3 + resolution: "@peculiar/webcrypto@npm:1.4.3" + dependencies: + "@peculiar/asn1-schema": ^2.3.6 + "@peculiar/json-schema": ^1.1.12 + pvtsutils: ^1.3.2 + tslib: ^2.5.0 + webcrypto-core: ^1.7.7 + checksum: 5604c02b7e9a8cef61bb4430e733e939c7737533ba65ba5fac4beb3a6d613add478ab45455cb57506789b6d00704d83e4965a0f712de3e8f40706e0961670e5c + languageName: node + linkType: hard + +"@pluralsh/design-system@npm:1.330.1": + version: 1.330.1 + resolution: "@pluralsh/design-system@npm:1.330.1" + dependencies: + "@floating-ui/react-dom-interactions": 0.13.3 + "@monaco-editor/react": 4.4.6 + "@react-aria/button": 3.7.0 + "@react-aria/checkbox": 3.8.0 + "@react-aria/combobox": 3.5.0 + "@react-aria/focus": 3.11.0 + "@react-aria/interactions": 3.14.0 + "@react-aria/listbox": 3.8.0 + "@react-aria/overlays": 3.13.0 + "@react-aria/radio": 3.5.0 + "@react-aria/select": 3.9.0 + "@react-aria/slider": 3.3.0 + "@react-aria/tabs": 3.4.0 + "@react-aria/utils": 3.15.0 + "@react-aria/visually-hidden": 3.7.0 + "@react-stately/collections": 3.6.0 + "@react-stately/combobox": 3.4.0 + "@react-stately/overlays": 3.5.0 + "@react-stately/radio": 3.7.0 + "@react-stately/slider": 3.3.0 + "@react-stately/tabs": 3.3.0 + "@react-stately/toggle": 3.5.0 + "@react-types/shared": 3.17.0 + "@tanstack/match-sorter-utils": 8.7.6 + "@tanstack/react-table": 8.7.9 + "@tanstack/react-virtual": 3.0.0-beta.48 + "@types/chroma-js": 2.1.5 + chroma-js: 2.4.2 + classnames: 2.3.2 + grommet: 2.29.1 + grommet-icons: 4.9.0 + highlight.js: 11.7.0 + honorable-recipe-mapper: 0.2.0 + immer: 9.0.19 + moment: 2.29.4 + prop-types: 15.8.1 + react-animate-height: 3.1.0 + react-markdown: 8.0.5 + react-merge-refs: 2.0.1 + react-spring: 9.6.1 + react-use-measure: 2.1.1 + react-virtual: 2.10.4 + rehype-raw: 6.1.1 + resize-observer-polyfill: 1.5.1 + styled-container-query: 1.3.5 + use-immer: 0.8.1 + peerDependencies: + "@emotion/react": ">=11.9.3" + "@emotion/styled": ">=11.9.3" + honorable: ">=1.0.0-beta.17" + honorable-theme-default: ">=1.0.0-beta.5" + react: ">=16.0.0" + react-dom: ">=16.0.0" + react-transition-group: ">=4.4.2" + styled-components: ">=5.3.5" + checksum: 66c28d9ce652d6a16095b56bee9a6aa6559400e839079df9fd7aae9811adb0866f3420d1209c208aba85c6e96360e5cf97d9527f2229ab614b4a5e5d52426e15 + languageName: node + linkType: hard + +"@pluralsh/eslint-config-pluralsh@npm:1.4.13": + version: 1.4.13 + resolution: "@pluralsh/eslint-config-pluralsh@npm:1.4.13" + dependencies: + eslint: 8.32.0 + eslint-config-airbnb: 19.0.4 + eslint-plugin-import: 2.27.5 + eslint-plugin-import-newlines: ^1.2.3 + eslint-plugin-jsx-a11y: 6.7.1 + eslint-plugin-react: 7.32.1 + eslint-plugin-react-hooks: 4.6.0 + checksum: 4755f86ae2643616cd7e4fd6c72e9b41632c1aef2029fa95c526b0256848d1a20ebaf01ed3505eaeaaaca209039c1873823a0c30ef5a055bb9371f7d46662632 + languageName: node + linkType: hard + +"@pluralsh/eslint-config-typescript@npm:2.5.41": + version: 2.5.41 + resolution: "@pluralsh/eslint-config-typescript@npm:2.5.41" + dependencies: + "@babel/core": 7.20.12 + "@babel/eslint-parser": 7.19.1 + "@babel/preset-env": 7.20.2 + "@babel/preset-react": 7.18.6 + "@pluralsh/eslint-config-pluralsh": 1.4.13 + "@types/node": 18.15.5 + "@typescript-eslint/eslint-plugin": 5.49.0 + "@typescript-eslint/parser": 5.49.0 + eslint: 8.36.0 + typescript: 4.9.4 + checksum: f6e34884b0b54ecd7fd484373ff67c0aad2d344c27c103f552fb871b123b3ad252973c1dd16ff1fc6e61dffd31a11f34342427554c65c69880596850133a1e56 + languageName: node + linkType: hard + +"@reach/observe-rect@npm:^1.1.0": + version: 1.2.0 + resolution: "@reach/observe-rect@npm:1.2.0" + checksum: 7dd903eeaad0e22c6d973bd26265d91eadba56ab5134701ceb3e85214db75339fae94aa7e8b88a65e8daa64bc7cf1b915d4ffcdfd324466b561dc6adc3c6e070 + languageName: node + linkType: hard + +"@react-aria/button@npm:3.7.0": + version: 3.7.0 + resolution: "@react-aria/button@npm:3.7.0" + dependencies: + "@react-aria/focus": ^3.11.0 + "@react-aria/interactions": ^3.14.0 + "@react-aria/utils": ^3.15.0 + "@react-stately/toggle": ^3.5.0 + "@react-types/button": ^3.7.1 + "@react-types/shared": ^3.17.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: cddf62f9163d51d1284f540650a8904f81c1172798f05936fb386db572bb185d5e08e16d44313c0965293632ac845b4f8feb229231791a43015857768c822de9 + languageName: node + linkType: hard + +"@react-aria/checkbox@npm:3.8.0": + version: 3.8.0 + resolution: "@react-aria/checkbox@npm:3.8.0" + dependencies: + "@react-aria/label": ^3.5.0 + "@react-aria/toggle": ^3.5.0 + "@react-aria/utils": ^3.15.0 + "@react-stately/checkbox": ^3.4.0 + "@react-stately/toggle": ^3.5.0 + "@react-types/checkbox": ^3.4.2 + "@react-types/shared": ^3.17.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 848e88d2fc7168dfda5e95c60b0e232a16cfc3a4ffca6db45449f3569e3562acfd7786ea676c2f6dc53b3da2b00d396eca71c757cbad9416d703c559bcbd847a + languageName: node + linkType: hard + +"@react-aria/combobox@npm:3.5.0": + version: 3.5.0 + resolution: "@react-aria/combobox@npm:3.5.0" + dependencies: + "@react-aria/i18n": ^3.7.0 + "@react-aria/interactions": ^3.14.0 + "@react-aria/listbox": ^3.8.0 + "@react-aria/live-announcer": ^3.2.0 + "@react-aria/menu": ^3.8.0 + "@react-aria/overlays": ^3.13.0 + "@react-aria/selection": ^3.13.0 + "@react-aria/textfield": ^3.9.0 + "@react-aria/utils": ^3.15.0 + "@react-stately/collections": ^3.6.0 + "@react-stately/combobox": ^3.4.0 + "@react-stately/layout": ^3.11.0 + "@react-types/button": ^3.7.1 + "@react-types/combobox": ^3.6.0 + "@react-types/shared": ^3.17.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 5f0c0586eae1a341a7b5cf950035fc6c105662222d8ac873d02e4473a67f360d6b949784db790e85893dc15bc8d366f4d335b6c3e0acffe5628a856c591b0fba + languageName: node + linkType: hard + +"@react-aria/focus@npm:3.11.0, @react-aria/focus@npm:^3.11.0": + version: 3.11.0 + resolution: "@react-aria/focus@npm:3.11.0" + dependencies: + "@react-aria/interactions": ^3.14.0 + "@react-aria/utils": ^3.15.0 + "@react-types/shared": ^3.17.0 + "@swc/helpers": ^0.4.14 + clsx: ^1.1.1 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: f734d7f8d10b5088257742090e9881cea3e634bdc547a9daf8b4afaf67d691ff61457a4d5abec5b4a2faab26cc142f444737286f821a6e8e5014195340708114 + languageName: node + linkType: hard + +"@react-aria/i18n@npm:^3.7.0": + version: 3.7.0 + resolution: "@react-aria/i18n@npm:3.7.0" + dependencies: + "@internationalized/date": ^3.1.0 + "@internationalized/message": ^3.1.0 + "@internationalized/number": ^3.2.0 + "@internationalized/string": ^3.1.0 + "@react-aria/ssr": ^3.5.0 + "@react-aria/utils": ^3.15.0 + "@react-types/shared": ^3.17.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: cdbfe335f66964b08111743b6e575a364f1cdac26c357ed134356448fd99d0e4810156992cca7e63de2d9abf536e879169586df88d0bb6491e31efd9f5ad6fc3 + languageName: node + linkType: hard + +"@react-aria/interactions@npm:3.14.0, @react-aria/interactions@npm:^3.14.0": + version: 3.14.0 + resolution: "@react-aria/interactions@npm:3.14.0" + dependencies: + "@react-aria/utils": ^3.15.0 + "@react-types/shared": ^3.17.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: d4e2dd2617bdaa60025a9f50e2c314b2a74c56dba40cc536b909b78bb1c1268a25c5593f28661c86b1d2d37a443878dcacf86a3d6d597abfe8afee258b103ed8 + languageName: node + linkType: hard + +"@react-aria/label@npm:^3.5.0": + version: 3.5.0 + resolution: "@react-aria/label@npm:3.5.0" + dependencies: + "@react-aria/utils": ^3.15.0 + "@react-types/label": ^3.7.2 + "@react-types/shared": ^3.17.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 598fd0ffb2ec42b9d778fb0152df656fc5c93df151ebd5462875170b592c8f548658c05c8d8bd676da6a98d764ee195a7f3323dc1e485d28963d5789cdf5307a + languageName: node + linkType: hard + +"@react-aria/listbox@npm:3.8.0": + version: 3.8.0 + resolution: "@react-aria/listbox@npm:3.8.0" + dependencies: + "@react-aria/focus": ^3.11.0 + "@react-aria/interactions": ^3.14.0 + "@react-aria/label": ^3.5.0 + "@react-aria/selection": ^3.13.0 + "@react-aria/utils": ^3.15.0 + "@react-stately/collections": ^3.6.0 + "@react-stately/list": ^3.7.0 + "@react-types/listbox": ^3.4.0 + "@react-types/shared": ^3.17.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 99b3ab140d024a8740545a76c04311d76e4403038b2b3fee7f89a180af9350a06a450796c88d8df012b9325d4234fd8dadbd9e8b821aeb0f83f67e7e71271cf7 + languageName: node + linkType: hard + +"@react-aria/listbox@npm:^3.8.0": + version: 3.8.1 + resolution: "@react-aria/listbox@npm:3.8.1" + dependencies: + "@react-aria/focus": ^3.11.0 + "@react-aria/interactions": ^3.14.0 + "@react-aria/label": ^3.5.0 + "@react-aria/selection": ^3.13.1 + "@react-aria/utils": ^3.15.0 + "@react-stately/collections": ^3.6.0 + "@react-stately/list": ^3.7.0 + "@react-types/listbox": ^3.4.0 + "@react-types/shared": ^3.17.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 7848de8a89384a6ab29fb37ed6ef05fa5d7e05861e8c6ecf1fda7979a9fa80edfa3b7c321c5b5e0e2bad944f50d65a7baf2b0f6f69193f4a540dd3038851bc22 + languageName: node + linkType: hard + +"@react-aria/live-announcer@npm:^3.2.0": + version: 3.2.0 + resolution: "@react-aria/live-announcer@npm:3.2.0" + dependencies: + "@swc/helpers": ^0.4.14 + checksum: 5d76e24ab71aa9b8abc6440cb2786ef1e862edbd4539944f987b0e9f1cfaa2d50d4baaed9f695266455c151b3e76d6ee341b2699f7e95872d9bbdf4ab4fdf31d + languageName: node + linkType: hard + +"@react-aria/menu@npm:^3.8.0": + version: 3.8.1 + resolution: "@react-aria/menu@npm:3.8.1" + dependencies: + "@react-aria/i18n": ^3.7.0 + "@react-aria/interactions": ^3.14.0 + "@react-aria/overlays": ^3.13.0 + "@react-aria/selection": ^3.13.1 + "@react-aria/utils": ^3.15.0 + "@react-stately/collections": ^3.6.0 + "@react-stately/menu": ^3.5.0 + "@react-stately/tree": ^3.5.0 + "@react-types/button": ^3.7.1 + "@react-types/menu": ^3.8.0 + "@react-types/shared": ^3.17.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 8a8155dcbb6b1bae31e575d528c9dece97b694862dd9080c7025c1f30dd4f02a087f53c6422769900e9c48af4c0682a863e7095d72930e7e8e3becc3a3271b95 + languageName: node + linkType: hard + +"@react-aria/overlays@npm:3.13.0, @react-aria/overlays@npm:^3.13.0": + version: 3.13.0 + resolution: "@react-aria/overlays@npm:3.13.0" + dependencies: + "@react-aria/focus": ^3.11.0 + "@react-aria/i18n": ^3.7.0 + "@react-aria/interactions": ^3.14.0 + "@react-aria/ssr": ^3.5.0 + "@react-aria/utils": ^3.15.0 + "@react-aria/visually-hidden": ^3.7.0 + "@react-stately/overlays": ^3.5.0 + "@react-types/button": ^3.7.1 + "@react-types/overlays": ^3.7.0 + "@react-types/shared": ^3.17.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 5b88f3bc54da7b9adc773abe604049e9d63dabba527ad581a85a916b267c3fb68352aea55660c2aaf8f6a8a1002335cf6b805e261a0410f771d05913b0239d24 + languageName: node + linkType: hard + +"@react-aria/radio@npm:3.5.0": + version: 3.5.0 + resolution: "@react-aria/radio@npm:3.5.0" + dependencies: + "@react-aria/focus": ^3.11.0 + "@react-aria/i18n": ^3.7.0 + "@react-aria/interactions": ^3.14.0 + "@react-aria/label": ^3.5.0 + "@react-aria/utils": ^3.15.0 + "@react-stately/radio": ^3.7.0 + "@react-types/radio": ^3.4.0 + "@react-types/shared": ^3.17.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 165d185e078ddf6a3c2d74a8725bea69130bb31b48507df669019a13250e6881650374fdf7d7f9912f100c5e86fe288005d0557f4c93a7135b40d5d89ec246f6 + languageName: node + linkType: hard + +"@react-aria/select@npm:3.9.0": + version: 3.9.0 + resolution: "@react-aria/select@npm:3.9.0" + dependencies: + "@react-aria/i18n": ^3.7.0 + "@react-aria/interactions": ^3.14.0 + "@react-aria/label": ^3.5.0 + "@react-aria/listbox": ^3.8.0 + "@react-aria/menu": ^3.8.0 + "@react-aria/selection": ^3.13.0 + "@react-aria/utils": ^3.15.0 + "@react-aria/visually-hidden": ^3.7.0 + "@react-stately/select": ^3.4.0 + "@react-types/button": ^3.7.1 + "@react-types/select": ^3.7.0 + "@react-types/shared": ^3.17.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: de5e1d3c8508a909bed03ab99c76125f18224eff5571270237c2b7161b8d15ad8d2a379b52e433ee77d76aa3fbbe0130c18364cdd926c0c434d508fd69443667 + languageName: node + linkType: hard + +"@react-aria/selection@npm:^3.13.0, @react-aria/selection@npm:^3.13.1": + version: 3.13.1 + resolution: "@react-aria/selection@npm:3.13.1" + dependencies: + "@react-aria/focus": ^3.11.0 + "@react-aria/i18n": ^3.7.0 + "@react-aria/interactions": ^3.14.0 + "@react-aria/utils": ^3.15.0 + "@react-stately/collections": ^3.6.0 + "@react-stately/selection": ^3.12.0 + "@react-types/shared": ^3.17.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 240766af913c9b0f55782bb8ce4163ba993e626597999152ff2ccfcd852fc344d4eb3c7e71417b0eb18e430d2fec459c1ac30e5272905f1572427bfc01413cbb + languageName: node + linkType: hard + +"@react-aria/slider@npm:3.3.0": + version: 3.3.0 + resolution: "@react-aria/slider@npm:3.3.0" + dependencies: + "@react-aria/focus": ^3.11.0 + "@react-aria/i18n": ^3.7.0 + "@react-aria/interactions": ^3.14.0 + "@react-aria/label": ^3.5.0 + "@react-aria/utils": ^3.15.0 + "@react-stately/radio": ^3.7.0 + "@react-stately/slider": ^3.3.0 + "@react-types/radio": ^3.4.0 + "@react-types/shared": ^3.17.0 + "@react-types/slider": ^3.4.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 136493430c64f38f1147a6f94c4f3560f8b58adc0efce168190064c1c1ceb2b9a560194552b8315390183a33523b858589feb46a9e59424255df8d332ea78fa4 + languageName: node + linkType: hard + +"@react-aria/ssr@npm:^3.5.0": + version: 3.5.0 + resolution: "@react-aria/ssr@npm:3.5.0" + dependencies: + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 3287fe756ff458a3ce46ba0fabe2ede349bff0b232cce30aab0f50afa1c0ac7604809d229b8b19a62a5116cf12bc8099d2c9c72335126499c55c794dd3419dbd + languageName: node + linkType: hard + +"@react-aria/tabs@npm:3.4.0": + version: 3.4.0 + resolution: "@react-aria/tabs@npm:3.4.0" + dependencies: + "@react-aria/focus": ^3.11.0 + "@react-aria/i18n": ^3.7.0 + "@react-aria/interactions": ^3.14.0 + "@react-aria/selection": ^3.13.0 + "@react-aria/utils": ^3.15.0 + "@react-stately/list": ^3.7.0 + "@react-stately/tabs": ^3.3.0 + "@react-types/shared": ^3.17.0 + "@react-types/tabs": ^3.2.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 9e7c928660dc16766d7767d41d3b03f251decd65591ac0ed61a12599969e27ed6eb40cd8992b17b1fc7e438f7c285b688d8852fcbaa429630175fb4c39cd47c3 + languageName: node + linkType: hard + +"@react-aria/textfield@npm:^3.9.0": + version: 3.9.0 + resolution: "@react-aria/textfield@npm:3.9.0" + dependencies: + "@react-aria/focus": ^3.11.0 + "@react-aria/label": ^3.5.0 + "@react-aria/utils": ^3.15.0 + "@react-types/shared": ^3.17.0 + "@react-types/textfield": ^3.7.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: a46a20330c1d152eb45a669c01ee52bfe95af09b2d1714aa3c1e75f534926117406b42426c29902d0a7dde37ce70289c515b26731bc2de2b71d88daa5f972490 + languageName: node + linkType: hard + +"@react-aria/toggle@npm:^3.5.0": + version: 3.5.0 + resolution: "@react-aria/toggle@npm:3.5.0" + dependencies: + "@react-aria/focus": ^3.11.0 + "@react-aria/interactions": ^3.14.0 + "@react-aria/utils": ^3.15.0 + "@react-stately/toggle": ^3.5.0 + "@react-types/checkbox": ^3.4.2 + "@react-types/shared": ^3.17.0 + "@react-types/switch": ^3.3.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: ccf8ab5bd0e189ac50a42c00ff37bf73a48961d0a76eaa5f735c4f79ab6d597a7d1e9a08b0811b49437ae4181ea81ae5f58b9f7d1082fa9ba4071753830432d1 + languageName: node + linkType: hard + +"@react-aria/utils@npm:3.15.0, @react-aria/utils@npm:^3.15.0": + version: 3.15.0 + resolution: "@react-aria/utils@npm:3.15.0" + dependencies: + "@react-aria/ssr": ^3.5.0 + "@react-stately/utils": ^3.6.0 + "@react-types/shared": ^3.17.0 + "@swc/helpers": ^0.4.14 + clsx: ^1.1.1 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 9d852b3a8ca492b5e8c733f6258437430d050950d4cbdb99ab221d1a076ebca2625d45384bfb7b651072adc93368462445061c83ceac079418c8deafca2b47c3 + languageName: node + linkType: hard + +"@react-aria/visually-hidden@npm:3.7.0, @react-aria/visually-hidden@npm:^3.7.0": + version: 3.7.0 + resolution: "@react-aria/visually-hidden@npm:3.7.0" + dependencies: + "@react-aria/interactions": ^3.14.0 + "@react-aria/utils": ^3.15.0 + "@react-types/shared": ^3.17.0 + "@swc/helpers": ^0.4.14 + clsx: ^1.1.1 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: b0278501901e012018540488f0a4fba5dabe3e136aa6912016add3f7d2dd94bac91c477712cd5c4561b405b43bdaa8921742b5db59f8c68417a53c441874d5f0 + languageName: node + linkType: hard + +"@react-spring/animated@npm:~9.6.1": + version: 9.6.1 + resolution: "@react-spring/animated@npm:9.6.1" + dependencies: + "@react-spring/shared": ~9.6.1 + "@react-spring/types": ~9.6.1 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: fd8b3dbb1ad3195d510888bd7ea2e2790ea4505442b70b19b30c462c2b68f56c9d66febbb7e4fa32a21e31b03c423176f6257879be80b22c0286e56789547ee3 + languageName: node + linkType: hard + +"@react-spring/core@npm:~9.6.1": + version: 9.6.1 + resolution: "@react-spring/core@npm:9.6.1" + dependencies: + "@react-spring/animated": ~9.6.1 + "@react-spring/rafz": ~9.6.1 + "@react-spring/shared": ~9.6.1 + "@react-spring/types": ~9.6.1 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 7e0aaec8a6f68b3f2399533947cdbf1b2c4f94a6b01eb1d577516af7385cd302d775f1f3f10b838581edd70773d314ba066dbce0b63169b4cf2fd7791acc3d13 + languageName: node + linkType: hard + +"@react-spring/konva@npm:~9.6.1": + version: 9.6.1 + resolution: "@react-spring/konva@npm:9.6.1" + dependencies: + "@react-spring/animated": ~9.6.1 + "@react-spring/core": ~9.6.1 + "@react-spring/shared": ~9.6.1 + "@react-spring/types": ~9.6.1 + peerDependencies: + konva: ">=2.6" + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-konva: ^16.8.0 || ^17.0.0 + checksum: 6dce3db0183514495dd30825c0605f1eecb3fa4184a45d214cc81ccd48ec7eec6e54913fba54401cc7997d47da36b6bca9d49fc5bfc507159be6ea515144f883 + languageName: node + linkType: hard + +"@react-spring/native@npm:~9.6.1": + version: 9.6.1 + resolution: "@react-spring/native@npm:9.6.1" + dependencies: + "@react-spring/animated": ~9.6.1 + "@react-spring/core": ~9.6.1 + "@react-spring/shared": ~9.6.1 + "@react-spring/types": ~9.6.1 + peerDependencies: + react: ^16.8.0 || >=17.0.0 || >=18.0.0 + react-native: ">=0.58" + checksum: 11489382636b00d3c9f14e2c4c74da30d72129ed8accd4c21fce57fd813ffd13f088793f9d227c657ad04588f8c4cbefa800955c62e745cf59696d5539acc07a + languageName: node + linkType: hard + +"@react-spring/rafz@npm:~9.6.1": + version: 9.6.1 + resolution: "@react-spring/rafz@npm:9.6.1" + checksum: 3c8967b01ad29d212244a572193b465087104064b043e6bb303e4498e165f73bb8ef20d46af7bcdd351dc3370fb190fcee76a31d80a8b2c09cf04ef976e34556 + languageName: node + linkType: hard + +"@react-spring/shared@npm:~9.6.1": + version: 9.6.1 + resolution: "@react-spring/shared@npm:9.6.1" + dependencies: + "@react-spring/rafz": ~9.6.1 + "@react-spring/types": ~9.6.1 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 4e2c905a1804fe0402753ce50fc563faa87dec7b6dd348cc21800c213ce71d77db4e299cf1b9c47a8ee557220b62ee64ac934867c11881b1124b63f59eb4c9f3 + languageName: node + linkType: hard + +"@react-spring/three@npm:~9.6.1": + version: 9.6.1 + resolution: "@react-spring/three@npm:9.6.1" + dependencies: + "@react-spring/animated": ~9.6.1 + "@react-spring/core": ~9.6.1 + "@react-spring/shared": ~9.6.1 + "@react-spring/types": ~9.6.1 + peerDependencies: + "@react-three/fiber": ">=6.0" + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + three: ">=0.126" + checksum: 7d53e6673efd4dc063a475bbbfbac687c717695ffff0d03d3f7e4d8adaa39ebe0455d099337871f281ab5f2bab872886f782cf269722deb907b0446388a818b4 + languageName: node + linkType: hard + +"@react-spring/types@npm:~9.6.1": + version: 9.6.1 + resolution: "@react-spring/types@npm:9.6.1" + checksum: 803dc6c2d67773ee1e5d00d2feac291dad32cf4ca6a790554d6133dd4cd39aeb89b3beea4cc67f91c2d2e4bdbd1a995540dc7fee117138e207a105d255d39c1c + languageName: node + linkType: hard + +"@react-spring/web@npm:~9.6.1": + version: 9.6.1 + resolution: "@react-spring/web@npm:9.6.1" + dependencies: + "@react-spring/animated": ~9.6.1 + "@react-spring/core": ~9.6.1 + "@react-spring/shared": ~9.6.1 + "@react-spring/types": ~9.6.1 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 3c336a9d162136c0d1ec8adad31d8534d4309de46eea9fa50f735aa9ea0cd3350320654160ea1fc731ba06a3b4342c508d7b5b9035b7816ab0285f5e952dd118 + languageName: node + linkType: hard + +"@react-spring/zdog@npm:~9.6.1": + version: 9.6.1 + resolution: "@react-spring/zdog@npm:9.6.1" + dependencies: + "@react-spring/animated": ~9.6.1 + "@react-spring/core": ~9.6.1 + "@react-spring/shared": ~9.6.1 + "@react-spring/types": ~9.6.1 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-zdog: ">=1.0" + zdog: ">=1.0" + checksum: 269bd52bbc5dc5fa0cf1aa20c28d96668f2231aacc781ff762328185f70877bc4a867d9ad8f4a873c507df94832be25dc0047352621b1de1f85b345981bdf050 + languageName: node + linkType: hard + +"@react-stately/checkbox@npm:^3.4.0": + version: 3.4.0 + resolution: "@react-stately/checkbox@npm:3.4.0" + dependencies: + "@react-stately/toggle": ^3.5.0 + "@react-stately/utils": ^3.6.0 + "@react-types/checkbox": ^3.4.2 + "@react-types/shared": ^3.17.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 1886962262d63ae7bef433df75770ae19e2080c6165a0703d492351c286fd3b6fd8d8d91eec7bed45cd38d7453b66682c5479e3089b4c1f1e5e6895dcf5064cb + languageName: node + linkType: hard + +"@react-stately/collections@npm:3.6.0, @react-stately/collections@npm:^3.6.0": + version: 3.6.0 + resolution: "@react-stately/collections@npm:3.6.0" + dependencies: + "@react-types/shared": ^3.17.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: e7fa7adbbfeb981c5723630a6cab4a79f4330efba02124ab339fdc850143d198334af446c37be73fed84ef7ae061214dcc8c1aa1efaf9e41789e80d835bf8e7a + languageName: node + linkType: hard + +"@react-stately/combobox@npm:3.4.0, @react-stately/combobox@npm:^3.4.0": + version: 3.4.0 + resolution: "@react-stately/combobox@npm:3.4.0" + dependencies: + "@react-stately/list": ^3.7.0 + "@react-stately/menu": ^3.5.0 + "@react-stately/select": ^3.4.0 + "@react-stately/utils": ^3.6.0 + "@react-types/combobox": ^3.6.0 + "@react-types/shared": ^3.17.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: a950546563598bd4ef574dbdccffe0e12818fa015680429556a8c01d9f69b04bc3c4e5059a606a69f548fb1b8a6061f031c03f9704506e69a5e2e6faaacd0220 + languageName: node + linkType: hard + +"@react-stately/grid@npm:^3.5.0": + version: 3.5.0 + resolution: "@react-stately/grid@npm:3.5.0" + dependencies: + "@react-stately/selection": ^3.12.0 + "@react-types/grid": ^3.1.6 + "@react-types/shared": ^3.17.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: f458e3d2232c803231e0baadf8c66f4e61eb4acec6d53fc103e489f7421226ff9281b841d9e40889484b8aa364169a9b6c89df7e43a7f091ce074c4bb6d7ea0f + languageName: node + linkType: hard + +"@react-stately/layout@npm:^3.11.0": + version: 3.11.0 + resolution: "@react-stately/layout@npm:3.11.0" + dependencies: + "@react-stately/table": ^3.8.0 + "@react-stately/virtualizer": ^3.5.0 + "@react-types/grid": ^3.1.6 + "@react-types/shared": ^3.17.0 + "@react-types/table": ^3.5.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 14545dbfbd079599ba4106bead2ae7f91ee22090b3a2dbc1df789e431190d8afef9957bc02bd4efceceb8c9b202abe32856b0a7fc2f303571496a6fec0acf6b7 + languageName: node + linkType: hard + +"@react-stately/list@npm:^3.7.0": + version: 3.7.0 + resolution: "@react-stately/list@npm:3.7.0" + dependencies: + "@react-stately/collections": ^3.6.0 + "@react-stately/selection": ^3.12.0 + "@react-stately/utils": ^3.6.0 + "@react-types/shared": ^3.17.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 3c893b0d6fdbf38719485c6e722f4836b4d6785ca50a092cf6406ec4fb6c5f094964b71eecb8abd2f7b796898172facdd04683d7860c9424e7283253d468961a + languageName: node + linkType: hard + +"@react-stately/menu@npm:^3.5.0": + version: 3.5.0 + resolution: "@react-stately/menu@npm:3.5.0" + dependencies: + "@react-stately/overlays": ^3.5.0 + "@react-stately/utils": ^3.6.0 + "@react-types/menu": ^3.8.0 + "@react-types/shared": ^3.17.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: e39ff40d7fcf2136adde097bfbf63ddbb31995f2e3b22a30eb0d1dcae5a482bb51db0ea7f927769b0deba49c9bbb962c26d3a8fe40d691b06ac7a2c8bdae9a4d + languageName: node + linkType: hard + +"@react-stately/overlays@npm:3.5.0, @react-stately/overlays@npm:^3.5.0": + version: 3.5.0 + resolution: "@react-stately/overlays@npm:3.5.0" + dependencies: + "@react-stately/utils": ^3.6.0 + "@react-types/overlays": ^3.7.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 7422e0e4f146bfef5c1a5386627008033e26e4ebcc857469009011a5d1d2440d7d74088b1e8fbb1fb23fbfdc129b745a9e9388b6ad6c8aefd3388f260c9a68f8 + languageName: node + linkType: hard + +"@react-stately/radio@npm:3.7.0, @react-stately/radio@npm:^3.7.0": + version: 3.7.0 + resolution: "@react-stately/radio@npm:3.7.0" + dependencies: + "@react-stately/utils": ^3.6.0 + "@react-types/radio": ^3.4.0 + "@react-types/shared": ^3.17.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 91eea7a9ee6f2660ffcae161c6d1397442702afd7048a54444c8c7b2fbd2f89898af6ba4ee94c9313aca72d87ecf2eec666e086e7c9be317fbcffe3110890b81 + languageName: node + linkType: hard + +"@react-stately/select@npm:^3.4.0": + version: 3.4.0 + resolution: "@react-stately/select@npm:3.4.0" + dependencies: + "@react-stately/collections": ^3.6.0 + "@react-stately/list": ^3.7.0 + "@react-stately/menu": ^3.5.0 + "@react-stately/selection": ^3.12.0 + "@react-stately/utils": ^3.6.0 + "@react-types/select": ^3.7.0 + "@react-types/shared": ^3.17.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 6a4c71d780779a63180ee5cee5d8bf7a04f8d63bbbbe82996bbd415a6ca002f2f62a5a36aade77106554e3385b09391512042662df16eafcbd61fadfe2f4b839 + languageName: node + linkType: hard + +"@react-stately/selection@npm:^3.12.0": + version: 3.12.0 + resolution: "@react-stately/selection@npm:3.12.0" + dependencies: + "@react-stately/collections": ^3.6.0 + "@react-stately/utils": ^3.6.0 + "@react-types/shared": ^3.17.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 9a71f78b4f5e105602120e6682b3cf3aad467a3d85010bafa08cbfc7d0ba34bc7d77cff8e1f165f46083aecfb897308b130a4dad7512fb8c83823283813b80c7 + languageName: node + linkType: hard + +"@react-stately/slider@npm:3.3.0, @react-stately/slider@npm:^3.3.0": + version: 3.3.0 + resolution: "@react-stately/slider@npm:3.3.0" + dependencies: + "@react-aria/i18n": ^3.7.0 + "@react-aria/utils": ^3.15.0 + "@react-stately/utils": ^3.6.0 + "@react-types/shared": ^3.17.0 + "@react-types/slider": ^3.4.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 07f4c7e367cc5f1a017c5acb84fef11e6468528289c58003a9629c9c2a12b31d1800b766b46729fcfa9ad6d428b931ea05231f2782f3b357f873b5a6df158bed + languageName: node + linkType: hard + +"@react-stately/table@npm:^3.8.0": + version: 3.8.0 + resolution: "@react-stately/table@npm:3.8.0" + dependencies: + "@react-stately/collections": ^3.6.0 + "@react-stately/grid": ^3.5.0 + "@react-stately/selection": ^3.12.0 + "@react-types/grid": ^3.1.6 + "@react-types/shared": ^3.17.0 + "@react-types/table": ^3.5.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 6032c40065f8bd44fe69219ce6d0dc970ec43f3a1393ad22645ce2bfb2ca63f5ca904e3b27baf2a28907e886e63931ae368c84c7587a221693491b30265cd924 + languageName: node + linkType: hard + +"@react-stately/tabs@npm:3.3.0, @react-stately/tabs@npm:^3.3.0": + version: 3.3.0 + resolution: "@react-stately/tabs@npm:3.3.0" + dependencies: + "@react-stately/list": ^3.7.0 + "@react-stately/utils": ^3.6.0 + "@react-types/tabs": ^3.2.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: a66bd3101831decec4c2d63dcb0b026fdfa899b9ff91c2b50aecc5711c88d0c4e4aaf687847da364b4af9b6a82748f19979459b8354cadc06b5f0d6897e2e989 + languageName: node + linkType: hard + +"@react-stately/toggle@npm:3.5.0, @react-stately/toggle@npm:^3.5.0": + version: 3.5.0 + resolution: "@react-stately/toggle@npm:3.5.0" + dependencies: + "@react-stately/utils": ^3.6.0 + "@react-types/checkbox": ^3.4.2 + "@react-types/shared": ^3.17.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 3cc5d150c0effc216f6b56a17a05917affbb7f374239053e69d42117c13d488a6939469d14d7c4a4fd2422416c5ae0b9147e454e8717ab1b3b95196c7eb0c79d + languageName: node + linkType: hard + +"@react-stately/tree@npm:^3.5.0": + version: 3.5.0 + resolution: "@react-stately/tree@npm:3.5.0" + dependencies: + "@react-stately/collections": ^3.6.0 + "@react-stately/selection": ^3.12.0 + "@react-stately/utils": ^3.6.0 + "@react-types/shared": ^3.17.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: cc22dce2314104802b42f76c287165f1b7c5e69c6f45876027d7f58d43039c8126b2d58cbec6942ed27990d51a58962027166959348f9467d869d97e6f937ad1 + languageName: node + linkType: hard + +"@react-stately/utils@npm:^3.6.0": + version: 3.6.0 + resolution: "@react-stately/utils@npm:3.6.0" + dependencies: + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: d2ff4cfed5555b112ad71b9bc1837abd777d8fa225043c476b7c9417f8b21a0bcddad0d7127e0acdbf4d85dc9a260c9ae97722b4e9507e6243b412c2724c5f54 + languageName: node + linkType: hard + +"@react-stately/virtualizer@npm:^3.5.0": + version: 3.5.0 + resolution: "@react-stately/virtualizer@npm:3.5.0" + dependencies: + "@react-aria/utils": ^3.15.0 + "@react-types/shared": ^3.17.0 + "@swc/helpers": ^0.4.14 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: df5bb6658f8b43b1d5166f3f4f9d6317b403dee142a291601be57553be9fa38d0182275f2cac0fe779d8ff3203030b02a26da9cf287bd9bd296c9d7f16146578 + languageName: node + linkType: hard + +"@react-types/button@npm:^3.7.1": + version: 3.7.1 + resolution: "@react-types/button@npm:3.7.1" + dependencies: + "@react-types/shared": ^3.17.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 4002e7af86a2673e0d1855ccadda4afd13579b5c3a71cf423465d4f5c2f26270d9ca4ce831a0ae23b503c59c8e3ee21c7f8a792a26abba381a7662b945f43cc3 + languageName: node + linkType: hard + +"@react-types/checkbox@npm:^3.4.2": + version: 3.4.2 + resolution: "@react-types/checkbox@npm:3.4.2" + dependencies: + "@react-types/shared": ^3.17.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: c34eceb3fe16e5722b2847e9db1d6a921acb8a5e7a924a6b494f692894a3dcca2bd242ae395d4fe43b1de6c6f3dd9a3450c9894d05ea5b38342bee6ad098fcf8 + languageName: node + linkType: hard + +"@react-types/combobox@npm:^3.6.0": + version: 3.6.0 + resolution: "@react-types/combobox@npm:3.6.0" + dependencies: + "@react-types/shared": ^3.17.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: aee7bffcae621d99a04464670971e116e2b3e3ddb510c6ffdfa2b923d075e4a2b7b80fde4bf5d2670861eb7d9744b0e7d83dee0063027af8a601617a7d378969 + languageName: node + linkType: hard + +"@react-types/grid@npm:^3.1.6": + version: 3.1.6 + resolution: "@react-types/grid@npm:3.1.6" + dependencies: + "@react-types/shared": ^3.17.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: d88c4fa8a08c9c66514e8291de328ef02a306d27fa48b6a20537cda5e212f2bca1a00d11cdf54091c452f25dbda968b0c8d2d0f158926b68cc4cf4e8b6e6518c + languageName: node + linkType: hard + +"@react-types/label@npm:^3.7.2": + version: 3.7.2 + resolution: "@react-types/label@npm:3.7.2" + dependencies: + "@react-types/shared": ^3.17.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 5053a575933033e78b4cbfbeca08fb3052e81c0e2b50811677bda2e9d3188f16dc9b0381d21d49cf3ce7b7b3d6518d0d7658fc23c9498b02be60b22ef0a0d9b5 + languageName: node + linkType: hard + +"@react-types/listbox@npm:^3.4.0": + version: 3.4.0 + resolution: "@react-types/listbox@npm:3.4.0" + dependencies: + "@react-types/shared": ^3.17.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: b5bb085f48c16e132b87cdc5840198f6c65afbb21c2f3dfb45d511181502f1388d7b0569a8ec2a5d04eaba5d972dd2210bb1ba8b2c2b97a91b65e19548869ddd + languageName: node + linkType: hard + +"@react-types/menu@npm:^3.8.0": + version: 3.8.0 + resolution: "@react-types/menu@npm:3.8.0" + dependencies: + "@react-types/overlays": ^3.7.0 + "@react-types/shared": ^3.17.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 0ad6b69cc4ebda76f7a056f01913544d0904d53e6722f909234bcc42af3081d22ee9fec632692024acae910e5d7f2f200868022130983c548482c4b7100df133 + languageName: node + linkType: hard + +"@react-types/overlays@npm:^3.7.0": + version: 3.7.0 + resolution: "@react-types/overlays@npm:3.7.0" + dependencies: + "@react-types/shared": ^3.17.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: eff974d34a0372000924340f8ee3fecbb09060d4c903db95eb6033d382f5957253be403e6b205259f230af80e1d2f42d5f9eb77f115f991c1efda50336c249de + languageName: node + linkType: hard + +"@react-types/radio@npm:^3.4.0": + version: 3.4.0 + resolution: "@react-types/radio@npm:3.4.0" + dependencies: + "@react-types/shared": ^3.17.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: efec133f004b3fbf0d551f9a842e2279d71c3bc3faacddbf997188c7bc88bf980efbcdb0ca883bc145f85024b0e64a5f3997cbcf4f88c6efd29b36bc49efa4f4 + languageName: node + linkType: hard + +"@react-types/select@npm:^3.7.0": + version: 3.7.0 + resolution: "@react-types/select@npm:3.7.0" + dependencies: + "@react-types/shared": ^3.17.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: bc721d66fa472357a0566c51e66b0deebaad07b3403fda316fe9848c204c620f7b35c9d03a3330b2d610d8f607829bcc22b241e55ff4be92a0b6f1ea8cd708e1 + languageName: node + linkType: hard + +"@react-types/shared@npm:3.17.0, @react-types/shared@npm:^3.17.0": + version: 3.17.0 + resolution: "@react-types/shared@npm:3.17.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 004fc58ab0d3d64a84ce5a98e7e201b88bbb64f8b4a8309d50be30fe6172d0f172f00c666074aa96f13bbbfbced8b986901ad6b35b6d2d32d8dc25e251fcdb31 + languageName: node + linkType: hard + +"@react-types/slider@npm:^3.4.0": + version: 3.4.0 + resolution: "@react-types/slider@npm:3.4.0" + dependencies: + "@react-types/shared": ^3.17.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: df6bc5b3713984d8f8416ad4f4f7e86388e72cb1a40b1d860dcf23bc52787e3044690b29ee3633510b85471b8336be8f0b7b7a4b2bc16128078865779bbdf521 + languageName: node + linkType: hard + +"@react-types/switch@npm:^3.3.0": + version: 3.3.0 + resolution: "@react-types/switch@npm:3.3.0" + dependencies: + "@react-types/checkbox": ^3.4.2 + "@react-types/shared": ^3.17.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: f310ab1488704f6caabc1c5f958b9ce0b0df4cbf164e061119aff7a41af540f9b83f9013b848f8966665607d41fbe66e2d45271ab3c5e6da64fb252ab22fca90 + languageName: node + linkType: hard + +"@react-types/table@npm:^3.5.0": + version: 3.5.0 + resolution: "@react-types/table@npm:3.5.0" + dependencies: + "@react-types/grid": ^3.1.6 + "@react-types/shared": ^3.17.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: c1e22f3f7ab41f9800b1ed205101a895ac599ba5d34159668837bf097e5856e68b8754e555e7ef4daf3bd2168069d8ef54978b4dc631d589fc5bef92fcc0e5c6 + languageName: node + linkType: hard + +"@react-types/tabs@npm:^3.2.0": + version: 3.2.0 + resolution: "@react-types/tabs@npm:3.2.0" + dependencies: + "@react-types/shared": ^3.17.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: 5162e0e864e73cc149b214561da1e708ecbf171815db0bfefac77f8eb279d5a5e2ab0ef9a86f339bc98082542a55fec72122d1b1e90a6fde2c60e0c107104803 + languageName: node + linkType: hard + +"@react-types/textfield@npm:^3.7.0": + version: 3.7.0 + resolution: "@react-types/textfield@npm:3.7.0" + dependencies: + "@react-types/shared": ^3.17.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + checksum: b6e72d2c971be528ba0c3e8cfb4f0937104e1413a372455399ed27ce42dbe89ffc5f8689a6a778b8cc049e8b020c8e94e2bda07101a238f4b6bf3b34c34fa774 + languageName: node + linkType: hard + +"@remix-run/router@npm:1.4.0": + version: 1.4.0 + resolution: "@remix-run/router@npm:1.4.0" + checksum: 707dce35a2b8138005cf19e63f6fd3c4da05b4b892e9e9118e8b727c3b95953efe27307ca2df35084044df30fa1fc367cf0bbc98d1ded9020c82e61e6242caaf + languageName: node + linkType: hard + +"@repeaterjs/repeater@npm:3.0.4, @repeaterjs/repeater@npm:^3.0.4": + version: 3.0.4 + resolution: "@repeaterjs/repeater@npm:3.0.4" + checksum: cca0db3e802bc26fcce0b4a574074d9956da53bf43094de03c0e4732d05e13441279a92f0b96e2a7a39da50933684947a138c1213406eaafe39cfd4683d6c0df + languageName: node + linkType: hard + +"@swc/helpers@npm:^0.4.14": + version: 0.4.14 + resolution: "@swc/helpers@npm:0.4.14" + dependencies: + tslib: ^2.4.0 + checksum: 273fd3f3fc461a92f3790cc551ea054745c6d6959afbe1232e6d7aa1c722bbc114d308aab96bef5c78fc0303c85c7b472ef00e2253251cc89737f3b1af56e5a5 + languageName: node + linkType: hard + +"@tanstack/match-sorter-utils@npm:8.7.6": + version: 8.7.6 + resolution: "@tanstack/match-sorter-utils@npm:8.7.6" + dependencies: + remove-accents: 0.4.2 + checksum: 3f3dda277e6e55ca1224a28b38a2deb3ac912c2f2f5263a32fa0d9126c6b6d05feb475539729fd248f1eb88b612109db90b847ec8fdfc05d0f4073c900a2d3f6 + languageName: node + linkType: hard + +"@tanstack/react-table@npm:8.7.9": + version: 8.7.9 + resolution: "@tanstack/react-table@npm:8.7.9" + dependencies: + "@tanstack/table-core": 8.7.9 + peerDependencies: + react: ">=16" + react-dom: ">=16" + checksum: 3c704ac903405972641c9857e1466025bcdac04ee4890d64b018386cad5a778aca3a8d3f78542ae7a0ed609841d32ef3a7e563b079e87fa93b9ae8570a310499 + languageName: node + linkType: hard + +"@tanstack/react-virtual@npm:3.0.0-beta.48": + version: 3.0.0-beta.48 + resolution: "@tanstack/react-virtual@npm:3.0.0-beta.48" + dependencies: + "@tanstack/virtual-core": 3.0.0-beta.48 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 3c0d75570b2b316edbf4f658f7fc398a63467d305cd3b69450febd9ab470b65f00948561c9e8f315a6756564c5164e51ff276f1d2e76c196c7a6110ef115afea + languageName: node + linkType: hard + +"@tanstack/table-core@npm:8.7.9": + version: 8.7.9 + resolution: "@tanstack/table-core@npm:8.7.9" + checksum: 78d2314928c29559088e4bada0248cc7f94e93756e1a2c1f37a651db30276e9ae960d647bd3a61b67b3f0f9f7e4dec5dd58eb49b8adb80ee5952ef417b6e581f + languageName: node + linkType: hard + +"@tanstack/virtual-core@npm:3.0.0-beta.48": + version: 3.0.0-beta.48 + resolution: "@tanstack/virtual-core@npm:3.0.0-beta.48" + checksum: 2bc41ad00aaeb7c07ec1ba5987e795aacef01e1bc32ca75c65f3357aa2b202bfd0aece73b4eb79241d0166ee19956e99e3789ee0edbb55cafb2714adde9b07c2 + languageName: node + linkType: hard + +"@tootallnate/once@npm:2": + version: 2.0.0 + resolution: "@tootallnate/once@npm:2.0.0" + checksum: ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 + languageName: node + linkType: hard + +"@types/absinthe__socket-apollo-link@npm:0.2.1": + version: 0.2.1 + resolution: "@types/absinthe__socket-apollo-link@npm:0.2.1" + dependencies: + "@types/absinthe__socket": "*" + apollo-link: ">=1.2.5" + apollo-link-http-common: ^0.2.4 + graphql: ^14.5.3 + checksum: 56b8df10e6a3a5110226b572ef7fa41ad68a6b09dcf658a7cf7dde5bd4bbecbaa1e2970891d2427d243c384a0cb5da72e79a40e06afdb50a0ee8ca2c82d78d96 + languageName: node + linkType: hard + +"@types/absinthe__socket@npm:*, @types/absinthe__socket@npm:0.2.3": + version: 0.2.3 + resolution: "@types/absinthe__socket@npm:0.2.3" + dependencies: + "@types/phoenix": "*" + checksum: 6c4855ab1eb31af58a788205b7cc52743e800abc3fce5437abd935c333785ad31b343d4e355f9b59bd4843a3164f41c4775f5a75918366fff54eff2ff72bca36 + languageName: node + linkType: hard + +"@types/chroma-js@npm:2.1.5": + version: 2.1.5 + resolution: "@types/chroma-js@npm:2.1.5" + checksum: 7cc7ba5d024f9048f11cf045b6f0a2d7025ecd930e89867cbcc35b4f668ebb0fbaf4231de418d3c447bf21b71fa25cce1b3c8d17d3d3de4ddbe38f66d469f106 + languageName: node + linkType: hard + +"@types/debug@npm:^4.0.0": + version: 4.1.7 + resolution: "@types/debug@npm:4.1.7" + dependencies: + "@types/ms": "*" + checksum: 0a7b89d8ed72526858f0b61c6fd81f477853e8c4415bb97f48b1b5545248d2ae389931680b94b393b993a7cfe893537a200647d93defe6d87159b96812305adc + languageName: node + linkType: hard + +"@types/hast@npm:^2.0.0": + version: 2.3.4 + resolution: "@types/hast@npm:2.3.4" + dependencies: + "@types/unist": "*" + checksum: fff47998f4c11e21a7454b58673f70478740ecdafd95aaf50b70a3daa7da9cdc57315545bf9c039613732c40b7b0e9e49d11d03fe9a4304721cdc3b29a88141e + languageName: node + linkType: hard + +"@types/hoist-non-react-statics@npm:*": + version: 3.3.1 + resolution: "@types/hoist-non-react-statics@npm:3.3.1" + dependencies: + "@types/react": "*" + hoist-non-react-statics: ^3.3.0 + checksum: 2c0778570d9a01d05afabc781b32163f28409bb98f7245c38d5eaf082416fdb73034003f5825eb5e21313044e8d2d9e1f3fe2831e345d3d1b1d20bcd12270719 + languageName: node + linkType: hard + +"@types/js-yaml@npm:^4.0.0": + version: 4.0.5 + resolution: "@types/js-yaml@npm:4.0.5" + checksum: 7dcac8c50fec31643cc9d6444b5503239a861414cdfaa7ae9a38bc22597c4d850c4b8cec3d82d73b3fbca408348ce223b0408d598b32e094470dfffc6d486b4d + languageName: node + linkType: hard + +"@types/json-schema@npm:^7.0.9": + version: 7.0.11 + resolution: "@types/json-schema@npm:7.0.11" + checksum: 527bddfe62db9012fccd7627794bd4c71beb77601861055d87e3ee464f2217c85fca7a4b56ae677478367bbd248dbde13553312b7d4dbc702a2f2bbf60c4018d + languageName: node + linkType: hard + +"@types/json-stable-stringify@npm:^1.0.32": + version: 1.0.34 + resolution: "@types/json-stable-stringify@npm:1.0.34" + checksum: 45767ecef0f6aae5680c3be6488d5c493f16046e34f182d7e6a2c69a667aab035799752c6f03017c883b134ad3f80e3f78d7e7da81a9c1f3d01676126baf5d0e + languageName: node + linkType: hard + +"@types/json5@npm:^0.0.29": + version: 0.0.29 + resolution: "@types/json5@npm:0.0.29" + checksum: e60b153664572116dfea673c5bda7778dbff150498f44f998e34b5886d8afc47f16799280e4b6e241c0472aef1bc36add771c569c68fc5125fc2ae519a3eb9ac + languageName: node + linkType: hard + +"@types/mdast@npm:^3.0.0": + version: 3.0.11 + resolution: "@types/mdast@npm:3.0.11" + dependencies: + "@types/unist": "*" + checksum: 3b04cf465535553b47a1811c247668bd6cfeb54d99a2c9dbb82ccd0f5145d271d10c3169f929701d8cd55fd569f0d2e459a50845813ba3261f1fb0395a288cea + languageName: node + linkType: hard + +"@types/ms@npm:*": + version: 0.7.31 + resolution: "@types/ms@npm:0.7.31" + checksum: daadd354aedde024cce6f5aa873fefe7b71b22cd0e28632a69e8b677aeb48ae8caa1c60e5919bb781df040d116b01cb4316335167a3fc0ef6a63fa3614c0f6da + languageName: node + linkType: hard + +"@types/node@npm:*": + version: 18.15.10 + resolution: "@types/node@npm:18.15.10" + checksum: 9aeae0b683eda82892def5315812bdee3f1a28c4898b7e70f8e2514564538b16c4dccbe8339c1266f8fc1d707a48f152689264a854f5ebc2eba5011e793612d9 + languageName: node + linkType: hard + +"@types/node@npm:18.15.5": + version: 18.15.5 + resolution: "@types/node@npm:18.15.5" + checksum: 5fbf3453bd5ce1402bb2964e55d928fc8a8a7de5451b1b0fe66587fecb8a3eb86854ca9cefa5076a5971e2cff00e1773ceeb5d872a54f6c6ddfbbc1064b4e91a + languageName: node + linkType: hard + +"@types/parse-json@npm:^4.0.0": + version: 4.0.0 + resolution: "@types/parse-json@npm:4.0.0" + checksum: fd6bce2b674b6efc3db4c7c3d336bd70c90838e8439de639b909ce22f3720d21344f52427f1d9e57b265fcb7f6c018699b99e5e0c208a1a4823014269a6bf35b + languageName: node + linkType: hard + +"@types/parse5@npm:^6.0.0": + version: 6.0.3 + resolution: "@types/parse5@npm:6.0.3" + checksum: ddb59ee4144af5dfcc508a8dcf32f37879d11e12559561e65788756b95b33e6f03ea027d88e1f5408f9b7bfb656bf630ace31a2169edf44151daaf8dd58df1b7 + languageName: node + linkType: hard + +"@types/phoenix@npm:*, @types/phoenix@npm:1.5.5": + version: 1.5.5 + resolution: "@types/phoenix@npm:1.5.5" + checksum: 2dfb59c51c3f4b79ba9422f4f778695adc45a5ed55450b59e882da86835d4489483b3cb5a372bab1506b98a46c7830b1dda4bbdbb83c6787b619065d7eb99816 + languageName: node + linkType: hard + +"@types/prop-types@npm:*, @types/prop-types@npm:^15.0.0": + version: 15.7.5 + resolution: "@types/prop-types@npm:15.7.5" + checksum: 5b43b8b15415e1f298243165f1d44390403bb2bd42e662bca3b5b5633fdd39c938e91b7fce3a9483699db0f7a715d08cef220c121f723a634972fdf596aec980 + languageName: node + linkType: hard + +"@types/react-dom@npm:18.0.11": + version: 18.0.11 + resolution: "@types/react-dom@npm:18.0.11" + dependencies: + "@types/react": "*" + checksum: 579691e4d5ec09688087568037c35edf8cfb1ab3e07f6c60029280733ee7b5c06d66df6fcc90786702c93ac8cb13bc7ff16c79ddfc75d082938fbaa36e1cdbf4 + languageName: node + linkType: hard + +"@types/react@npm:*, @types/react@npm:18.0.28": + version: 18.0.28 + resolution: "@types/react@npm:18.0.28" + dependencies: + "@types/prop-types": "*" + "@types/scheduler": "*" + csstype: ^3.0.2 + checksum: e752df961105e5127652460504785897ca6e77259e0da8f233f694f9e8f451cde7fa0709d4456ade0ff600c8ce909cfe29f9b08b9c247fa9b734e126ec53edd7 + languageName: node + linkType: hard + +"@types/scheduler@npm:*": + version: 0.16.2 + resolution: "@types/scheduler@npm:0.16.2" + checksum: b6b4dcfeae6deba2e06a70941860fb1435730576d3689225a421280b7742318d1548b3d22c1f66ab68e414f346a9542f29240bc955b6332c5b11e561077583bc + languageName: node + linkType: hard + +"@types/semver@npm:^7.3.12": + version: 7.3.13 + resolution: "@types/semver@npm:7.3.13" + checksum: 00c0724d54757c2f4bc60b5032fe91cda6410e48689633d5f35ece8a0a66445e3e57fa1d6e07eb780f792e82ac542948ec4d0b76eb3484297b79bd18b8cf1cb0 + languageName: node + linkType: hard + +"@types/styled-components@npm:5.1.26": + version: 5.1.26 + resolution: "@types/styled-components@npm:5.1.26" + dependencies: + "@types/hoist-non-react-statics": "*" + "@types/react": "*" + csstype: ^3.0.2 + checksum: 84f53b3101739b20d1731554fb7735bc2f3f5d050a8b392e9845403c8c8bbd729737d033978649f9195a97b557875b010d46e35a4538564a2d0dbcce661dbf76 + languageName: node + linkType: hard + +"@types/unist@npm:*, @types/unist@npm:^2.0.0": + version: 2.0.6 + resolution: "@types/unist@npm:2.0.6" + checksum: 25cb860ff10dde48b54622d58b23e66214211a61c84c0f15f88d38b61aa1b53d4d46e42b557924a93178c501c166aa37e28d7f6d994aba13d24685326272d5db + languageName: node + linkType: hard + +"@types/ws@npm:^8.0.0": + version: 8.5.4 + resolution: "@types/ws@npm:8.5.4" + dependencies: + "@types/node": "*" + checksum: fefbad20d211929bb996285c4e6f699b12192548afedbe4930ab4384f8a94577c9cd421acaad163cacd36b88649509970a05a0b8f20615b30c501ed5269038d1 + languageName: node + linkType: hard + +"@typescript-eslint/eslint-plugin@npm:5.49.0": + version: 5.49.0 + resolution: "@typescript-eslint/eslint-plugin@npm:5.49.0" + dependencies: + "@typescript-eslint/scope-manager": 5.49.0 + "@typescript-eslint/type-utils": 5.49.0 + "@typescript-eslint/utils": 5.49.0 + debug: ^4.3.4 + ignore: ^5.2.0 + natural-compare-lite: ^1.4.0 + regexpp: ^3.2.0 + semver: ^7.3.7 + tsutils: ^3.21.0 + peerDependencies: + "@typescript-eslint/parser": ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 15423cd9fde1ac3f8ba34526a07e537464e70463f1af784be5567fdc78e5745352fa0a2c3be0c13d066bc4b9720b5fa438d64647f624d29722eb4f158c039dcc + languageName: node + linkType: hard + +"@typescript-eslint/eslint-plugin@npm:5.56.0": + version: 5.56.0 + resolution: "@typescript-eslint/eslint-plugin@npm:5.56.0" + dependencies: + "@eslint-community/regexpp": ^4.4.0 + "@typescript-eslint/scope-manager": 5.56.0 + "@typescript-eslint/type-utils": 5.56.0 + "@typescript-eslint/utils": 5.56.0 + debug: ^4.3.4 + grapheme-splitter: ^1.0.4 + ignore: ^5.2.0 + natural-compare-lite: ^1.4.0 + semver: ^7.3.7 + tsutils: ^3.21.0 + peerDependencies: + "@typescript-eslint/parser": ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 2eed4a4ed8279950ad553252e8623e947ffdee39b0d677a13f6e4e2d863ea1cbc5d683ff189e55d0de6fd5a25afd72d3c3a9ab7ae417d5405a21ead907e1b154 + languageName: node + linkType: hard + +"@typescript-eslint/parser@npm:5.49.0": + version: 5.49.0 + resolution: "@typescript-eslint/parser@npm:5.49.0" + dependencies: + "@typescript-eslint/scope-manager": 5.49.0 + "@typescript-eslint/types": 5.49.0 + "@typescript-eslint/typescript-estree": 5.49.0 + debug: ^4.3.4 + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 87b3760cfc29b3edd3d28fe0d5e9e5a3833d60398d7779ecc657b9e3bfec624cd464176e26b24b0761fb79cc88daddae19560340f91119c4856b91f9663594dd + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:5.49.0": + version: 5.49.0 + resolution: "@typescript-eslint/scope-manager@npm:5.49.0" + dependencies: + "@typescript-eslint/types": 5.49.0 + "@typescript-eslint/visitor-keys": 5.49.0 + checksum: 466047e24ff8a4195f14aadde39375f22891bdaced09e58c89f2c32af0aa4a0d87e71a5f006f6ab76858e6f30c4b764b1e0ef7bc26713bb78add30638108c45f + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:5.56.0": + version: 5.56.0 + resolution: "@typescript-eslint/scope-manager@npm:5.56.0" + dependencies: + "@typescript-eslint/types": 5.56.0 + "@typescript-eslint/visitor-keys": 5.56.0 + checksum: bacac255ee52148cee6622be2811c0d7e25419058b89f1a11f4c1303faef4535a0a1237549f9556ec1d7a297c640ce4357183a1a8465d72e1393b7d8fb43874b + languageName: node + linkType: hard + +"@typescript-eslint/type-utils@npm:5.49.0": + version: 5.49.0 + resolution: "@typescript-eslint/type-utils@npm:5.49.0" + dependencies: + "@typescript-eslint/typescript-estree": 5.49.0 + "@typescript-eslint/utils": 5.49.0 + debug: ^4.3.4 + tsutils: ^3.21.0 + peerDependencies: + eslint: "*" + peerDependenciesMeta: + typescript: + optional: true + checksum: 9dcee0a21cfdb3549e2305120535af5ab2c5d0cafdd410827e79d7548f8fc4e7da7cbb77a4338ade8b8b8aaf246fee56b919f1857931bbe2ac5df2fbb5e62ee6 + languageName: node + linkType: hard + +"@typescript-eslint/type-utils@npm:5.56.0": + version: 5.56.0 + resolution: "@typescript-eslint/type-utils@npm:5.56.0" + dependencies: + "@typescript-eslint/typescript-estree": 5.56.0 + "@typescript-eslint/utils": 5.56.0 + debug: ^4.3.4 + tsutils: ^3.21.0 + peerDependencies: + eslint: "*" + peerDependenciesMeta: + typescript: + optional: true + checksum: 3dd1fcfadad18790b900a3d90f6617904adb6b0e2bd1e1edb6ebf239e1399865ca9098647405385feb4252d8b2b4577883e6fd3ef8d00bdd521d6070972d486b + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:5.49.0": + version: 5.49.0 + resolution: "@typescript-eslint/types@npm:5.49.0" + checksum: 41f72a043007fc3f3356b5a38d7bfa54871545b4a309810a062f044cff25122413a9660ce6d83d1221762f60d067351d020b0cb68f7e1279817f53e77ce8f33d + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:5.56.0": + version: 5.56.0 + resolution: "@typescript-eslint/types@npm:5.56.0" + checksum: 82ca11553bbb1bbfcaf7e7760b03c0d898940238dc002552c21af3e58f7d482c64c3c6cf0666521aff2a1e7b4b58bb6e4d9a00b1e4998a16b5039f5d288d003a + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:5.49.0": + version: 5.49.0 + resolution: "@typescript-eslint/typescript-estree@npm:5.49.0" + dependencies: + "@typescript-eslint/types": 5.49.0 + "@typescript-eslint/visitor-keys": 5.49.0 + debug: ^4.3.4 + globby: ^11.1.0 + is-glob: ^4.0.3 + semver: ^7.3.7 + tsutils: ^3.21.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: f331af9f0ef3ce3157c421b8cc727dec5aa0a60add305aa4c676a02c63ec07799105268af192c5ed193a682b7ed804564d29d49bdbd2019678e495d80e65e29a + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:5.56.0": + version: 5.56.0 + resolution: "@typescript-eslint/typescript-estree@npm:5.56.0" + dependencies: + "@typescript-eslint/types": 5.56.0 + "@typescript-eslint/visitor-keys": 5.56.0 + debug: ^4.3.4 + globby: ^11.1.0 + is-glob: ^4.0.3 + semver: ^7.3.7 + tsutils: ^3.21.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: ec3e85201786aa9adddba7cb834a9f330a7f55c729ee9ccf847dbdc2f7437b760f3774152ccad6d0aa48d13fd78df766c880e3a7ca42e01a20aba0e1a1ed61c5 + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:5.49.0": + version: 5.49.0 + resolution: "@typescript-eslint/utils@npm:5.49.0" + dependencies: + "@types/json-schema": ^7.0.9 + "@types/semver": ^7.3.12 + "@typescript-eslint/scope-manager": 5.49.0 + "@typescript-eslint/types": 5.49.0 + "@typescript-eslint/typescript-estree": 5.49.0 + eslint-scope: ^5.1.1 + eslint-utils: ^3.0.0 + semver: ^7.3.7 + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 8218c566637d5104dfb2346216f8cb4c244f31c2a39e261aafe554b8abd48bd630a0d0807a0a8d776af8f9d9914c8776d86abf0a523049f3c5619c498a7e5b1e + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:5.56.0": + version: 5.56.0 + resolution: "@typescript-eslint/utils@npm:5.56.0" + dependencies: + "@eslint-community/eslint-utils": ^4.2.0 + "@types/json-schema": ^7.0.9 + "@types/semver": ^7.3.12 + "@typescript-eslint/scope-manager": 5.56.0 + "@typescript-eslint/types": 5.56.0 + "@typescript-eslint/typescript-estree": 5.56.0 + eslint-scope: ^5.1.1 + semver: ^7.3.7 + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 413e8d4bf7023ee5ba4f695b62e796a1f94930bb92fe5aa0cee58f63b9837116c23f618825a9c671f610e50f5630188b6059b4ed6b05a2a3336f01d8e977becb + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:5.49.0": + version: 5.49.0 + resolution: "@typescript-eslint/visitor-keys@npm:5.49.0" + dependencies: + "@typescript-eslint/types": 5.49.0 + eslint-visitor-keys: ^3.3.0 + checksum: 46dc7bc713e8825d1fccba521fdf7c6e2f8829e491c2afd44dbe4105c6432e3c3dfe7e1ecb221401269d639264bb4af77b60a7b65521fcff9ab02cd31d8ef782 + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:5.56.0": + version: 5.56.0 + resolution: "@typescript-eslint/visitor-keys@npm:5.56.0" + dependencies: + "@typescript-eslint/types": 5.56.0 + eslint-visitor-keys: ^3.3.0 + checksum: 568fda40134e153d7befb59b55698f7919ba780d2d3431d8745feabf2e0fbb8aa7a02173b3c467dd20a0f6594e5248a1f82bb25d6c37827716d77452e86cad29 + languageName: node + linkType: hard + +"@vitejs/plugin-react@npm:3.1.0": + version: 3.1.0 + resolution: "@vitejs/plugin-react@npm:3.1.0" + dependencies: + "@babel/core": ^7.20.12 + "@babel/plugin-transform-react-jsx-self": ^7.18.6 + "@babel/plugin-transform-react-jsx-source": ^7.19.6 + magic-string: ^0.27.0 + react-refresh: ^0.14.0 + peerDependencies: + vite: ^4.1.0-beta.0 + checksum: 450fac79e67cba9e1581c860f78e687b44108ab4117663ef20db279316e03cd8e87f94fef376e27cc5e200bd52813dcc09b70ea570c7c7cc291fcd47eb260fbc + languageName: node + linkType: hard + +"@whatwg-node/events@npm:^0.0.2": + version: 0.0.2 + resolution: "@whatwg-node/events@npm:0.0.2" + checksum: 6d491801d36967d5d62443cca6ef39d41cf882d575839d2e9d1a5f394722cd24ef84fe9e897bb72c01bd198871fda9ff0e8b1ac5aa6f3f814f87d92b7f28fdcc + languageName: node + linkType: hard + +"@whatwg-node/fetch@npm:^0.8.0, @whatwg-node/fetch@npm:^0.8.1": + version: 0.8.4 + resolution: "@whatwg-node/fetch@npm:0.8.4" + dependencies: + "@peculiar/webcrypto": ^1.4.0 + "@whatwg-node/node-fetch": ^0.3.3 + busboy: ^1.6.0 + urlpattern-polyfill: ^6.0.2 + web-streams-polyfill: ^3.2.1 + checksum: 7e40311424a069e5e35d580b65373d0cb63034b39cdce7089d7681d0f354bc7132d1140be5ad39478aa3dbaf62a0053fbf64d77bf3bb3f45d65d8442ef61d4ea + languageName: node + linkType: hard + +"@whatwg-node/node-fetch@npm:^0.3.3": + version: 0.3.4 + resolution: "@whatwg-node/node-fetch@npm:0.3.4" + dependencies: + "@whatwg-node/events": ^0.0.2 + busboy: ^1.6.0 + fast-querystring: ^1.1.1 + fast-url-parser: ^1.1.3 + tslib: ^2.3.1 + checksum: 11bcb83eddc9276ce3c97ae63c015dc1aacaa81210bd0986a53ca5fd290fe470d3f937432e3d84cc3c0ad6e8431ef5e0a2c6115e99b1863076c13d5584c8f6fb + languageName: node + linkType: hard + +"@wry/context@npm:^0.7.0": + version: 0.7.0 + resolution: "@wry/context@npm:0.7.0" + dependencies: + tslib: ^2.3.0 + checksum: f4ff78023a0b949122037aae766232b7d2284dc415204d22d9ea6d7969ff8f5f29b18128bc9a40e68dc054c8a12b1bf5868a357fdb50c398c447290c3a5b0496 + languageName: node + linkType: hard + +"@wry/equality@npm:^0.1.2": + version: 0.1.11 + resolution: "@wry/equality@npm:0.1.11" + dependencies: + tslib: ^1.9.3 + checksum: 1a26a0fd11e3e3a6a197d9a54a5bec523caf693daa24ad2709f496e43dd3cd12290a0d17df81f8a783437795f6c64a1ca2717cdac6e79022bde4450c11e705c9 + languageName: node + linkType: hard + +"@wry/equality@npm:^0.5.0": + version: 0.5.3 + resolution: "@wry/equality@npm:0.5.3" + dependencies: + tslib: ^2.3.0 + checksum: 7ea8ded51462911217183b93cc3ffbb4d18dc02a62d4a79e0d9983463739bf54106aaeb25649bf33168120bd044b61d135018bfcf4fefad8099c13eac9238aa6 + languageName: node + linkType: hard + +"@wry/trie@npm:^0.3.0": + version: 0.3.2 + resolution: "@wry/trie@npm:0.3.2" + dependencies: + tslib: ^2.3.0 + checksum: 151d06b519e1ff1c3acf6ee6846161b1d7d50bbecd4c48e5cd1b05f9e37c30602aff02e88f20105f6e6c54ae4123f9c4eb7715044d7fd927d4ba4ec3e755cd36 + languageName: node + linkType: hard + +"abbrev@npm:^1.0.0": + version: 1.1.1 + resolution: "abbrev@npm:1.1.1" + checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 + languageName: node + linkType: hard + +"acorn-jsx@npm:^5.3.2": + version: 5.3.2 + resolution: "acorn-jsx@npm:5.3.2" + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: c3d3b2a89c9a056b205b69530a37b972b404ee46ec8e5b341666f9513d3163e2a4f214a71f4dfc7370f5a9c07472d2fd1c11c91c3f03d093e37637d95da98950 + languageName: node + linkType: hard + +"acorn@npm:^8.8.0": + version: 8.8.2 + resolution: "acorn@npm:8.8.2" + bin: + acorn: bin/acorn + checksum: f790b99a1bf63ef160c967e23c46feea7787e531292bb827126334612c234ed489a0dc2c7ba33156416f0ffa8d25bf2b0fdb7f35c2ba60eb3e960572bece4001 + languageName: node + linkType: hard + +"agent-base@npm:6, agent-base@npm:^6.0.2": + version: 6.0.2 + resolution: "agent-base@npm:6.0.2" + dependencies: + debug: 4 + checksum: f52b6872cc96fd5f622071b71ef200e01c7c4c454ee68bc9accca90c98cfb39f2810e3e9aa330435835eedc8c23f4f8a15267f67c6e245d2b33757575bdac49d + languageName: node + linkType: hard + +"agentkeepalive@npm:^4.2.1": + version: 4.3.0 + resolution: "agentkeepalive@npm:4.3.0" + dependencies: + debug: ^4.1.0 + depd: ^2.0.0 + humanize-ms: ^1.2.1 + checksum: 982453aa44c11a06826c836025e5162c846e1200adb56f2d075400da7d32d87021b3b0a58768d949d824811f5654223d5a8a3dad120921a2439625eb847c6260 + languageName: node + linkType: hard + +"aggregate-error@npm:^3.0.0": + version: 3.1.0 + resolution: "aggregate-error@npm:3.1.0" + dependencies: + clean-stack: ^2.0.0 + indent-string: ^4.0.0 + checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 + languageName: node + linkType: hard + +"ajv@npm:^6.10.0, ajv@npm:^6.12.4": + version: 6.12.6 + resolution: "ajv@npm:6.12.6" + dependencies: + fast-deep-equal: ^3.1.1 + fast-json-stable-stringify: ^2.0.0 + json-schema-traverse: ^0.4.1 + uri-js: ^4.2.2 + checksum: 874972efe5c4202ab0a68379481fbd3d1b5d0a7bd6d3cc21d40d3536ebff3352a2a1fabb632d4fd2cc7fe4cbdcd5ed6782084c9bbf7f32a1536d18f9da5007d4 + languageName: node + linkType: hard + +"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.0": + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" + dependencies: + type-fest: ^0.21.3 + checksum: 93111c42189c0a6bed9cdb4d7f2829548e943827ee8479c74d6e0b22ee127b2a21d3f8b5ca57723b8ef78ce011fbfc2784350eb2bde3ccfccf2f575fa8489815 + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b + languageName: node + linkType: hard + +"ansi-styles@npm:^3.2.1": + version: 3.2.1 + resolution: "ansi-styles@npm:3.2.1" + dependencies: + color-convert: ^1.9.0 + checksum: d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665 + languageName: node + linkType: hard + +"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": + version: 4.3.0 + resolution: "ansi-styles@npm:4.3.0" + dependencies: + color-convert: ^2.0.1 + checksum: 513b44c3b2105dd14cc42a19271e80f386466c4be574bccf60b627432f9198571ebf4ab1e4c3ba17347658f4ee1711c163d574248c0c1cdc2d5917a0ad582ec4 + languageName: node + linkType: hard + +"apollo-link-http-common@npm:^0.2.4": + version: 0.2.16 + resolution: "apollo-link-http-common@npm:0.2.16" + dependencies: + apollo-link: ^1.2.14 + ts-invariant: ^0.4.0 + tslib: ^1.9.3 + peerDependencies: + graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 + checksum: 46672f2b10a01f495ed91d32b9d21ed0747bf23c8c23a2041ca41dd92a05e0e18d7842d29c958f6ddfaee03bd89202788f593cdcb96d4167191aff125f109c67 + languageName: node + linkType: hard + +"apollo-link@npm:1.2.5": + version: 1.2.5 + resolution: "apollo-link@npm:1.2.5" + dependencies: + apollo-utilities: ^1.0.0 + zen-observable-ts: ^0.8.12 + peerDependencies: + graphql: ^0.11.3 || ^0.12.3 || ^0.13.0 || ^14.0.0 + checksum: 4f28eaced42e75c9b0402b89c994cc8e20dd60566e4478e19900c1a88f08fe6a1f126181f5454d45e9b20720e0f243462b7f95fa13a06f9008c7728acf83e8f8 + languageName: node + linkType: hard + +"apollo-link@npm:>=1.2.5, apollo-link@npm:^1.2.14": + version: 1.2.14 + resolution: "apollo-link@npm:1.2.14" + dependencies: + apollo-utilities: ^1.3.0 + ts-invariant: ^0.4.0 + tslib: ^1.9.3 + zen-observable-ts: ^0.8.21 + peerDependencies: + graphql: ^0.11.3 || ^0.12.3 || ^0.13.0 || ^14.0.0 || ^15.0.0 + checksum: ad8d051ffceb270cdbbcc71d499bce2fda437a65fac6edc859a9e2dc0dbcb10b6a3f4da41789e786270aa358719c8b71315f383a698a74957df0d7aeea042918 + languageName: node + linkType: hard + +"apollo-utilities@npm:^1.0.0, apollo-utilities@npm:^1.3.0": + version: 1.3.4 + resolution: "apollo-utilities@npm:1.3.4" + dependencies: + "@wry/equality": ^0.1.2 + fast-json-stable-stringify: ^2.0.0 + ts-invariant: ^0.4.0 + tslib: ^1.10.0 + peerDependencies: + graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 + checksum: 6e0192a3420782909c930f5230808d7fbbdbcdfccddd960120e19bab251b77a16e590b05dbb4a7da2c27c59077fbfd53e56819a9fae694debe7f898e8b0ec1e9 + languageName: node + linkType: hard + +"aproba@npm:^1.0.3 || ^2.0.0": + version: 2.0.0 + resolution: "aproba@npm:2.0.0" + checksum: 5615cadcfb45289eea63f8afd064ab656006361020e1735112e346593856f87435e02d8dcc7ff0d11928bc7d425f27bc7c2a84f6c0b35ab0ff659c814c138a24 + languageName: node + linkType: hard + +"are-we-there-yet@npm:^3.0.0": + version: 3.0.1 + resolution: "are-we-there-yet@npm:3.0.1" + dependencies: + delegates: ^1.0.0 + readable-stream: ^3.6.0 + checksum: 52590c24860fa7173bedeb69a4c05fb573473e860197f618b9a28432ee4379049336727ae3a1f9c4cb083114601c1140cee578376164d0e651217a9843f9fe83 + languageName: node + linkType: hard + +"argparse@npm:^2.0.1": + version: 2.0.1 + resolution: "argparse@npm:2.0.1" + checksum: 83644b56493e89a254bae05702abf3a1101b4fa4d0ca31df1c9985275a5a5bd47b3c27b7fa0b71098d41114d8ca000e6ed90cad764b306f8a503665e4d517ced + languageName: node + linkType: hard + +"aria-hidden@npm:^1.1.3": + version: 1.2.3 + resolution: "aria-hidden@npm:1.2.3" + dependencies: + tslib: ^2.0.0 + checksum: 7d7d211629eef315e94ed3b064c6823d13617e609d3f9afab1c2ed86399bb8e90405f9bdd358a85506802766f3ecb468af985c67c846045a34b973bcc0289db9 + languageName: node + linkType: hard + +"aria-query@npm:^5.1.3": + version: 5.1.3 + resolution: "aria-query@npm:5.1.3" + dependencies: + deep-equal: ^2.0.5 + checksum: 929ff95f02857b650fb4cbcd2f41072eee2f46159a6605ea03bf63aa572e35ffdff43d69e815ddc462e16e07de8faba3978afc2813650b4448ee18c9895d982b + languageName: node + linkType: hard + +"array-buffer-byte-length@npm:^1.0.0": + version: 1.0.0 + resolution: "array-buffer-byte-length@npm:1.0.0" + dependencies: + call-bind: ^1.0.2 + is-array-buffer: ^3.0.1 + checksum: 044e101ce150f4804ad19c51d6c4d4cfa505c5b2577bd179256e4aa3f3f6a0a5e9874c78cd428ee566ac574c8a04d7ce21af9fe52e844abfdccb82b33035a7c3 + languageName: node + linkType: hard + +"array-includes@npm:^3.1.5, array-includes@npm:^3.1.6": + version: 3.1.6 + resolution: "array-includes@npm:3.1.6" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + get-intrinsic: ^1.1.3 + is-string: ^1.0.7 + checksum: f22f8cd8ba8a6448d91eebdc69f04e4e55085d09232b5216ee2d476dab3ef59984e8d1889e662c6a0ed939dcb1b57fd05b2c0209c3370942fc41b752c82a2ca5 + languageName: node + linkType: hard + +"array-union@npm:^2.1.0": + version: 2.1.0 + resolution: "array-union@npm:2.1.0" + checksum: 5bee12395cba82da674931df6d0fea23c4aa4660cb3b338ced9f828782a65caa232573e6bf3968f23e0c5eb301764a382cef2f128b170a9dc59de0e36c39f98d + languageName: node + linkType: hard + +"array.prototype.flat@npm:^1.3.1": + version: 1.3.1 + resolution: "array.prototype.flat@npm:1.3.1" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + es-shim-unscopables: ^1.0.0 + checksum: 5a8415949df79bf6e01afd7e8839bbde5a3581300e8ad5d8449dea52639e9e59b26a467665622783697917b43bf39940a6e621877c7dd9b3d1c1f97484b9b88b + languageName: node + linkType: hard + +"array.prototype.flatmap@npm:^1.3.1": + version: 1.3.1 + resolution: "array.prototype.flatmap@npm:1.3.1" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + es-shim-unscopables: ^1.0.0 + checksum: 8c1c43a4995f12cf12523436da28515184c753807b3f0bc2ca6c075f71c470b099e2090cc67dba8e5280958fea401c1d0c59e1db0143272aef6cd1103921a987 + languageName: node + linkType: hard + +"array.prototype.tosorted@npm:^1.1.1": + version: 1.1.1 + resolution: "array.prototype.tosorted@npm:1.1.1" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + es-shim-unscopables: ^1.0.0 + get-intrinsic: ^1.1.3 + checksum: 7923324a67e70a2fc0a6e40237405d92395e45ebd76f5cb89c2a5cf1e66b47aca6baacd0cd628ffd88830b90d47fff268071493d09c9ae123645613dac2c2ca3 + languageName: node + linkType: hard + +"asap@npm:~2.0.3": + version: 2.0.6 + resolution: "asap@npm:2.0.6" + checksum: b296c92c4b969e973260e47523207cd5769abd27c245a68c26dc7a0fe8053c55bb04360237cb51cab1df52be939da77150ace99ad331fb7fb13b3423ed73ff3d + languageName: node + linkType: hard + +"asn1js@npm:^3.0.1, asn1js@npm:^3.0.5": + version: 3.0.5 + resolution: "asn1js@npm:3.0.5" + dependencies: + pvtsutils: ^1.3.2 + pvutils: ^1.1.3 + tslib: ^2.4.0 + checksum: 3b6af1bbadd5762ef8ead5daf2f6bda1bc9e23bc825c4dcc996aa1f9521ad7390a64028565d95d98090d69c8431f004c71cccb866004759169d7c203cf9075eb + languageName: node + linkType: hard + +"ast-types-flow@npm:^0.0.7": + version: 0.0.7 + resolution: "ast-types-flow@npm:0.0.7" + checksum: a26dcc2182ffee111cad7c471759b0bda22d3b7ebacf27c348b22c55f16896b18ab0a4d03b85b4020dce7f3e634b8f00b593888f622915096ea1927fa51866c4 + languageName: node + linkType: hard + +"astral-regex@npm:^2.0.0": + version: 2.0.0 + resolution: "astral-regex@npm:2.0.0" + checksum: 876231688c66400473ba505731df37ea436e574dd524520294cc3bbc54ea40334865e01fa0d074d74d036ee874ee7e62f486ea38bc421ee8e6a871c06f011766 + languageName: node + linkType: hard + +"asynckit@npm:^0.4.0": + version: 0.4.0 + resolution: "asynckit@npm:0.4.0" + checksum: 7b78c451df768adba04e2d02e63e2d0bf3b07adcd6e42b4cf665cb7ce899bedd344c69a1dcbce355b5f972d597b25aaa1c1742b52cffd9caccb22f348114f6be + languageName: node + linkType: hard + +"auto-bind@npm:~4.0.0": + version: 4.0.0 + resolution: "auto-bind@npm:4.0.0" + checksum: 00cad71cce5742faccb7dd65c1b55ebc4f45add4b0c9a1547b10b05bab22813230133b0c892c67ba3eb969a4524710c5e43cc45c72898ec84e56f3a596e7a04f + languageName: node + linkType: hard + +"available-typed-arrays@npm:^1.0.5": + version: 1.0.5 + resolution: "available-typed-arrays@npm:1.0.5" + checksum: 20eb47b3cefd7db027b9bbb993c658abd36d4edd3fe1060e83699a03ee275b0c9b216cc076ff3f2db29073225fb70e7613987af14269ac1fe2a19803ccc97f1a + languageName: node + linkType: hard + +"axe-core@npm:^4.6.2": + version: 4.6.3 + resolution: "axe-core@npm:4.6.3" + checksum: d0c46be92b9707c48b88a53cd5f471b155a2bfc8bf6beffb514ecd14e30b4863e340b5fc4f496d82a3c562048088c1f3ff5b93b9b3b026cb9c3bfacfd535da10 + languageName: node + linkType: hard + +"axobject-query@npm:^3.1.1": + version: 3.1.1 + resolution: "axobject-query@npm:3.1.1" + dependencies: + deep-equal: ^2.0.5 + checksum: c12a5da10dc7bab75e1cda9b6a3b5fcf10eba426ddf1a17b71ef65a434ed707ede7d1c4f013ba1609e970bc8c0cddac01365080d376204314e9b294719acd8a5 + languageName: node + linkType: hard + +"babel-plugin-macros@npm:^3.1.0": + version: 3.1.0 + resolution: "babel-plugin-macros@npm:3.1.0" + dependencies: + "@babel/runtime": ^7.12.5 + cosmiconfig: ^7.0.0 + resolve: ^1.19.0 + checksum: 765de4abebd3e4688ebdfbff8571ddc8cd8061f839bb6c3e550b0344a4027b04c60491f843296ce3f3379fb356cc873d57a9ee6694262547eb822c14a25be9a6 + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs2@npm:^0.3.3": + version: 0.3.3 + resolution: "babel-plugin-polyfill-corejs2@npm:0.3.3" + dependencies: + "@babel/compat-data": ^7.17.7 + "@babel/helper-define-polyfill-provider": ^0.3.3 + semver: ^6.1.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7db3044993f3dddb3cc3d407bc82e640964a3bfe22de05d90e1f8f7a5cb71460011ab136d3c03c6c1ba428359ebf635688cd6205e28d0469bba221985f5c6179 + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs3@npm:^0.6.0": + version: 0.6.0 + resolution: "babel-plugin-polyfill-corejs3@npm:0.6.0" + dependencies: + "@babel/helper-define-polyfill-provider": ^0.3.3 + core-js-compat: ^3.25.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 470bb8c59f7c0912bd77fe1b5a2e72f349b3f65bbdee1d60d6eb7e1f4a085c6f24b2dd5ab4ac6c2df6444a96b070ef6790eccc9edb6a2668c60d33133bfb62c6 + languageName: node + linkType: hard + +"babel-plugin-polyfill-regenerator@npm:^0.4.1": + version: 0.4.1 + resolution: "babel-plugin-polyfill-regenerator@npm:0.4.1" + dependencies: + "@babel/helper-define-polyfill-provider": ^0.3.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ab0355efbad17d29492503230387679dfb780b63b25408990d2e4cf421012dae61d6199ddc309f4d2409ce4e9d3002d187702700dd8f4f8770ebbba651ed066c + languageName: node + linkType: hard + +"babel-plugin-styled-components@npm:>= 1.12.0": + version: 2.0.7 + resolution: "babel-plugin-styled-components@npm:2.0.7" + dependencies: + "@babel/helper-annotate-as-pure": ^7.16.0 + "@babel/helper-module-imports": ^7.16.0 + babel-plugin-syntax-jsx: ^6.18.0 + lodash: ^4.17.11 + picomatch: ^2.3.0 + peerDependencies: + styled-components: ">= 2" + checksum: 80b06b10db02d749432a0ac43a5feedd686f6b648628d7433a39b1844260b2b7c72431f6e705c82636ee025fcfd4f6c32fc05677e44033b8a39ddcd4488b3147 + languageName: node + linkType: hard + +"babel-plugin-syntax-jsx@npm:^6.18.0": + version: 6.18.0 + resolution: "babel-plugin-syntax-jsx@npm:6.18.0" + checksum: 0c7ce5b81d6cfc01a7dd7a76a9a8f090ee02ba5c890310f51217ef1a7e6163fb7848994bbc14fd560117892e82240df9c7157ad0764da67ca5f2afafb73a7d27 + languageName: node + linkType: hard + +"babel-plugin-syntax-trailing-function-commas@npm:^7.0.0-beta.0": + version: 7.0.0-beta.0 + resolution: "babel-plugin-syntax-trailing-function-commas@npm:7.0.0-beta.0" + checksum: e37509156ca945dd9e4b82c66dd74f2d842ad917bd280cb5aa67960942300cd065eeac476d2514bdcdedec071277a358f6d517c31d9f9244d9bbc3619a8ecf8a + languageName: node + linkType: hard + +"babel-polyfill@npm:6.26.0": + version: 6.26.0 + resolution: "babel-polyfill@npm:6.26.0" + dependencies: + babel-runtime: ^6.26.0 + core-js: ^2.5.0 + regenerator-runtime: ^0.10.5 + checksum: 6fb1a3c0bfe1b6fc56ce1afcf531878aa629b309277a05fbf3fe950589b24cb4052a6e487db21d318eb5336b68730a21f5ef62166b6cc8aea3406261054d1118 + languageName: node + linkType: hard + +"babel-preset-fbjs@npm:^3.4.0": + version: 3.4.0 + resolution: "babel-preset-fbjs@npm:3.4.0" + dependencies: + "@babel/plugin-proposal-class-properties": ^7.0.0 + "@babel/plugin-proposal-object-rest-spread": ^7.0.0 + "@babel/plugin-syntax-class-properties": ^7.0.0 + "@babel/plugin-syntax-flow": ^7.0.0 + "@babel/plugin-syntax-jsx": ^7.0.0 + "@babel/plugin-syntax-object-rest-spread": ^7.0.0 + "@babel/plugin-transform-arrow-functions": ^7.0.0 + "@babel/plugin-transform-block-scoped-functions": ^7.0.0 + "@babel/plugin-transform-block-scoping": ^7.0.0 + "@babel/plugin-transform-classes": ^7.0.0 + "@babel/plugin-transform-computed-properties": ^7.0.0 + "@babel/plugin-transform-destructuring": ^7.0.0 + "@babel/plugin-transform-flow-strip-types": ^7.0.0 + "@babel/plugin-transform-for-of": ^7.0.0 + "@babel/plugin-transform-function-name": ^7.0.0 + "@babel/plugin-transform-literals": ^7.0.0 + "@babel/plugin-transform-member-expression-literals": ^7.0.0 + "@babel/plugin-transform-modules-commonjs": ^7.0.0 + "@babel/plugin-transform-object-super": ^7.0.0 + "@babel/plugin-transform-parameters": ^7.0.0 + "@babel/plugin-transform-property-literals": ^7.0.0 + "@babel/plugin-transform-react-display-name": ^7.0.0 + "@babel/plugin-transform-react-jsx": ^7.0.0 + "@babel/plugin-transform-shorthand-properties": ^7.0.0 + "@babel/plugin-transform-spread": ^7.0.0 + "@babel/plugin-transform-template-literals": ^7.0.0 + babel-plugin-syntax-trailing-function-commas: ^7.0.0-beta.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: b3352cf690729125997f254bc31b9c4db347f8646f1571958ced1c45f0da89439e183e1c88e35397eb0361b9e1fbb1dd8142d3f4647814deb427e53c54f44d5f + languageName: node + linkType: hard + +"babel-runtime@npm:6.26.0, babel-runtime@npm:^6.26.0": + version: 6.26.0 + resolution: "babel-runtime@npm:6.26.0" + dependencies: + core-js: ^2.4.0 + regenerator-runtime: ^0.11.0 + checksum: 8aeade94665e67a73c1ccc10f6fd42ba0c689b980032b70929de7a6d9a12eb87ef51902733f8fefede35afea7a5c3ef7e916a64d503446c1eedc9e3284bd3d50 + languageName: node + linkType: hard + +"bail@npm:^2.0.0": + version: 2.0.2 + resolution: "bail@npm:2.0.2" + checksum: aab4e8ccdc8d762bf3fdfce8e706601695620c0c2eda256dd85088dc0be3cfd7ff126f6e99c2bee1f24f5d418414aacf09d7f9702f16d6963df2fa488cda8824 + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 + languageName: node + linkType: hard + +"base64-js@npm:^1.3.1": + version: 1.5.1 + resolution: "base64-js@npm:1.5.1" + checksum: 669632eb3745404c2f822a18fc3a0122d2f9a7a13f7fb8b5823ee19d1d2ff9ee5b52c53367176ea4ad093c332fd5ab4bd0ebae5a8e27917a4105a4cfc86b1005 + languageName: node + linkType: hard + +"bl@npm:^4.1.0": + version: 4.1.0 + resolution: "bl@npm:4.1.0" + dependencies: + buffer: ^5.5.0 + inherits: ^2.0.4 + readable-stream: ^3.4.0 + checksum: 9e8521fa7e83aa9427c6f8ccdcba6e8167ef30cc9a22df26effcc5ab682ef91d2cbc23a239f945d099289e4bbcfae7a192e9c28c84c6202e710a0dfec3722662 + languageName: node + linkType: hard + +"brace-expansion@npm:^1.1.7": + version: 1.1.11 + resolution: "brace-expansion@npm:1.1.11" + dependencies: + balanced-match: ^1.0.0 + concat-map: 0.0.1 + checksum: faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 + languageName: node + linkType: hard + +"brace-expansion@npm:^2.0.1": + version: 2.0.1 + resolution: "brace-expansion@npm:2.0.1" + dependencies: + balanced-match: ^1.0.0 + checksum: a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d1 + languageName: node + linkType: hard + +"braces@npm:^3.0.2": + version: 3.0.2 + resolution: "braces@npm:3.0.2" + dependencies: + fill-range: ^7.0.1 + checksum: e2a8e769a863f3d4ee887b5fe21f63193a891c68b612ddb4b68d82d1b5f3ff9073af066c343e9867a393fe4c2555dcb33e89b937195feb9c1613d259edfcd459 + languageName: node + linkType: hard + +"browserslist@npm:^4.21.3, browserslist@npm:^4.21.5": + version: 4.21.5 + resolution: "browserslist@npm:4.21.5" + dependencies: + caniuse-lite: ^1.0.30001449 + electron-to-chromium: ^1.4.284 + node-releases: ^2.0.8 + update-browserslist-db: ^1.0.10 + bin: + browserslist: cli.js + checksum: 9755986b22e73a6a1497fd8797aedd88e04270be33ce66ed5d85a1c8a798292a65e222b0f251bafa1c2522261e237d73b08b58689d4920a607e5a53d56dc4706 + languageName: node + linkType: hard + +"bser@npm:2.1.1": + version: 2.1.1 + resolution: "bser@npm:2.1.1" + dependencies: + node-int64: ^0.4.0 + checksum: 9ba4dc58ce86300c862bffc3ae91f00b2a03b01ee07f3564beeeaf82aa243b8b03ba53f123b0b842c190d4399b94697970c8e7cf7b1ea44b61aa28c3526a4449 + languageName: node + linkType: hard + +"buffer@npm:^5.5.0": + version: 5.7.1 + resolution: "buffer@npm:5.7.1" + dependencies: + base64-js: ^1.3.1 + ieee754: ^1.1.13 + checksum: e2cf8429e1c4c7b8cbd30834ac09bd61da46ce35f5c22a78e6c2f04497d6d25541b16881e30a019c6fd3154150650ccee27a308eff3e26229d788bbdeb08ab84 + languageName: node + linkType: hard + +"busboy@npm:^1.6.0": + version: 1.6.0 + resolution: "busboy@npm:1.6.0" + dependencies: + streamsearch: ^1.1.0 + checksum: 32801e2c0164e12106bf236291a00795c3c4e4b709ae02132883fe8478ba2ae23743b11c5735a0aae8afe65ac4b6ca4568b91f0d9fed1fdbc32ede824a73746e + languageName: node + linkType: hard + +"cacache@npm:^16.1.0": + version: 16.1.3 + resolution: "cacache@npm:16.1.3" + dependencies: + "@npmcli/fs": ^2.1.0 + "@npmcli/move-file": ^2.0.0 + chownr: ^2.0.0 + fs-minipass: ^2.1.0 + glob: ^8.0.1 + infer-owner: ^1.0.4 + lru-cache: ^7.7.1 + minipass: ^3.1.6 + minipass-collect: ^1.0.2 + minipass-flush: ^1.0.5 + minipass-pipeline: ^1.2.4 + mkdirp: ^1.0.4 + p-map: ^4.0.0 + promise-inflight: ^1.0.1 + rimraf: ^3.0.2 + ssri: ^9.0.0 + tar: ^6.1.11 + unique-filename: ^2.0.0 + checksum: d91409e6e57d7d9a3a25e5dcc589c84e75b178ae8ea7de05cbf6b783f77a5fae938f6e8fda6f5257ed70000be27a681e1e44829251bfffe4c10216002f8f14e6 + languageName: node + linkType: hard + +"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": + version: 1.0.2 + resolution: "call-bind@npm:1.0.2" + dependencies: + function-bind: ^1.1.1 + get-intrinsic: ^1.0.2 + checksum: f8e31de9d19988a4b80f3e704788c4a2d6b6f3d17cfec4f57dc29ced450c53a49270dc66bf0fbd693329ee948dd33e6c90a329519aef17474a4d961e8d6426b0 + languageName: node + linkType: hard + +"callsites@npm:^3.0.0": + version: 3.1.0 + resolution: "callsites@npm:3.1.0" + checksum: 072d17b6abb459c2ba96598918b55868af677154bec7e73d222ef95a8fdb9bbf7dae96a8421085cdad8cd190d86653b5b6dc55a4484f2e5b2e27d5e0c3fc15b3 + languageName: node + linkType: hard + +"camel-case@npm:^4.1.2": + version: 4.1.2 + resolution: "camel-case@npm:4.1.2" + dependencies: + pascal-case: ^3.1.2 + tslib: ^2.0.3 + checksum: bcbd25cd253b3cbc69be3f535750137dbf2beb70f093bdc575f73f800acc8443d34fd52ab8f0a2413c34f1e8203139ffc88428d8863e4dfe530cfb257a379ad6 + languageName: node + linkType: hard + +"camelcase@npm:^5.0.0": + version: 5.3.1 + resolution: "camelcase@npm:5.3.1" + checksum: e6effce26b9404e3c0f301498184f243811c30dfe6d0b9051863bd8e4034d09c8c2923794f280d6827e5aa055f6c434115ff97864a16a963366fb35fd673024b + languageName: node + linkType: hard + +"camelize@npm:^1.0.0": + version: 1.0.1 + resolution: "camelize@npm:1.0.1" + checksum: 91d8611d09af725e422a23993890d22b2b72b4cabf7239651856950c76b4bf53fe0d0da7c5e4db05180e898e4e647220e78c9fbc976113bd96d603d1fcbfcb99 + languageName: node + linkType: hard + +"caniuse-lite@npm:^1.0.30001449": + version: 1.0.30001465 + resolution: "caniuse-lite@npm:1.0.30001465" + checksum: c991ecdfff378a22b268f9b1eb732d003c8ad89db3241a4cdec3b3ec3354aa966a44171cb806c90abe2e3f0573d67dc29a7dce2478b1f070b23747c392244c5d + languageName: node + linkType: hard + +"capital-case@npm:^1.0.4": + version: 1.0.4 + resolution: "capital-case@npm:1.0.4" + dependencies: + no-case: ^3.0.4 + tslib: ^2.0.3 + upper-case-first: ^2.0.2 + checksum: 41fa8fa87f6d24d0835a2b4a9341a3eaecb64ac29cd7c5391f35d6175a0fa98ab044e7f2602e1ec3afc886231462ed71b5b80c590b8b41af903ec2c15e5c5931 + languageName: node + linkType: hard + +"chalk@npm:^2.0.0": + version: 2.4.2 + resolution: "chalk@npm:2.4.2" + dependencies: + ansi-styles: ^3.2.1 + escape-string-regexp: ^1.0.5 + supports-color: ^5.3.0 + checksum: ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c2 + languageName: node + linkType: hard + +"chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.1": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: ^4.1.0 + supports-color: ^7.1.0 + checksum: fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc + languageName: node + linkType: hard + +"change-case-all@npm:1.0.14": + version: 1.0.14 + resolution: "change-case-all@npm:1.0.14" + dependencies: + change-case: ^4.1.2 + is-lower-case: ^2.0.2 + is-upper-case: ^2.0.2 + lower-case: ^2.0.2 + lower-case-first: ^2.0.2 + sponge-case: ^1.0.1 + swap-case: ^2.0.2 + title-case: ^3.0.3 + upper-case: ^2.0.2 + upper-case-first: ^2.0.2 + checksum: 6ff893e005e1bf115cc2969cc5ca3610f7c6ece9e90b7927ed12c980c7d3ea9a565150d246c6dba0fee21aaacbd38d69b98a4670d96b892c76f66e46616506d3 + languageName: node + linkType: hard + +"change-case-all@npm:1.0.15": + version: 1.0.15 + resolution: "change-case-all@npm:1.0.15" + dependencies: + change-case: ^4.1.2 + is-lower-case: ^2.0.2 + is-upper-case: ^2.0.2 + lower-case: ^2.0.2 + lower-case-first: ^2.0.2 + sponge-case: ^1.0.1 + swap-case: ^2.0.2 + title-case: ^3.0.3 + upper-case: ^2.0.2 + upper-case-first: ^2.0.2 + checksum: e1dabdcd8447a3690f3faf15f92979dfbc113109b50916976e1d5e518e6cfdebee4f05f54d0ca24fb79a4bf835185b59ae25e967bb3dc10bd236a775b19ecc52 + languageName: node + linkType: hard + +"change-case@npm:^4.1.2": + version: 4.1.2 + resolution: "change-case@npm:4.1.2" + dependencies: + camel-case: ^4.1.2 + capital-case: ^1.0.4 + constant-case: ^3.0.4 + dot-case: ^3.0.4 + header-case: ^2.0.4 + no-case: ^3.0.4 + param-case: ^3.0.4 + pascal-case: ^3.1.2 + path-case: ^3.0.4 + sentence-case: ^3.0.4 + snake-case: ^3.0.4 + tslib: ^2.0.3 + checksum: e4bc4a093a1f7cce8b33896665cf9e456e3bc3cc0def2ad7691b1994cfca99b3188d0a513b16855b01a6bd20692fcde12a7d4d87a5615c4c515bbbf0e651f116 + languageName: node + linkType: hard + +"character-entities@npm:^2.0.0": + version: 2.0.2 + resolution: "character-entities@npm:2.0.2" + checksum: cf1643814023697f725e47328fcec17923b8f1799102a8a79c1514e894815651794a2bffd84bb1b3a4b124b050154e4529ed6e81f7c8068a734aecf07a6d3def + languageName: node + linkType: hard + +"chardet@npm:^0.7.0": + version: 0.7.0 + resolution: "chardet@npm:0.7.0" + checksum: 6fd5da1f5d18ff5712c1e0aed41da200d7c51c28f11b36ee3c7b483f3696dabc08927fc6b227735eb8f0e1215c9a8abd8154637f3eff8cada5959df7f58b024d + languageName: node + linkType: hard + +"chownr@npm:^2.0.0": + version: 2.0.0 + resolution: "chownr@npm:2.0.0" + checksum: c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f + languageName: node + linkType: hard + +"chroma-js@npm:2.4.2": + version: 2.4.2 + resolution: "chroma-js@npm:2.4.2" + checksum: cf9884c02d406286e4370599bcd1afbf089384407df46b3a69edfedcba7bb99e8f959a5cfdbfec750b305c441c06ca40cd1f70ba3a6c2ce739ac09a92520ddae + languageName: node + linkType: hard + +"classnames@npm:2.3.2, classnames@npm:^2.2.6": + version: 2.3.2 + resolution: "classnames@npm:2.3.2" + checksum: 2c62199789618d95545c872787137262e741f9db13328e216b093eea91c85ef2bfb152c1f9e63027204e2559a006a92eb74147d46c800a9f96297ae1d9f96f4e + languageName: node + linkType: hard + +"clean-stack@npm:^2.0.0": + version: 2.2.0 + resolution: "clean-stack@npm:2.2.0" + checksum: 2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 + languageName: node + linkType: hard + +"cli-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "cli-cursor@npm:3.1.0" + dependencies: + restore-cursor: ^3.1.0 + checksum: 2692784c6cd2fd85cfdbd11f53aea73a463a6d64a77c3e098b2b4697a20443f430c220629e1ca3b195ea5ac4a97a74c2ee411f3807abf6df2b66211fec0c0a29 + languageName: node + linkType: hard + +"cli-spinners@npm:^2.5.0": + version: 2.7.0 + resolution: "cli-spinners@npm:2.7.0" + checksum: a9afaf73f58d1f951fb23742f503631b3cf513f43f4c7acb1b640100eb76bfa16efbcd1994d149ffc6603a6d75dd3d4a516a76f125f90dce437de9b16fd0ee6f + languageName: node + linkType: hard + +"cli-truncate@npm:^2.1.0": + version: 2.1.0 + resolution: "cli-truncate@npm:2.1.0" + dependencies: + slice-ansi: ^3.0.0 + string-width: ^4.2.0 + checksum: bf1e4e6195392dc718bf9cd71f317b6300dc4a9191d052f31046b8773230ece4fa09458813bf0e3455a5e68c0690d2ea2c197d14a8b85a7b5e01c97f4b5feb5d + languageName: node + linkType: hard + +"cli-width@npm:^3.0.0": + version: 3.0.0 + resolution: "cli-width@npm:3.0.0" + checksum: 4c94af3769367a70e11ed69aa6095f1c600c0ff510f3921ab4045af961820d57c0233acfa8b6396037391f31b4c397e1f614d234294f979ff61430a6c166c3f6 + languageName: node + linkType: hard + +"cliui@npm:^6.0.0": + version: 6.0.0 + resolution: "cliui@npm:6.0.0" + dependencies: + string-width: ^4.2.0 + strip-ansi: ^6.0.0 + wrap-ansi: ^6.2.0 + checksum: 4fcfd26d292c9f00238117f39fc797608292ae36bac2168cfee4c85923817d0607fe21b3329a8621e01aedf512c99b7eaa60e363a671ffd378df6649fb48ae42 + languageName: node + linkType: hard + +"cliui@npm:^8.0.1": + version: 8.0.1 + resolution: "cliui@npm:8.0.1" + dependencies: + string-width: ^4.2.0 + strip-ansi: ^6.0.1 + wrap-ansi: ^7.0.0 + checksum: 79648b3b0045f2e285b76fb2e24e207c6db44323581e421c3acbd0e86454cba1b37aea976ab50195a49e7384b871e6dfb2247ad7dec53c02454ac6497394cb56 + languageName: node + linkType: hard + +"clone@npm:^1.0.2": + version: 1.0.4 + resolution: "clone@npm:1.0.4" + checksum: d06418b7335897209e77bdd430d04f882189582e67bd1f75a04565f3f07f5b3f119a9d670c943b6697d0afb100f03b866b3b8a1f91d4d02d72c4ecf2bb64b5dd + languageName: node + linkType: hard + +"clsx@npm:^1.1.1": + version: 1.2.1 + resolution: "clsx@npm:1.2.1" + checksum: 30befca8019b2eb7dbad38cff6266cf543091dae2825c856a62a8ccf2c3ab9c2907c4d12b288b73101196767f66812365400a227581484a05f968b0307cfaf12 + languageName: node + linkType: hard + +"color-convert@npm:^1.9.0": + version: 1.9.3 + resolution: "color-convert@npm:1.9.3" + dependencies: + color-name: 1.1.3 + checksum: fd7a64a17cde98fb923b1dd05c5f2e6f7aefda1b60d67e8d449f9328b4e53b228a428fd38bfeaeb2db2ff6b6503a776a996150b80cdf224062af08a5c8a3a203 + languageName: node + linkType: hard + +"color-convert@npm:^2.0.1": + version: 2.0.1 + resolution: "color-convert@npm:2.0.1" + dependencies: + color-name: ~1.1.4 + checksum: 79e6bdb9fd479a205c71d89574fccfb22bd9053bd98c6c4d870d65c132e5e904e6034978e55b43d69fcaa7433af2016ee203ce76eeba9cfa554b373e7f7db336 + languageName: node + linkType: hard + +"color-name@npm:1.1.3": + version: 1.1.3 + resolution: "color-name@npm:1.1.3" + checksum: 09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d + languageName: node + linkType: hard + +"color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 + languageName: node + linkType: hard + +"color-support@npm:^1.1.3": + version: 1.1.3 + resolution: "color-support@npm:1.1.3" + bin: + color-support: bin.js + checksum: 9b7356817670b9a13a26ca5af1c21615463b500783b739b7634a0c2047c16cef4b2865d7576875c31c3cddf9dd621fa19285e628f20198b233a5cfdda6d0793b + languageName: node + linkType: hard + +"colorette@npm:^2.0.16": + version: 2.0.19 + resolution: "colorette@npm:2.0.19" + checksum: 888cf5493f781e5fcf54ce4d49e9d7d698f96ea2b2ef67906834bb319a392c667f9ec69f4a10e268d2946d13a9503d2d19b3abaaaf174e3451bfe91fb9d82427 + languageName: node + linkType: hard + +"combined-stream@npm:^1.0.8": + version: 1.0.8 + resolution: "combined-stream@npm:1.0.8" + dependencies: + delayed-stream: ~1.0.0 + checksum: 49fa4aeb4916567e33ea81d088f6584749fc90c7abec76fd516bf1c5aa5c79f3584b5ba3de6b86d26ddd64bae5329c4c7479343250cfe71c75bb366eae53bb7c + languageName: node + linkType: hard + +"comma-separated-tokens@npm:^2.0.0": + version: 2.0.3 + resolution: "comma-separated-tokens@npm:2.0.3" + checksum: e3bf9e0332a5c45f49b90e79bcdb4a7a85f28d6a6f0876a94f1bb9b2bfbdbbb9292aac50e1e742d8c0db1e62a0229a106f57917e2d067fca951d81737651700d + languageName: node + linkType: hard + +"common-tags@npm:1.8.2": + version: 1.8.2 + resolution: "common-tags@npm:1.8.2" + checksum: 767a6255a84bbc47df49a60ab583053bb29a7d9687066a18500a516188a062c4e4cd52de341f22de0b07062e699b1b8fe3cfa1cb55b241cb9301aeb4f45b4dff + languageName: node + linkType: hard + +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af + languageName: node + linkType: hard + +"confusing-browser-globals@npm:^1.0.10": + version: 1.0.11 + resolution: "confusing-browser-globals@npm:1.0.11" + checksum: 3afc635abd37e566477f610e7978b15753f0e84025c25d49236f1f14d480117185516bdd40d2a2167e6bed8048641a9854964b9c067e3dcdfa6b5d0ad3c3a5ef + languageName: node + linkType: hard + +"console-control-strings@npm:^1.1.0": + version: 1.1.0 + resolution: "console-control-strings@npm:1.1.0" + checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed + languageName: node + linkType: hard + +"constant-case@npm:^3.0.4": + version: 3.0.4 + resolution: "constant-case@npm:3.0.4" + dependencies: + no-case: ^3.0.4 + tslib: ^2.0.3 + upper-case: ^2.0.2 + checksum: 6c3346d51afc28d9fae922e966c68eb77a19d94858dba230dd92d7b918b37d36db50f0311e9ecf6847e43e934b1c01406a0936973376ab17ec2c471fbcfb2cf3 + languageName: node + linkType: hard + +"convert-source-map@npm:^1.5.0, convert-source-map@npm:^1.7.0": + version: 1.9.0 + resolution: "convert-source-map@npm:1.9.0" + checksum: dc55a1f28ddd0e9485ef13565f8f756b342f9a46c4ae18b843fe3c30c675d058d6a4823eff86d472f187b176f0adf51ea7b69ea38be34be4a63cbbf91b0593c8 + languageName: node + linkType: hard + +"core-js-compat@npm:^3.25.1": + version: 3.29.1 + resolution: "core-js-compat@npm:3.29.1" + dependencies: + browserslist: ^4.21.5 + checksum: 7260f6bbaa98836cda09a3b61aa721149d3ae95040302fb3b27eb153ae9bbddc8dee5249e72004cdc9552532029de4d50a5b2b066c37414421d2929d6091b18f + languageName: node + linkType: hard + +"core-js@npm:2.6.0": + version: 2.6.0 + resolution: "core-js@npm:2.6.0" + checksum: 8341d307b07ef31098c8bf4d9d0bec2e77373c42289b36748ae48425f2854db65feced74a81e2198e68041256f9a157e4b129f317967bdf38934f4307d9d415d + languageName: node + linkType: hard + +"core-js@npm:^2.4.0, core-js@npm:^2.5.0": + version: 2.6.12 + resolution: "core-js@npm:2.6.12" + checksum: 44fa9934a85f8c78d61e0c8b7b22436330471ffe59ec5076fe7f324d6e8cf7f824b14b1c81ca73608b13bdb0fef035bd820989bf059767ad6fa13123bb8bd016 + languageName: node + linkType: hard + +"cosmiconfig@npm:8.0.0": + version: 8.0.0 + resolution: "cosmiconfig@npm:8.0.0" + dependencies: + import-fresh: ^3.2.1 + js-yaml: ^4.1.0 + parse-json: ^5.0.0 + path-type: ^4.0.0 + checksum: ff4cdf89ac1ae52e7520816622c21a9e04380d04b82d653f5139ec581aa4f7f29e096d46770bc76c4a63c225367e88a1dfa233ea791669a35101f5f9b972c7d1 + languageName: node + linkType: hard + +"cosmiconfig@npm:^7.0.0": + version: 7.1.0 + resolution: "cosmiconfig@npm:7.1.0" + dependencies: + "@types/parse-json": ^4.0.0 + import-fresh: ^3.2.1 + parse-json: ^5.0.0 + path-type: ^4.0.0 + yaml: ^1.10.0 + checksum: c53bf7befc1591b2651a22414a5e786cd5f2eeaa87f3678a3d49d6069835a9d8d1aef223728e98aa8fec9a95bf831120d245096db12abe019fecb51f5696c96f + languageName: node + linkType: hard + +"cross-fetch@npm:^3.1.5": + version: 3.1.5 + resolution: "cross-fetch@npm:3.1.5" + dependencies: + node-fetch: 2.6.7 + checksum: f6b8c6ee3ef993ace6277fd789c71b6acf1b504fd5f5c7128df4ef2f125a429e29cd62dc8c127523f04a5f2fa4771ed80e3f3d9695617f441425045f505cf3bb + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.2": + version: 7.0.3 + resolution: "cross-spawn@npm:7.0.3" + dependencies: + path-key: ^3.1.0 + shebang-command: ^2.0.0 + which: ^2.0.1 + checksum: 671cc7c7288c3a8406f3c69a3ae2fc85555c04169e9d611def9a675635472614f1c0ed0ef80955d5b6d4e724f6ced67f0ad1bb006c2ea643488fcfef994d7f52 + languageName: node + linkType: hard + +"css-color-keywords@npm:^1.0.0": + version: 1.0.0 + resolution: "css-color-keywords@npm:1.0.0" + checksum: 8f125e3ad477bd03c77b533044bd9e8a6f7c0da52d49bbc0bbe38327b3829d6ba04d368ca49dd9ff3b667d2fc8f1698d891c198bbf8feade1a5501bf5a296408 + languageName: node + linkType: hard + +"css-to-react-native@npm:^3.0.0": + version: 3.2.0 + resolution: "css-to-react-native@npm:3.2.0" + dependencies: + camelize: ^1.0.0 + css-color-keywords: ^1.0.0 + postcss-value-parser: ^4.0.2 + checksum: 263be65e805aef02c3f20c064665c998a8c35293e1505dbe6e3054fb186b01a9897ac6cf121f9840e5a9dfe3fb3994f6fcd0af84a865f1df78ba5bf89e77adce + languageName: node + linkType: hard + +"csstype@npm:^3.0.2": + version: 3.1.1 + resolution: "csstype@npm:3.1.1" + checksum: 1f7b4f5fdd955b7444b18ebdddf3f5c699159f13e9cf8ac9027ae4a60ae226aef9bbb14a6e12ca7dba3358b007cee6354b116e720262867c398de6c955ea451d + languageName: node + linkType: hard + +"damerau-levenshtein@npm:^1.0.8": + version: 1.0.8 + resolution: "damerau-levenshtein@npm:1.0.8" + checksum: d240b7757544460ae0586a341a53110ab0a61126570ef2d8c731e3eab3f0cb6e488e2609e6a69b46727635de49be20b071688698744417ff1b6c1d7ccd03e0de + languageName: node + linkType: hard + +"dataloader@npm:2.2.2, dataloader@npm:^2.2.2": + version: 2.2.2 + resolution: "dataloader@npm:2.2.2" + checksum: 4dabd247089c29f194e94d5434d504f99156c5c214a03463c20f3f17f40398d7e179edee69a27c16e315519ac8739042a810090087ae26449a0e685156a02c65 + languageName: node + linkType: hard + +"debounce@npm:^1.2.0, debounce@npm:^1.2.1": + version: 1.2.1 + resolution: "debounce@npm:1.2.1" + checksum: 682a89506d9e54fb109526f4da255c5546102fbb8e3ae75eef3b04effaf5d4853756aee97475cd4650641869794e44f410eeb20ace2b18ea592287ab2038519e + languageName: node + linkType: hard + +"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": + version: 4.3.4 + resolution: "debug@npm:4.3.4" + dependencies: + ms: 2.1.2 + peerDependenciesMeta: + supports-color: + optional: true + checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 + languageName: node + linkType: hard + +"debug@npm:^3.2.7": + version: 3.2.7 + resolution: "debug@npm:3.2.7" + dependencies: + ms: ^2.1.1 + checksum: b3d8c5940799914d30314b7c3304a43305fd0715581a919dacb8b3176d024a782062368405b47491516d2091d6462d4d11f2f4974a405048094f8bfebfa3071c + languageName: node + linkType: hard + +"decamelize@npm:^1.2.0": + version: 1.2.0 + resolution: "decamelize@npm:1.2.0" + checksum: ad8c51a7e7e0720c70ec2eeb1163b66da03e7616d7b98c9ef43cce2416395e84c1e9548dd94f5f6ffecfee9f8b94251fc57121a8b021f2ff2469b2bae247b8aa + languageName: node + linkType: hard + +"decode-named-character-reference@npm:^1.0.0": + version: 1.0.2 + resolution: "decode-named-character-reference@npm:1.0.2" + dependencies: + character-entities: ^2.0.0 + checksum: f4c71d3b93105f20076052f9cb1523a22a9c796b8296cd35eef1ca54239c78d182c136a848b83ff8da2071e3ae2b1d300bf29d00650a6d6e675438cc31b11d78 + languageName: node + linkType: hard + +"deep-equal@npm:^2.0.5": + version: 2.2.0 + resolution: "deep-equal@npm:2.2.0" + dependencies: + call-bind: ^1.0.2 + es-get-iterator: ^1.1.2 + get-intrinsic: ^1.1.3 + is-arguments: ^1.1.1 + is-array-buffer: ^3.0.1 + is-date-object: ^1.0.5 + is-regex: ^1.1.4 + is-shared-array-buffer: ^1.0.2 + isarray: ^2.0.5 + object-is: ^1.1.5 + object-keys: ^1.1.1 + object.assign: ^4.1.4 + regexp.prototype.flags: ^1.4.3 + side-channel: ^1.0.4 + which-boxed-primitive: ^1.0.2 + which-collection: ^1.0.1 + which-typed-array: ^1.1.9 + checksum: 46a34509d2766d6c6dc5aec4756089cf0cc137e46787e91f08f1ee0bb570d874f19f0493146907df0cf18aed4a7b4b50f6f62c899240a76c323f057528b122e3 + languageName: node + linkType: hard + +"deep-is@npm:^0.1.3": + version: 0.1.4 + resolution: "deep-is@npm:0.1.4" + checksum: edb65dd0d7d1b9c40b2f50219aef30e116cedd6fc79290e740972c132c09106d2e80aa0bc8826673dd5a00222d4179c84b36a790eef63a4c4bca75a37ef90804 + languageName: node + linkType: hard + +"defaults@npm:^1.0.3": + version: 1.0.4 + resolution: "defaults@npm:1.0.4" + dependencies: + clone: ^1.0.2 + checksum: 3a88b7a587fc076b84e60affad8b85245c01f60f38fc1d259e7ac1d89eb9ce6abb19e27215de46b98568dd5bc48471730b327637e6f20b0f1bc85cf00440c80a + languageName: node + linkType: hard + +"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4": + version: 1.2.0 + resolution: "define-properties@npm:1.2.0" + dependencies: + has-property-descriptors: ^1.0.0 + object-keys: ^1.1.1 + checksum: e60aee6a19b102df4e2b1f301816804e81ab48bb91f00d0d935f269bf4b3f79c88b39e4f89eaa132890d23267335fd1140dfcd8d5ccd61031a0a2c41a54e33a6 + languageName: node + linkType: hard + +"delayed-stream@npm:~1.0.0": + version: 1.0.0 + resolution: "delayed-stream@npm:1.0.0" + checksum: 46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020 + languageName: node + linkType: hard + +"delegates@npm:^1.0.0": + version: 1.0.0 + resolution: "delegates@npm:1.0.0" + checksum: a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd + languageName: node + linkType: hard + +"depd@npm:^2.0.0": + version: 2.0.0 + resolution: "depd@npm:2.0.0" + checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a + languageName: node + linkType: hard + +"dependency-graph@npm:^0.11.0": + version: 0.11.0 + resolution: "dependency-graph@npm:0.11.0" + checksum: 477204beaa9be69e642bc31ffe7a8c383d0cf48fa27acbc91c5df01431ab913e65c154213d2ef83d034c98d77280743ec85e5da018a97a18dd43d3c0b78b28cd + languageName: node + linkType: hard + +"dequal@npm:^2.0.0": + version: 2.0.3 + resolution: "dequal@npm:2.0.3" + checksum: 8679b850e1a3d0ebbc46ee780d5df7b478c23f335887464023a631d1b9af051ad4a6595a44220f9ff8ff95a8ddccf019b5ad778a976fd7bbf77383d36f412f90 + languageName: node + linkType: hard + +"detect-indent@npm:^6.0.0": + version: 6.1.0 + resolution: "detect-indent@npm:6.1.0" + checksum: ab953a73c72dbd4e8fc68e4ed4bfd92c97eb6c43734af3900add963fd3a9316f3bc0578b018b24198d4c31a358571eff5f0656e81a1f3b9ad5c547d58b2d093d + languageName: node + linkType: hard + +"diff@npm:^5.0.0": + version: 5.1.0 + resolution: "diff@npm:5.1.0" + checksum: c7bf0df7c9bfbe1cf8a678fd1b2137c4fb11be117a67bc18a0e03ae75105e8533dbfb1cda6b46beb3586ef5aed22143ef9d70713977d5fb1f9114e21455fba90 + languageName: node + linkType: hard + +"dir-glob@npm:^3.0.1": + version: 3.0.1 + resolution: "dir-glob@npm:3.0.1" + dependencies: + path-type: ^4.0.0 + checksum: fa05e18324510d7283f55862f3161c6759a3f2f8dbce491a2fc14c8324c498286c54282c1f0e933cb930da8419b30679389499b919122952a4f8592362ef4615 + languageName: node + linkType: hard + +"doctrine@npm:^2.1.0": + version: 2.1.0 + resolution: "doctrine@npm:2.1.0" + dependencies: + esutils: ^2.0.2 + checksum: a45e277f7feaed309fe658ace1ff286c6e2002ac515af0aaf37145b8baa96e49899638c7cd47dccf84c3d32abfc113246625b3ac8f552d1046072adee13b0dc8 + languageName: node + linkType: hard + +"doctrine@npm:^3.0.0": + version: 3.0.0 + resolution: "doctrine@npm:3.0.0" + dependencies: + esutils: ^2.0.2 + checksum: fd7673ca77fe26cd5cba38d816bc72d641f500f1f9b25b83e8ce28827fe2da7ad583a8da26ab6af85f834138cf8dae9f69b0cd6ab925f52ddab1754db44d99ce + languageName: node + linkType: hard + +"dom-helpers@npm:^5.0.1": + version: 5.2.1 + resolution: "dom-helpers@npm:5.2.1" + dependencies: + "@babel/runtime": ^7.8.7 + csstype: ^3.0.2 + checksum: 863ba9e086f7093df3376b43e74ce4422571d404fc9828bf2c56140963d5edf0e56160f9b2f3bb61b282c07f8fc8134f023c98fd684bddcb12daf7b0f14d951c + languageName: node + linkType: hard + +"dot-case@npm:^3.0.4": + version: 3.0.4 + resolution: "dot-case@npm:3.0.4" + dependencies: + no-case: ^3.0.4 + tslib: ^2.0.3 + checksum: a65e3519414856df0228b9f645332f974f2bf5433370f544a681122eab59e66038fc3349b4be1cdc47152779dac71a5864f1ccda2f745e767c46e9c6543b1169 + languageName: node + linkType: hard + +"dotenv@npm:^16.0.0": + version: 16.0.3 + resolution: "dotenv@npm:16.0.3" + checksum: afcf03f373d7a6d62c7e9afea6328e62851d627a4e73f2e12d0a8deae1cd375892004f3021883f8aec85932cd2834b091f568ced92b4774625b321db83b827f8 + languageName: node + linkType: hard + +"dset@npm:^3.1.2": + version: 3.1.2 + resolution: "dset@npm:3.1.2" + checksum: 4f8066f517aa0a70af688c66e9a0a5590f0aada76f6edc7ba9ddb309e27d3a6d65c0a2e31ab2a84005d4c791e5327773cdde59b8ab169050330a0dc283663e87 + languageName: node + linkType: hard + +"electron-to-chromium@npm:^1.4.284": + version: 1.4.328 + resolution: "electron-to-chromium@npm:1.4.328" + checksum: 82c1617a77e40ac4ca5011749318a2fee8f8c75f8b517fcff7602219c85fd97a9fab2d5a1353ea10fb7f9c7d18acb90c9ed58c2292256f81e2ffa42ee66c4b0b + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f192 + languageName: node + linkType: hard + +"emoji-regex@npm:^9.2.2": + version: 9.2.2 + resolution: "emoji-regex@npm:9.2.2" + checksum: 8487182da74aabd810ac6d6f1994111dfc0e331b01271ae01ec1eb0ad7b5ecc2bbbbd2f053c05cb55a1ac30449527d819bbfbf0e3de1023db308cbcb47f86601 + languageName: node + linkType: hard + +"encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: ^0.6.2 + checksum: bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f + languageName: node + linkType: hard + +"env-paths@npm:^2.2.0": + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e + languageName: node + linkType: hard + +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 8b7b1be20d2de12d2255c0bc2ca638b7af5171142693299416e6a9339bd7d88fc8d7707d913d78e0993176005405a236b066b45666b27b797252c771156ace54 + languageName: node + linkType: hard + +"error-ex@npm:^1.3.1": + version: 1.3.2 + resolution: "error-ex@npm:1.3.2" + dependencies: + is-arrayish: ^0.2.1 + checksum: c1c2b8b65f9c91b0f9d75f0debaa7ec5b35c266c2cac5de412c1a6de86d4cbae04ae44e510378cb14d032d0645a36925d0186f8bb7367bcc629db256b743a001 + languageName: node + linkType: hard + +"es-abstract@npm:^1.19.0, es-abstract@npm:^1.20.4": + version: 1.21.2 + resolution: "es-abstract@npm:1.21.2" + dependencies: + array-buffer-byte-length: ^1.0.0 + available-typed-arrays: ^1.0.5 + call-bind: ^1.0.2 + es-set-tostringtag: ^2.0.1 + es-to-primitive: ^1.2.1 + function.prototype.name: ^1.1.5 + get-intrinsic: ^1.2.0 + get-symbol-description: ^1.0.0 + globalthis: ^1.0.3 + gopd: ^1.0.1 + has: ^1.0.3 + has-property-descriptors: ^1.0.0 + has-proto: ^1.0.1 + has-symbols: ^1.0.3 + internal-slot: ^1.0.5 + is-array-buffer: ^3.0.2 + is-callable: ^1.2.7 + is-negative-zero: ^2.0.2 + is-regex: ^1.1.4 + is-shared-array-buffer: ^1.0.2 + is-string: ^1.0.7 + is-typed-array: ^1.1.10 + is-weakref: ^1.0.2 + object-inspect: ^1.12.3 + object-keys: ^1.1.1 + object.assign: ^4.1.4 + regexp.prototype.flags: ^1.4.3 + safe-regex-test: ^1.0.0 + string.prototype.trim: ^1.2.7 + string.prototype.trimend: ^1.0.6 + string.prototype.trimstart: ^1.0.6 + typed-array-length: ^1.0.4 + unbox-primitive: ^1.0.2 + which-typed-array: ^1.1.9 + checksum: 037f55ee5e1cdf2e5edbab5524095a4f97144d95b94ea29e3611b77d852fd8c8a40e7ae7101fa6a759a9b9b1405f188c3c70928f2d3cd88d543a07fc0d5ad41a + languageName: node + linkType: hard + +"es-get-iterator@npm:^1.1.2": + version: 1.1.3 + resolution: "es-get-iterator@npm:1.1.3" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.1.3 + has-symbols: ^1.0.3 + is-arguments: ^1.1.1 + is-map: ^2.0.2 + is-set: ^2.0.2 + is-string: ^1.0.7 + isarray: ^2.0.5 + stop-iteration-iterator: ^1.0.0 + checksum: 8fa118da42667a01a7c7529f8a8cca514feeff243feec1ce0bb73baaa3514560bd09d2b3438873cf8a5aaec5d52da248131de153b28e2638a061b6e4df13267d + languageName: node + linkType: hard + +"es-set-tostringtag@npm:^2.0.1": + version: 2.0.1 + resolution: "es-set-tostringtag@npm:2.0.1" + dependencies: + get-intrinsic: ^1.1.3 + has: ^1.0.3 + has-tostringtag: ^1.0.0 + checksum: ec416a12948cefb4b2a5932e62093a7cf36ddc3efd58d6c58ca7ae7064475ace556434b869b0bbeb0c365f1032a8ccd577211101234b69837ad83ad204fff884 + languageName: node + linkType: hard + +"es-shim-unscopables@npm:^1.0.0": + version: 1.0.0 + resolution: "es-shim-unscopables@npm:1.0.0" + dependencies: + has: ^1.0.3 + checksum: 83e95cadbb6ee44d3644dfad60dcad7929edbc42c85e66c3e99aefd68a3a5c5665f2686885cddb47dfeabfd77bd5ea5a7060f2092a955a729bbd8834f0d86fa1 + languageName: node + linkType: hard + +"es-to-primitive@npm:^1.2.1": + version: 1.2.1 + resolution: "es-to-primitive@npm:1.2.1" + dependencies: + is-callable: ^1.1.4 + is-date-object: ^1.0.1 + is-symbol: ^1.0.2 + checksum: 4ead6671a2c1402619bdd77f3503991232ca15e17e46222b0a41a5d81aebc8740a77822f5b3c965008e631153e9ef0580540007744521e72de8e33599fca2eed + languageName: node + linkType: hard + +"esbuild@npm:^0.17.5": + version: 0.17.12 + resolution: "esbuild@npm:0.17.12" + dependencies: + "@esbuild/android-arm": 0.17.12 + "@esbuild/android-arm64": 0.17.12 + "@esbuild/android-x64": 0.17.12 + "@esbuild/darwin-arm64": 0.17.12 + "@esbuild/darwin-x64": 0.17.12 + "@esbuild/freebsd-arm64": 0.17.12 + "@esbuild/freebsd-x64": 0.17.12 + "@esbuild/linux-arm": 0.17.12 + "@esbuild/linux-arm64": 0.17.12 + "@esbuild/linux-ia32": 0.17.12 + "@esbuild/linux-loong64": 0.17.12 + "@esbuild/linux-mips64el": 0.17.12 + "@esbuild/linux-ppc64": 0.17.12 + "@esbuild/linux-riscv64": 0.17.12 + "@esbuild/linux-s390x": 0.17.12 + "@esbuild/linux-x64": 0.17.12 + "@esbuild/netbsd-x64": 0.17.12 + "@esbuild/openbsd-x64": 0.17.12 + "@esbuild/sunos-x64": 0.17.12 + "@esbuild/win32-arm64": 0.17.12 + "@esbuild/win32-ia32": 0.17.12 + "@esbuild/win32-x64": 0.17.12 + dependenciesMeta: + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: ea6d33eb1bc6c9e00dcee5e253c7e935251b4801d376661fd9f19a9dcffc27f970078a6f7116d6c78ee825ceff9b974594b0b616bd560ce4d875a951aa92977b + languageName: node + linkType: hard + +"escalade@npm:^3.1.1": + version: 3.1.1 + resolution: "escalade@npm:3.1.1" + checksum: a3e2a99f07acb74b3ad4989c48ca0c3140f69f923e56d0cba0526240ee470b91010f9d39001f2a4a313841d237ede70a729e92125191ba5d21e74b106800b133 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^1.0.5": + version: 1.0.5 + resolution: "escape-string-regexp@npm:1.0.5" + checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^4.0.0": + version: 4.0.0 + resolution: "escape-string-regexp@npm:4.0.0" + checksum: 98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 + languageName: node + linkType: hard + +"eslint-config-airbnb-base@npm:^15.0.0": + version: 15.0.0 + resolution: "eslint-config-airbnb-base@npm:15.0.0" + dependencies: + confusing-browser-globals: ^1.0.10 + object.assign: ^4.1.2 + object.entries: ^1.1.5 + semver: ^6.3.0 + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.2 + checksum: 38626bad2ce2859fccac86b30cd2b86c9b7d8d71d458331860861dc05290a5b198bded2f4fb89efcb9046ec48f8ab4c4fb00365ba8916f27b172671da28b93ea + languageName: node + linkType: hard + +"eslint-config-airbnb@npm:19.0.4": + version: 19.0.4 + resolution: "eslint-config-airbnb@npm:19.0.4" + dependencies: + eslint-config-airbnb-base: ^15.0.0 + object.assign: ^4.1.2 + object.entries: ^1.1.5 + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.3 + eslint-plugin-jsx-a11y: ^6.5.1 + eslint-plugin-react: ^7.28.0 + eslint-plugin-react-hooks: ^4.3.0 + checksum: 253178689c3c80eef2567e3aaf0612e18973bc9cf51d9be36074b5dd58210e8b6942200a424bcccbb81ac884e41303479ab09f251a2a97addc2de61efdc9576c + languageName: node + linkType: hard + +"eslint-import-resolver-node@npm:^0.3.7": + version: 0.3.7 + resolution: "eslint-import-resolver-node@npm:0.3.7" + dependencies: + debug: ^3.2.7 + is-core-module: ^2.11.0 + resolve: ^1.22.1 + checksum: 3379aacf1d2c6952c1b9666c6fa5982c3023df695430b0d391c0029f6403a7775414873d90f397e98ba6245372b6c8960e16e74d9e4a3b0c0a4582f3bdbe3d6e + languageName: node + linkType: hard + +"eslint-module-utils@npm:^2.7.4": + version: 2.7.4 + resolution: "eslint-module-utils@npm:2.7.4" + dependencies: + debug: ^3.2.7 + peerDependenciesMeta: + eslint: + optional: true + checksum: 5da13645daff145a5c922896b258f8bba560722c3767254e458d894ff5fbb505d6dfd945bffa932a5b0ae06714da2379bd41011c4c20d2d59cc83e23895360f7 + languageName: node + linkType: hard + +"eslint-plugin-import-newlines@npm:1.3.1, eslint-plugin-import-newlines@npm:^1.2.3": + version: 1.3.1 + resolution: "eslint-plugin-import-newlines@npm:1.3.1" + peerDependencies: + eslint: ">=6.0.0" + bin: + import-linter: lib/index.js + checksum: f1ee861d8d955393f68d489bc8e7755f708d4945ef8097b28dca3c801f28f8092c9621816de45b38f3d999295b4e360acf4134f495bc51966e18ca906757d1b7 + languageName: node + linkType: hard + +"eslint-plugin-import@npm:2.27.5": + version: 2.27.5 + resolution: "eslint-plugin-import@npm:2.27.5" + dependencies: + array-includes: ^3.1.6 + array.prototype.flat: ^1.3.1 + array.prototype.flatmap: ^1.3.1 + debug: ^3.2.7 + doctrine: ^2.1.0 + eslint-import-resolver-node: ^0.3.7 + eslint-module-utils: ^2.7.4 + has: ^1.0.3 + is-core-module: ^2.11.0 + is-glob: ^4.0.3 + minimatch: ^3.1.2 + object.values: ^1.1.6 + resolve: ^1.22.1 + semver: ^6.3.0 + tsconfig-paths: ^3.14.1 + peerDependencies: + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + checksum: f500571a380167e25d72a4d925ef9a7aae8899eada57653e5f3051ec3d3c16d08271fcefe41a30a9a2f4fefc232f066253673ee4ea77b30dba65ae173dade85d + languageName: node + linkType: hard + +"eslint-plugin-jsx-a11y@npm:6.7.1": + version: 6.7.1 + resolution: "eslint-plugin-jsx-a11y@npm:6.7.1" + dependencies: + "@babel/runtime": ^7.20.7 + aria-query: ^5.1.3 + array-includes: ^3.1.6 + array.prototype.flatmap: ^1.3.1 + ast-types-flow: ^0.0.7 + axe-core: ^4.6.2 + axobject-query: ^3.1.1 + damerau-levenshtein: ^1.0.8 + emoji-regex: ^9.2.2 + has: ^1.0.3 + jsx-ast-utils: ^3.3.3 + language-tags: =1.0.5 + minimatch: ^3.1.2 + object.entries: ^1.1.6 + object.fromentries: ^2.0.6 + semver: ^6.3.0 + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + checksum: f166dd5fe7257c7b891c6692e6a3ede6f237a14043ae3d97581daf318fc5833ddc6b4871aa34ab7656187430170500f6d806895747ea17ecdf8231a666c3c2fd + languageName: node + linkType: hard + +"eslint-plugin-react-hooks@npm:4.6.0": + version: 4.6.0 + resolution: "eslint-plugin-react-hooks@npm:4.6.0" + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + checksum: 23001801f14c1d16bf0a837ca7970d9dd94e7b560384b41db378b49b6e32dc43d6e2790de1bd737a652a86f81a08d6a91f402525061b47719328f586a57e86c3 + languageName: node + linkType: hard + +"eslint-plugin-react@npm:7.32.1": + version: 7.32.1 + resolution: "eslint-plugin-react@npm:7.32.1" + dependencies: + array-includes: ^3.1.6 + array.prototype.flatmap: ^1.3.1 + array.prototype.tosorted: ^1.1.1 + doctrine: ^2.1.0 + estraverse: ^5.3.0 + jsx-ast-utils: ^2.4.1 || ^3.0.0 + minimatch: ^3.1.2 + object.entries: ^1.1.6 + object.fromentries: ^2.0.6 + object.hasown: ^1.1.2 + object.values: ^1.1.6 + prop-types: ^15.8.1 + resolve: ^2.0.0-next.4 + semver: ^6.3.0 + string.prototype.matchall: ^4.0.8 + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + checksum: e20eab61161a3db6211c2bd1eb9be3e407fd14e72c06c5f39a078b6ac37427b2af6056ee70e3954249bca0a04088ae797a0c8ba909fb8802e29712de2a41262d + languageName: node + linkType: hard + +"eslint-plugin-react@npm:7.32.2": + version: 7.32.2 + resolution: "eslint-plugin-react@npm:7.32.2" + dependencies: + array-includes: ^3.1.6 + array.prototype.flatmap: ^1.3.1 + array.prototype.tosorted: ^1.1.1 + doctrine: ^2.1.0 + estraverse: ^5.3.0 + jsx-ast-utils: ^2.4.1 || ^3.0.0 + minimatch: ^3.1.2 + object.entries: ^1.1.6 + object.fromentries: ^2.0.6 + object.hasown: ^1.1.2 + object.values: ^1.1.6 + prop-types: ^15.8.1 + resolve: ^2.0.0-next.4 + semver: ^6.3.0 + string.prototype.matchall: ^4.0.8 + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + checksum: 2232b3b8945aa50b7773919c15cd96892acf35d2f82503667a79e2f55def90f728ed4f0e496f0f157acbe1bd4397c5615b676ae7428fe84488a544ca53feb944 + languageName: node + linkType: hard + +"eslint-scope@npm:5.1.1, eslint-scope@npm:^5.1.1": + version: 5.1.1 + resolution: "eslint-scope@npm:5.1.1" + dependencies: + esrecurse: ^4.3.0 + estraverse: ^4.1.1 + checksum: 47e4b6a3f0cc29c7feedee6c67b225a2da7e155802c6ea13bbef4ac6b9e10c66cd2dcb987867ef176292bf4e64eccc680a49e35e9e9c669f4a02bac17e86abdb + languageName: node + linkType: hard + +"eslint-scope@npm:^7.1.1": + version: 7.1.1 + resolution: "eslint-scope@npm:7.1.1" + dependencies: + esrecurse: ^4.3.0 + estraverse: ^5.2.0 + checksum: 9f6e974ab2db641ca8ab13508c405b7b859e72afe9f254e8131ff154d2f40c99ad4545ce326fd9fde3212ff29707102562a4834f1c48617b35d98c71a97fbf3e + languageName: node + linkType: hard + +"eslint-utils@npm:^3.0.0": + version: 3.0.0 + resolution: "eslint-utils@npm:3.0.0" + dependencies: + eslint-visitor-keys: ^2.0.0 + peerDependencies: + eslint: ">=5" + checksum: 0668fe02f5adab2e5a367eee5089f4c39033af20499df88fe4e6aba2015c20720404d8c3d6349b6f716b08fdf91b9da4e5d5481f265049278099c4c836ccb619 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^2.0.0, eslint-visitor-keys@npm:^2.1.0": + version: 2.1.0 + resolution: "eslint-visitor-keys@npm:2.1.0" + checksum: e3081d7dd2611a35f0388bbdc2f5da60b3a3c5b8b6e928daffff7391146b434d691577aa95064c8b7faad0b8a680266bcda0a42439c18c717b80e6718d7e267d + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^3.3.0": + version: 3.3.0 + resolution: "eslint-visitor-keys@npm:3.3.0" + checksum: d59e68a7c5a6d0146526b0eec16ce87fbf97fe46b8281e0d41384224375c4e52f5ffb9e16d48f4ea50785cde93f766b0c898e31ab89978d88b0e1720fbfb7808 + languageName: node + linkType: hard + +"eslint@npm:8.32.0": + version: 8.32.0 + resolution: "eslint@npm:8.32.0" + dependencies: + "@eslint/eslintrc": ^1.4.1 + "@humanwhocodes/config-array": ^0.11.8 + "@humanwhocodes/module-importer": ^1.0.1 + "@nodelib/fs.walk": ^1.2.8 + ajv: ^6.10.0 + chalk: ^4.0.0 + cross-spawn: ^7.0.2 + debug: ^4.3.2 + doctrine: ^3.0.0 + escape-string-regexp: ^4.0.0 + eslint-scope: ^7.1.1 + eslint-utils: ^3.0.0 + eslint-visitor-keys: ^3.3.0 + espree: ^9.4.0 + esquery: ^1.4.0 + esutils: ^2.0.2 + fast-deep-equal: ^3.1.3 + file-entry-cache: ^6.0.1 + find-up: ^5.0.0 + glob-parent: ^6.0.2 + globals: ^13.19.0 + grapheme-splitter: ^1.0.4 + ignore: ^5.2.0 + import-fresh: ^3.0.0 + imurmurhash: ^0.1.4 + is-glob: ^4.0.0 + is-path-inside: ^3.0.3 + js-sdsl: ^4.1.4 + js-yaml: ^4.1.0 + json-stable-stringify-without-jsonify: ^1.0.1 + levn: ^0.4.1 + lodash.merge: ^4.6.2 + minimatch: ^3.1.2 + natural-compare: ^1.4.0 + optionator: ^0.9.1 + regexpp: ^3.2.0 + strip-ansi: ^6.0.1 + strip-json-comments: ^3.1.0 + text-table: ^0.2.0 + bin: + eslint: bin/eslint.js + checksum: 23c8fb3c57291eecd9c1448faf603226a8f885022a2cd96e303459bf72e39b7f54987c6fb948f0f9eecaf7085600e6eb0663482a35ea83da12e9f9141a22b91e + languageName: node + linkType: hard + +"eslint@npm:8.33.0": + version: 8.33.0 + resolution: "eslint@npm:8.33.0" + dependencies: + "@eslint/eslintrc": ^1.4.1 + "@humanwhocodes/config-array": ^0.11.8 + "@humanwhocodes/module-importer": ^1.0.1 + "@nodelib/fs.walk": ^1.2.8 + ajv: ^6.10.0 + chalk: ^4.0.0 + cross-spawn: ^7.0.2 + debug: ^4.3.2 + doctrine: ^3.0.0 + escape-string-regexp: ^4.0.0 + eslint-scope: ^7.1.1 + eslint-utils: ^3.0.0 + eslint-visitor-keys: ^3.3.0 + espree: ^9.4.0 + esquery: ^1.4.0 + esutils: ^2.0.2 + fast-deep-equal: ^3.1.3 + file-entry-cache: ^6.0.1 + find-up: ^5.0.0 + glob-parent: ^6.0.2 + globals: ^13.19.0 + grapheme-splitter: ^1.0.4 + ignore: ^5.2.0 + import-fresh: ^3.0.0 + imurmurhash: ^0.1.4 + is-glob: ^4.0.0 + is-path-inside: ^3.0.3 + js-sdsl: ^4.1.4 + js-yaml: ^4.1.0 + json-stable-stringify-without-jsonify: ^1.0.1 + levn: ^0.4.1 + lodash.merge: ^4.6.2 + minimatch: ^3.1.2 + natural-compare: ^1.4.0 + optionator: ^0.9.1 + regexpp: ^3.2.0 + strip-ansi: ^6.0.1 + strip-json-comments: ^3.1.0 + text-table: ^0.2.0 + bin: + eslint: bin/eslint.js + checksum: 727e63ab8b7acf281442323c5971f6afdd5b656fbcebc4476cf54e35af51b2f180617433fc5e1952f0449ca3f43a905527f9407ea4b8a7ea7562fc9c3f278d4c + languageName: node + linkType: hard + +"eslint@npm:8.36.0": + version: 8.36.0 + resolution: "eslint@npm:8.36.0" + dependencies: + "@eslint-community/eslint-utils": ^4.2.0 + "@eslint-community/regexpp": ^4.4.0 + "@eslint/eslintrc": ^2.0.1 + "@eslint/js": 8.36.0 + "@humanwhocodes/config-array": ^0.11.8 + "@humanwhocodes/module-importer": ^1.0.1 + "@nodelib/fs.walk": ^1.2.8 + ajv: ^6.10.0 + chalk: ^4.0.0 + cross-spawn: ^7.0.2 + debug: ^4.3.2 + doctrine: ^3.0.0 + escape-string-regexp: ^4.0.0 + eslint-scope: ^7.1.1 + eslint-visitor-keys: ^3.3.0 + espree: ^9.5.0 + esquery: ^1.4.2 + esutils: ^2.0.2 + fast-deep-equal: ^3.1.3 + file-entry-cache: ^6.0.1 + find-up: ^5.0.0 + glob-parent: ^6.0.2 + globals: ^13.19.0 + grapheme-splitter: ^1.0.4 + ignore: ^5.2.0 + import-fresh: ^3.0.0 + imurmurhash: ^0.1.4 + is-glob: ^4.0.0 + is-path-inside: ^3.0.3 + js-sdsl: ^4.1.4 + js-yaml: ^4.1.0 + json-stable-stringify-without-jsonify: ^1.0.1 + levn: ^0.4.1 + lodash.merge: ^4.6.2 + minimatch: ^3.1.2 + natural-compare: ^1.4.0 + optionator: ^0.9.1 + strip-ansi: ^6.0.1 + strip-json-comments: ^3.1.0 + text-table: ^0.2.0 + bin: + eslint: bin/eslint.js + checksum: e9a961fc3b3de5cff5a1cb2c92eeffaa7e155a715489e30b3e1e76f186bd1255e0481e09564f2094733c0b1dbd3453499fb72ae7c043c83156e11e6d965b2304 + languageName: node + linkType: hard + +"espree@npm:^9.4.0, espree@npm:^9.5.0": + version: 9.5.0 + resolution: "espree@npm:9.5.0" + dependencies: + acorn: ^8.8.0 + acorn-jsx: ^5.3.2 + eslint-visitor-keys: ^3.3.0 + checksum: a7f110aefb6407e0d3237aa635ab3cea87106ae63748dd23c67031afccc640d04c4209fca2daf16e2233c82efb505faead0fb84097478fd9cc6e8f8dd80bf99d + languageName: node + linkType: hard + +"esquery@npm:^1.4.0, esquery@npm:^1.4.2": + version: 1.5.0 + resolution: "esquery@npm:1.5.0" + dependencies: + estraverse: ^5.1.0 + checksum: aefb0d2596c230118656cd4ec7532d447333a410a48834d80ea648b1e7b5c9bc9ed8b5e33a89cb04e487b60d622f44cf5713bf4abed7c97343edefdc84a35900 + languageName: node + linkType: hard + +"esrecurse@npm:^4.3.0": + version: 4.3.0 + resolution: "esrecurse@npm:4.3.0" + dependencies: + estraverse: ^5.2.0 + checksum: ebc17b1a33c51cef46fdc28b958994b1dc43cd2e86237515cbc3b4e5d2be6a811b2315d0a1a4d9d340b6d2308b15322f5c8291059521cc5f4802f65e7ec32837 + languageName: node + linkType: hard + +"estraverse@npm:^4.1.1": + version: 4.3.0 + resolution: "estraverse@npm:4.3.0" + checksum: a6299491f9940bb246124a8d44b7b7a413a8336f5436f9837aaa9330209bd9ee8af7e91a654a3545aee9c54b3308e78ee360cef1d777d37cfef77d2fa33b5827 + languageName: node + linkType: hard + +"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0": + version: 5.3.0 + resolution: "estraverse@npm:5.3.0" + checksum: 072780882dc8416ad144f8fe199628d2b3e7bbc9989d9ed43795d2c90309a2047e6bc5979d7e2322a341163d22cfad9e21f4110597fe487519697389497e4e2b + languageName: node + linkType: hard + +"esutils@npm:^2.0.2": + version: 2.0.3 + resolution: "esutils@npm:2.0.3" + checksum: 22b5b08f74737379a840b8ed2036a5fb35826c709ab000683b092d9054e5c2a82c27818f12604bfc2a9a76b90b6834ef081edbc1c7ae30d1627012e067c6ec87 + languageName: node + linkType: hard + +"extend@npm:^3.0.0": + version: 3.0.2 + resolution: "extend@npm:3.0.2" + checksum: a50a8309ca65ea5d426382ff09f33586527882cf532931cb08ca786ea3146c0553310bda688710ff61d7668eba9f96b923fe1420cdf56a2c3eaf30fcab87b515 + languageName: node + linkType: hard + +"external-editor@npm:^3.0.3": + version: 3.1.0 + resolution: "external-editor@npm:3.1.0" + dependencies: + chardet: ^0.7.0 + iconv-lite: ^0.4.24 + tmp: ^0.0.33 + checksum: 1c2a616a73f1b3435ce04030261bed0e22d4737e14b090bb48e58865da92529c9f2b05b893de650738d55e692d071819b45e1669259b2b354bc3154d27a698c7 + languageName: node + linkType: hard + +"extract-files@npm:^11.0.0": + version: 11.0.0 + resolution: "extract-files@npm:11.0.0" + checksum: 39ebd92772e9a1e30d1e3112fb7db85d353c8243640635668b615ac1d605ceb79fbb13d17829dd308993ef37bb189ad99817f79ab164ae95c9bb3df9f440bd16 + languageName: node + linkType: hard + +"extract-files@npm:^9.0.0": + version: 9.0.0 + resolution: "extract-files@npm:9.0.0" + checksum: c31781d090f8d8f62cc541f1023b39ea863f24bd6fb3d4011922d71cbded70cef8191f2b70b43ec6cb5c5907cdad1dc5e9f29f78228936c10adc239091d8ab64 + languageName: node + linkType: hard + +"fast-decode-uri-component@npm:^1.0.1": + version: 1.0.1 + resolution: "fast-decode-uri-component@npm:1.0.1" + checksum: 427a48fe0907e76f0e9a2c228e253b4d8a8ab21d130ee9e4bb8339c5ba4086235cf9576831f7b20955a752eae4b525a177ff9d5825dd8d416e7726939194fbee + languageName: node + linkType: hard + +"fast-deep-equal@npm:1.0.0": + version: 1.0.0 + resolution: "fast-deep-equal@npm:1.0.0" + checksum: 9af727dacb3defa3ee2792b5c154ce3dacf20dc850dceea1eb231096fcff4cf91013d13f30d87b4c19c4ff7c6911c978334333d794b82e296a38a507a8503e59 + languageName: node + linkType: hard + +"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": + version: 3.1.3 + resolution: "fast-deep-equal@npm:3.1.3" + checksum: e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d + languageName: node + linkType: hard + +"fast-glob@npm:^3.2.9": + version: 3.2.12 + resolution: "fast-glob@npm:3.2.12" + dependencies: + "@nodelib/fs.stat": ^2.0.2 + "@nodelib/fs.walk": ^1.2.3 + glob-parent: ^5.1.2 + merge2: ^1.3.0 + micromatch: ^4.0.4 + checksum: 0b1990f6ce831c7e28c4d505edcdaad8e27e88ab9fa65eedadb730438cfc7cde4910d6c975d6b7b8dc8a73da4773702ebcfcd6e3518e73938bb1383badfe01c2 + languageName: node + linkType: hard + +"fast-json-stable-stringify@npm:^2.0.0": + version: 2.1.0 + resolution: "fast-json-stable-stringify@npm:2.1.0" + checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb + languageName: node + linkType: hard + +"fast-levenshtein@npm:^2.0.6": + version: 2.0.6 + resolution: "fast-levenshtein@npm:2.0.6" + checksum: 92cfec0a8dfafd9c7a15fba8f2cc29cd0b62b85f056d99ce448bbcd9f708e18ab2764bda4dd5158364f4145a7c72788538994f0d1787b956ef0d1062b0f7c24c + languageName: node + linkType: hard + +"fast-querystring@npm:^1.1.1": + version: 1.1.1 + resolution: "fast-querystring@npm:1.1.1" + dependencies: + fast-decode-uri-component: ^1.0.1 + checksum: 86d2b75b9b299a552353532fb1a542f09730ee2a61e657d68710971d9a2afc9a3c5c7b7e106b6534f4cc506d2ff1c08ab0fda4ae614b4e7720798c9ac2a88e02 + languageName: node + linkType: hard + +"fast-url-parser@npm:^1.1.3": + version: 1.1.3 + resolution: "fast-url-parser@npm:1.1.3" + dependencies: + punycode: ^1.3.2 + checksum: 5043d0c4a8d775ff58504d56c096563c11b113e4cb8a2668c6f824a1cd4fb3812e2fdf76537eb24a7ce4ae7def6bd9747da630c617cf2a4b6ce0c42514e4f21c + languageName: node + linkType: hard + +"fastq@npm:^1.6.0": + version: 1.15.0 + resolution: "fastq@npm:1.15.0" + dependencies: + reusify: ^1.0.4 + checksum: 0170e6bfcd5d57a70412440b8ef600da6de3b2a6c5966aeaf0a852d542daff506a0ee92d6de7679d1de82e644bce69d7a574a6c93f0b03964b5337eed75ada1a + languageName: node + linkType: hard + +"fb-watchman@npm:^2.0.0": + version: 2.0.2 + resolution: "fb-watchman@npm:2.0.2" + dependencies: + bser: 2.1.1 + checksum: b15a124cef28916fe07b400eb87cbc73ca082c142abf7ca8e8de6af43eca79ca7bd13eb4d4d48240b3bd3136eaac40d16e42d6edf87a8e5d1dd8070626860c78 + languageName: node + linkType: hard + +"fbjs-css-vars@npm:^1.0.0": + version: 1.0.2 + resolution: "fbjs-css-vars@npm:1.0.2" + checksum: 72baf6d22c45b75109118b4daecb6c8016d4c83c8c0f23f683f22e9d7c21f32fff6201d288df46eb561e3c7d4bb4489b8ad140b7f56444c453ba407e8bd28511 + languageName: node + linkType: hard + +"fbjs@npm:^3.0.0": + version: 3.0.4 + resolution: "fbjs@npm:3.0.4" + dependencies: + cross-fetch: ^3.1.5 + fbjs-css-vars: ^1.0.0 + loose-envify: ^1.0.0 + object-assign: ^4.1.0 + promise: ^7.1.1 + setimmediate: ^1.0.5 + ua-parser-js: ^0.7.30 + checksum: 8b23a3550fcda8a9109fca9475a3416590c18bb6825ea884192864ed686f67fcd618e308a140c9e5444fbd0168732e1ff3c092ba3d0c0ae1768969f32ba280c7 + languageName: node + linkType: hard + +"figures@npm:^3.0.0": + version: 3.2.0 + resolution: "figures@npm:3.2.0" + dependencies: + escape-string-regexp: ^1.0.5 + checksum: 85a6ad29e9aca80b49b817e7c89ecc4716ff14e3779d9835af554db91bac41c0f289c418923519392a1e582b4d10482ad282021330cd045bb7b80c84152f2a2b + languageName: node + linkType: hard + +"file-entry-cache@npm:^6.0.1": + version: 6.0.1 + resolution: "file-entry-cache@npm:6.0.1" + dependencies: + flat-cache: ^3.0.4 + checksum: f49701feaa6314c8127c3c2f6173cfefff17612f5ed2daaafc6da13b5c91fd43e3b2a58fd0d63f9f94478a501b167615931e7200e31485e320f74a33885a9c74 + languageName: node + linkType: hard + +"fill-range@npm:^7.0.1": + version: 7.0.1 + resolution: "fill-range@npm:7.0.1" + dependencies: + to-regex-range: ^5.0.1 + checksum: cc283f4e65b504259e64fd969bcf4def4eb08d85565e906b7d36516e87819db52029a76b6363d0f02d0d532f0033c9603b9e2d943d56ee3b0d4f7ad3328ff917 + languageName: node + linkType: hard + +"find-root@npm:^1.1.0": + version: 1.1.0 + resolution: "find-root@npm:1.1.0" + checksum: b2a59fe4b6c932eef36c45a048ae8f93c85640212ebe8363164814990ee20f154197505965f3f4f102efc33bfb1cbc26fd17c4a2fc739ebc51b886b137cbefaf + languageName: node + linkType: hard + +"find-up@npm:^4.1.0": + version: 4.1.0 + resolution: "find-up@npm:4.1.0" + dependencies: + locate-path: ^5.0.0 + path-exists: ^4.0.0 + checksum: 4c172680e8f8c1f78839486e14a43ef82e9decd0e74145f40707cc42e7420506d5ec92d9a11c22bd2c48fb0c384ea05dd30e10dd152fefeec6f2f75282a8b844 + languageName: node + linkType: hard + +"find-up@npm:^5.0.0": + version: 5.0.0 + resolution: "find-up@npm:5.0.0" + dependencies: + locate-path: ^6.0.0 + path-exists: ^4.0.0 + checksum: 07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 + languageName: node + linkType: hard + +"flat-cache@npm:^3.0.4": + version: 3.0.4 + resolution: "flat-cache@npm:3.0.4" + dependencies: + flatted: ^3.1.0 + rimraf: ^3.0.2 + checksum: 4fdd10ecbcbf7d520f9040dd1340eb5dfe951e6f0ecf2252edeec03ee68d989ec8b9a20f4434270e71bcfd57800dc09b3344fca3966b2eb8f613072c7d9a2365 + languageName: node + linkType: hard + +"flatted@npm:^3.1.0": + version: 3.2.7 + resolution: "flatted@npm:3.2.7" + checksum: 427633049d55bdb80201c68f7eb1cbd533e03eac541f97d3aecab8c5526f12a20ccecaeede08b57503e772c769e7f8680b37e8d482d1e5f8d7e2194687f9ea35 + languageName: node + linkType: hard + +"flow-static-land@npm:0.2.7": + version: 0.2.7 + resolution: "flow-static-land@npm:0.2.7" + checksum: 38dbca39ad8d7c3a8a1bf8287d5fab33af043a223169e180ae963e66fe677a6ea2c7f982dd86643aea33ae941b3dc610aa44e78113eb360c45501b5712b40a95 + languageName: node + linkType: hard + +"flow-static-land@npm:0.2.8": + version: 0.2.8 + resolution: "flow-static-land@npm:0.2.8" + checksum: 601041728f26baac08de972301360877407109d9b7cb78241126d9bf787ecc97eb48b978c58711208a4a83a1a2faab70700de99a4a517d6f129fb92f3493a0d1 + languageName: node + linkType: hard + +"for-each@npm:^0.3.3": + version: 0.3.3 + resolution: "for-each@npm:0.3.3" + dependencies: + is-callable: ^1.1.3 + checksum: 6c48ff2bc63362319c65e2edca4a8e1e3483a2fabc72fbe7feaf8c73db94fc7861bd53bc02c8a66a0c1dd709da6b04eec42e0abdd6b40ce47305ae92a25e5d28 + languageName: node + linkType: hard + +"form-data@npm:^3.0.0": + version: 3.0.1 + resolution: "form-data@npm:3.0.1" + dependencies: + asynckit: ^0.4.0 + combined-stream: ^1.0.8 + mime-types: ^2.1.12 + checksum: b019e8d35c8afc14a2bd8a7a92fa4f525a4726b6d5a9740e8d2623c30e308fbb58dc8469f90415a856698933c8479b01646a9dff33c87cc4e76d72aedbbf860d + languageName: node + linkType: hard + +"frontend@workspace:.": + version: 0.0.0-use.local + resolution: "frontend@workspace:." + dependencies: + "@absinthe/socket": 0.2.1 + "@absinthe/socket-apollo-link": 0.2.1 + "@apollo/client": 3.7.10 + "@emotion/react": 11.10.6 + "@emotion/styled": 11.10.6 + "@graphql-codegen/add": 4.0.1 + "@graphql-codegen/cli": 3.2.2 + "@graphql-codegen/introspection": 3.0.1 + "@graphql-codegen/typescript": 3.0.2 + "@graphql-codegen/typescript-operations": 3.0.2 + "@graphql-codegen/typescript-react-apollo": 3.3.7 + "@pluralsh/design-system": 1.330.1 + "@pluralsh/eslint-config-typescript": 2.5.41 + "@types/absinthe__socket": 0.2.3 + "@types/absinthe__socket-apollo-link": 0.2.1 + "@types/phoenix": 1.5.5 + "@types/react": 18.0.28 + "@types/react-dom": 18.0.11 + "@types/styled-components": 5.1.26 + "@typescript-eslint/eslint-plugin": 5.56.0 + "@vitejs/plugin-react": 3.1.0 + eslint: 8.33.0 + eslint-plugin-import: 2.27.5 + eslint-plugin-import-newlines: 1.3.1 + eslint-plugin-jsx-a11y: 6.7.1 + eslint-plugin-react: 7.32.2 + eslint-plugin-react-hooks: 4.6.0 + honorable: 0.194.0 + honorable-theme-default: 0.77.0 + lodash: 4.17.21 + phoenix: 1.7.2 + react: 18.2.0 + react-dom: 18.2.0 + react-router-dom: 6.9.0 + styled-components: 5.3.9 + typescript: 5.0.2 + vite: 4.2.1 + languageName: unknown + linkType: soft + +"fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": + version: 2.1.0 + resolution: "fs-minipass@npm:2.1.0" + dependencies: + minipass: ^3.0.0 + checksum: 1b8d128dae2ac6cc94230cc5ead341ba3e0efaef82dab46a33d171c044caaa6ca001364178d42069b2809c35a1c3c35079a32107c770e9ffab3901b59af8c8b1 + languageName: node + linkType: hard + +"fs.realpath@npm:^1.0.0": + version: 1.0.0 + resolution: "fs.realpath@npm:1.0.0" + checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 + languageName: node + linkType: hard + +"fsevents@npm:~2.3.2": + version: 2.3.2 + resolution: "fsevents@npm:2.3.2" + dependencies: + node-gyp: latest + checksum: 97ade64e75091afee5265e6956cb72ba34db7819b4c3e94c431d4be2b19b8bb7a2d4116da417950c3425f17c8fe693d25e20212cac583ac1521ad066b77ae31f + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@~2.3.2#~builtin": + version: 2.3.2 + resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=df0bf1" + dependencies: + node-gyp: latest + conditions: os=darwin + languageName: node + linkType: hard + +"function-bind@npm:^1.1.1": + version: 1.1.1 + resolution: "function-bind@npm:1.1.1" + checksum: b32fbaebb3f8ec4969f033073b43f5c8befbb58f1a79e12f1d7490358150359ebd92f49e72ff0144f65f2c48ea2a605bff2d07965f548f6474fd8efd95bf361a + languageName: node + linkType: hard + +"function.prototype.name@npm:^1.1.5": + version: 1.1.5 + resolution: "function.prototype.name@npm:1.1.5" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.3 + es-abstract: ^1.19.0 + functions-have-names: ^1.2.2 + checksum: acd21d733a9b649c2c442f067567743214af5fa248dbeee69d8278ce7df3329ea5abac572be9f7470b4ec1cd4d8f1040e3c5caccf98ebf2bf861a0deab735c27 + languageName: node + linkType: hard + +"functions-have-names@npm:^1.2.2": + version: 1.2.3 + resolution: "functions-have-names@npm:1.2.3" + checksum: c3f1f5ba20f4e962efb71344ce0a40722163e85bee2101ce25f88214e78182d2d2476aa85ef37950c579eb6cf6ee811c17b3101bb84004bb75655f3e33f3fdb5 + languageName: node + linkType: hard + +"gauge@npm:^4.0.3": + version: 4.0.4 + resolution: "gauge@npm:4.0.4" + dependencies: + aproba: ^1.0.3 || ^2.0.0 + color-support: ^1.1.3 + console-control-strings: ^1.1.0 + has-unicode: ^2.0.1 + signal-exit: ^3.0.7 + string-width: ^4.2.3 + strip-ansi: ^6.0.1 + wide-align: ^1.1.5 + checksum: 788b6bfe52f1dd8e263cda800c26ac0ca2ff6de0b6eee2fe0d9e3abf15e149b651bd27bf5226be10e6e3edb5c4e5d5985a5a1a98137e7a892f75eff76467ad2d + languageName: node + linkType: hard + +"gensync@npm:^1.0.0-beta.2": + version: 1.0.0-beta.2 + resolution: "gensync@npm:1.0.0-beta.2" + checksum: a7437e58c6be12aa6c90f7730eac7fa9833dc78872b4ad2963d2031b00a3367a93f98aec75f9aaac7220848e4026d67a8655e870b24f20a543d103c0d65952ec + languageName: node + linkType: hard + +"get-caller-file@npm:^2.0.1, get-caller-file@npm:^2.0.5": + version: 2.0.5 + resolution: "get-caller-file@npm:2.0.5" + checksum: b9769a836d2a98c3ee734a88ba712e62703f1df31b94b784762c433c27a386dd6029ff55c2a920c392e33657d80191edbf18c61487e198844844516f843496b9 + languageName: node + linkType: hard + +"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0": + version: 1.2.0 + resolution: "get-intrinsic@npm:1.2.0" + dependencies: + function-bind: ^1.1.1 + has: ^1.0.3 + has-symbols: ^1.0.3 + checksum: 78fc0487b783f5c58cf2dccafc3ae656ee8d2d8062a8831ce4a95e7057af4587a1d4882246c033aca0a7b4965276f4802b45cc300338d1b77a73d3e3e3f4877d + languageName: node + linkType: hard + +"get-symbol-description@npm:^1.0.0": + version: 1.0.0 + resolution: "get-symbol-description@npm:1.0.0" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.1.1 + checksum: 9ceff8fe968f9270a37a1f73bf3f1f7bda69ca80f4f80850670e0e7b9444ff99323f7ac52f96567f8b5f5fbe7ac717a0d81d3407c7313e82810c6199446a5247 + languageName: node + linkType: hard + +"glob-parent@npm:^5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: ^4.0.1 + checksum: f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e + languageName: node + linkType: hard + +"glob-parent@npm:^6.0.2": + version: 6.0.2 + resolution: "glob-parent@npm:6.0.2" + dependencies: + is-glob: ^4.0.3 + checksum: c13ee97978bef4f55106b71e66428eb1512e71a7466ba49025fc2aec59a5bfb0954d5abd58fc5ee6c9b076eef4e1f6d3375c2e964b88466ca390da4419a786a8 + languageName: node + linkType: hard + +"glob@npm:^7.1.1, glob@npm:^7.1.3, glob@npm:^7.1.4": + version: 7.2.3 + resolution: "glob@npm:7.2.3" + dependencies: + fs.realpath: ^1.0.0 + inflight: ^1.0.4 + inherits: 2 + minimatch: ^3.1.1 + once: ^1.3.0 + path-is-absolute: ^1.0.0 + checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133 + languageName: node + linkType: hard + +"glob@npm:^8.0.1": + version: 8.1.0 + resolution: "glob@npm:8.1.0" + dependencies: + fs.realpath: ^1.0.0 + inflight: ^1.0.4 + inherits: 2 + minimatch: ^5.0.1 + once: ^1.3.0 + checksum: 92fbea3221a7d12075f26f0227abac435de868dd0736a17170663783296d0dd8d3d532a5672b4488a439bf5d7fb85cdd07c11185d6cd39184f0385cbdfb86a47 + languageName: node + linkType: hard + +"globals@npm:^11.1.0": + version: 11.12.0 + resolution: "globals@npm:11.12.0" + checksum: 67051a45eca3db904aee189dfc7cd53c20c7d881679c93f6146ddd4c9f4ab2268e68a919df740d39c71f4445d2b38ee360fc234428baea1dbdfe68bbcb46979e + languageName: node + linkType: hard + +"globals@npm:^13.19.0": + version: 13.20.0 + resolution: "globals@npm:13.20.0" + dependencies: + type-fest: ^0.20.2 + checksum: ad1ecf914bd051325faad281d02ea2c0b1df5d01bd94d368dcc5513340eac41d14b3c61af325768e3c7f8d44576e72780ec0b6f2d366121f8eec6e03c3a3b97a + languageName: node + linkType: hard + +"globalthis@npm:^1.0.3": + version: 1.0.3 + resolution: "globalthis@npm:1.0.3" + dependencies: + define-properties: ^1.1.3 + checksum: fbd7d760dc464c886d0196166d92e5ffb4c84d0730846d6621a39fbbc068aeeb9c8d1421ad330e94b7bca4bb4ea092f5f21f3d36077812af5d098b4dc006c998 + languageName: node + linkType: hard + +"globby@npm:^11.0.3, globby@npm:^11.1.0": + version: 11.1.0 + resolution: "globby@npm:11.1.0" + dependencies: + array-union: ^2.1.0 + dir-glob: ^3.0.1 + fast-glob: ^3.2.9 + ignore: ^5.2.0 + merge2: ^1.4.1 + slash: ^3.0.0 + checksum: b4be8885e0cfa018fc783792942d53926c35c50b3aefd3fdcfb9d22c627639dc26bd2327a40a0b74b074100ce95bb7187bfeae2f236856aa3de183af7a02aea6 + languageName: node + linkType: hard + +"gopd@npm:^1.0.1": + version: 1.0.1 + resolution: "gopd@npm:1.0.1" + dependencies: + get-intrinsic: ^1.1.3 + checksum: a5ccfb8806e0917a94e0b3de2af2ea4979c1da920bc381667c260e00e7cafdbe844e2cb9c5bcfef4e5412e8bf73bab837285bc35c7ba73aaaf0134d4583393a6 + languageName: node + linkType: hard + +"graceful-fs@npm:^4.2.6": + version: 4.2.10 + resolution: "graceful-fs@npm:4.2.10" + checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da + languageName: node + linkType: hard + +"grapheme-splitter@npm:^1.0.4": + version: 1.0.4 + resolution: "grapheme-splitter@npm:1.0.4" + checksum: 0c22ec54dee1b05cd480f78cf14f732cb5b108edc073572c4ec205df4cd63f30f8db8025afc5debc8835a8ddeacf648a1c7992fe3dcd6ad38f9a476d84906620 + languageName: node + linkType: hard + +"graphql-config@npm:^4.5.0": + version: 4.5.0 + resolution: "graphql-config@npm:4.5.0" + dependencies: + "@graphql-tools/graphql-file-loader": ^7.3.7 + "@graphql-tools/json-file-loader": ^7.3.7 + "@graphql-tools/load": ^7.5.5 + "@graphql-tools/merge": ^8.2.6 + "@graphql-tools/url-loader": ^7.9.7 + "@graphql-tools/utils": ^9.0.0 + cosmiconfig: 8.0.0 + jiti: 1.17.1 + minimatch: 4.2.3 + string-env-interpolation: 1.0.1 + tslib: ^2.4.0 + peerDependencies: + cosmiconfig-toml-loader: ^1.0.0 + graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + cosmiconfig-toml-loader: + optional: true + checksum: 8ab1a3ce3534598ddac2df213b6af2eecd9ebcca2268d39cc3e87a6e55749483389a6df222e9e0acd638dd2479378a5c8e8d90f980e6a54e700c4c4ae3522123 + languageName: node + linkType: hard + +"graphql-request@npm:^5.0.0": + version: 5.2.0 + resolution: "graphql-request@npm:5.2.0" + dependencies: + "@graphql-typed-document-node/core": ^3.1.1 + cross-fetch: ^3.1.5 + extract-files: ^9.0.0 + form-data: ^3.0.0 + peerDependencies: + graphql: 14 - 16 + checksum: a8aa37816378898e6fc8c4db04a1c114c98f98d90718cf1680bd96b22724bd43b1210619f9b0d328b5c1acb4f7b76d2227a2537cd5ab059bb54cf0debecb33bf + languageName: node + linkType: hard + +"graphql-tag@npm:^2.11.0, graphql-tag@npm:^2.12.6": + version: 2.12.6 + resolution: "graphql-tag@npm:2.12.6" + dependencies: + tslib: ^2.1.0 + peerDependencies: + graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: b15162a3d62f17b9b79302445b9ee330e041582f1c7faca74b9dec5daa74272c906ec1c34e1c50592bb6215e5c3eba80a309103f6ba9e4c1cddc350c46f010df + languageName: node + linkType: hard + +"graphql-ws@npm:5.12.0": + version: 5.12.0 + resolution: "graphql-ws@npm:5.12.0" + peerDependencies: + graphql: ">=0.11 <=16" + checksum: 5c683e2d5bdadfcfec0639eda69b8a66ef275e68e64f662bd75da6779a87b34395cbce8e37cb66830a9febca1871f7dc2575e6814f6f6e899904fe72e245f216 + languageName: node + linkType: hard + +"graphql@npm:14.0.2": + version: 14.0.2 + resolution: "graphql@npm:14.0.2" + dependencies: + iterall: ^1.2.2 + checksum: 789cf582d3b7493bfe9372d28b0c124a992165082b111972b4b7171dc55db0eda6288a946759972e83788c584246d5ebcaec403d6b6e1292e266b74e14198bf7 + languageName: node + linkType: hard + +"graphql@npm:^14.5.3": + version: 14.7.0 + resolution: "graphql@npm:14.7.0" + dependencies: + iterall: ^1.2.2 + checksum: e5f4e60799421a573904f390e1ec0aa76360f751688dbbe62e9c35baa0d3727c8d59a659bfc524f126dffe3518da87fd8ecaa78c94fd5c0fe4e035c670745242 + languageName: node + linkType: hard + +"grommet-icons@npm:4.9.0": + version: 4.9.0 + resolution: "grommet-icons@npm:4.9.0" + dependencies: + grommet-styles: ^0.2.0 + peerDependencies: + react: ^16.6.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 + styled-components: ">= 5.x" + checksum: b978c087a16341d75f3f8e9f57484fab9c4fdf64ab7d89a46246d7bff024120cce50167e1af49048a492fb30cc3e59c7ffc0e8dbd25733521864147f071dc3d3 + languageName: node + linkType: hard + +"grommet-icons@npm:^4.8.0": + version: 4.10.0 + resolution: "grommet-icons@npm:4.10.0" + dependencies: + grommet-styles: ^0.2.0 + peerDependencies: + react: ^16.6.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 + styled-components: ">= 5.x" + checksum: 69745341a65f4e4d05bd5b207f7243b5ffa54d13a8195093cae7fb32d57b38ab55ed30cfee341b9f1f659b99743f721ee04c7ab9decd7dd7f171fcc4947af048 + languageName: node + linkType: hard + +"grommet-styles@npm:^0.2.0": + version: 0.2.0 + resolution: "grommet-styles@npm:0.2.0" + peerDependencies: + react: ">= 16.4.1" + react-dom: ">= 16.4.1" + styled-components: ">= 4.X" + checksum: 7b29e6fd773a29a9f7b48e5b0a163e1c51b3b196891228d88a0e5b99faab4ece03b5410a97665105fe886402016a337237b956d5f46af06ec2e06e2b328a0757 + languageName: node + linkType: hard + +"grommet@npm:2.29.1": + version: 2.29.1 + resolution: "grommet@npm:2.29.1" + dependencies: + grommet-icons: ^4.8.0 + hoist-non-react-statics: ^3.2.0 + markdown-to-jsx: ^7.1.5 + prop-types: ^15.8.1 + peerDependencies: + react: ^16.6.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.6.1 || ^17.0.0 || ^18.0.0 + styled-components: ">= 5.1" + checksum: f16f68ad7a0d5984bd5f3a6f84d84575bc168a3f9eb53095f80a7da702e3a6113b6e465390c8045650aedce813d0a3165cad96508939ff8463b00f99eefd54d1 + languageName: node + linkType: hard + +"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": + version: 1.0.2 + resolution: "has-bigints@npm:1.0.2" + checksum: 390e31e7be7e5c6fe68b81babb73dfc35d413604d7ee5f56da101417027a4b4ce6a27e46eff97ad040c835b5d228676eae99a9b5c3bc0e23c8e81a49241ff45b + languageName: node + linkType: hard + +"has-flag@npm:^3.0.0": + version: 3.0.0 + resolution: "has-flag@npm:3.0.0" + checksum: 4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b + languageName: node + linkType: hard + +"has-flag@npm:^4.0.0": + version: 4.0.0 + resolution: "has-flag@npm:4.0.0" + checksum: 261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad + languageName: node + linkType: hard + +"has-property-descriptors@npm:^1.0.0": + version: 1.0.0 + resolution: "has-property-descriptors@npm:1.0.0" + dependencies: + get-intrinsic: ^1.1.1 + checksum: a6d3f0a266d0294d972e354782e872e2fe1b6495b321e6ef678c9b7a06a40408a6891817350c62e752adced73a94ac903c54734fee05bf65b1905ee1368194bb + languageName: node + linkType: hard + +"has-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "has-proto@npm:1.0.1" + checksum: febc5b5b531de8022806ad7407935e2135f1cc9e64636c3916c6842bd7995994ca3b29871ecd7954bd35f9e2986c17b3b227880484d22259e2f8e6ce63fd383e + languageName: node + linkType: hard + +"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": + version: 1.0.3 + resolution: "has-symbols@npm:1.0.3" + checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 + languageName: node + linkType: hard + +"has-tostringtag@npm:^1.0.0": + version: 1.0.0 + resolution: "has-tostringtag@npm:1.0.0" + dependencies: + has-symbols: ^1.0.2 + checksum: cc12eb28cb6ae22369ebaad3a8ab0799ed61270991be88f208d508076a1e99abe4198c965935ce85ea90b60c94ddda73693b0920b58e7ead048b4a391b502c1c + languageName: node + linkType: hard + +"has-unicode@npm:^2.0.1": + version: 2.0.1 + resolution: "has-unicode@npm:2.0.1" + checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400 + languageName: node + linkType: hard + +"has@npm:^1.0.3": + version: 1.0.3 + resolution: "has@npm:1.0.3" + dependencies: + function-bind: ^1.1.1 + checksum: b9ad53d53be4af90ce5d1c38331e712522417d017d5ef1ebd0507e07c2fbad8686fffb8e12ddecd4c39ca9b9b47431afbb975b8abf7f3c3b82c98e9aad052792 + languageName: node + linkType: hard + +"hast-util-from-parse5@npm:^7.0.0": + version: 7.1.2 + resolution: "hast-util-from-parse5@npm:7.1.2" + dependencies: + "@types/hast": ^2.0.0 + "@types/unist": ^2.0.0 + hastscript: ^7.0.0 + property-information: ^6.0.0 + vfile: ^5.0.0 + vfile-location: ^4.0.0 + web-namespaces: ^2.0.0 + checksum: 7b4ed5b508b1352127c6719f7b0c0880190cf9859fe54ccaf7c9228ecf623d36cef3097910b3874d2fe1aac6bf4cf45d3cc2303daac3135a05e9ade6534ddddb + languageName: node + linkType: hard + +"hast-util-parse-selector@npm:^3.0.0": + version: 3.1.1 + resolution: "hast-util-parse-selector@npm:3.1.1" + dependencies: + "@types/hast": ^2.0.0 + checksum: 511d373465f60dd65e924f88bf0954085f4fb6e3a2b062a4b5ac43b93cbfd36a8dce6234b5d1e3e63499d936375687e83fc5da55628b22bd6b581b5ee167d1c4 + languageName: node + linkType: hard + +"hast-util-raw@npm:^7.2.0": + version: 7.2.3 + resolution: "hast-util-raw@npm:7.2.3" + dependencies: + "@types/hast": ^2.0.0 + "@types/parse5": ^6.0.0 + hast-util-from-parse5: ^7.0.0 + hast-util-to-parse5: ^7.0.0 + html-void-elements: ^2.0.0 + parse5: ^6.0.0 + unist-util-position: ^4.0.0 + unist-util-visit: ^4.0.0 + vfile: ^5.0.0 + web-namespaces: ^2.0.0 + zwitch: ^2.0.0 + checksum: 21857eea3ffb8fd92d2d9be7793b56d0b2c40db03c4cfa14828855ae41d7c584917aa83efb7157220b2e41e25e95f81f24679ac342c35145e5f1c1d39015f81f + languageName: node + linkType: hard + +"hast-util-to-parse5@npm:^7.0.0": + version: 7.1.0 + resolution: "hast-util-to-parse5@npm:7.1.0" + dependencies: + "@types/hast": ^2.0.0 + comma-separated-tokens: ^2.0.0 + property-information: ^6.0.0 + space-separated-tokens: ^2.0.0 + web-namespaces: ^2.0.0 + zwitch: ^2.0.0 + checksum: 3a7f2175a3db599bbae7e49ba73d3e5e688e5efca7590ff50130ba108ad649f728402815d47db49146f6b94c14c934bf119915da9f6964e38802c122bcc8af6b + languageName: node + linkType: hard + +"hast-util-whitespace@npm:^2.0.0": + version: 2.0.1 + resolution: "hast-util-whitespace@npm:2.0.1" + checksum: 431be6b2f35472f951615540d7a53f69f39461e5e080c0190268bdeb2be9ab9b1dddfd1f467dd26c1de7e7952df67beb1307b6ee940baf78b24a71b5e0663868 + languageName: node + linkType: hard + +"hastscript@npm:^7.0.0": + version: 7.2.0 + resolution: "hastscript@npm:7.2.0" + dependencies: + "@types/hast": ^2.0.0 + comma-separated-tokens: ^2.0.0 + hast-util-parse-selector: ^3.0.0 + property-information: ^6.0.0 + space-separated-tokens: ^2.0.0 + checksum: 928a21576ff7b9a8c945e7940bcbf2d27f770edb4279d4d04b33dc90753e26ca35c1172d626f54afebd377b2afa32331e399feb3eb0f7b91a399dca5927078ae + languageName: node + linkType: hard + +"header-case@npm:^2.0.4": + version: 2.0.4 + resolution: "header-case@npm:2.0.4" + dependencies: + capital-case: ^1.0.4 + tslib: ^2.0.3 + checksum: 571c83eeb25e8130d172218712f807c0b96d62b020981400bccc1503a7cf14b09b8b10498a962d2739eccf231d950e3848ba7d420b58a6acd2f9283439546cd9 + languageName: node + linkType: hard + +"highlight.js@npm:11.7.0": + version: 11.7.0 + resolution: "highlight.js@npm:11.7.0" + checksum: 19e3fb8b56f4b361b057a8523b989dfeb6479bbd1e29cec3fac6fa5c78d09927d5fa61b7dba6631fdb57cfdca9b3084aa4da49405ceaf4a67f67beae2ed5b77d + languageName: node + linkType: hard + +"hoist-non-react-statics@npm:^3.0.0, hoist-non-react-statics@npm:^3.2.0, hoist-non-react-statics@npm:^3.3.0, hoist-non-react-statics@npm:^3.3.1, hoist-non-react-statics@npm:^3.3.2": + version: 3.3.2 + resolution: "hoist-non-react-statics@npm:3.3.2" + dependencies: + react-is: ^16.7.0 + checksum: b1538270429b13901ee586aa44f4cc3ecd8831c061d06cb8322e50ea17b3f5ce4d0e2e66394761e6c8e152cd8c34fb3b4b690116c6ce2bd45b18c746516cb9e8 + languageName: node + linkType: hard + +"honorable-recipe-mapper@npm:0.2.0": + version: 0.2.0 + resolution: "honorable-recipe-mapper@npm:0.2.0" + checksum: 86521c78ff616ceb76685a1117e90991670f789cb1e9efaed1963295b170ba1bcdeed2998408433e79c94315f1ba0cb9896272f2e2fb5e8495f06b8f715b351b + languageName: node + linkType: hard + +"honorable-theme-default@npm:0.77.0": + version: 0.77.0 + resolution: "honorable-theme-default@npm:0.77.0" + peerDependencies: + "@emotion/react": ">=10.0.0" + checksum: 008e34e25ff4e7d56e67d52296b495fa28caaacea67eb6e18b28e0283a71099fee647dbe43e0996e93472217fe9ed94d77e0bd1c73dc9c4a5ec205528790f328 + languageName: node + linkType: hard + +"honorable@npm:0.194.0": + version: 0.194.0 + resolution: "honorable@npm:0.194.0" + dependencies: + "@emotion/is-prop-valid": ^1.2.0 + "@floating-ui/react-dom": ^1.0.1 + lodash.merge: ^4.6.2 + lodash.mergewith: ^4.6.2 + prop-types: ^15.8.1 + react-textarea-autosize: ^8.4.0 + react-transition-group: ^4.4.5 + peerDependencies: + "@emotion/react": ">=10.0.0" + "@emotion/styled": ">=10.0.0" + react: ">=16.0.0" + react-dom: ">=16.0.0" + checksum: 4ada627c577ad63de48bbf7d76ee6d3c9f36a7b0e01606988d9f975cbacb9beb644626ed6a5e20f65554bf0ac72ab046503168be58d10249e58c26fbf997d174 + languageName: node + linkType: hard + +"html-void-elements@npm:^2.0.0": + version: 2.0.1 + resolution: "html-void-elements@npm:2.0.1" + checksum: 06d41f13b9d5d6e0f39861c4bec9a9196fa4906d56cd5cf6cf54ad2e52a85bf960cca2bf9600026bde16c8331db171bedba5e5a35e2e43630c8f1d497b2fb658 + languageName: node + linkType: hard + +"http-cache-semantics@npm:^4.1.0": + version: 4.1.1 + resolution: "http-cache-semantics@npm:4.1.1" + checksum: 83ac0bc60b17a3a36f9953e7be55e5c8f41acc61b22583060e8dedc9dd5e3607c823a88d0926f9150e571f90946835c7fe150732801010845c72cd8bbff1a236 + languageName: node + linkType: hard + +"http-proxy-agent@npm:^5.0.0": + version: 5.0.0 + resolution: "http-proxy-agent@npm:5.0.0" + dependencies: + "@tootallnate/once": 2 + agent-base: 6 + debug: 4 + checksum: e2ee1ff1656a131953839b2a19cd1f3a52d97c25ba87bd2559af6ae87114abf60971e498021f9b73f9fd78aea8876d1fb0d4656aac8a03c6caa9fc175f22b786 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^5.0.0": + version: 5.0.1 + resolution: "https-proxy-agent@npm:5.0.1" + dependencies: + agent-base: 6 + debug: 4 + checksum: 571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765 + languageName: node + linkType: hard + +"humanize-ms@npm:^1.2.1": + version: 1.2.1 + resolution: "humanize-ms@npm:1.2.1" + dependencies: + ms: ^2.0.0 + checksum: 9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 + languageName: node + linkType: hard + +"iconv-lite@npm:^0.4.24": + version: 0.4.24 + resolution: "iconv-lite@npm:0.4.24" + dependencies: + safer-buffer: ">= 2.1.2 < 3" + checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6 + languageName: node + linkType: hard + +"iconv-lite@npm:^0.6.2": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: ">= 2.1.2 < 3.0.0" + checksum: 3f60d47a5c8fc3313317edfd29a00a692cc87a19cac0159e2ce711d0ebc9019064108323b5e493625e25594f11c6236647d8e256fbe7a58f4a3b33b89e6d30bf + languageName: node + linkType: hard + +"ieee754@npm:^1.1.13": + version: 1.2.1 + resolution: "ieee754@npm:1.2.1" + checksum: 5144c0c9815e54ada181d80a0b810221a253562422e7c6c3a60b1901154184f49326ec239d618c416c1c5945a2e197107aee8d986a3dd836b53dffefd99b5e7e + languageName: node + linkType: hard + +"ignore@npm:^5.2.0": + version: 5.2.4 + resolution: "ignore@npm:5.2.4" + checksum: 3d4c309c6006e2621659311783eaea7ebcd41fe4ca1d78c91c473157ad6666a57a2df790fe0d07a12300d9aac2888204d7be8d59f9aaf665b1c7fcdb432517ef + languageName: node + linkType: hard + +"immer@npm:9.0.19": + version: 9.0.19 + resolution: "immer@npm:9.0.19" + checksum: f02ee53989989c287cd548a3d817fccf0bfe56db919755ee94a72ea3ae78a00363fba93ee6c010fe54a664380c29c53d44ed4091c6a86cae60957ad2cfabc010 + languageName: node + linkType: hard + +"immutable@npm:~3.7.6": + version: 3.7.6 + resolution: "immutable@npm:3.7.6" + checksum: 8cccfb22d3ecf14fe0c474612e96d6bb5d117493e7639fe6642fb81e78c9ac4b698dd8a322c105001a709ad873ffc90e30bad7db5d9a3ef0b54a6e1db0258e8e + languageName: node + linkType: hard + +"import-fresh@npm:^3.0.0, import-fresh@npm:^3.2.1": + version: 3.3.0 + resolution: "import-fresh@npm:3.3.0" + dependencies: + parent-module: ^1.0.0 + resolve-from: ^4.0.0 + checksum: 2cacfad06e652b1edc50be650f7ec3be08c5e5a6f6d12d035c440a42a8cc028e60a5b99ca08a77ab4d6b1346da7d971915828f33cdab730d3d42f08242d09baa + languageName: node + linkType: hard + +"import-from@npm:4.0.0": + version: 4.0.0 + resolution: "import-from@npm:4.0.0" + checksum: 1fa29c05b048da18914e91d9a529e5d9b91774bebbfab10e53f59bcc1667917672b971cf102fee857f142e5e433ce69fa1f0a596e1c7d82f9947a5ec352694b9 + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 7cae75c8cd9a50f57dadd77482359f659eaebac0319dd9368bcd1714f55e65badd6929ca58569da2b6494ef13fdd5598cd700b1eba23f8b79c5f19d195a3ecf7 + languageName: node + linkType: hard + +"indent-string@npm:^4.0.0": + version: 4.0.0 + resolution: "indent-string@npm:4.0.0" + checksum: 824cfb9929d031dabf059bebfe08cf3137365e112019086ed3dcff6a0a7b698cb80cf67ccccde0e25b9e2d7527aa6cc1fed1ac490c752162496caba3e6699612 + languageName: node + linkType: hard + +"infer-owner@npm:^1.0.4": + version: 1.0.4 + resolution: "infer-owner@npm:1.0.4" + checksum: 181e732764e4a0611576466b4b87dac338972b839920b2a8cde43642e4ed6bd54dc1fb0b40874728f2a2df9a1b097b8ff83b56d5f8f8e3927f837fdcb47d8a89 + languageName: node + linkType: hard + +"inflight@npm:^1.0.4": + version: 1.0.6 + resolution: "inflight@npm:1.0.6" + dependencies: + once: ^1.3.0 + wrappy: 1 + checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd + languageName: node + linkType: hard + +"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:^2.0.4": + version: 2.0.4 + resolution: "inherits@npm:2.0.4" + checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 + languageName: node + linkType: hard + +"inline-style-parser@npm:0.1.1": + version: 0.1.1 + resolution: "inline-style-parser@npm:0.1.1" + checksum: 5d545056a3e1f2bf864c928a886a0e1656a3517127d36917b973de581bd54adc91b4bf1febcb0da054f204b4934763f1a4e09308b4d55002327cf1d48ac5d966 + languageName: node + linkType: hard + +"inquirer@npm:^8.0.0": + version: 8.2.5 + resolution: "inquirer@npm:8.2.5" + dependencies: + ansi-escapes: ^4.2.1 + chalk: ^4.1.1 + cli-cursor: ^3.1.0 + cli-width: ^3.0.0 + external-editor: ^3.0.3 + figures: ^3.0.0 + lodash: ^4.17.21 + mute-stream: 0.0.8 + ora: ^5.4.1 + run-async: ^2.4.0 + rxjs: ^7.5.5 + string-width: ^4.1.0 + strip-ansi: ^6.0.0 + through: ^2.3.6 + wrap-ansi: ^7.0.0 + checksum: f13ee4c444187786fb393609dedf6b30870115a57b603f2e6424f29a99abc13446fd45ee22461c33c9c40a92a60a8df62d0d6b25d74fc6676fa4cb211de55b55 + languageName: node + linkType: hard + +"internal-slot@npm:^1.0.3, internal-slot@npm:^1.0.4, internal-slot@npm:^1.0.5": + version: 1.0.5 + resolution: "internal-slot@npm:1.0.5" + dependencies: + get-intrinsic: ^1.2.0 + has: ^1.0.3 + side-channel: ^1.0.4 + checksum: 97e84046bf9e7574d0956bd98d7162313ce7057883b6db6c5c7b5e5f05688864b0978ba07610c726d15d66544ffe4b1050107d93f8a39ebc59b15d8b429b497a + languageName: node + linkType: hard + +"intl-messageformat@npm:^10.1.0": + version: 10.3.3 + resolution: "intl-messageformat@npm:10.3.3" + dependencies: + "@formatjs/ecma402-abstract": 1.14.3 + "@formatjs/fast-memoize": 2.0.1 + "@formatjs/icu-messageformat-parser": 2.3.0 + tslib: ^2.4.0 + checksum: 05baee05d31b911dc4bb1774ddf0799dc136723203461f73fecb185e2e2d18b148311db7ef14294d664a6212311c5d9116c3e850cf609dd6348e347f3d07e660 + languageName: node + linkType: hard + +"invariant@npm:^2.2.4": + version: 2.2.4 + resolution: "invariant@npm:2.2.4" + dependencies: + loose-envify: ^1.0.0 + checksum: cc3182d793aad82a8d1f0af697b462939cb46066ec48bbf1707c150ad5fad6406137e91a262022c269702e01621f35ef60269f6c0d7fd178487959809acdfb14 + languageName: node + linkType: hard + +"ip@npm:^2.0.0": + version: 2.0.0 + resolution: "ip@npm:2.0.0" + checksum: cfcfac6b873b701996d71ec82a7dd27ba92450afdb421e356f44044ed688df04567344c36cbacea7d01b1c39a4c732dc012570ebe9bebfb06f27314bca625349 + languageName: node + linkType: hard + +"is-absolute@npm:^1.0.0": + version: 1.0.0 + resolution: "is-absolute@npm:1.0.0" + dependencies: + is-relative: ^1.0.0 + is-windows: ^1.0.1 + checksum: 9d16b2605eda3f3ce755410f1d423e327ad3a898bcb86c9354cf63970ed3f91ba85e9828aa56f5d6a952b9fae43d0477770f78d37409ae8ecc31e59ebc279b27 + languageName: node + linkType: hard + +"is-arguments@npm:^1.1.1": + version: 1.1.1 + resolution: "is-arguments@npm:1.1.1" + dependencies: + call-bind: ^1.0.2 + has-tostringtag: ^1.0.0 + checksum: 7f02700ec2171b691ef3e4d0e3e6c0ba408e8434368504bb593d0d7c891c0dbfda6d19d30808b904a6cb1929bca648c061ba438c39f296c2a8ca083229c49f27 + languageName: node + linkType: hard + +"is-array-buffer@npm:^3.0.1, is-array-buffer@npm:^3.0.2": + version: 3.0.2 + resolution: "is-array-buffer@npm:3.0.2" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.2.0 + is-typed-array: ^1.1.10 + checksum: dcac9dda66ff17df9cabdc58214172bf41082f956eab30bb0d86bc0fab1e44b690fc8e1f855cf2481245caf4e8a5a006a982a71ddccec84032ed41f9d8da8c14 + languageName: node + linkType: hard + +"is-arrayish@npm:^0.2.1": + version: 0.2.1 + resolution: "is-arrayish@npm:0.2.1" + checksum: eef4417e3c10e60e2c810b6084942b3ead455af16c4509959a27e490e7aee87cfb3f38e01bbde92220b528a0ee1a18d52b787e1458ee86174d8c7f0e58cd488f + languageName: node + linkType: hard + +"is-bigint@npm:^1.0.1": + version: 1.0.4 + resolution: "is-bigint@npm:1.0.4" + dependencies: + has-bigints: ^1.0.1 + checksum: c56edfe09b1154f8668e53ebe8252b6f185ee852a50f9b41e8d921cb2bed425652049fbe438723f6cb48a63ca1aa051e948e7e401e093477c99c84eba244f666 + languageName: node + linkType: hard + +"is-boolean-object@npm:^1.1.0": + version: 1.1.2 + resolution: "is-boolean-object@npm:1.1.2" + dependencies: + call-bind: ^1.0.2 + has-tostringtag: ^1.0.0 + checksum: c03b23dbaacadc18940defb12c1c0e3aaece7553ef58b162a0f6bba0c2a7e1551b59f365b91e00d2dbac0522392d576ef322628cb1d036a0fe51eb466db67222 + languageName: node + linkType: hard + +"is-buffer@npm:^2.0.0": + version: 2.0.5 + resolution: "is-buffer@npm:2.0.5" + checksum: 764c9ad8b523a9f5a32af29bdf772b08eb48c04d2ad0a7240916ac2688c983bf5f8504bf25b35e66240edeb9d9085461f9b5dae1f3d2861c6b06a65fe983de42 + languageName: node + linkType: hard + +"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": + version: 1.2.7 + resolution: "is-callable@npm:1.2.7" + checksum: 61fd57d03b0d984e2ed3720fb1c7a897827ea174bd44402878e059542ea8c4aeedee0ea0985998aa5cc2736b2fa6e271c08587addb5b3959ac52cf665173d1ac + languageName: node + linkType: hard + +"is-core-module@npm:^2.11.0, is-core-module@npm:^2.9.0": + version: 2.11.0 + resolution: "is-core-module@npm:2.11.0" + dependencies: + has: ^1.0.3 + checksum: f96fd490c6b48eb4f6d10ba815c6ef13f410b0ba6f7eb8577af51697de523e5f2cd9de1c441b51d27251bf0e4aebc936545e33a5d26d5d51f28d25698d4a8bab + languageName: node + linkType: hard + +"is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5": + version: 1.0.5 + resolution: "is-date-object@npm:1.0.5" + dependencies: + has-tostringtag: ^1.0.0 + checksum: baa9077cdf15eb7b58c79398604ca57379b2fc4cf9aa7a9b9e295278648f628c9b201400c01c5e0f7afae56507d741185730307cbe7cad3b9f90a77e5ee342fc + languageName: node + linkType: hard + +"is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: 44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 + languageName: node + linkType: hard + +"is-glob@npm:4.0.3, is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" + dependencies: + is-extglob: ^2.1.1 + checksum: d381c1319fcb69d341cc6e6c7cd588e17cd94722d9a32dbd60660b993c4fb7d0f19438674e68dfec686d09b7c73139c9166b47597f846af387450224a8101ab4 + languageName: node + linkType: hard + +"is-interactive@npm:^1.0.0": + version: 1.0.0 + resolution: "is-interactive@npm:1.0.0" + checksum: 824808776e2d468b2916cdd6c16acacebce060d844c35ca6d82267da692e92c3a16fdba624c50b54a63f38bdc4016055b6f443ce57d7147240de4f8cdabaf6f9 + languageName: node + linkType: hard + +"is-lambda@npm:^1.0.1": + version: 1.0.1 + resolution: "is-lambda@npm:1.0.1" + checksum: 93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 + languageName: node + linkType: hard + +"is-lower-case@npm:^2.0.2": + version: 2.0.2 + resolution: "is-lower-case@npm:2.0.2" + dependencies: + tslib: ^2.0.3 + checksum: ba57dd1201e15fd9b590654736afccf1b3b68e919f40c23ef13b00ebcc639b1d9c2f81fe86415bff3e8eccffec459786c9ac9dc8f3a19cfa4484206c411c1d7d + languageName: node + linkType: hard + +"is-map@npm:^2.0.1, is-map@npm:^2.0.2": + version: 2.0.2 + resolution: "is-map@npm:2.0.2" + checksum: ace3d0ecd667bbdefdb1852de601268f67f2db725624b1958f279316e13fecb8fa7df91fd60f690d7417b4ec180712f5a7ee967008e27c65cfd475cc84337728 + languageName: node + linkType: hard + +"is-negative-zero@npm:^2.0.2": + version: 2.0.2 + resolution: "is-negative-zero@npm:2.0.2" + checksum: f3232194c47a549da60c3d509c9a09be442507616b69454716692e37ae9f37c4dea264fb208ad0c9f3efd15a796a46b79df07c7e53c6227c32170608b809149a + languageName: node + linkType: hard + +"is-number-object@npm:^1.0.4": + version: 1.0.7 + resolution: "is-number-object@npm:1.0.7" + dependencies: + has-tostringtag: ^1.0.0 + checksum: d1e8d01bb0a7134c74649c4e62da0c6118a0bfc6771ea3c560914d52a627873e6920dd0fd0ebc0e12ad2ff4687eac4c308f7e80320b973b2c8a2c8f97a7524f7 + languageName: node + linkType: hard + +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: 456ac6f8e0f3111ed34668a624e45315201dff921e5ac181f8ec24923b99e9f32ca1a194912dc79d539c97d33dba17dc635202ff0b2cf98326f608323276d27a + languageName: node + linkType: hard + +"is-path-inside@npm:^3.0.3": + version: 3.0.3 + resolution: "is-path-inside@npm:3.0.3" + checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 + languageName: node + linkType: hard + +"is-plain-obj@npm:^4.0.0": + version: 4.1.0 + resolution: "is-plain-obj@npm:4.1.0" + checksum: 6dc45da70d04a81f35c9310971e78a6a3c7a63547ef782e3a07ee3674695081b6ca4e977fbb8efc48dae3375e0b34558d2bcd722aec9bddfa2d7db5b041be8ce + languageName: node + linkType: hard + +"is-regex@npm:^1.1.4": + version: 1.1.4 + resolution: "is-regex@npm:1.1.4" + dependencies: + call-bind: ^1.0.2 + has-tostringtag: ^1.0.0 + checksum: 362399b33535bc8f386d96c45c9feb04cf7f8b41c182f54174c1a45c9abbbe5e31290bbad09a458583ff6bf3b2048672cdb1881b13289569a7c548370856a652 + languageName: node + linkType: hard + +"is-relative@npm:^1.0.0": + version: 1.0.0 + resolution: "is-relative@npm:1.0.0" + dependencies: + is-unc-path: ^1.0.0 + checksum: 3271a0df109302ef5e14a29dcd5d23d9788e15ade91a40b942b035827ffbb59f7ce9ff82d036ea798541a52913cbf9d2d0b66456340887b51f3542d57b5a4c05 + languageName: node + linkType: hard + +"is-set@npm:^2.0.1, is-set@npm:^2.0.2": + version: 2.0.2 + resolution: "is-set@npm:2.0.2" + checksum: b64343faf45e9387b97a6fd32be632ee7b269bd8183701f3b3f5b71a7cf00d04450ed8669d0bd08753e08b968beda96fca73a10fd0ff56a32603f64deba55a57 + languageName: node + linkType: hard + +"is-shared-array-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "is-shared-array-buffer@npm:1.0.2" + dependencies: + call-bind: ^1.0.2 + checksum: 9508929cf14fdc1afc9d61d723c6e8d34f5e117f0bffda4d97e7a5d88c3a8681f633a74f8e3ad1fe92d5113f9b921dc5ca44356492079612f9a247efbce7032a + languageName: node + linkType: hard + +"is-string@npm:^1.0.5, is-string@npm:^1.0.7": + version: 1.0.7 + resolution: "is-string@npm:1.0.7" + dependencies: + has-tostringtag: ^1.0.0 + checksum: 323b3d04622f78d45077cf89aab783b2f49d24dc641aa89b5ad1a72114cfeff2585efc8c12ef42466dff32bde93d839ad321b26884cf75e5a7892a938b089989 + languageName: node + linkType: hard + +"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": + version: 1.0.4 + resolution: "is-symbol@npm:1.0.4" + dependencies: + has-symbols: ^1.0.2 + checksum: 92805812ef590738d9de49d677cd17dfd486794773fb6fa0032d16452af46e9b91bb43ffe82c983570f015b37136f4b53b28b8523bfb10b0ece7a66c31a54510 + languageName: node + linkType: hard + +"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.9": + version: 1.1.10 + resolution: "is-typed-array@npm:1.1.10" + dependencies: + available-typed-arrays: ^1.0.5 + call-bind: ^1.0.2 + for-each: ^0.3.3 + gopd: ^1.0.1 + has-tostringtag: ^1.0.0 + checksum: aac6ecb59d4c56a1cdeb69b1f129154ef462bbffe434cb8a8235ca89b42f258b7ae94073c41b3cb7bce37f6a1733ad4499f07882d5d5093a7ba84dfc4ebb8017 + languageName: node + linkType: hard + +"is-unc-path@npm:^1.0.0": + version: 1.0.0 + resolution: "is-unc-path@npm:1.0.0" + dependencies: + unc-path-regex: ^0.1.2 + checksum: e8abfde203f7409f5b03a5f1f8636e3a41e78b983702ef49d9343eb608cdfe691429398e8815157519b987b739bcfbc73ae7cf4c8582b0ab66add5171088eab6 + languageName: node + linkType: hard + +"is-unicode-supported@npm:^0.1.0": + version: 0.1.0 + resolution: "is-unicode-supported@npm:0.1.0" + checksum: a2aab86ee7712f5c2f999180daaba5f361bdad1efadc9610ff5b8ab5495b86e4f627839d085c6530363c6d6d4ecbde340fb8e54bdb83da4ba8e0865ed5513c52 + languageName: node + linkType: hard + +"is-upper-case@npm:^2.0.2": + version: 2.0.2 + resolution: "is-upper-case@npm:2.0.2" + dependencies: + tslib: ^2.0.3 + checksum: cf4fd43c00c2e72cd5cff911923070b89f0933b464941bd782e2315385f80b5a5acd772db3b796542e5e3cfed735f4dffd88c54d62db1ebfc5c3daa7b1af2bc6 + languageName: node + linkType: hard + +"is-weakmap@npm:^2.0.1": + version: 2.0.1 + resolution: "is-weakmap@npm:2.0.1" + checksum: 1222bb7e90c32bdb949226e66d26cb7bce12e1e28e3e1b40bfa6b390ba3e08192a8664a703dff2a00a84825f4e022f9cd58c4599ff9981ab72b1d69479f4f7f6 + languageName: node + linkType: hard + +"is-weakref@npm:^1.0.2": + version: 1.0.2 + resolution: "is-weakref@npm:1.0.2" + dependencies: + call-bind: ^1.0.2 + checksum: 95bd9a57cdcb58c63b1c401c60a474b0f45b94719c30f548c891860f051bc2231575c290a6b420c6bc6e7ed99459d424c652bd5bf9a1d5259505dc35b4bf83de + languageName: node + linkType: hard + +"is-weakset@npm:^2.0.1": + version: 2.0.2 + resolution: "is-weakset@npm:2.0.2" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.1.1 + checksum: 5d8698d1fa599a0635d7ca85be9c26d547b317ed8fd83fc75f03efbe75d50001b5eececb1e9971de85fcde84f69ae6f8346bc92d20d55d46201d328e4c74a367 + languageName: node + linkType: hard + +"is-windows@npm:^1.0.1": + version: 1.0.2 + resolution: "is-windows@npm:1.0.2" + checksum: 438b7e52656fe3b9b293b180defb4e448088e7023a523ec21a91a80b9ff8cdb3377ddb5b6e60f7c7de4fa8b63ab56e121b6705fe081b3cf1b828b0a380009ad7 + languageName: node + linkType: hard + +"isarray@npm:^2.0.5": + version: 2.0.5 + resolution: "isarray@npm:2.0.5" + checksum: bd5bbe4104438c4196ba58a54650116007fa0262eccef13a4c55b2e09a5b36b59f1e75b9fcc49883dd9d4953892e6fc007eef9e9155648ceea036e184b0f930a + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62 + languageName: node + linkType: hard + +"isomorphic-fetch@npm:^3.0.0": + version: 3.0.0 + resolution: "isomorphic-fetch@npm:3.0.0" + dependencies: + node-fetch: ^2.6.1 + whatwg-fetch: ^3.4.1 + checksum: e5ab79a56ce5af6ddd21265f59312ad9a4bc5a72cebc98b54797b42cb30441d5c5f8d17c5cd84a99e18101c8af6f90c081ecb8d12fd79e332be1778d58486d75 + languageName: node + linkType: hard + +"isomorphic-ws@npm:5.0.0, isomorphic-ws@npm:^5.0.0": + version: 5.0.0 + resolution: "isomorphic-ws@npm:5.0.0" + peerDependencies: + ws: "*" + checksum: e20eb2aee09ba96247465fda40c6d22c1153394c0144fa34fe6609f341af4c8c564f60ea3ba762335a7a9c306809349f9b863c8beedf2beea09b299834ad5398 + languageName: node + linkType: hard + +"iterall@npm:^1.2.2": + version: 1.3.0 + resolution: "iterall@npm:1.3.0" + checksum: c78b99678f8c99be488cca7f33e4acca9b72c1326e050afbaf023f086e55619ee466af0464af94a0cb3f292e60cb5bac53a8fd86bd4249ecad26e09f17bb158b + languageName: node + linkType: hard + +"jiti@npm:1.17.1": + version: 1.17.1 + resolution: "jiti@npm:1.17.1" + bin: + jiti: bin/jiti.js + checksum: 56c6d8488e7e9cc6ee66a0f0d5e18db6669cb12b2e93364f393442289a9bc75a8e8c796249f59015e01c3ebdf9478e2ca8b76c30e29072c678ee00d39de757c7 + languageName: node + linkType: hard + +"jiti@npm:^1.17.1": + version: 1.18.2 + resolution: "jiti@npm:1.18.2" + bin: + jiti: bin/jiti.js + checksum: 46c41cd82d01c6efdee3fc0ae9b3e86ed37457192d6366f19157d863d64961b07982ab04e9d5879576a1af99cc4d132b0b73b336094f86a5ce9fb1029ec2d29f + languageName: node + linkType: hard + +"jose@npm:^4.11.4": + version: 4.13.1 + resolution: "jose@npm:4.13.1" + checksum: 89be959573beee69bd443493887d78799fd42340b45afa2c6681beda30314bcdfa5575f6977203c199e4c3e0ec2fc18d3c94745e7f0d59db51dedfae0efee63d + languageName: node + linkType: hard + +"js-sdsl@npm:^4.1.4": + version: 4.3.0 + resolution: "js-sdsl@npm:4.3.0" + checksum: ce908257cf6909e213af580af3a691a736f5ee8b16315454768f917a682a4ea0c11bde1b241bbfaecedc0eb67b72101b2c2df2ffaed32aed5d539fca816f054e + languageName: node + linkType: hard + +"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78 + languageName: node + linkType: hard + +"js-yaml@npm:^4.0.0, js-yaml@npm:^4.1.0": + version: 4.1.0 + resolution: "js-yaml@npm:4.1.0" + dependencies: + argparse: ^2.0.1 + bin: + js-yaml: bin/js-yaml.js + checksum: c7830dfd456c3ef2c6e355cc5a92e6700ceafa1d14bba54497b34a99f0376cecbb3e9ac14d3e5849b426d5a5140709a66237a8c991c675431271c4ce5504151a + languageName: node + linkType: hard + +"jsesc@npm:^2.5.1": + version: 2.5.2 + resolution: "jsesc@npm:2.5.2" + bin: + jsesc: bin/jsesc + checksum: 4dc190771129e12023f729ce20e1e0bfceac84d73a85bc3119f7f938843fe25a4aeccb54b6494dce26fcf263d815f5f31acdefac7cc9329efb8422a4f4d9fa9d + languageName: node + linkType: hard + +"jsesc@npm:~0.5.0": + version: 0.5.0 + resolution: "jsesc@npm:0.5.0" + bin: + jsesc: bin/jsesc + checksum: b8b44cbfc92f198ad972fba706ee6a1dfa7485321ee8c0b25f5cedd538dcb20cde3197de16a7265430fce8277a12db066219369e3d51055038946039f6e20e17 + languageName: node + linkType: hard + +"json-parse-even-better-errors@npm:^2.3.0": + version: 2.3.1 + resolution: "json-parse-even-better-errors@npm:2.3.1" + checksum: 798ed4cf3354a2d9ccd78e86d2169515a0097a5c133337807cdf7f1fc32e1391d207ccfc276518cc1d7d8d4db93288b8a50ba4293d212ad1336e52a8ec0a941f + languageName: node + linkType: hard + +"json-schema-traverse@npm:^0.4.1": + version: 0.4.1 + resolution: "json-schema-traverse@npm:0.4.1" + checksum: 7486074d3ba247769fda17d5181b345c9fb7d12e0da98b22d1d71a5db9698d8b4bd900a3ec1a4ffdd60846fc2556274a5c894d0c48795f14cb03aeae7b55260b + languageName: node + linkType: hard + +"json-stable-stringify-without-jsonify@npm:^1.0.1": + version: 1.0.1 + resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" + checksum: cff44156ddce9c67c44386ad5cddf91925fe06b1d217f2da9c4910d01f358c6e3989c4d5a02683c7a5667f9727ff05831f7aa8ae66c8ff691c556f0884d49215 + languageName: node + linkType: hard + +"json-stable-stringify@npm:^1.0.1": + version: 1.0.2 + resolution: "json-stable-stringify@npm:1.0.2" + dependencies: + jsonify: ^0.0.1 + checksum: ec10863493fb728481ed7576551382768a173d5b884758db530def00523b862083a3fd70fee24b39e2f47f5f502e22f9a1489dd66da3535b63bf6241dbfca800 + languageName: node + linkType: hard + +"json-to-pretty-yaml@npm:^1.2.2": + version: 1.2.2 + resolution: "json-to-pretty-yaml@npm:1.2.2" + dependencies: + remedial: ^1.0.7 + remove-trailing-spaces: ^1.0.6 + checksum: 4b78480f426e176e5fdac073e05877683bb026f1175deb52d0941b992f9c91a58a812c020f00aa67ba1fc7cadb220539a264146f222e48a48c8bb2a0931cac9b + languageName: node + linkType: hard + +"json5@npm:^1.0.2": + version: 1.0.2 + resolution: "json5@npm:1.0.2" + dependencies: + minimist: ^1.2.0 + bin: + json5: lib/cli.js + checksum: 866458a8c58a95a49bef3adba929c625e82532bcff1fe93f01d29cb02cac7c3fe1f4b79951b7792c2da9de0b32871a8401a6e3c5b36778ad852bf5b8a61165d7 + languageName: node + linkType: hard + +"json5@npm:^2.2.2": + version: 2.2.3 + resolution: "json5@npm:2.2.3" + bin: + json5: lib/cli.js + checksum: 2a7436a93393830bce797d4626275152e37e877b265e94ca69c99e3d20c2b9dab021279146a39cdb700e71b2dd32a4cebd1514cd57cee102b1af906ce5040349 + languageName: node + linkType: hard + +"jsonify@npm:^0.0.1": + version: 0.0.1 + resolution: "jsonify@npm:0.0.1" + checksum: 027287e1c0294fce15f18c0ff990cfc2318e7f01fb76515f784d5cd0784abfec6fc5c2355c3a2f2cb0ad7f4aa2f5b74ebbfe4e80476c35b2d13cabdb572e1134 + languageName: node + linkType: hard + +"jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.3": + version: 3.3.3 + resolution: "jsx-ast-utils@npm:3.3.3" + dependencies: + array-includes: ^3.1.5 + object.assign: ^4.1.3 + checksum: a2ed78cac49a0f0c4be8b1eafe3c5257a1411341d8e7f1ac740debae003de04e5f6372bfcfbd9d082e954ffd99aac85bcda85b7c6bc11609992483f4cdc0f745 + languageName: node + linkType: hard + +"kleur@npm:^4.0.3": + version: 4.1.5 + resolution: "kleur@npm:4.1.5" + checksum: 1dc476e32741acf0b1b5b0627ffd0d722e342c1b0da14de3e8ae97821327ca08f9fb944542fb3c126d90ac5f27f9d804edbe7c585bf7d12ef495d115e0f22c12 + languageName: node + linkType: hard + +"language-subtag-registry@npm:~0.3.2": + version: 0.3.22 + resolution: "language-subtag-registry@npm:0.3.22" + checksum: 8ab70a7e0e055fe977ac16ea4c261faec7205ac43db5e806f72e5b59606939a3b972c4bd1e10e323b35d6ffa97c3e1c4c99f6553069dad2dfdd22020fa3eb56a + languageName: node + linkType: hard + +"language-tags@npm:=1.0.5": + version: 1.0.5 + resolution: "language-tags@npm:1.0.5" + dependencies: + language-subtag-registry: ~0.3.2 + checksum: c81b5d8b9f5f9cfd06ee71ada6ddfe1cf83044dd5eeefcd1e420ad491944da8957688db4a0a9bc562df4afdc2783425cbbdfd152c01d93179cf86888903123cf + languageName: node + linkType: hard + +"levn@npm:^0.4.1": + version: 0.4.1 + resolution: "levn@npm:0.4.1" + dependencies: + prelude-ls: ^1.2.1 + type-check: ~0.4.0 + checksum: 12c5021c859bd0f5248561bf139121f0358285ec545ebf48bb3d346820d5c61a4309535c7f387ed7d84361cf821e124ce346c6b7cef8ee09a67c1473b46d0fc4 + languageName: node + linkType: hard + +"lines-and-columns@npm:^1.1.6": + version: 1.2.4 + resolution: "lines-and-columns@npm:1.2.4" + checksum: 0c37f9f7fa212b38912b7145e1cd16a5f3cd34d782441c3e6ca653485d326f58b3caccda66efce1c5812bde4961bbde3374fae4b0d11bf1226152337f3894aa5 + languageName: node + linkType: hard + +"listr2@npm:^4.0.5": + version: 4.0.5 + resolution: "listr2@npm:4.0.5" + dependencies: + cli-truncate: ^2.1.0 + colorette: ^2.0.16 + log-update: ^4.0.0 + p-map: ^4.0.0 + rfdc: ^1.3.0 + rxjs: ^7.5.5 + through: ^2.3.8 + wrap-ansi: ^7.0.0 + peerDependencies: + enquirer: ">= 2.3.0 < 3" + peerDependenciesMeta: + enquirer: + optional: true + checksum: 7af31851abe25969ef0581c6db808117e36af15b131401795182427769d9824f451ba9e8aff6ccd25b6a4f6c8796f816292caf08e5f1f9b1775e8e9c313dc6c5 + languageName: node + linkType: hard + +"locate-path@npm:^5.0.0": + version: 5.0.0 + resolution: "locate-path@npm:5.0.0" + dependencies: + p-locate: ^4.1.0 + checksum: 83e51725e67517287d73e1ded92b28602e3ae5580b301fe54bfb76c0c723e3f285b19252e375712316774cf52006cb236aed5704692c32db0d5d089b69696e30 + languageName: node + linkType: hard + +"locate-path@npm:^6.0.0": + version: 6.0.0 + resolution: "locate-path@npm:6.0.0" + dependencies: + p-locate: ^5.0.0 + checksum: 72eb661788a0368c099a184c59d2fee760b3831c9c1c33955e8a19ae4a21b4116e53fa736dc086cdeb9fce9f7cc508f2f92d2d3aae516f133e16a2bb59a39f5a + languageName: node + linkType: hard + +"lodash.debounce@npm:^4.0.8": + version: 4.0.8 + resolution: "lodash.debounce@npm:4.0.8" + checksum: a3f527d22c548f43ae31c861ada88b2637eb48ac6aa3eb56e82d44917971b8aa96fbb37aa60efea674dc4ee8c42074f90f7b1f772e9db375435f6c83a19b3bc6 + languageName: node + linkType: hard + +"lodash.merge@npm:^4.6.2": + version: 4.6.2 + resolution: "lodash.merge@npm:4.6.2" + checksum: ad580b4bdbb7ca1f7abf7e1bce63a9a0b98e370cf40194b03380a46b4ed799c9573029599caebc1b14e3f24b111aef72b96674a56cfa105e0f5ac70546cdc005 + languageName: node + linkType: hard + +"lodash.mergewith@npm:^4.6.2": + version: 4.6.2 + resolution: "lodash.mergewith@npm:4.6.2" + checksum: a6db2a9339752411f21b956908c404ec1e088e783a65c8b29e30ae5b3b6384f82517662d6f425cc97c2070b546cc2c7daaa8d33f78db7b6e9be06cd834abdeb8 + languageName: node + linkType: hard + +"lodash@npm:4.17.21, lodash@npm:^4.17.11, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:~4.17.0": + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 + languageName: node + linkType: hard + +"log-symbols@npm:^4.0.0, log-symbols@npm:^4.1.0": + version: 4.1.0 + resolution: "log-symbols@npm:4.1.0" + dependencies: + chalk: ^4.1.0 + is-unicode-supported: ^0.1.0 + checksum: fce1497b3135a0198803f9f07464165e9eb83ed02ceb2273930a6f8a508951178d8cf4f0378e9d28300a2ed2bc49050995d2bd5f53ab716bb15ac84d58c6ef74 + languageName: node + linkType: hard + +"log-update@npm:^4.0.0": + version: 4.0.0 + resolution: "log-update@npm:4.0.0" + dependencies: + ansi-escapes: ^4.3.0 + cli-cursor: ^3.1.0 + slice-ansi: ^4.0.0 + wrap-ansi: ^6.2.0 + checksum: ae2f85bbabc1906034154fb7d4c4477c79b3e703d22d78adee8b3862fa913942772e7fa11713e3d96fb46de4e3cabefbf5d0a544344f03b58d3c4bff52aa9eb2 + languageName: node + linkType: hard + +"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": + version: 1.4.0 + resolution: "loose-envify@npm:1.4.0" + dependencies: + js-tokens: ^3.0.0 || ^4.0.0 + bin: + loose-envify: cli.js + checksum: 6517e24e0cad87ec9888f500c5b5947032cdfe6ef65e1c1936a0c48a524b81e65542c9c3edc91c97d5bddc806ee2a985dbc79be89215d613b1de5db6d1cfe6f4 + languageName: node + linkType: hard + +"lower-case-first@npm:^2.0.2": + version: 2.0.2 + resolution: "lower-case-first@npm:2.0.2" + dependencies: + tslib: ^2.0.3 + checksum: 33e3da1098ddda219ce125d4ab7a78a944972c0ee8872e95b6ccc35df8ad405284ab233b0ba4d72315ad1a06fe2f0d418ee4cba9ec1ef1c386dea78899fc8958 + languageName: node + linkType: hard + +"lower-case@npm:^2.0.2": + version: 2.0.2 + resolution: "lower-case@npm:2.0.2" + dependencies: + tslib: ^2.0.3 + checksum: 83a0a5f159ad7614bee8bf976b96275f3954335a84fad2696927f609ddae902802c4f3312d86668722e668bef41400254807e1d3a7f2e8c3eede79691aa1f010 + languageName: node + linkType: hard + +"lru-cache@npm:^5.1.1": + version: 5.1.1 + resolution: "lru-cache@npm:5.1.1" + dependencies: + yallist: ^3.0.2 + checksum: c154ae1cbb0c2206d1501a0e94df349653c92c8cbb25236d7e85190bcaf4567a03ac6eb43166fabfa36fd35623694da7233e88d9601fbf411a9a481d85dbd2cb + languageName: node + linkType: hard + +"lru-cache@npm:^6.0.0": + version: 6.0.0 + resolution: "lru-cache@npm:6.0.0" + dependencies: + yallist: ^4.0.0 + checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 + languageName: node + linkType: hard + +"lru-cache@npm:^7.7.1": + version: 7.18.3 + resolution: "lru-cache@npm:7.18.3" + checksum: e550d772384709deea3f141af34b6d4fa392e2e418c1498c078de0ee63670f1f46f5eee746e8ef7e69e1c895af0d4224e62ee33e66a543a14763b0f2e74c1356 + languageName: node + linkType: hard + +"magic-string@npm:^0.27.0": + version: 0.27.0 + resolution: "magic-string@npm:0.27.0" + dependencies: + "@jridgewell/sourcemap-codec": ^1.4.13 + checksum: 273faaa50baadb7a2df6e442eac34ad611304fc08fe16e24fe2e472fd944bfcb73ffb50d2dc972dc04e92784222002af46868cb9698b1be181c81830fd95a13e + languageName: node + linkType: hard + +"make-fetch-happen@npm:^10.0.3": + version: 10.2.1 + resolution: "make-fetch-happen@npm:10.2.1" + dependencies: + agentkeepalive: ^4.2.1 + cacache: ^16.1.0 + http-cache-semantics: ^4.1.0 + http-proxy-agent: ^5.0.0 + https-proxy-agent: ^5.0.0 + is-lambda: ^1.0.1 + lru-cache: ^7.7.1 + minipass: ^3.1.6 + minipass-collect: ^1.0.2 + minipass-fetch: ^2.0.3 + minipass-flush: ^1.0.5 + minipass-pipeline: ^1.2.4 + negotiator: ^0.6.3 + promise-retry: ^2.0.1 + socks-proxy-agent: ^7.0.0 + ssri: ^9.0.0 + checksum: 2332eb9a8ec96f1ffeeea56ccefabcb4193693597b132cd110734d50f2928842e22b84cfa1508e921b8385cdfd06dda9ad68645fed62b50fff629a580f5fb72c + languageName: node + linkType: hard + +"map-cache@npm:^0.2.0": + version: 0.2.2 + resolution: "map-cache@npm:0.2.2" + checksum: 3067cea54285c43848bb4539f978a15dedc63c03022abeec6ef05c8cb6829f920f13b94bcaf04142fc6a088318e564c4785704072910d120d55dbc2e0c421969 + languageName: node + linkType: hard + +"markdown-to-jsx@npm:^7.1.5": + version: 7.2.0 + resolution: "markdown-to-jsx@npm:7.2.0" + peerDependencies: + react: ">= 0.14.0" + checksum: ea417e684d7eec9f1beebc9423aba377116ef77c3cd83a2d622df1b9030ffef99aa9b3f431192b94f3237943a33560e6dda9be8a4c1d25187518d09986dad22f + languageName: node + linkType: hard + +"mdast-util-definitions@npm:^5.0.0": + version: 5.1.2 + resolution: "mdast-util-definitions@npm:5.1.2" + dependencies: + "@types/mdast": ^3.0.0 + "@types/unist": ^2.0.0 + unist-util-visit: ^4.0.0 + checksum: 2544daccab744ea1ede76045c2577ae4f1cc1b9eb1ea51ab273fe1dca8db5a8d6f50f87759c0ce6484975914b144b7f40316f805cb9c86223a78db8de0b77bae + languageName: node + linkType: hard + +"mdast-util-from-markdown@npm:^1.0.0": + version: 1.3.0 + resolution: "mdast-util-from-markdown@npm:1.3.0" + dependencies: + "@types/mdast": ^3.0.0 + "@types/unist": ^2.0.0 + decode-named-character-reference: ^1.0.0 + mdast-util-to-string: ^3.1.0 + micromark: ^3.0.0 + micromark-util-decode-numeric-character-reference: ^1.0.0 + micromark-util-decode-string: ^1.0.0 + micromark-util-normalize-identifier: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + unist-util-stringify-position: ^3.0.0 + uvu: ^0.5.0 + checksum: cc971d1ad381150f6504fd753fbcffcc64c0abb527540ce343625c2bba76104505262122ef63d14ab66eb47203f323267017c6d09abfa8535ee6a8e14069595f + languageName: node + linkType: hard + +"mdast-util-to-hast@npm:^12.1.0": + version: 12.3.0 + resolution: "mdast-util-to-hast@npm:12.3.0" + dependencies: + "@types/hast": ^2.0.0 + "@types/mdast": ^3.0.0 + mdast-util-definitions: ^5.0.0 + micromark-util-sanitize-uri: ^1.1.0 + trim-lines: ^3.0.0 + unist-util-generated: ^2.0.0 + unist-util-position: ^4.0.0 + unist-util-visit: ^4.0.0 + checksum: ea40c9f07dd0b731754434e81c913590c611b1fd753fa02550a1492aadfc30fb3adecaf62345ebb03cea2ddd250c15ab6e578fffde69c19955c9b87b10f2a9bb + languageName: node + linkType: hard + +"mdast-util-to-string@npm:^3.1.0": + version: 3.1.1 + resolution: "mdast-util-to-string@npm:3.1.1" + dependencies: + "@types/mdast": ^3.0.0 + checksum: 5e9375e1757ebf2950e122ef3538e4257ed2b6f43ab1d3e9c45db5dd5d5b5d14fd041490afcde00934f1cdb4b99877597ae04eb810d313ec7b38c6009058dddd + languageName: node + linkType: hard + +"merge2@npm:^1.3.0, merge2@npm:^1.4.1": + version: 1.4.1 + resolution: "merge2@npm:1.4.1" + checksum: 7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c2 + languageName: node + linkType: hard + +"meros@npm:^1.2.1": + version: 1.2.1 + resolution: "meros@npm:1.2.1" + peerDependencies: + "@types/node": ">=13" + peerDependenciesMeta: + "@types/node": + optional: true + checksum: 2201c3f7c58ad2a5b5f7d6b1c644d79bde513e25cb64b51a8c41381ec74bc02cd3423425e34f60c96bf3991f1ec51d65dc8b8e3354cbb060cc9f8226b4666a5a + languageName: node + linkType: hard + +"micromark-core-commonmark@npm:^1.0.1": + version: 1.0.6 + resolution: "micromark-core-commonmark@npm:1.0.6" + dependencies: + decode-named-character-reference: ^1.0.0 + micromark-factory-destination: ^1.0.0 + micromark-factory-label: ^1.0.0 + micromark-factory-space: ^1.0.0 + micromark-factory-title: ^1.0.0 + micromark-factory-whitespace: ^1.0.0 + micromark-util-character: ^1.0.0 + micromark-util-chunked: ^1.0.0 + micromark-util-classify-character: ^1.0.0 + micromark-util-html-tag-name: ^1.0.0 + micromark-util-normalize-identifier: ^1.0.0 + micromark-util-resolve-all: ^1.0.0 + micromark-util-subtokenize: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.1 + uvu: ^0.5.0 + checksum: 4b483c46077f696ed310f6d709bb9547434c218ceb5c1220fde1707175f6f68b44da15ab8668f9c801e1a123210071e3af883a7d1215122c913fd626f122bfc2 + languageName: node + linkType: hard + +"micromark-factory-destination@npm:^1.0.0": + version: 1.0.0 + resolution: "micromark-factory-destination@npm:1.0.0" + dependencies: + micromark-util-character: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + checksum: 8e733ae9c1c2342f14ff290bf09946e20f6f540117d80342377a765cac48df2ea5e748f33c8b07501ad7a43414b1a6597c8510ede2052b6bf1251fab89748e20 + languageName: node + linkType: hard + +"micromark-factory-label@npm:^1.0.0": + version: 1.0.2 + resolution: "micromark-factory-label@npm:1.0.2" + dependencies: + micromark-util-character: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + uvu: ^0.5.0 + checksum: 957e9366bdc8dbc1437c0706ff96972fa985ab4b1274abcae12f6094f527cbf5c69e7f2304c23c7f4b96e311ff7911d226563b8b43dcfcd4091e8c985fb97ce6 + languageName: node + linkType: hard + +"micromark-factory-space@npm:^1.0.0": + version: 1.0.0 + resolution: "micromark-factory-space@npm:1.0.0" + dependencies: + micromark-util-character: ^1.0.0 + micromark-util-types: ^1.0.0 + checksum: 70d3aafde4e68ef4e509a3b644e9a29e4aada00801279e346577b008cbca06d78051bcd62aa7ea7425856ed73f09abd2b36607803055f726f52607ee7cb706b0 + languageName: node + linkType: hard + +"micromark-factory-title@npm:^1.0.0": + version: 1.0.2 + resolution: "micromark-factory-title@npm:1.0.2" + dependencies: + micromark-factory-space: ^1.0.0 + micromark-util-character: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + uvu: ^0.5.0 + checksum: 9a9cf66babde0bad1e25d6c1087082bfde6dfc319a36cab67c89651cc1a53d0e21cdec83262b5a4c33bff49f0e3c8dc2a7bd464e991d40dbea166a8f9b37e5b2 + languageName: node + linkType: hard + +"micromark-factory-whitespace@npm:^1.0.0": + version: 1.0.0 + resolution: "micromark-factory-whitespace@npm:1.0.0" + dependencies: + micromark-factory-space: ^1.0.0 + micromark-util-character: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + checksum: 0888386e6ea2dd665a5182c570d9b3d0a172d3f11694ca5a2a84e552149c9f1429f5b975ec26e1f0fa4388c55a656c9f359ce5e0603aff6175ba3e255076f20b + languageName: node + linkType: hard + +"micromark-util-character@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-util-character@npm:1.1.0" + dependencies: + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + checksum: 504a4e3321f69bddf3fec9f0c1058239fc23336bda5be31d532b150491eda47965a251b37f8a7a9db0c65933b3aaa49cf88044fb1028be3af7c5ee6212bf8d5f + languageName: node + linkType: hard + +"micromark-util-chunked@npm:^1.0.0": + version: 1.0.0 + resolution: "micromark-util-chunked@npm:1.0.0" + dependencies: + micromark-util-symbol: ^1.0.0 + checksum: c1efd56e8c4217bcf1c6f1a9fb9912b4a2a5503b00d031da902be922fb3fee60409ac53f11739991291357b2784fb0647ddfc74c94753a068646c0cb0fd71421 + languageName: node + linkType: hard + +"micromark-util-classify-character@npm:^1.0.0": + version: 1.0.0 + resolution: "micromark-util-classify-character@npm:1.0.0" + dependencies: + micromark-util-character: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + checksum: 180446e6a1dec653f625ded028f244784e1db8d10ad05c5d70f08af9de393b4a03dc6cf6fa5ed8ccc9c24bbece7837abf3bf66681c0b4adf159364b7d5236dfd + languageName: node + linkType: hard + +"micromark-util-combine-extensions@npm:^1.0.0": + version: 1.0.0 + resolution: "micromark-util-combine-extensions@npm:1.0.0" + dependencies: + micromark-util-chunked: ^1.0.0 + micromark-util-types: ^1.0.0 + checksum: 5304a820ef75340e1be69d6ad167055b6ba9a3bafe8171e5945a935752f462415a9dd61eb3490220c055a8a11167209a45bfa73f278338b7d3d61fa1464d3f35 + languageName: node + linkType: hard + +"micromark-util-decode-numeric-character-reference@npm:^1.0.0": + version: 1.0.0 + resolution: "micromark-util-decode-numeric-character-reference@npm:1.0.0" + dependencies: + micromark-util-symbol: ^1.0.0 + checksum: f3ae2bb582a80f1e9d3face026f585c0c472335c064bd850bde152376f0394cb2831746749b6be6e0160f7d73626f67d10716026c04c87f402c0dd45a1a28633 + languageName: node + linkType: hard + +"micromark-util-decode-string@npm:^1.0.0": + version: 1.0.2 + resolution: "micromark-util-decode-string@npm:1.0.2" + dependencies: + decode-named-character-reference: ^1.0.0 + micromark-util-character: ^1.0.0 + micromark-util-decode-numeric-character-reference: ^1.0.0 + micromark-util-symbol: ^1.0.0 + checksum: 2dbb41c9691cc71505d39706405139fb7d6699429d577a524c7c248ac0cfd09d3dd212ad8e91c143a00b2896f26f81136edc67c5bda32d20446f0834d261b17a + languageName: node + linkType: hard + +"micromark-util-encode@npm:^1.0.0": + version: 1.0.1 + resolution: "micromark-util-encode@npm:1.0.1" + checksum: 9290583abfdc79ea3e7eb92c012c47a0e14327888f8aaa6f57ff79b3058d8e7743716b9d91abca3646f15ab3d78fdad9779fdb4ccf13349cd53309dfc845253a + languageName: node + linkType: hard + +"micromark-util-html-tag-name@npm:^1.0.0": + version: 1.1.0 + resolution: "micromark-util-html-tag-name@npm:1.1.0" + checksum: a9b783cec89ec813648d59799464c1950fe281ae797b2a965f98ad0167d7fa1a247718eff023b4c015f47211a172f9446b8e6b98aad50e3cd44a3337317dad2c + languageName: node + linkType: hard + +"micromark-util-normalize-identifier@npm:^1.0.0": + version: 1.0.0 + resolution: "micromark-util-normalize-identifier@npm:1.0.0" + dependencies: + micromark-util-symbol: ^1.0.0 + checksum: d7c09d5e8318fb72f194af72664bd84a48a2928e3550b2b21c8fbc0ec22524f2a72e0f6663d2b95dc189a6957d3d7759b60716e888909710767cd557be821f8b + languageName: node + linkType: hard + +"micromark-util-resolve-all@npm:^1.0.0": + version: 1.0.0 + resolution: "micromark-util-resolve-all@npm:1.0.0" + dependencies: + micromark-util-types: ^1.0.0 + checksum: 409667f2bd126ef8acce009270d2aecaaa5584c5807672bc657b09e50aa91bd2e552cf41e5be1e6469244a83349cbb71daf6059b746b1c44e3f35446fef63e50 + languageName: node + linkType: hard + +"micromark-util-sanitize-uri@npm:^1.0.0, micromark-util-sanitize-uri@npm:^1.1.0": + version: 1.1.0 + resolution: "micromark-util-sanitize-uri@npm:1.1.0" + dependencies: + micromark-util-character: ^1.0.0 + micromark-util-encode: ^1.0.0 + micromark-util-symbol: ^1.0.0 + checksum: fe6093faa0adeb8fad606184d927ce37f207dcc2ec7256438e7f273c8829686245dd6161b597913ef25a3c4fb61863d3612a40cb04cf15f83ba1b4087099996b + languageName: node + linkType: hard + +"micromark-util-subtokenize@npm:^1.0.0": + version: 1.0.2 + resolution: "micromark-util-subtokenize@npm:1.0.2" + dependencies: + micromark-util-chunked: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.0 + uvu: ^0.5.0 + checksum: c32ee58a7e1384ab1161a9ee02fbb04ad7b6e96d0b8c93dba9803c329a53d07f22ab394c7a96b2e30d6b8fbe3585b85817dba07277b1317111fc234e166bd2d1 + languageName: node + linkType: hard + +"micromark-util-symbol@npm:^1.0.0": + version: 1.0.1 + resolution: "micromark-util-symbol@npm:1.0.1" + checksum: c6a3023b3a7432c15864b5e33a1bcb5042ac7aa097f2f452e587bef45433d42d39e0a5cce12fbea91e0671098ba0c3f62a2b30ce1cde66ecbb5e8336acf4391d + languageName: node + linkType: hard + +"micromark-util-types@npm:^1.0.0, micromark-util-types@npm:^1.0.1": + version: 1.0.2 + resolution: "micromark-util-types@npm:1.0.2" + checksum: 08dc901b7c06ee3dfeb54befca05cbdab9525c1cf1c1080967c3878c9e72cb9856c7e8ff6112816e18ead36ce6f99d55aaa91560768f2f6417b415dcba1244df + languageName: node + linkType: hard + +"micromark@npm:^3.0.0": + version: 3.1.0 + resolution: "micromark@npm:3.1.0" + dependencies: + "@types/debug": ^4.0.0 + debug: ^4.0.0 + decode-named-character-reference: ^1.0.0 + micromark-core-commonmark: ^1.0.1 + micromark-factory-space: ^1.0.0 + micromark-util-character: ^1.0.0 + micromark-util-chunked: ^1.0.0 + micromark-util-combine-extensions: ^1.0.0 + micromark-util-decode-numeric-character-reference: ^1.0.0 + micromark-util-encode: ^1.0.0 + micromark-util-normalize-identifier: ^1.0.0 + micromark-util-resolve-all: ^1.0.0 + micromark-util-sanitize-uri: ^1.0.0 + micromark-util-subtokenize: ^1.0.0 + micromark-util-symbol: ^1.0.0 + micromark-util-types: ^1.0.1 + uvu: ^0.5.0 + checksum: 5fe5bc3bf92e2ddd37b5f0034080fc3a4d4b3c1130dd5e435bb96ec75e9453091272852e71a4d74906a8fcf992d6f79d794607657c534bda49941e9950a92e28 + languageName: node + linkType: hard + +"micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": + version: 4.0.5 + resolution: "micromatch@npm:4.0.5" + dependencies: + braces: ^3.0.2 + picomatch: ^2.3.1 + checksum: 02a17b671c06e8fefeeb6ef996119c1e597c942e632a21ef589154f23898c9c6a9858526246abb14f8bca6e77734aa9dcf65476fca47cedfb80d9577d52843fc + languageName: node + linkType: hard + +"mime-db@npm:1.52.0": + version: 1.52.0 + resolution: "mime-db@npm:1.52.0" + checksum: 0d99a03585f8b39d68182803b12ac601d9c01abfa28ec56204fa330bc9f3d1c5e14beb049bafadb3dbdf646dfb94b87e24d4ec7b31b7279ef906a8ea9b6a513f + languageName: node + linkType: hard + +"mime-types@npm:^2.1.12": + version: 2.1.35 + resolution: "mime-types@npm:2.1.35" + dependencies: + mime-db: 1.52.0 + checksum: 89a5b7f1def9f3af5dad6496c5ed50191ae4331cc5389d7c521c8ad28d5fdad2d06fd81baf38fed813dc4e46bb55c8145bb0ff406330818c9cf712fb2e9b3836 + languageName: node + linkType: hard + +"mimic-fn@npm:^2.1.0": + version: 2.1.0 + resolution: "mimic-fn@npm:2.1.0" + checksum: d2421a3444848ce7f84bd49115ddacff29c15745db73f54041edc906c14b131a38d05298dae3081667627a59b2eb1ca4b436ff2e1b80f69679522410418b478a + languageName: node + linkType: hard + +"minimatch@npm:4.2.3": + version: 4.2.3 + resolution: "minimatch@npm:4.2.3" + dependencies: + brace-expansion: ^1.1.7 + checksum: 3392388e3ef7de7ae9a3a48d48a27a323934452f4af81b925dfbe85ce2dc07da855e3dbcc69229888be4e5118f6c0b79847d30f3e7c0e0017b25e423c11c0409 + languageName: node + linkType: hard + +"minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" + dependencies: + brace-expansion: ^1.1.7 + checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a + languageName: node + linkType: hard + +"minimatch@npm:^5.0.1": + version: 5.1.6 + resolution: "minimatch@npm:5.1.6" + dependencies: + brace-expansion: ^2.0.1 + checksum: 7564208ef81d7065a370f788d337cd80a689e981042cb9a1d0e6580b6c6a8c9279eba80010516e258835a988363f99f54a6f711a315089b8b42694f5da9d0d77 + languageName: node + linkType: hard + +"minimist@npm:^1.2.0, minimist@npm:^1.2.6": + version: 1.2.8 + resolution: "minimist@npm:1.2.8" + checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 + languageName: node + linkType: hard + +"minipass-collect@npm:^1.0.2": + version: 1.0.2 + resolution: "minipass-collect@npm:1.0.2" + dependencies: + minipass: ^3.0.0 + checksum: 14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f10 + languageName: node + linkType: hard + +"minipass-fetch@npm:^2.0.3": + version: 2.1.2 + resolution: "minipass-fetch@npm:2.1.2" + dependencies: + encoding: ^0.1.13 + minipass: ^3.1.6 + minipass-sized: ^1.0.3 + minizlib: ^2.1.2 + dependenciesMeta: + encoding: + optional: true + checksum: 3f216be79164e915fc91210cea1850e488793c740534985da017a4cbc7a5ff50506956d0f73bb0cb60e4fe91be08b6b61ef35101706d3ef5da2c8709b5f08f91 + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" + dependencies: + minipass: ^3.0.0 + checksum: 56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: ^3.0.0 + checksum: b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b + languageName: node + linkType: hard + +"minipass-sized@npm:^1.0.3": + version: 1.0.3 + resolution: "minipass-sized@npm:1.0.3" + dependencies: + minipass: ^3.0.0 + checksum: 79076749fcacf21b5d16dd596d32c3b6bf4d6e62abb43868fac21674078505c8b15eaca4e47ed844985a4514854f917d78f588fcd029693709417d8f98b2bd60 + languageName: node + linkType: hard + +"minipass@npm:^3.0.0, minipass@npm:^3.1.1, minipass@npm:^3.1.6": + version: 3.3.6 + resolution: "minipass@npm:3.3.6" + dependencies: + yallist: ^4.0.0 + checksum: a30d083c8054cee83cdcdc97f97e4641a3f58ae743970457b1489ce38ee1167b3aaf7d815cd39ec7a99b9c40397fd4f686e83750e73e652b21cb516f6d845e48 + languageName: node + linkType: hard + +"minipass@npm:^4.0.0": + version: 4.2.5 + resolution: "minipass@npm:4.2.5" + checksum: 4f9c19af23a5d4a9e7156feefc9110634b178a8cff8f8271af16ec5ebf7e221725a97429952c856f5b17b30c2065ebd24c81722d90c93d2122611d75b952b48f + languageName: node + linkType: hard + +"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": + version: 2.1.2 + resolution: "minizlib@npm:2.1.2" + dependencies: + minipass: ^3.0.0 + yallist: ^4.0.0 + checksum: f1fdeac0b07cf8f30fcf12f4b586795b97be856edea22b5e9072707be51fc95d41487faec3f265b42973a304fe3a64acd91a44a3826a963e37b37bafde0212c3 + languageName: node + linkType: hard + +"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": + version: 1.0.4 + resolution: "mkdirp@npm:1.0.4" + bin: + mkdirp: bin/cmd.js + checksum: a96865108c6c3b1b8e1d5e9f11843de1e077e57737602de1b82030815f311be11f96f09cce59bd5b903d0b29834733e5313f9301e3ed6d6f6fba2eae0df4298f + languageName: node + linkType: hard + +"moment@npm:2.29.4": + version: 2.29.4 + resolution: "moment@npm:2.29.4" + checksum: 0ec3f9c2bcba38dc2451b1daed5daded747f17610b92427bebe1d08d48d8b7bdd8d9197500b072d14e326dd0ccf3e326b9e3d07c5895d3d49e39b6803b76e80e + languageName: node + linkType: hard + +"mri@npm:^1.1.0": + version: 1.2.0 + resolution: "mri@npm:1.2.0" + checksum: 83f515abbcff60150873e424894a2f65d68037e5a7fcde8a9e2b285ee9c13ac581b63cfc1e6826c4732de3aeb84902f7c1e16b7aff46cd3f897a0f757a894e85 + languageName: node + linkType: hard + +"ms@npm:2.1.2": + version: 2.1.2 + resolution: "ms@npm:2.1.2" + checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f + languageName: node + linkType: hard + +"ms@npm:^2.0.0, ms@npm:^2.1.1": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d + languageName: node + linkType: hard + +"mute-stream@npm:0.0.8": + version: 0.0.8 + resolution: "mute-stream@npm:0.0.8" + checksum: ff48d251fc3f827e5b1206cda0ffdaec885e56057ee86a3155e1951bc940fd5f33531774b1cc8414d7668c10a8907f863f6561875ee6e8768931a62121a531a1 + languageName: node + linkType: hard + +"nanoid@npm:^3.3.4": + version: 3.3.4 + resolution: "nanoid@npm:3.3.4" + bin: + nanoid: bin/nanoid.cjs + checksum: 2fddd6dee994b7676f008d3ffa4ab16035a754f4bb586c61df5a22cf8c8c94017aadd360368f47d653829e0569a92b129979152ff97af23a558331e47e37cd9c + languageName: node + linkType: hard + +"natural-compare-lite@npm:^1.4.0": + version: 1.4.0 + resolution: "natural-compare-lite@npm:1.4.0" + checksum: 5222ac3986a2b78dd6069ac62cbb52a7bf8ffc90d972ab76dfe7b01892485d229530ed20d0c62e79a6b363a663b273db3bde195a1358ce9e5f779d4453887225 + languageName: node + linkType: hard + +"natural-compare@npm:^1.4.0": + version: 1.4.0 + resolution: "natural-compare@npm:1.4.0" + checksum: 23ad088b08f898fc9b53011d7bb78ec48e79de7627e01ab5518e806033861bef68d5b0cd0e2205c2f36690ac9571ff6bcb05eb777ced2eeda8d4ac5b44592c3d + languageName: node + linkType: hard + +"negotiator@npm:^0.6.3": + version: 0.6.3 + resolution: "negotiator@npm:0.6.3" + checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 + languageName: node + linkType: hard + +"no-case@npm:^3.0.4": + version: 3.0.4 + resolution: "no-case@npm:3.0.4" + dependencies: + lower-case: ^2.0.2 + tslib: ^2.0.3 + checksum: 0b2ebc113dfcf737d48dde49cfebf3ad2d82a8c3188e7100c6f375e30eafbef9e9124aadc3becef237b042fd5eb0aad2fd78669c20972d045bbe7fea8ba0be5c + languageName: node + linkType: hard + +"node-addon-api@npm:^3.2.1": + version: 3.2.1 + resolution: "node-addon-api@npm:3.2.1" + dependencies: + node-gyp: latest + checksum: 2369986bb0881ccd9ef6bacdf39550e07e089a9c8ede1cbc5fc7712d8e2faa4d50da0e487e333d4125f8c7a616c730131d1091676c9d499af1d74560756b4a18 + languageName: node + linkType: hard + +"node-fetch@npm:2.6.7": + version: 2.6.7 + resolution: "node-fetch@npm:2.6.7" + dependencies: + whatwg-url: ^5.0.0 + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + checksum: 8d816ffd1ee22cab8301c7756ef04f3437f18dace86a1dae22cf81db8ef29c0bf6655f3215cb0cdb22b420b6fe141e64b26905e7f33f9377a7fa59135ea3e10b + languageName: node + linkType: hard + +"node-fetch@npm:^2.6.1": + version: 2.6.9 + resolution: "node-fetch@npm:2.6.9" + dependencies: + whatwg-url: ^5.0.0 + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + checksum: acb04f9ce7224965b2b59e71b33c639794d8991efd73855b0b250921382b38331ffc9d61bce502571f6cc6e11a8905ca9b1b6d4aeb586ab093e2756a1fd190d0 + languageName: node + linkType: hard + +"node-gyp-build@npm:^4.3.0": + version: 4.6.0 + resolution: "node-gyp-build@npm:4.6.0" + bin: + node-gyp-build: bin.js + node-gyp-build-optional: optional.js + node-gyp-build-test: build-test.js + checksum: 25d78c5ef1f8c24291f4a370c47ba52fcea14f39272041a90a7894cd50d766f7c8cb8fb06c0f42bf6f69b204b49d9be3c8fc344aac09714d5bdb95965499eb15 + languageName: node + linkType: hard + +"node-gyp@npm:latest": + version: 9.3.1 + resolution: "node-gyp@npm:9.3.1" + dependencies: + env-paths: ^2.2.0 + glob: ^7.1.4 + graceful-fs: ^4.2.6 + make-fetch-happen: ^10.0.3 + nopt: ^6.0.0 + npmlog: ^6.0.0 + rimraf: ^3.0.2 + semver: ^7.3.5 + tar: ^6.1.2 + which: ^2.0.2 + bin: + node-gyp: bin/node-gyp.js + checksum: b860e9976fa645ca0789c69e25387401b4396b93c8375489b5151a6c55cf2640a3b6183c212b38625ef7c508994930b72198338e3d09b9d7ade5acc4aaf51ea7 + languageName: node + linkType: hard + +"node-int64@npm:^0.4.0": + version: 0.4.0 + resolution: "node-int64@npm:0.4.0" + checksum: d0b30b1ee6d961851c60d5eaa745d30b5c95d94bc0e74b81e5292f7c42a49e3af87f1eb9e89f59456f80645d679202537de751b7d72e9e40ceea40c5e449057e + languageName: node + linkType: hard + +"node-releases@npm:^2.0.8": + version: 2.0.10 + resolution: "node-releases@npm:2.0.10" + checksum: d784ecde25696a15d449c4433077f5cce620ed30a1656c4abf31282bfc691a70d9618bae6868d247a67914d1be5cc4fde22f65a05f4398cdfb92e0fc83cadfbc + languageName: node + linkType: hard + +"nopt@npm:^6.0.0": + version: 6.0.0 + resolution: "nopt@npm:6.0.0" + dependencies: + abbrev: ^1.0.0 + bin: + nopt: bin/nopt.js + checksum: 82149371f8be0c4b9ec2f863cc6509a7fd0fa729929c009f3a58e4eb0c9e4cae9920e8f1f8eb46e7d032fec8fb01bede7f0f41a67eb3553b7b8e14fa53de1dac + languageName: node + linkType: hard + +"normalize-path@npm:^2.1.1": + version: 2.1.1 + resolution: "normalize-path@npm:2.1.1" + dependencies: + remove-trailing-separator: ^1.0.1 + checksum: 7e9cbdcf7f5b8da7aa191fbfe33daf290cdcd8c038f422faf1b8a83c972bf7a6d94c5be34c4326cb00fb63bc0fd97d9fbcfaf2e5d6142332c2cd36d2e1b86cea + languageName: node + linkType: hard + +"npmlog@npm:^6.0.0": + version: 6.0.2 + resolution: "npmlog@npm:6.0.2" + dependencies: + are-we-there-yet: ^3.0.0 + console-control-strings: ^1.1.0 + gauge: ^4.0.3 + set-blocking: ^2.0.0 + checksum: ae238cd264a1c3f22091cdd9e2b106f684297d3c184f1146984ecbe18aaa86343953f26b9520dedd1b1372bc0316905b736c1932d778dbeb1fcf5a1001390e2a + languageName: node + linkType: hard + +"nullthrows@npm:^1.1.1": + version: 1.1.1 + resolution: "nullthrows@npm:1.1.1" + checksum: 10806b92121253eb1b08ecf707d92480f5331ba8ae5b23fa3eb0548ad24196eb797ed47606153006568a5733ea9e528a3579f21421f7828e09e7756f4bdd386f + languageName: node + linkType: hard + +"object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": + version: 4.1.1 + resolution: "object-assign@npm:4.1.1" + checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f + languageName: node + linkType: hard + +"object-inspect@npm:^1.12.3, object-inspect@npm:^1.9.0": + version: 1.12.3 + resolution: "object-inspect@npm:1.12.3" + checksum: dabfd824d97a5f407e6d5d24810d888859f6be394d8b733a77442b277e0808860555176719c5905e765e3743a7cada6b8b0a3b85e5331c530fd418cc8ae991db + languageName: node + linkType: hard + +"object-is@npm:^1.1.5": + version: 1.1.5 + resolution: "object-is@npm:1.1.5" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.3 + checksum: 989b18c4cba258a6b74dc1d74a41805c1a1425bce29f6cabb50dcb1a6a651ea9104a1b07046739a49a5bb1bc49727bcb00efd5c55f932f6ea04ec8927a7901fe + languageName: node + linkType: hard + +"object-keys@npm:^1.1.1": + version: 1.1.1 + resolution: "object-keys@npm:1.1.1" + checksum: b363c5e7644b1e1b04aa507e88dcb8e3a2f52b6ffd0ea801e4c7a62d5aa559affe21c55a07fd4b1fd55fc03a33c610d73426664b20032405d7b92a1414c34d6a + languageName: node + linkType: hard + +"object.assign@npm:^4.1.2, object.assign@npm:^4.1.3, object.assign@npm:^4.1.4": + version: 4.1.4 + resolution: "object.assign@npm:4.1.4" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + has-symbols: ^1.0.3 + object-keys: ^1.1.1 + checksum: 76cab513a5999acbfe0ff355f15a6a125e71805fcf53de4e9d4e082e1989bdb81d1e329291e1e4e0ae7719f0e4ef80e88fb2d367ae60500d79d25a6224ac8864 + languageName: node + linkType: hard + +"object.entries@npm:^1.1.5, object.entries@npm:^1.1.6": + version: 1.1.6 + resolution: "object.entries@npm:1.1.6" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + checksum: 0f8c47517e6a9a980241eafe3b73de11e59511883173c2b93d67424a008e47e11b77c80e431ad1d8a806f6108b225a1cab9223e53e555776c612a24297117d28 + languageName: node + linkType: hard + +"object.fromentries@npm:^2.0.6": + version: 2.0.6 + resolution: "object.fromentries@npm:2.0.6" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + checksum: 453c6d694180c0c30df451b60eaf27a5b9bca3fb43c37908fd2b78af895803dc631242bcf05582173afa40d8d0e9c96e16e8874b39471aa53f3ac1f98a085d85 + languageName: node + linkType: hard + +"object.hasown@npm:^1.1.2": + version: 1.1.2 + resolution: "object.hasown@npm:1.1.2" + dependencies: + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + checksum: b936572536db0cdf38eb30afd2f1026a8b6f2cc5d2c4497c9d9bbb01eaf3e980dead4fd07580cfdd098e6383e5a9db8212d3ea0c6bdd2b5e68c60aa7e3b45566 + languageName: node + linkType: hard + +"object.values@npm:^1.1.6": + version: 1.1.6 + resolution: "object.values@npm:1.1.6" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + checksum: f6fff9fd817c24cfd8107f50fb33061d81cd11bacc4e3dbb3852e9ff7692fde4dbce823d4333ea27cd9637ef1b6690df5fbb61f1ed314fa2959598dc3ae23d8e + languageName: node + linkType: hard + +"once@npm:^1.3.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: 1 + checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 + languageName: node + linkType: hard + +"onetime@npm:^5.1.0": + version: 5.1.2 + resolution: "onetime@npm:5.1.2" + dependencies: + mimic-fn: ^2.1.0 + checksum: 2478859ef817fc5d4e9c2f9e5728512ddd1dbc9fb7829ad263765bb6d3b91ce699d6e2332eef6b7dff183c2f490bd3349f1666427eaba4469fba0ac38dfd0d34 + languageName: node + linkType: hard + +"optimism@npm:^0.16.1": + version: 0.16.2 + resolution: "optimism@npm:0.16.2" + dependencies: + "@wry/context": ^0.7.0 + "@wry/trie": ^0.3.0 + checksum: a98ed9a0b8ee2b031010222099b60860d52860bf8182889f2695a7cf2185f21aca59020f78e2b47c0ae7697843caa576798d792967314ff59f6aa7c5d9de7f3a + languageName: node + linkType: hard + +"optionator@npm:^0.9.1": + version: 0.9.1 + resolution: "optionator@npm:0.9.1" + dependencies: + deep-is: ^0.1.3 + fast-levenshtein: ^2.0.6 + levn: ^0.4.1 + prelude-ls: ^1.2.1 + type-check: ^0.4.0 + word-wrap: ^1.2.3 + checksum: dbc6fa065604b24ea57d734261914e697bd73b69eff7f18e967e8912aa2a40a19a9f599a507fa805be6c13c24c4eae8c71306c239d517d42d4c041c942f508a0 + languageName: node + linkType: hard + +"ora@npm:^5.4.1": + version: 5.4.1 + resolution: "ora@npm:5.4.1" + dependencies: + bl: ^4.1.0 + chalk: ^4.1.0 + cli-cursor: ^3.1.0 + cli-spinners: ^2.5.0 + is-interactive: ^1.0.0 + is-unicode-supported: ^0.1.0 + log-symbols: ^4.1.0 + strip-ansi: ^6.0.0 + wcwidth: ^1.0.1 + checksum: 28d476ee6c1049d68368c0dc922e7225e3b5600c3ede88fade8052837f9ed342625fdaa84a6209302587c8ddd9b664f71f0759833cbdb3a4cf81344057e63c63 + languageName: node + linkType: hard + +"os-tmpdir@npm:~1.0.2": + version: 1.0.2 + resolution: "os-tmpdir@npm:1.0.2" + checksum: 5666560f7b9f10182548bf7013883265be33620b1c1b4a4d405c25be2636f970c5488ff3e6c48de75b55d02bde037249fe5dbfbb4c0fb7714953d56aed062e6d + languageName: node + linkType: hard + +"p-limit@npm:3.1.0, p-limit@npm:^3.0.2": + version: 3.1.0 + resolution: "p-limit@npm:3.1.0" + dependencies: + yocto-queue: ^0.1.0 + checksum: 7c3690c4dbf62ef625671e20b7bdf1cbc9534e83352a2780f165b0d3ceba21907e77ad63401708145ca4e25bfc51636588d89a8c0aeb715e6c37d1c066430360 + languageName: node + linkType: hard + +"p-limit@npm:^2.2.0": + version: 2.3.0 + resolution: "p-limit@npm:2.3.0" + dependencies: + p-try: ^2.0.0 + checksum: 84ff17f1a38126c3314e91ecfe56aecbf36430940e2873dadaa773ffe072dc23b7af8e46d4b6485d302a11673fe94c6b67ca2cfbb60c989848b02100d0594ac1 + languageName: node + linkType: hard + +"p-locate@npm:^4.1.0": + version: 4.1.0 + resolution: "p-locate@npm:4.1.0" + dependencies: + p-limit: ^2.2.0 + checksum: 513bd14a455f5da4ebfcb819ef706c54adb09097703de6aeaa5d26fe5ea16df92b48d1ac45e01e3944ce1e6aa2a66f7f8894742b8c9d6e276e16cd2049a2b870 + languageName: node + linkType: hard + +"p-locate@npm:^5.0.0": + version: 5.0.0 + resolution: "p-locate@npm:5.0.0" + dependencies: + p-limit: ^3.0.2 + checksum: 1623088f36cf1cbca58e9b61c4e62bf0c60a07af5ae1ca99a720837356b5b6c5ba3eb1b2127e47a06865fee59dd0453cad7cc844cda9d5a62ac1a5a51b7c86d3 + languageName: node + linkType: hard + +"p-map@npm:^4.0.0": + version: 4.0.0 + resolution: "p-map@npm:4.0.0" + dependencies: + aggregate-error: ^3.0.0 + checksum: cb0ab21ec0f32ddffd31dfc250e3afa61e103ef43d957cc45497afe37513634589316de4eb88abdfd969fe6410c22c0b93ab24328833b8eb1ccc087fc0442a1c + languageName: node + linkType: hard + +"p-try@npm:^2.0.0": + version: 2.2.0 + resolution: "p-try@npm:2.2.0" + checksum: f8a8e9a7693659383f06aec604ad5ead237c7a261c18048a6e1b5b85a5f8a067e469aa24f5bc009b991ea3b058a87f5065ef4176793a200d4917349881216cae + languageName: node + linkType: hard + +"param-case@npm:^3.0.4": + version: 3.0.4 + resolution: "param-case@npm:3.0.4" + dependencies: + dot-case: ^3.0.4 + tslib: ^2.0.3 + checksum: b34227fd0f794e078776eb3aa6247442056cb47761e9cd2c4c881c86d84c64205f6a56ef0d70b41ee7d77da02c3f4ed2f88e3896a8fefe08bdfb4deca037c687 + languageName: node + linkType: hard + +"parent-module@npm:^1.0.0": + version: 1.0.1 + resolution: "parent-module@npm:1.0.1" + dependencies: + callsites: ^3.0.0 + checksum: 6ba8b255145cae9470cf5551eb74be2d22281587af787a2626683a6c20fbb464978784661478dd2a3f1dad74d1e802d403e1b03c1a31fab310259eec8ac560ff + languageName: node + linkType: hard + +"parse-filepath@npm:^1.0.2": + version: 1.0.2 + resolution: "parse-filepath@npm:1.0.2" + dependencies: + is-absolute: ^1.0.0 + map-cache: ^0.2.0 + path-root: ^0.1.1 + checksum: 6794c3f38d3921f0f7cc63fb1fb0c4d04cd463356ad389c8ce6726d3c50793b9005971f4138975a6d7025526058d5e65e9bfe634d0765e84c4e2571152665a69 + languageName: node + linkType: hard + +"parse-json@npm:^5.0.0": + version: 5.2.0 + resolution: "parse-json@npm:5.2.0" + dependencies: + "@babel/code-frame": ^7.0.0 + error-ex: ^1.3.1 + json-parse-even-better-errors: ^2.3.0 + lines-and-columns: ^1.1.6 + checksum: 62085b17d64da57f40f6afc2ac1f4d95def18c4323577e1eced571db75d9ab59b297d1d10582920f84b15985cbfc6b6d450ccbf317644cfa176f3ed982ad87e2 + languageName: node + linkType: hard + +"parse5@npm:^6.0.0": + version: 6.0.1 + resolution: "parse5@npm:6.0.1" + checksum: 7d569a176c5460897f7c8f3377eff640d54132b9be51ae8a8fa4979af940830b2b0c296ce75e5bd8f4041520aadde13170dbdec44889975f906098ea0002f4bd + languageName: node + linkType: hard + +"pascal-case@npm:^3.1.2": + version: 3.1.2 + resolution: "pascal-case@npm:3.1.2" + dependencies: + no-case: ^3.0.4 + tslib: ^2.0.3 + checksum: ba98bfd595fc91ef3d30f4243b1aee2f6ec41c53b4546bfa3039487c367abaa182471dcfc830a1f9e1a0df00c14a370514fa2b3a1aacc68b15a460c31116873e + languageName: node + linkType: hard + +"path-case@npm:^3.0.4": + version: 3.0.4 + resolution: "path-case@npm:3.0.4" + dependencies: + dot-case: ^3.0.4 + tslib: ^2.0.3 + checksum: 61de0526222629f65038a66f63330dd22d5b54014ded6636283e1d15364da38b3cf29e4433aa3f9d8b0dba407ae2b059c23b0104a34ee789944b1bc1c5c7e06d + languageName: node + linkType: hard + +"path-exists@npm:^4.0.0": + version: 4.0.0 + resolution: "path-exists@npm:4.0.0" + checksum: 505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed1 + languageName: node + linkType: hard + +"path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 + languageName: node + linkType: hard + +"path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: 55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 + languageName: node + linkType: hard + +"path-parse@npm:^1.0.7": + version: 1.0.7 + resolution: "path-parse@npm:1.0.7" + checksum: 49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a + languageName: node + linkType: hard + +"path-root-regex@npm:^0.1.0": + version: 0.1.2 + resolution: "path-root-regex@npm:0.1.2" + checksum: dcd75d1f8e93faabe35a58e875b0f636839b3658ff2ad8c289463c40bc1a844debe0dab73c3398ef9dc8f6ec6c319720aff390cf4633763ddcf3cf4b1bbf7e8b + languageName: node + linkType: hard + +"path-root@npm:^0.1.1": + version: 0.1.1 + resolution: "path-root@npm:0.1.1" + dependencies: + path-root-regex: ^0.1.0 + checksum: ff88aebfc1c59ace510cc06703d67692a11530989920427625e52b66a303ca9b3d4059b0b7d0b2a73248d1ad29bcb342b8b786ec00592f3101d38a45fd3b2e08 + languageName: node + linkType: hard + +"path-type@npm:^4.0.0": + version: 4.0.0 + resolution: "path-type@npm:4.0.0" + checksum: 5b1e2daa247062061325b8fdbfd1fb56dde0a448fb1455453276ea18c60685bdad23a445dc148cf87bc216be1573357509b7d4060494a6fd768c7efad833ee45 + languageName: node + linkType: hard + +"phoenix@npm:1.7.2": + version: 1.7.2 + resolution: "phoenix@npm:1.7.2" + checksum: f493d8325f83a5cc3db913fff68ba1c3eca1574ddeccf701000d4278533cb8371620fcabb8576eed0e0069aaaeb76aa2a21018d5c14de664334e10ce7d244cd8 + languageName: node + linkType: hard + +"picocolors@npm:^1.0.0": + version: 1.0.0 + resolution: "picocolors@npm:1.0.0" + checksum: a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981 + languageName: node + linkType: hard + +"picomatch@npm:^2.3.0, picomatch@npm:^2.3.1": + version: 2.3.1 + resolution: "picomatch@npm:2.3.1" + checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf + languageName: node + linkType: hard + +"postcss-value-parser@npm:^4.0.2": + version: 4.2.0 + resolution: "postcss-value-parser@npm:4.2.0" + checksum: 819ffab0c9d51cf0acbabf8996dffbfafbafa57afc0e4c98db88b67f2094cb44488758f06e5da95d7036f19556a4a732525e84289a425f4f6fd8e412a9d7442f + languageName: node + linkType: hard + +"postcss@npm:^8.4.21": + version: 8.4.21 + resolution: "postcss@npm:8.4.21" + dependencies: + nanoid: ^3.3.4 + picocolors: ^1.0.0 + source-map-js: ^1.0.2 + checksum: e39ac60ccd1542d4f9d93d894048aac0d686b3bb38e927d8386005718e6793dbbb46930f0a523fe382f1bbd843c6d980aaea791252bf5e176180e5a4336d9679 + languageName: node + linkType: hard + +"prelude-ls@npm:^1.2.1": + version: 1.2.1 + resolution: "prelude-ls@npm:1.2.1" + checksum: cd192ec0d0a8e4c6da3bb80e4f62afe336df3f76271ac6deb0e6a36187133b6073a19e9727a1ff108cd8b9982e4768850d413baa71214dd80c7979617dca827a + languageName: node + linkType: hard + +"promise-inflight@npm:^1.0.1": + version: 1.0.1 + resolution: "promise-inflight@npm:1.0.1" + checksum: 22749483091d2c594261517f4f80e05226d4d5ecc1fc917e1886929da56e22b5718b7f2a75f3807e7a7d471bc3be2907fe92e6e8f373ddf5c64bae35b5af3981 + languageName: node + linkType: hard + +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: ^2.0.2 + retry: ^0.12.0 + checksum: f96a3f6d90b92b568a26f71e966cbbc0f63ab85ea6ff6c81284dc869b41510e6cdef99b6b65f9030f0db422bf7c96652a3fff9f2e8fb4a0f069d8f4430359429 + languageName: node + linkType: hard + +"promise@npm:^7.1.1": + version: 7.3.1 + resolution: "promise@npm:7.3.1" + dependencies: + asap: ~2.0.3 + checksum: 475bb069130179fbd27ed2ab45f26d8862376a137a57314cf53310bdd85cc986a826fd585829be97ebc0aaf10e9d8e68be1bfe5a4a0364144b1f9eedfa940cf1 + languageName: node + linkType: hard + +"prop-types@npm:15.8.1, prop-types@npm:^15.0.0, prop-types@npm:^15.6.2, prop-types@npm:^15.7.2, prop-types@npm:^15.8.1": + version: 15.8.1 + resolution: "prop-types@npm:15.8.1" + dependencies: + loose-envify: ^1.4.0 + object-assign: ^4.1.1 + react-is: ^16.13.1 + checksum: c056d3f1c057cb7ff8344c645450e14f088a915d078dcda795041765047fa080d38e5d626560ccaac94a4e16e3aa15f3557c1a9a8d1174530955e992c675e459 + languageName: node + linkType: hard + +"property-information@npm:^6.0.0": + version: 6.2.0 + resolution: "property-information@npm:6.2.0" + checksum: 23afce07ba821cbe7d926e63cdd680991961c82be4bbb6c0b17c47f48894359c1be6e51cd74485fc10a9d3fd361b475388e1e39311ed2b53127718f72aab1955 + languageName: node + linkType: hard + +"punycode@npm:^1.3.2": + version: 1.4.1 + resolution: "punycode@npm:1.4.1" + checksum: fa6e698cb53db45e4628559e557ddaf554103d2a96a1d62892c8f4032cd3bc8871796cae9eabc1bc700e2b6677611521ce5bb1d9a27700086039965d0cf34518 + languageName: node + linkType: hard + +"punycode@npm:^2.1.0": + version: 2.3.0 + resolution: "punycode@npm:2.3.0" + checksum: 39f760e09a2a3bbfe8f5287cf733ecdad69d6af2fe6f97ca95f24b8921858b91e9ea3c9eeec6e08cede96181b3bb33f95c6ffd8c77e63986508aa2e8159fa200 + languageName: node + linkType: hard + +"pvtsutils@npm:^1.3.2": + version: 1.3.2 + resolution: "pvtsutils@npm:1.3.2" + dependencies: + tslib: ^2.4.0 + checksum: 9b8155611363e2f40276879f2454e60204b45be0cd0482f9373f369308a2e9c76d5d74cdf661a3f5aae8022d75ea159eb0ba38ee78fc782ee3051e4722db98d0 + languageName: node + linkType: hard + +"pvutils@npm:^1.1.3": + version: 1.1.3 + resolution: "pvutils@npm:1.1.3" + checksum: 2ee26a9e5176c348977d6ec00d8ee80bff62f51743b1c5fe8abeeb4c5d29d9959cdfe0ce146707a9e6801bce88190fed3002d720b072dc87d031c692820b44c9 + languageName: node + linkType: hard + +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: b676f8c040cdc5b12723ad2f91414d267605b26419d5c821ff03befa817ddd10e238d22b25d604920340fd73efd8ba795465a0377c4adf45a4a41e4234e42dc4 + languageName: node + linkType: hard + +"react-animate-height@npm:3.1.0": + version: 3.1.0 + resolution: "react-animate-height@npm:3.1.0" + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: 46f802fe1e70d5d451d74fabece0dc8e2060543ea106dd56fc0ff544391e8939f8876af480323854dc39cbefd286d8cece29e509de3fb2d231fa9f77097532af + languageName: node + linkType: hard + +"react-dom@npm:18.2.0": + version: 18.2.0 + resolution: "react-dom@npm:18.2.0" + dependencies: + loose-envify: ^1.1.0 + scheduler: ^0.23.0 + peerDependencies: + react: ^18.2.0 + checksum: 7d323310bea3a91be2965f9468d552f201b1c27891e45ddc2d6b8f717680c95a75ae0bc1e3f5cf41472446a2589a75aed4483aee8169287909fcd59ad149e8cc + languageName: node + linkType: hard + +"react-is@npm:^16.13.1, react-is@npm:^16.7.0": + version: 16.13.1 + resolution: "react-is@npm:16.13.1" + checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f + languageName: node + linkType: hard + +"react-is@npm:^18.0.0": + version: 18.2.0 + resolution: "react-is@npm:18.2.0" + checksum: e72d0ba81b5922759e4aff17e0252bd29988f9642ed817f56b25a3e217e13eea8a7f2322af99a06edb779da12d5d636e9fda473d620df9a3da0df2a74141d53e + languageName: node + linkType: hard + +"react-markdown@npm:8.0.5": + version: 8.0.5 + resolution: "react-markdown@npm:8.0.5" + dependencies: + "@types/hast": ^2.0.0 + "@types/prop-types": ^15.0.0 + "@types/unist": ^2.0.0 + comma-separated-tokens: ^2.0.0 + hast-util-whitespace: ^2.0.0 + prop-types: ^15.0.0 + property-information: ^6.0.0 + react-is: ^18.0.0 + remark-parse: ^10.0.0 + remark-rehype: ^10.0.0 + space-separated-tokens: ^2.0.0 + style-to-object: ^0.4.0 + unified: ^10.0.0 + unist-util-visit: ^4.0.0 + vfile: ^5.0.0 + peerDependencies: + "@types/react": ">=16" + react: ">=16" + checksum: 9d11b7aba16216d590e56b4744e05d2925141bfb0f5885b3d9400ccf006cd24b79ce3b3d20af8a083a01324215b58fa4c5979e44f69d54123ff1dd5dacb0dc89 + languageName: node + linkType: hard + +"react-merge-refs@npm:2.0.1": + version: 2.0.1 + resolution: "react-merge-refs@npm:2.0.1" + checksum: c0b6fdb384a92e9b2bb7d56128244a2db97b9343c0dcae70f172352c3732312266c078495902707e45f523625afcba78996a22edea3a8e7b2b17fe97347059fe + languageName: node + linkType: hard + +"react-refresh@npm:^0.14.0": + version: 0.14.0 + resolution: "react-refresh@npm:0.14.0" + checksum: dc69fa8c993df512f42dd0f1b604978ae89bd747c0ed5ec595c0cc50d535fb2696619ccd98ae28775cc01d0a7c146a532f0f7fb81dc22e1977c242a4912312f4 + languageName: node + linkType: hard + +"react-router-dom@npm:6.9.0": + version: 6.9.0 + resolution: "react-router-dom@npm:6.9.0" + dependencies: + "@remix-run/router": 1.4.0 + react-router: 6.9.0 + peerDependencies: + react: ">=16.8" + react-dom: ">=16.8" + checksum: 4d593491ab8db5611feda70002c62902baebb84d5c1c5e5b6172496f31f91130deee132bf4240dea634a88cb86c76d6da348f15b9cd5e5197be455efd88edf72 + languageName: node + linkType: hard + +"react-router@npm:6.9.0": + version: 6.9.0 + resolution: "react-router@npm:6.9.0" + dependencies: + "@remix-run/router": 1.4.0 + peerDependencies: + react: ">=16.8" + checksum: b2a5f42e042bee7a7f116ca7817b0e58359e5353d84887c9fe7a633d7490c03b1e0ae37cd01830c2a381e3d1e7d501bb4751e53cc3d491e25f36582d3f6e0546 + languageName: node + linkType: hard + +"react-spring@npm:9.6.1": + version: 9.6.1 + resolution: "react-spring@npm:9.6.1" + dependencies: + "@react-spring/core": ~9.6.1 + "@react-spring/konva": ~9.6.1 + "@react-spring/native": ~9.6.1 + "@react-spring/three": ~9.6.1 + "@react-spring/web": ~9.6.1 + "@react-spring/zdog": ~9.6.1 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: ee18d0fc4aa98b952c2d8c2a939c5fb05f160ca30d92b5b4a7d932910c1146120118f0506deb73fd671e147f891391a3556de512fb2cdf88b795a3c6f3b53219 + languageName: node + linkType: hard + +"react-textarea-autosize@npm:^8.4.0": + version: 8.4.0 + resolution: "react-textarea-autosize@npm:8.4.0" + dependencies: + "@babel/runtime": ^7.10.2 + use-composed-ref: ^1.3.0 + use-latest: ^1.2.1 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 055fb51b74e1ab6b286490cfcd8ed77a760f6fc90706053b5dfcb138199d02c56289a1060a1daf9f3ae37ffd66f73e9553f026d0fad446bc2243b713acf48e05 + languageName: node + linkType: hard + +"react-transition-group@npm:^4.4.5": + version: 4.4.5 + resolution: "react-transition-group@npm:4.4.5" + dependencies: + "@babel/runtime": ^7.5.5 + dom-helpers: ^5.0.1 + loose-envify: ^1.4.0 + prop-types: ^15.6.2 + peerDependencies: + react: ">=16.6.0" + react-dom: ">=16.6.0" + checksum: 75602840106aa9c6545149d6d7ae1502fb7b7abadcce70a6954c4b64a438ff1cd16fc77a0a1e5197cdd72da398f39eb929ea06f9005c45b132ed34e056ebdeb1 + languageName: node + linkType: hard + +"react-use-measure@npm:2.1.1": + version: 2.1.1 + resolution: "react-use-measure@npm:2.1.1" + dependencies: + debounce: ^1.2.1 + peerDependencies: + react: ">=16.13" + react-dom: ">=16.13" + checksum: b8e8939229d463c3c505f7b617925c0228efae0cd6f651371f463846417b06c9170be57df51293a61027c41770f8a090fdb8a08717c4e36290ccb496e0318f1f + languageName: node + linkType: hard + +"react-virtual@npm:2.10.4": + version: 2.10.4 + resolution: "react-virtual@npm:2.10.4" + dependencies: + "@reach/observe-rect": ^1.1.0 + peerDependencies: + react: ^16.6.3 || ^17.0.0 + checksum: 1bebc741b01057829a7d7f29256114caecf0597d41b187cb41e75af77f24a87c780bc1a81ec11205b78ee2e9c801fc5e36b20a9e1ab7ddc70a18dd95417795f8 + languageName: node + linkType: hard + +"react@npm:18.2.0": + version: 18.2.0 + resolution: "react@npm:18.2.0" + dependencies: + loose-envify: ^1.1.0 + checksum: 88e38092da8839b830cda6feef2e8505dec8ace60579e46aa5490fc3dc9bba0bd50336507dc166f43e3afc1c42939c09fe33b25fae889d6f402721dcd78fca1b + languageName: node + linkType: hard + +"readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0": + version: 3.6.2 + resolution: "readable-stream@npm:3.6.2" + dependencies: + inherits: ^2.0.3 + string_decoder: ^1.1.1 + util-deprecate: ^1.0.1 + checksum: bdcbe6c22e846b6af075e32cf8f4751c2576238c5043169a1c221c92ee2878458a816a4ea33f4c67623c0b6827c8a400409bfb3cf0bf3381392d0b1dfb52ac8d + languageName: node + linkType: hard + +"regenerate-unicode-properties@npm:^10.1.0": + version: 10.1.0 + resolution: "regenerate-unicode-properties@npm:10.1.0" + dependencies: + regenerate: ^1.4.2 + checksum: b1a8929588433ab8b9dc1a34cf3665b3b472f79f2af6ceae00d905fc496b332b9af09c6718fb28c730918f19a00dc1d7310adbaa9b72a2ec7ad2f435da8ace17 + languageName: node + linkType: hard + +"regenerate@npm:^1.4.2": + version: 1.4.2 + resolution: "regenerate@npm:1.4.2" + checksum: 3317a09b2f802da8db09aa276e469b57a6c0dd818347e05b8862959c6193408242f150db5de83c12c3fa99091ad95fb42a6db2c3329bfaa12a0ea4cbbeb30cb0 + languageName: node + linkType: hard + +"regenerator-runtime@npm:^0.10.5": + version: 0.10.5 + resolution: "regenerator-runtime@npm:0.10.5" + checksum: 35b33dbe5381d268b2be98f4ee4b028702acb38b012bff90723df067f915a337e5c979cce4dab4ed23febb223bbebb8820d46902f897742c55818c22c14e2a7c + languageName: node + linkType: hard + +"regenerator-runtime@npm:^0.11.0": + version: 0.11.1 + resolution: "regenerator-runtime@npm:0.11.1" + checksum: 3c97bd2c7b2b3247e6f8e2147a002eb78c995323732dad5dc70fac8d8d0b758d0295e7015b90d3d444446ae77cbd24b9f9123ec3a77018e81d8999818301b4f4 + languageName: node + linkType: hard + +"regenerator-runtime@npm:^0.12.0": + version: 0.12.1 + resolution: "regenerator-runtime@npm:0.12.1" + checksum: 348c401336bcebe2be17fd4f24c5b0a1ed75bff3024dc817a69cdc776b48b98c7f6f3b98e1baa4220569440bb9215e1fff3dcb01c8aad3ff2ed3732e30d017bf + languageName: node + linkType: hard + +"regenerator-runtime@npm:^0.13.11": + version: 0.13.11 + resolution: "regenerator-runtime@npm:0.13.11" + checksum: 27481628d22a1c4e3ff551096a683b424242a216fee44685467307f14d58020af1e19660bf2e26064de946bad7eff28950eae9f8209d55723e2d9351e632bbb4 + languageName: node + linkType: hard + +"regenerator-transform@npm:^0.15.1": + version: 0.15.1 + resolution: "regenerator-transform@npm:0.15.1" + dependencies: + "@babel/runtime": ^7.8.4 + checksum: 2d15bdeadbbfb1d12c93f5775493d85874dbe1d405bec323da5c61ec6e701bc9eea36167483e1a5e752de9b2df59ab9a2dfff6bf3784f2b28af2279a673d29a4 + languageName: node + linkType: hard + +"regexp.prototype.flags@npm:^1.4.3": + version: 1.4.3 + resolution: "regexp.prototype.flags@npm:1.4.3" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.3 + functions-have-names: ^1.2.2 + checksum: 51228bae732592adb3ededd5e15426be25f289e9c4ef15212f4da73f4ec3919b6140806374b8894036a86020d054a8d2657d3fee6bb9b4d35d8939c20030b7a6 + languageName: node + linkType: hard + +"regexpp@npm:^3.2.0": + version: 3.2.0 + resolution: "regexpp@npm:3.2.0" + checksum: a78dc5c7158ad9ddcfe01aa9144f46e192ddbfa7b263895a70a5c6c73edd9ce85faf7c0430e59ac38839e1734e275b9c3de5c57ee3ab6edc0e0b1bdebefccef8 + languageName: node + linkType: hard + +"regexpu-core@npm:^5.3.1": + version: 5.3.2 + resolution: "regexpu-core@npm:5.3.2" + dependencies: + "@babel/regjsgen": ^0.8.0 + regenerate: ^1.4.2 + regenerate-unicode-properties: ^10.1.0 + regjsparser: ^0.9.1 + unicode-match-property-ecmascript: ^2.0.0 + unicode-match-property-value-ecmascript: ^2.1.0 + checksum: 95bb97088419f5396e07769b7de96f995f58137ad75fac5811fb5fe53737766dfff35d66a0ee66babb1eb55386ef981feaef392f9df6d671f3c124812ba24da2 + languageName: node + linkType: hard + +"regjsparser@npm:^0.9.1": + version: 0.9.1 + resolution: "regjsparser@npm:0.9.1" + dependencies: + jsesc: ~0.5.0 + bin: + regjsparser: bin/parser + checksum: 5e1b76afe8f1d03c3beaf9e0d935dd467589c3625f6d65fb8ffa14f224d783a0fed4bf49c2c1b8211043ef92b6117313419edf055a098ed8342e340586741afc + languageName: node + linkType: hard + +"rehype-raw@npm:6.1.1": + version: 6.1.1 + resolution: "rehype-raw@npm:6.1.1" + dependencies: + "@types/hast": ^2.0.0 + hast-util-raw: ^7.2.0 + unified: ^10.0.0 + checksum: a1f9d309e609f49fb1f1e06e722705f4dd2e569653a89f756eaccb33b612cf1bb511216a81d10a619d11d047afc161e4b3cb99b957df05a8ba8fdbd5843f949a + languageName: node + linkType: hard + +"relay-runtime@npm:12.0.0": + version: 12.0.0 + resolution: "relay-runtime@npm:12.0.0" + dependencies: + "@babel/runtime": ^7.0.0 + fbjs: ^3.0.0 + invariant: ^2.2.4 + checksum: 51cdc8a5e04188982452ae4e7c6ac7d6375ee769130d24ce8e8f9cdd45aa7e11ecd68670f56e30dcee1b4974585e88ecce19e69a9868b80cda0db7678c3b8f0a + languageName: node + linkType: hard + +"remark-parse@npm:^10.0.0": + version: 10.0.1 + resolution: "remark-parse@npm:10.0.1" + dependencies: + "@types/mdast": ^3.0.0 + mdast-util-from-markdown: ^1.0.0 + unified: ^10.0.0 + checksum: 505088e564ab53ff054433368adbb7b551f69240c7d9768975529837a86f1d0f085e72d6211929c5c42db315273df4afc94f3d3a8662ffdb69468534c6643d29 + languageName: node + linkType: hard + +"remark-rehype@npm:^10.0.0": + version: 10.1.0 + resolution: "remark-rehype@npm:10.1.0" + dependencies: + "@types/hast": ^2.0.0 + "@types/mdast": ^3.0.0 + mdast-util-to-hast: ^12.1.0 + unified: ^10.0.0 + checksum: b9ac8acff3383b204dfdc2599d0bdf86e6ca7e837033209584af2e6aaa6a9013e519a379afa3201299798cab7298c8f4b388de118c312c67234c133318aec084 + languageName: node + linkType: hard + +"remedial@npm:^1.0.7": + version: 1.0.8 + resolution: "remedial@npm:1.0.8" + checksum: 12df7c55eb92501d7f33cfe5f5ad12be13bb6ac0c53f494aaa9963d5a5155bb8be2143e8d5e17afa1a500ef5dc71d13642920d35350f2a31b65a9778afab6869 + languageName: node + linkType: hard + +"remove-accents@npm:0.4.2": + version: 0.4.2 + resolution: "remove-accents@npm:0.4.2" + checksum: 84a6988555dea24115e2d1954db99509588d43fe55a1590f0b5894802776f7b488b3151c37ceb9e4f4b646f26b80b7325dcea2fae58bc3865df146e1fa606711 + languageName: node + linkType: hard + +"remove-trailing-separator@npm:^1.0.1": + version: 1.1.0 + resolution: "remove-trailing-separator@npm:1.1.0" + checksum: d3c20b5a2d987db13e1cca9385d56ecfa1641bae143b620835ac02a6b70ab88f68f117a0021838db826c57b31373d609d52e4f31aca75fc490c862732d595419 + languageName: node + linkType: hard + +"remove-trailing-spaces@npm:^1.0.6": + version: 1.0.8 + resolution: "remove-trailing-spaces@npm:1.0.8" + checksum: 81f615c5cd8dd6a5e3017dcc9af598965575d176d42ef99cfd7b894529991f464e629fd68aba089f5c6bebf5bb8070a5eee56f3b621aba55e8ef524d6a4d4f69 + languageName: node + linkType: hard + +"require-directory@npm:^2.1.1": + version: 2.1.1 + resolution: "require-directory@npm:2.1.1" + checksum: fb47e70bf0001fdeabdc0429d431863e9475e7e43ea5f94ad86503d918423c1543361cc5166d713eaa7029dd7a3d34775af04764bebff99ef413111a5af18c80 + languageName: node + linkType: hard + +"require-main-filename@npm:^2.0.0": + version: 2.0.0 + resolution: "require-main-filename@npm:2.0.0" + checksum: e9e294695fea08b076457e9ddff854e81bffbe248ed34c1eec348b7abbd22a0d02e8d75506559e2265e96978f3c4720bd77a6dad84755de8162b357eb6c778c7 + languageName: node + linkType: hard + +"resize-observer-polyfill@npm:1.5.1": + version: 1.5.1 + resolution: "resize-observer-polyfill@npm:1.5.1" + checksum: 57e7f79489867b00ba43c9c051524a5c8f162a61d5547e99333549afc23e15c44fd43f2f318ea0261ea98c0eb3158cca261e6f48d66e1ed1cd1f340a43977094 + languageName: node + linkType: hard + +"resize-observer@npm:^1.0.0": + version: 1.0.4 + resolution: "resize-observer@npm:1.0.4" + checksum: 43e2f45e40507279cad474f6bd2fe62e92de1fd1d67cd5285ece1fec6c1b664c4d3795b094b2be292244bf542b1b5402578670400beadc2cfedac8fb483a0976 + languageName: node + linkType: hard + +"resolve-from@npm:5.0.0": + version: 5.0.0 + resolution: "resolve-from@npm:5.0.0" + checksum: 4ceeb9113e1b1372d0cd969f3468fa042daa1dd9527b1b6bb88acb6ab55d8b9cd65dbf18819f9f9ddf0db804990901dcdaade80a215e7b2c23daae38e64f5bdf + languageName: node + linkType: hard + +"resolve-from@npm:^4.0.0": + version: 4.0.0 + resolution: "resolve-from@npm:4.0.0" + checksum: f4ba0b8494846a5066328ad33ef8ac173801a51739eb4d63408c847da9a2e1c1de1e6cbbf72699211f3d13f8fc1325648b169bd15eb7da35688e30a5fb0e4a7f + languageName: node + linkType: hard + +"resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.22.1": + version: 1.22.1 + resolution: "resolve@npm:1.22.1" + dependencies: + is-core-module: ^2.9.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: 07af5fc1e81aa1d866cbc9e9460fbb67318a10fa3c4deadc35c3ad8a898ee9a71a86a65e4755ac3195e0ea0cfbe201eb323ebe655ce90526fd61917313a34e4e + languageName: node + linkType: hard + +"resolve@npm:^2.0.0-next.4": + version: 2.0.0-next.4 + resolution: "resolve@npm:2.0.0-next.4" + dependencies: + is-core-module: ^2.9.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: c438ac9a650f2030fd074219d7f12ceb983b475da2d89ad3d6dd05fbf6b7a0a8cd37d4d10b43cb1f632bc19f22246ab7f36ebda54d84a29bfb2910a0680906d3 + languageName: node + linkType: hard + +"resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin": + version: 1.22.1 + resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin::version=1.22.1&hash=c3c19d" + dependencies: + is-core-module: ^2.9.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: 5656f4d0bedcf8eb52685c1abdf8fbe73a1603bb1160a24d716e27a57f6cecbe2432ff9c89c2bd57542c3a7b9d14b1882b73bfe2e9d7849c9a4c0b8b39f02b8b + languageName: node + linkType: hard + +"resolve@patch:resolve@^2.0.0-next.4#~builtin": + version: 2.0.0-next.4 + resolution: "resolve@patch:resolve@npm%3A2.0.0-next.4#~builtin::version=2.0.0-next.4&hash=c3c19d" + dependencies: + is-core-module: ^2.9.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: 4bf9f4f8a458607af90518ff73c67a4bc1a38b5a23fef2bb0ccbd45e8be89820a1639b637b0ba377eb2be9eedfb1739a84cde24fe4cd670c8207d8fea922b011 + languageName: node + linkType: hard + +"response-iterator@npm:^0.2.6": + version: 0.2.6 + resolution: "response-iterator@npm:0.2.6" + checksum: b0db3c0665a0d698d65512951de9623c086b9c84ce015a76076d4bd0bf733779601d0b41f0931d16ae38132fba29e1ce291c1f8e6550fc32daaa2dc3ab4f338d + languageName: node + linkType: hard + +"restore-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "restore-cursor@npm:3.1.0" + dependencies: + onetime: ^5.1.0 + signal-exit: ^3.0.2 + checksum: f877dd8741796b909f2a82454ec111afb84eb45890eb49ac947d87991379406b3b83ff9673a46012fca0d7844bb989f45cc5b788254cf1a39b6b5a9659de0630 + languageName: node + linkType: hard + +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 623bd7d2e5119467ba66202d733ec3c2e2e26568074923bc0585b6b99db14f357e79bdedb63cab56cec47491c4a0da7e6021a7465ca6dc4f481d3898fdd3158c + languageName: node + linkType: hard + +"reusify@npm:^1.0.4": + version: 1.0.4 + resolution: "reusify@npm:1.0.4" + checksum: c3076ebcc22a6bc252cb0b9c77561795256c22b757f40c0d8110b1300723f15ec0fc8685e8d4ea6d7666f36c79ccc793b1939c748bf36f18f542744a4e379fcc + languageName: node + linkType: hard + +"rfdc@npm:^1.3.0": + version: 1.3.0 + resolution: "rfdc@npm:1.3.0" + checksum: fb2ba8512e43519983b4c61bd3fa77c0f410eff6bae68b08614437bc3f35f91362215f7b4a73cbda6f67330b5746ce07db5dd9850ad3edc91271ad6deea0df32 + languageName: node + linkType: hard + +"rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "rimraf@npm:3.0.2" + dependencies: + glob: ^7.1.3 + bin: + rimraf: bin.js + checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0 + languageName: node + linkType: hard + +"rollup@npm:^3.18.0": + version: 3.20.0 + resolution: "rollup@npm:3.20.0" + dependencies: + fsevents: ~2.3.2 + dependenciesMeta: + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: ebf75f48eb81234f8233b4ed145b00841cefba26802d4f069f161247ffba085ca5bb165cc3cd662d9c36cfc135a67660dfff9088d3da2d2c6a70addc15f3233a + languageName: node + linkType: hard + +"run-async@npm:^2.4.0": + version: 2.4.1 + resolution: "run-async@npm:2.4.1" + checksum: a2c88aa15df176f091a2878eb840e68d0bdee319d8d97bbb89112223259cebecb94bc0defd735662b83c2f7a30bed8cddb7d1674eb48ae7322dc602b22d03797 + languageName: node + linkType: hard + +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: ^1.2.2 + checksum: cb4f97ad25a75ebc11a8ef4e33bb962f8af8516bb2001082ceabd8902e15b98f4b84b4f8a9b222e5d57fc3bd1379c483886ed4619367a7680dad65316993021d + languageName: node + linkType: hard + +"rxjs@npm:^7.5.5": + version: 7.8.0 + resolution: "rxjs@npm:7.8.0" + dependencies: + tslib: ^2.1.0 + checksum: 61b4d4fd323c1043d8d6ceb91f24183b28bcf5def4f01ca111511d5c6b66755bc5578587fe714ef5d67cf4c9f2e26f4490d4e1d8cabf9bd5967687835e9866a2 + languageName: node + linkType: hard + +"sade@npm:^1.7.3": + version: 1.8.1 + resolution: "sade@npm:1.8.1" + dependencies: + mri: ^1.1.0 + checksum: 0756e5b04c51ccdc8221ebffd1548d0ce5a783a44a0fa9017a026659b97d632913e78f7dca59f2496aa996a0be0b0c322afd87ca72ccd909406f49dbffa0f45d + languageName: node + linkType: hard + +"safe-buffer@npm:~5.2.0": + version: 5.2.1 + resolution: "safe-buffer@npm:5.2.1" + checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 + languageName: node + linkType: hard + +"safe-regex-test@npm:^1.0.0": + version: 1.0.0 + resolution: "safe-regex-test@npm:1.0.0" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.1.3 + is-regex: ^1.1.4 + checksum: bc566d8beb8b43c01b94e67de3f070fd2781685e835959bbbaaec91cc53381145ca91f69bd837ce6ec244817afa0a5e974fc4e40a2957f0aca68ac3add1ddd34 + languageName: node + linkType: hard + +"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 + languageName: node + linkType: hard + +"scheduler@npm:^0.23.0": + version: 0.23.0 + resolution: "scheduler@npm:0.23.0" + dependencies: + loose-envify: ^1.1.0 + checksum: d79192eeaa12abef860c195ea45d37cbf2bbf5f66e3c4dcd16f54a7da53b17788a70d109ee3d3dde1a0fd50e6a8fc171f4300356c5aee4fc0171de526bf35f8a + languageName: node + linkType: hard + +"scuid@npm:^1.1.0": + version: 1.1.0 + resolution: "scuid@npm:1.1.0" + checksum: cd094ac3718b0070a222f9a499b280c698fdea10268cc163fa244421099544c1766dd893fdee0e2a8eba5d53ab9d0bcb11067bedff166665030fa6fda25a096b + languageName: node + linkType: hard + +"semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.3.0": + version: 6.3.0 + resolution: "semver@npm:6.3.0" + bin: + semver: ./bin/semver.js + checksum: 1b26ecf6db9e8292dd90df4e781d91875c0dcc1b1909e70f5d12959a23c7eebb8f01ea581c00783bbee72ceeaad9505797c381756326073850dc36ed284b21b9 + languageName: node + linkType: hard + +"semver@npm:^7.3.5, semver@npm:^7.3.7": + version: 7.3.8 + resolution: "semver@npm:7.3.8" + dependencies: + lru-cache: ^6.0.0 + bin: + semver: bin/semver.js + checksum: ba9c7cbbf2b7884696523450a61fee1a09930d888b7a8d7579025ad93d459b2d1949ee5bbfeb188b2be5f4ac163544c5e98491ad6152df34154feebc2cc337c1 + languageName: node + linkType: hard + +"sentence-case@npm:^3.0.4": + version: 3.0.4 + resolution: "sentence-case@npm:3.0.4" + dependencies: + no-case: ^3.0.4 + tslib: ^2.0.3 + upper-case-first: ^2.0.2 + checksum: 3cfe6c0143e649132365695706702d7f729f484fa7b25f43435876efe7af2478243eefb052bacbcce10babf9319fd6b5b6bc59b94c80a1c819bcbb40651465d5 + languageName: node + linkType: hard + +"set-blocking@npm:^2.0.0": + version: 2.0.0 + resolution: "set-blocking@npm:2.0.0" + checksum: 6e65a05f7cf7ebdf8b7c75b101e18c0b7e3dff4940d480efed8aad3a36a4005140b660fa1d804cb8bce911cac290441dc728084a30504d3516ac2ff7ad607b02 + languageName: node + linkType: hard + +"setimmediate@npm:^1.0.5": + version: 1.0.5 + resolution: "setimmediate@npm:1.0.5" + checksum: c9a6f2c5b51a2dabdc0247db9c46460152ffc62ee139f3157440bd48e7c59425093f42719ac1d7931f054f153e2d26cf37dfeb8da17a794a58198a2705e527fd + languageName: node + linkType: hard + +"shallowequal@npm:^1.1.0": + version: 1.1.0 + resolution: "shallowequal@npm:1.1.0" + checksum: f4c1de0837f106d2dbbfd5d0720a5d059d1c66b42b580965c8f06bb1db684be8783538b684092648c981294bf817869f743a066538771dbecb293df78f765e00 + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: ^3.0.0 + checksum: 6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: 1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222 + languageName: node + linkType: hard + +"shell-quote@npm:^1.7.3": + version: 1.8.0 + resolution: "shell-quote@npm:1.8.0" + checksum: 6ef7c5e308b9c77eedded882653a132214fa98b4a1512bb507588cf6cd2fc78bfee73e945d0c3211af028a1eabe09c6a19b96edd8977dc149810797e93809749 + languageName: node + linkType: hard + +"shorthash@npm:0.0.2": + version: 0.0.2 + resolution: "shorthash@npm:0.0.2" + checksum: 4048833f2a7f324350cc1a48a6b64bca268e5a2e9c59cb6cad3607c41fd800bf1739498fe4b8b6737709cdb540fb74125fb7254eba98bdd3dc41e8d9f7990b20 + languageName: node + linkType: hard + +"side-channel@npm:^1.0.4": + version: 1.0.4 + resolution: "side-channel@npm:1.0.4" + dependencies: + call-bind: ^1.0.0 + get-intrinsic: ^1.0.2 + object-inspect: ^1.9.0 + checksum: 351e41b947079c10bd0858364f32bb3a7379514c399edb64ab3dce683933483fc63fb5e4efe0a15a2e8a7e3c436b6a91736ddb8d8c6591b0460a24bb4a1ee245 + languageName: node + linkType: hard + +"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.7": + version: 3.0.7 + resolution: "signal-exit@npm:3.0.7" + checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 + languageName: node + linkType: hard + +"signedsource@npm:^1.0.0": + version: 1.0.0 + resolution: "signedsource@npm:1.0.0" + checksum: 64b2c8d7a48de9009cfd3aff62bb7c88abf3b8e0421f17ebb1d7f5ca9cc9c3ad10f5a1e3ae6cd804e4e6121c87b668202ae9057065f058ddfbf34ea65f63945d + languageName: node + linkType: hard + +"slash@npm:^3.0.0": + version: 3.0.0 + resolution: "slash@npm:3.0.0" + checksum: 94a93fff615f25a999ad4b83c9d5e257a7280c90a32a7cb8b4a87996e4babf322e469c42b7f649fd5796edd8687652f3fb452a86dc97a816f01113183393f11c + languageName: node + linkType: hard + +"slice-ansi@npm:^3.0.0": + version: 3.0.0 + resolution: "slice-ansi@npm:3.0.0" + dependencies: + ansi-styles: ^4.0.0 + astral-regex: ^2.0.0 + is-fullwidth-code-point: ^3.0.0 + checksum: 5ec6d022d12e016347e9e3e98a7eb2a592213a43a65f1b61b74d2c78288da0aded781f665807a9f3876b9daa9ad94f64f77d7633a0458876c3a4fdc4eb223f24 + languageName: node + linkType: hard + +"slice-ansi@npm:^4.0.0": + version: 4.0.0 + resolution: "slice-ansi@npm:4.0.0" + dependencies: + ansi-styles: ^4.0.0 + astral-regex: ^2.0.0 + is-fullwidth-code-point: ^3.0.0 + checksum: 4a82d7f085b0e1b070e004941ada3c40d3818563ac44766cca4ceadd2080427d337554f9f99a13aaeb3b4a94d9964d9466c807b3d7b7541d1ec37ee32d308756 + languageName: node + linkType: hard + +"smart-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: b5167a7142c1da704c0e3af85c402002b597081dd9575031a90b4f229ca5678e9a36e8a374f1814c8156a725d17008ae3bde63b92f9cfd132526379e580bec8b + languageName: node + linkType: hard + +"snake-case@npm:^3.0.4": + version: 3.0.4 + resolution: "snake-case@npm:3.0.4" + dependencies: + dot-case: ^3.0.4 + tslib: ^2.0.3 + checksum: 0a7a79900bbb36f8aaa922cf111702a3647ac6165736d5dc96d3ef367efc50465cac70c53cd172c382b022dac72ec91710608e5393de71f76d7142e6fd80e8a3 + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^7.0.0": + version: 7.0.0 + resolution: "socks-proxy-agent@npm:7.0.0" + dependencies: + agent-base: ^6.0.2 + debug: ^4.3.3 + socks: ^2.6.2 + checksum: 720554370154cbc979e2e9ce6a6ec6ced205d02757d8f5d93fe95adae454fc187a5cbfc6b022afab850a5ce9b4c7d73e0f98e381879cf45f66317a4895953846 + languageName: node + linkType: hard + +"socks@npm:^2.6.2": + version: 2.7.1 + resolution: "socks@npm:2.7.1" + dependencies: + ip: ^2.0.0 + smart-buffer: ^4.2.0 + checksum: 259d9e3e8e1c9809a7f5c32238c3d4d2a36b39b83851d0f573bfde5f21c4b1288417ce1af06af1452569cd1eb0841169afd4998f0e04ba04656f6b7f0e46d748 + languageName: node + linkType: hard + +"source-map-js@npm:^1.0.2": + version: 1.0.2 + resolution: "source-map-js@npm:1.0.2" + checksum: c049a7fc4deb9a7e9b481ae3d424cc793cb4845daa690bc5a05d428bf41bf231ced49b4cf0c9e77f9d42fdb3d20d6187619fc586605f5eabe995a316da8d377c + languageName: node + linkType: hard + +"source-map@npm:^0.5.7": + version: 0.5.7 + resolution: "source-map@npm:0.5.7" + checksum: 5dc2043b93d2f194142c7f38f74a24670cd7a0063acdaf4bf01d2964b402257ae843c2a8fa822ad5b71013b5fcafa55af7421383da919752f22ff488bc553f4d + languageName: node + linkType: hard + +"space-separated-tokens@npm:^2.0.0": + version: 2.0.2 + resolution: "space-separated-tokens@npm:2.0.2" + checksum: 202e97d7ca1ba0758a0aa4fe226ff98142073bcceeff2da3aad037968878552c3bbce3b3231970025375bbba5aee00c5b8206eda408da837ab2dc9c0f26be990 + languageName: node + linkType: hard + +"sponge-case@npm:^1.0.1": + version: 1.0.1 + resolution: "sponge-case@npm:1.0.1" + dependencies: + tslib: ^2.0.3 + checksum: 64f53d930f63c5a9e59d4cae487c1ffa87d25eab682833b01d572cc885e7e3fdbad4f03409a41f03ecb27f1f8959432253eb48332c7007c3388efddb24ba2792 + languageName: node + linkType: hard + +"ssri@npm:^9.0.0": + version: 9.0.1 + resolution: "ssri@npm:9.0.1" + dependencies: + minipass: ^3.1.1 + checksum: fb58f5e46b6923ae67b87ad5ef1c5ab6d427a17db0bead84570c2df3cd50b4ceb880ebdba2d60726588272890bae842a744e1ecce5bd2a2a582fccd5068309eb + languageName: node + linkType: hard + +"state-local@npm:^1.0.6": + version: 1.0.7 + resolution: "state-local@npm:1.0.7" + checksum: d1afcf1429e7e6eb08685b3a94be8797db847369316d4776fd51f3962b15b984dacc7f8e401ad20968e5798c9565b4b377afedf4e4c4d60fe7495e1cbe14a251 + languageName: node + linkType: hard + +"stop-iteration-iterator@npm:^1.0.0": + version: 1.0.0 + resolution: "stop-iteration-iterator@npm:1.0.0" + dependencies: + internal-slot: ^1.0.4 + checksum: d04173690b2efa40e24ab70e5e51a3ff31d56d699550cfad084104ab3381390daccb36652b25755e420245f3b0737de66c1879eaa2a8d4fc0a78f9bf892fcb42 + languageName: node + linkType: hard + +"streamsearch@npm:^1.1.0": + version: 1.1.0 + resolution: "streamsearch@npm:1.1.0" + checksum: 1cce16cea8405d7a233d32ca5e00a00169cc0e19fbc02aa839959985f267335d435c07f96e5e0edd0eadc6d39c98d5435fb5bbbdefc62c41834eadc5622ad942 + languageName: node + linkType: hard + +"string-env-interpolation@npm:1.0.1, string-env-interpolation@npm:^1.0.1": + version: 1.0.1 + resolution: "string-env-interpolation@npm:1.0.1" + checksum: d126329587f635bee65300e4451e7352b9b67e03daeb62f006ca84244cac12a1f6e45176b018653ba0c3ec3b5d980f9ca59d2eeed99cf799501cdaa7f871dc6f + languageName: node + linkType: hard + +"string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: ^8.0.0 + is-fullwidth-code-point: ^3.0.0 + strip-ansi: ^6.0.1 + checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb + languageName: node + linkType: hard + +"string.prototype.matchall@npm:^4.0.8": + version: 4.0.8 + resolution: "string.prototype.matchall@npm:4.0.8" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + get-intrinsic: ^1.1.3 + has-symbols: ^1.0.3 + internal-slot: ^1.0.3 + regexp.prototype.flags: ^1.4.3 + side-channel: ^1.0.4 + checksum: 952da3a818de42ad1c10b576140a5e05b4de7b34b8d9dbf00c3ac8c1293e9c0f533613a39c5cda53e0a8221f2e710bc2150e730b1c2278d60004a8a35726efb6 + languageName: node + linkType: hard + +"string.prototype.trim@npm:^1.2.7": + version: 1.2.7 + resolution: "string.prototype.trim@npm:1.2.7" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + checksum: 05b7b2d6af63648e70e44c4a8d10d8cc457536df78b55b9d6230918bde75c5987f6b8604438c4c8652eb55e4fc9725d2912789eb4ec457d6995f3495af190c09 + languageName: node + linkType: hard + +"string.prototype.trimend@npm:^1.0.6": + version: 1.0.6 + resolution: "string.prototype.trimend@npm:1.0.6" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + checksum: 0fdc34645a639bd35179b5a08227a353b88dc089adf438f46be8a7c197fc3f22f8514c1c9be4629b3cd29c281582730a8cbbad6466c60f76b5f99cf2addb132e + languageName: node + linkType: hard + +"string.prototype.trimstart@npm:^1.0.6": + version: 1.0.6 + resolution: "string.prototype.trimstart@npm:1.0.6" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + checksum: 89080feef416621e6ef1279588994305477a7a91648d9436490d56010a1f7adc39167cddac7ce0b9884b8cdbef086987c4dcb2960209f2af8bac0d23ceff4f41 + languageName: node + linkType: hard + +"string_decoder@npm:^1.1.1": + version: 1.3.0 + resolution: "string_decoder@npm:1.3.0" + dependencies: + safe-buffer: ~5.2.0 + checksum: 8417646695a66e73aefc4420eb3b84cc9ffd89572861fe004e6aeb13c7bc00e2f616247505d2dbbef24247c372f70268f594af7126f43548565c68c117bdeb56 + languageName: node + linkType: hard + +"strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: ^5.0.1 + checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c + languageName: node + linkType: hard + +"strip-bom@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-bom@npm:3.0.0" + checksum: 8d50ff27b7ebe5ecc78f1fe1e00fcdff7af014e73cf724b46fb81ef889eeb1015fc5184b64e81a2efe002180f3ba431bdd77e300da5c6685d702780fbf0c8d5b + languageName: node + linkType: hard + +"strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": + version: 3.1.1 + resolution: "strip-json-comments@npm:3.1.1" + checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 + languageName: node + linkType: hard + +"style-to-object@npm:^0.4.0": + version: 0.4.1 + resolution: "style-to-object@npm:0.4.1" + dependencies: + inline-style-parser: 0.1.1 + checksum: 2ea213e98eed21764ae1d1dc9359231a9f2d480d6ba55344c4c15eb275f0809f1845786e66d4caf62414a5cc8f112ce9425a58d251c77224060373e0db48f8c2 + languageName: node + linkType: hard + +"styled-components@npm:5.3.9": + version: 5.3.9 + resolution: "styled-components@npm:5.3.9" + dependencies: + "@babel/helper-module-imports": ^7.0.0 + "@babel/traverse": ^7.4.5 + "@emotion/is-prop-valid": ^1.1.0 + "@emotion/stylis": ^0.8.4 + "@emotion/unitless": ^0.7.4 + babel-plugin-styled-components: ">= 1.12.0" + css-to-react-native: ^3.0.0 + hoist-non-react-statics: ^3.0.0 + shallowequal: ^1.1.0 + supports-color: ^5.5.0 + peerDependencies: + react: ">= 16.8.0" + react-dom: ">= 16.8.0" + react-is: ">= 16.8.0" + checksum: 404311cc7028259218674d3f9f39bdda2342fc02f2ebbba8f057ef560b2ad205c5bd63b82deed4d0bf217ac7eb960d0e1127510b0b606e32cbd5a48c10373ce8 + languageName: node + linkType: hard + +"styled-container-query@npm:1.3.5": + version: 1.3.5 + resolution: "styled-container-query@npm:1.3.5" + dependencies: + classnames: ^2.2.6 + hoist-non-react-statics: ^3.3.2 + resize-observer: ^1.0.0 + shorthash: 0.0.2 + peerDependencies: + react: ^16.9.0 + react-dom: ^16.9.0 + styled-components: ^4.3.2 + checksum: 4bc8e046234ce39b33df199603bf4a3887abb5239966d5b3904b45b79889385320bd0df7129a0805c945947aa692ca6b950296d041ee68b6b667f912926c3b77 + languageName: node + linkType: hard + +"stylis@npm:4.1.3": + version: 4.1.3 + resolution: "stylis@npm:4.1.3" + checksum: d04dbffcb9bf2c5ca8d8dc09534203c75df3bf711d33973ea22038a99cc475412a350b661ebd99cbc01daa50d7eedcf0d130d121800eb7318759a197023442a6 + languageName: node + linkType: hard + +"supports-color@npm:^5.3.0, supports-color@npm:^5.5.0": + version: 5.5.0 + resolution: "supports-color@npm:5.5.0" + dependencies: + has-flag: ^3.0.0 + checksum: 95f6f4ba5afdf92f495b5a912d4abee8dcba766ae719b975c56c084f5004845f6f5a5f7769f52d53f40e21952a6d87411bafe34af4a01e65f9926002e38e1dac + languageName: node + linkType: hard + +"supports-color@npm:^7.1.0": + version: 7.2.0 + resolution: "supports-color@npm:7.2.0" + dependencies: + has-flag: ^4.0.0 + checksum: 3dda818de06ebbe5b9653e07842d9479f3555ebc77e9a0280caf5a14fb877ffee9ed57007c3b78f5a6324b8dbeec648d9e97a24e2ed9fdb81ddc69ea07100f4a + languageName: node + linkType: hard + +"supports-preserve-symlinks-flag@npm:^1.0.0": + version: 1.0.0 + resolution: "supports-preserve-symlinks-flag@npm:1.0.0" + checksum: 53b1e247e68e05db7b3808b99b892bd36fb096e6fba213a06da7fab22045e97597db425c724f2bbd6c99a3c295e1e73f3e4de78592289f38431049e1277ca0ae + languageName: node + linkType: hard + +"swap-case@npm:^2.0.2": + version: 2.0.2 + resolution: "swap-case@npm:2.0.2" + dependencies: + tslib: ^2.0.3 + checksum: 6e21c9e1b3cd5735eb2af679a99ec3efc78a14e3d4d5e3fd594e254b91cfd37185b3d1c6e41b22f53a2cdf5d1b963ce30c0fe8b78337e3fd43d0137084670a5f + languageName: node + linkType: hard + +"symbol-observable@npm:^4.0.0": + version: 4.0.0 + resolution: "symbol-observable@npm:4.0.0" + checksum: 212c7edce6186634d671336a88c0e0bbd626c2ab51ed57498dc90698cce541839a261b969c2a1e8dd43762133d47672e8b62e0b1ce9cf4157934ba45fd172ba8 + languageName: node + linkType: hard + +"tabbable@npm:^6.0.1": + version: 6.1.1 + resolution: "tabbable@npm:6.1.1" + checksum: 348639497262241ce8e0ccb0664ea582a386183107299ee8f27cf7b56bc84f36e09eaf667d3cb4201e789634012a91f7129bcbd49760abe874fbace35b4cf429 + languageName: node + linkType: hard + +"tar@npm:^6.1.11, tar@npm:^6.1.2": + version: 6.1.13 + resolution: "tar@npm:6.1.13" + dependencies: + chownr: ^2.0.0 + fs-minipass: ^2.0.0 + minipass: ^4.0.0 + minizlib: ^2.1.1 + mkdirp: ^1.0.3 + yallist: ^4.0.0 + checksum: 8a278bed123aa9f53549b256a36b719e317c8b96fe86a63406f3c62887f78267cea9b22dc6f7007009738509800d4a4dccc444abd71d762287c90f35b002eb1c + languageName: node + linkType: hard + +"text-table@npm:^0.2.0": + version: 0.2.0 + resolution: "text-table@npm:0.2.0" + checksum: b6937a38c80c7f84d9c11dd75e49d5c44f71d95e810a3250bd1f1797fc7117c57698204adf676b71497acc205d769d65c16ae8fa10afad832ae1322630aef10a + languageName: node + linkType: hard + +"through@npm:^2.3.6, through@npm:^2.3.8": + version: 2.3.8 + resolution: "through@npm:2.3.8" + checksum: a38c3e059853c494af95d50c072b83f8b676a9ba2818dcc5b108ef252230735c54e0185437618596c790bbba8fcdaef5b290405981ffa09dce67b1f1bf190cbd + languageName: node + linkType: hard + +"title-case@npm:^3.0.3": + version: 3.0.3 + resolution: "title-case@npm:3.0.3" + dependencies: + tslib: ^2.0.3 + checksum: e8b7ea006b53cf3208d278455d9f1e22c409459d7f9878da324fa3b18cc0aef8560924c19c744e870394a5d9cddfdbe029ebae9875909ee7f4fc562e7cbfc53e + languageName: node + linkType: hard + +"tmp@npm:^0.0.33": + version: 0.0.33 + resolution: "tmp@npm:0.0.33" + dependencies: + os-tmpdir: ~1.0.2 + checksum: 902d7aceb74453ea02abbf58c203f4a8fc1cead89b60b31e354f74ed5b3fb09ea817f94fb310f884a5d16987dd9fa5a735412a7c2dd088dd3d415aa819ae3a28 + languageName: node + linkType: hard + +"to-fast-properties@npm:^2.0.0": + version: 2.0.0 + resolution: "to-fast-properties@npm:2.0.0" + checksum: be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168 + languageName: node + linkType: hard + +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: ^7.0.0 + checksum: f76fa01b3d5be85db6a2a143e24df9f60dd047d151062d0ba3df62953f2f697b16fe5dad9b0ac6191c7efc7b1d9dcaa4b768174b7b29da89d4428e64bc0a20ed + languageName: node + linkType: hard + +"tr46@npm:~0.0.3": + version: 0.0.3 + resolution: "tr46@npm:0.0.3" + checksum: 726321c5eaf41b5002e17ffbd1fb7245999a073e8979085dacd47c4b4e8068ff5777142fc6726d6ca1fd2ff16921b48788b87225cbc57c72636f6efa8efbffe3 + languageName: node + linkType: hard + +"trim-lines@npm:^3.0.0": + version: 3.0.1 + resolution: "trim-lines@npm:3.0.1" + checksum: e241da104682a0e0d807222cc1496b92e716af4db7a002f4aeff33ae6a0024fef93165d49eab11aa07c71e1347c42d46563f91dfaa4d3fb945aa535cdead53ed + languageName: node + linkType: hard + +"trough@npm:^2.0.0": + version: 2.1.0 + resolution: "trough@npm:2.1.0" + checksum: a577bb561c2b401cc0e1d9e188fcfcdf63b09b151ff56a668da12197fe97cac15e3d77d5b51f426ccfd94255744a9118e9e9935afe81a3644fa1be9783c82886 + languageName: node + linkType: hard + +"ts-invariant@npm:^0.10.3": + version: 0.10.3 + resolution: "ts-invariant@npm:0.10.3" + dependencies: + tslib: ^2.1.0 + checksum: bb07d56fe4aae69d8860e0301dfdee2d375281159054bc24bf1e49e513fb0835bf7f70a11351344d213a79199c5e695f37ebbf5a447188a377ce0cd81d91ddb5 + languageName: node + linkType: hard + +"ts-invariant@npm:^0.4.0": + version: 0.4.4 + resolution: "ts-invariant@npm:0.4.4" + dependencies: + tslib: ^1.9.3 + checksum: 58b32fb6b7c479e602e55b9eb63bb99a203c5db09367d3aa7c3cbe000ba62f919eea7f031f55172df9b6d362a6f1a87e906df84b04b8c74c88e507ac58f7a554 + languageName: node + linkType: hard + +"ts-log@npm:^2.2.3": + version: 2.2.5 + resolution: "ts-log@npm:2.2.5" + checksum: 28f78ab15b8555d56c089dbc243327d8ce4331219956242a29fc4cb3bad6bb0cb8234dd17a292381a1b1dba99a7e4849a2181b2e1a303e8247e9f4ca4e284f2d + languageName: node + linkType: hard + +"tsconfig-paths@npm:^3.14.1": + version: 3.14.2 + resolution: "tsconfig-paths@npm:3.14.2" + dependencies: + "@types/json5": ^0.0.29 + json5: ^1.0.2 + minimist: ^1.2.6 + strip-bom: ^3.0.0 + checksum: a6162eaa1aed680537f93621b82399c7856afd10ec299867b13a0675e981acac4e0ec00896860480efc59fc10fd0b16fdc928c0b885865b52be62cadac692447 + languageName: node + linkType: hard + +"tslib@npm:^1.10.0, tslib@npm:^1.8.1, tslib@npm:^1.9.3": + version: 1.14.1 + resolution: "tslib@npm:1.14.1" + checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd + languageName: node + linkType: hard + +"tslib@npm:^2.0.0, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.5.0, tslib@npm:~2.5.0": + version: 2.5.0 + resolution: "tslib@npm:2.5.0" + checksum: ae3ed5f9ce29932d049908ebfdf21b3a003a85653a9a140d614da6b767a93ef94f460e52c3d787f0e4f383546981713f165037dc2274df212ea9f8a4541004e1 + languageName: node + linkType: hard + +"tslib@npm:~2.4.0": + version: 2.4.1 + resolution: "tslib@npm:2.4.1" + checksum: 19480d6e0313292bd6505d4efe096a6b31c70e21cf08b5febf4da62e95c265c8f571f7b36fcc3d1a17e068032f59c269fab3459d6cd3ed6949eafecf64315fca + languageName: node + linkType: hard + +"tsutils@npm:^3.21.0": + version: 3.21.0 + resolution: "tsutils@npm:3.21.0" + dependencies: + tslib: ^1.8.1 + peerDependencies: + typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + checksum: 1843f4c1b2e0f975e08c4c21caa4af4f7f65a12ac1b81b3b8489366826259323feb3fc7a243123453d2d1a02314205a7634e048d4a8009921da19f99755cdc48 + languageName: node + linkType: hard + +"type-check@npm:^0.4.0, type-check@npm:~0.4.0": + version: 0.4.0 + resolution: "type-check@npm:0.4.0" + dependencies: + prelude-ls: ^1.2.1 + checksum: ec688ebfc9c45d0c30412e41ca9c0cdbd704580eb3a9ccf07b9b576094d7b86a012baebc95681999dd38f4f444afd28504cb3a89f2ef16b31d4ab61a0739025a + languageName: node + linkType: hard + +"type-fest@npm:^0.20.2": + version: 0.20.2 + resolution: "type-fest@npm:0.20.2" + checksum: 4fb3272df21ad1c552486f8a2f8e115c09a521ad7a8db3d56d53718d0c907b62c6e9141ba5f584af3f6830d0872c521357e512381f24f7c44acae583ad517d73 + languageName: node + linkType: hard + +"type-fest@npm:^0.21.3": + version: 0.21.3 + resolution: "type-fest@npm:0.21.3" + checksum: e6b32a3b3877f04339bae01c193b273c62ba7bfc9e325b8703c4ee1b32dc8fe4ef5dfa54bf78265e069f7667d058e360ae0f37be5af9f153b22382cd55a9afe0 + languageName: node + linkType: hard + +"typed-array-length@npm:^1.0.4": + version: 1.0.4 + resolution: "typed-array-length@npm:1.0.4" + dependencies: + call-bind: ^1.0.2 + for-each: ^0.3.3 + is-typed-array: ^1.1.9 + checksum: 2228febc93c7feff142b8c96a58d4a0d7623ecde6c7a24b2b98eb3170e99f7c7eff8c114f9b283085cd59dcd2bd43aadf20e25bba4b034a53c5bb292f71f8956 + languageName: node + linkType: hard + +"typescript@npm:4.9.4": + version: 4.9.4 + resolution: "typescript@npm:4.9.4" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: e782fb9e0031cb258a80000f6c13530288c6d63f1177ed43f770533fdc15740d271554cdae86701c1dd2c83b082cea808b07e97fd68b38a172a83dbf9e0d0ef9 + languageName: node + linkType: hard + +"typescript@npm:5.0.2": + version: 5.0.2 + resolution: "typescript@npm:5.0.2" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: bef1dcd166acfc6934b2ec4d72f93edb8961a5fab36b8dd2aaf6f4f4cd5c0210f2e0850aef4724f3b4913d5aef203a94a28ded731b370880c8bcff7e4ff91fc1 + languageName: node + linkType: hard + +"typescript@patch:typescript@4.9.4#~builtin": + version: 4.9.4 + resolution: "typescript@patch:typescript@npm%3A4.9.4#~builtin::version=4.9.4&hash=23ec76" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 3e2ab0772908676d9b9cb83398c70003a3b08e1c6b3b122409df9f4b520f2fdaefa20c3d7d57dce283fed760ac94b3ce94d4a7fa875127b67852904425a1f0dc + languageName: node + linkType: hard + +"typescript@patch:typescript@5.0.2#~builtin": + version: 5.0.2 + resolution: "typescript@patch:typescript@npm%3A5.0.2#~builtin::version=5.0.2&hash=1f5320" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: bdbf3d0aac0d6cf010fbe0536753dc19f278eb4aba88140dcd25487dfe1c56ca8b33abc0dcd42078790a939b08ebc4046f3e9bb961d77d3d2c3cfa9829da4d53 + languageName: node + linkType: hard + +"ua-parser-js@npm:^0.7.30": + version: 0.7.34 + resolution: "ua-parser-js@npm:0.7.34" + checksum: ddb7b8b590af49f37eaac37579ac98274f59fff3990610f45e33893aa62ce5b8fc265459cb78b9c9fa3fbbbaad5b2d7939303f18cbd7e8c25c96e57009443c42 + languageName: node + linkType: hard + +"unbox-primitive@npm:^1.0.2": + version: 1.0.2 + resolution: "unbox-primitive@npm:1.0.2" + dependencies: + call-bind: ^1.0.2 + has-bigints: ^1.0.2 + has-symbols: ^1.0.3 + which-boxed-primitive: ^1.0.2 + checksum: b7a1cf5862b5e4b5deb091672ffa579aa274f648410009c81cca63fed3b62b610c4f3b773f912ce545bb4e31edc3138975b5bc777fc6e4817dca51affb6380e9 + languageName: node + linkType: hard + +"unc-path-regex@npm:^0.1.2": + version: 0.1.2 + resolution: "unc-path-regex@npm:0.1.2" + checksum: a05fa2006bf4606051c10fc7968f08ce7b28fa646befafa282813aeb1ac1a56f65cb1b577ca7851af2726198d59475bb49b11776036257b843eaacee2860a4ec + languageName: node + linkType: hard + +"unicode-canonical-property-names-ecmascript@npm:^2.0.0": + version: 2.0.0 + resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" + checksum: 39be078afd014c14dcd957a7a46a60061bc37c4508ba146517f85f60361acf4c7539552645ece25de840e17e293baa5556268d091ca6762747fdd0c705001a45 + languageName: node + linkType: hard + +"unicode-match-property-ecmascript@npm:^2.0.0": + version: 2.0.0 + resolution: "unicode-match-property-ecmascript@npm:2.0.0" + dependencies: + unicode-canonical-property-names-ecmascript: ^2.0.0 + unicode-property-aliases-ecmascript: ^2.0.0 + checksum: 1f34a7434a23df4885b5890ac36c5b2161a809887000be560f56ad4b11126d433c0c1c39baf1016bdabed4ec54829a6190ee37aa24919aa116dc1a5a8a62965a + languageName: node + linkType: hard + +"unicode-match-property-value-ecmascript@npm:^2.1.0": + version: 2.1.0 + resolution: "unicode-match-property-value-ecmascript@npm:2.1.0" + checksum: 8d6f5f586b9ce1ed0e84a37df6b42fdba1317a05b5df0c249962bd5da89528771e2d149837cad11aa26bcb84c35355cb9f58a10c3d41fa3b899181ece6c85220 + languageName: node + linkType: hard + +"unicode-property-aliases-ecmascript@npm:^2.0.0": + version: 2.1.0 + resolution: "unicode-property-aliases-ecmascript@npm:2.1.0" + checksum: 243524431893649b62cc674d877bd64ef292d6071dd2fd01ab4d5ad26efbc104ffcd064f93f8a06b7e4ec54c172bf03f6417921a0d8c3a9994161fe1f88f815b + languageName: node + linkType: hard + +"unified@npm:^10.0.0": + version: 10.1.2 + resolution: "unified@npm:10.1.2" + dependencies: + "@types/unist": ^2.0.0 + bail: ^2.0.0 + extend: ^3.0.0 + is-buffer: ^2.0.0 + is-plain-obj: ^4.0.0 + trough: ^2.0.0 + vfile: ^5.0.0 + checksum: 053e7c65ede644607f87bd625a299e4b709869d2f76ec8138569e6e886903b6988b21cd9699e471eda42bee189527be0a9dac05936f1d069a5e65d0125d5d756 + languageName: node + linkType: hard + +"unique-filename@npm:^2.0.0": + version: 2.0.1 + resolution: "unique-filename@npm:2.0.1" + dependencies: + unique-slug: ^3.0.0 + checksum: 807acf3381aff319086b64dc7125a9a37c09c44af7620bd4f7f3247fcd5565660ac12d8b80534dcbfd067e6fe88a67e621386dd796a8af828d1337a8420a255f + languageName: node + linkType: hard + +"unique-slug@npm:^3.0.0": + version: 3.0.0 + resolution: "unique-slug@npm:3.0.0" + dependencies: + imurmurhash: ^0.1.4 + checksum: 49f8d915ba7f0101801b922062ee46b7953256c93ceca74303bd8e6413ae10aa7e8216556b54dc5382895e8221d04f1efaf75f945c2e4a515b4139f77aa6640c + languageName: node + linkType: hard + +"unist-util-generated@npm:^2.0.0": + version: 2.0.1 + resolution: "unist-util-generated@npm:2.0.1" + checksum: 6221ad0571dcc9c8964d6b054f39ef6571ed59cc0ce3e88ae97ea1c70afe76b46412a5ffaa91f96814644ac8477e23fb1b477d71f8d70e625728c5258f5c0d99 + languageName: node + linkType: hard + +"unist-util-is@npm:^5.0.0": + version: 5.2.1 + resolution: "unist-util-is@npm:5.2.1" + dependencies: + "@types/unist": ^2.0.0 + checksum: ae76fdc3d35352cd92f1bedc3a0d407c3b9c42599a52ab9141fe89bdd786b51f0ec5a2ab68b93fb532e239457cae62f7e39eaa80229e1cb94875da2eafcbe5c4 + languageName: node + linkType: hard + +"unist-util-position@npm:^4.0.0": + version: 4.0.4 + resolution: "unist-util-position@npm:4.0.4" + dependencies: + "@types/unist": ^2.0.0 + checksum: e7487b6cec9365299695e3379ded270a1717074fa11fd2407c9b934fb08db6fe1d9077ddeaf877ecf1813665f8ccded5171693d3d9a7a01a125ec5cdd5e88691 + languageName: node + linkType: hard + +"unist-util-stringify-position@npm:^3.0.0": + version: 3.0.3 + resolution: "unist-util-stringify-position@npm:3.0.3" + dependencies: + "@types/unist": ^2.0.0 + checksum: dbd66c15183607ca942a2b1b7a9f6a5996f91c0d30cf8966fb88955a02349d9eefd3974e9010ee67e71175d784c5a9fea915b0aa0b0df99dcb921b95c4c9e124 + languageName: node + linkType: hard + +"unist-util-visit-parents@npm:^5.1.1": + version: 5.1.3 + resolution: "unist-util-visit-parents@npm:5.1.3" + dependencies: + "@types/unist": ^2.0.0 + unist-util-is: ^5.0.0 + checksum: 8ecada5978994f846b64658cf13b4092cd78dea39e1ba2f5090a5de842ba4852712c02351a8ae95250c64f864635e7b02aedf3b4a093552bb30cf1bd160efbaa + languageName: node + linkType: hard + +"unist-util-visit@npm:^4.0.0": + version: 4.1.2 + resolution: "unist-util-visit@npm:4.1.2" + dependencies: + "@types/unist": ^2.0.0 + unist-util-is: ^5.0.0 + unist-util-visit-parents: ^5.1.1 + checksum: 95a34e3f7b5b2d4b68fd722b6229972099eb97b6df18913eda44a5c11df8b1e27efe7206dd7b88c4ed244a48c474a5b2e2629ab79558ff9eb936840295549cee + languageName: node + linkType: hard + +"unixify@npm:^1.0.0": + version: 1.0.0 + resolution: "unixify@npm:1.0.0" + dependencies: + normalize-path: ^2.1.1 + checksum: 3be30e48579fc6c7390bd59b4ab9e745fede0c164dfb7351cf710bd1dbef8484b1441186205af6bcb13b731c0c88caf9b33459f7bf8c89e79c046e656ae433f0 + languageName: node + linkType: hard + +"update-browserslist-db@npm:^1.0.10": + version: 1.0.10 + resolution: "update-browserslist-db@npm:1.0.10" + dependencies: + escalade: ^3.1.1 + picocolors: ^1.0.0 + peerDependencies: + browserslist: ">= 4.21.0" + bin: + browserslist-lint: cli.js + checksum: 12db73b4f63029ac407b153732e7cd69a1ea8206c9100b482b7d12859cd3cd0bc59c602d7ae31e652706189f1acb90d42c53ab24a5ba563ed13aebdddc5561a0 + languageName: node + linkType: hard + +"upper-case-first@npm:^2.0.2": + version: 2.0.2 + resolution: "upper-case-first@npm:2.0.2" + dependencies: + tslib: ^2.0.3 + checksum: 4487db4701effe3b54ced4b3e4aa4d9ab06c548f97244d04aafb642eedf96a76d5a03cf5f38f10f415531d5792d1ac6e1b50f2a76984dc6964ad530f12876409 + languageName: node + linkType: hard + +"upper-case@npm:^2.0.2": + version: 2.0.2 + resolution: "upper-case@npm:2.0.2" + dependencies: + tslib: ^2.0.3 + checksum: 508723a2b03ab90cf1d6b7e0397513980fab821cbe79c87341d0e96cedefadf0d85f9d71eac24ab23f526a041d585a575cfca120a9f920e44eb4f8a7cf89121c + languageName: node + linkType: hard + +"uri-js@npm:^4.2.2": + version: 4.4.1 + resolution: "uri-js@npm:4.4.1" + dependencies: + punycode: ^2.1.0 + checksum: 7167432de6817fe8e9e0c9684f1d2de2bb688c94388f7569f7dbdb1587c9f4ca2a77962f134ec90be0cc4d004c939ff0d05acc9f34a0db39a3c797dada262633 + languageName: node + linkType: hard + +"urlpattern-polyfill@npm:^6.0.2": + version: 6.0.2 + resolution: "urlpattern-polyfill@npm:6.0.2" + dependencies: + braces: ^3.0.2 + checksum: 564fb223761b67ea76d015f11dfec145db98c71cc35641015d1c9ec164da494b1fab614e652a844e14a72cda31236b9c3a59b22fdcca71166c315ab059fab676 + languageName: node + linkType: hard + +"use-composed-ref@npm:^1.3.0": + version: 1.3.0 + resolution: "use-composed-ref@npm:1.3.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: f771cbadfdc91e03b7ab9eb32d0fc0cc647755711801bf507e891ad38c4bbc5f02b2509acadf9c965ec9c5f2f642fd33bdfdfb17b0873c4ad0a9b1f5e5e724bf + languageName: node + linkType: hard + +"use-immer@npm:0.8.1": + version: 0.8.1 + resolution: "use-immer@npm:0.8.1" + peerDependencies: + immer: ">=2.0.0" + react: ^16.8.0 || ^17.0.1 || ^18.0.0 + checksum: 9ffc1a201a92b6b026c420718e6a00e72ba48b62420bb515927b379bb1d791b5b4766b57c755b4851c0e1f80000e639bc1cf8e73424e44466741c159391d35dd + languageName: node + linkType: hard + +"use-isomorphic-layout-effect@npm:^1.1.1": + version: 1.1.2 + resolution: "use-isomorphic-layout-effect@npm:1.1.2" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: a6532f7fc9ae222c3725ff0308aaf1f1ddbd3c00d685ef9eee6714fd0684de5cb9741b432fbf51e61a784e2955424864f7ea9f99734a02f237b17ad3e18ea5cb + languageName: node + linkType: hard + +"use-latest@npm:^1.2.1": + version: 1.2.1 + resolution: "use-latest@npm:1.2.1" + dependencies: + use-isomorphic-layout-effect: ^1.1.1 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: ed3f2ddddf6f21825e2ede4c2e0f0db8dcce5129802b69d1f0575fc1b42380436e8c76a6cd885d4e9aa8e292e60fb8b959c955f33c6a9123b83814a1a1875367 + languageName: node + linkType: hard + +"util-deprecate@npm:^1.0.1": + version: 1.0.2 + resolution: "util-deprecate@npm:1.0.2" + checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 + languageName: node + linkType: hard + +"uvu@npm:^0.5.0": + version: 0.5.6 + resolution: "uvu@npm:0.5.6" + dependencies: + dequal: ^2.0.0 + diff: ^5.0.0 + kleur: ^4.0.3 + sade: ^1.7.3 + bin: + uvu: bin.js + checksum: 09460a37975627de9fcad396e5078fb844d01aaf64a6399ebfcfd9e55f1c2037539b47611e8631f89be07656962af0cf48c334993db82b9ae9c3d25ce3862168 + languageName: node + linkType: hard + +"value-or-promise@npm:1.0.12, value-or-promise@npm:^1.0.11, value-or-promise@npm:^1.0.12": + version: 1.0.12 + resolution: "value-or-promise@npm:1.0.12" + checksum: f53a66c75b7447c90bbaf946a757ca09c094629cb80ba742f59c980ec3a69be0a385a0e75505dedb4e757862f1a994ca4beaf083a831f24d3ffb3d4bb18cd1e1 + languageName: node + linkType: hard + +"vfile-location@npm:^4.0.0": + version: 4.1.0 + resolution: "vfile-location@npm:4.1.0" + dependencies: + "@types/unist": ^2.0.0 + vfile: ^5.0.0 + checksum: c894e8e5224170d1f85288f4a1d1ebcee0780823ea2b49d881648ab360ebf01b37ecb09b1c4439a75f9a51f31a9f9742cd045e987763e367c352a1ef7c50d446 + languageName: node + linkType: hard + +"vfile-message@npm:^3.0.0": + version: 3.1.4 + resolution: "vfile-message@npm:3.1.4" + dependencies: + "@types/unist": ^2.0.0 + unist-util-stringify-position: ^3.0.0 + checksum: d0ee7da1973ad76513c274e7912adbed4d08d180eaa34e6bd40bc82459f4b7bc50fcaff41556135e3339995575eac5f6f709aba9332b80f775618ea4880a1367 + languageName: node + linkType: hard + +"vfile@npm:^5.0.0": + version: 5.3.7 + resolution: "vfile@npm:5.3.7" + dependencies: + "@types/unist": ^2.0.0 + is-buffer: ^2.0.0 + unist-util-stringify-position: ^3.0.0 + vfile-message: ^3.0.0 + checksum: 642cce703afc186dbe7cabf698dc954c70146e853491086f5da39e1ce850676fc96b169fcf7898aa3ff245e9313aeec40da93acd1e1fcc0c146dc4f6308b4ef9 + languageName: node + linkType: hard + +"vite@npm:4.2.1": + version: 4.2.1 + resolution: "vite@npm:4.2.1" + dependencies: + esbuild: ^0.17.5 + fsevents: ~2.3.2 + postcss: ^8.4.21 + resolve: ^1.22.1 + rollup: ^3.18.0 + peerDependencies: + "@types/node": ">= 14" + less: "*" + sass: "*" + stylus: "*" + sugarss: "*" + terser: ^5.4.0 + dependenciesMeta: + fsevents: + optional: true + peerDependenciesMeta: + "@types/node": + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + bin: + vite: bin/vite.js + checksum: 70eb162ffc299017a3c310e3adc95e9661def6b17aafd1f8e5e02e516766060435590dbe3df1e4e95acc3583c728a76e91f07c546221d1e701f1b2b021293f45 + languageName: node + linkType: hard + +"wcwidth@npm:^1.0.1": + version: 1.0.1 + resolution: "wcwidth@npm:1.0.1" + dependencies: + defaults: ^1.0.3 + checksum: 814e9d1ddcc9798f7377ffa448a5a3892232b9275ebb30a41b529607691c0491de47cba426e917a4d08ded3ee7e9ba2f3fe32e62ee3cd9c7d3bafb7754bd553c + languageName: node + linkType: hard + +"web-namespaces@npm:^2.0.0": + version: 2.0.1 + resolution: "web-namespaces@npm:2.0.1" + checksum: b6d9f02f1a43d0ef0848a812d89c83801d5bbad57d8bb61f02eb6d7eb794c3736f6cc2e1191664bb26136594c8218ac609f4069722c6f56d9fc2d808fa9271c6 + languageName: node + linkType: hard + +"web-streams-polyfill@npm:^3.2.1": + version: 3.2.1 + resolution: "web-streams-polyfill@npm:3.2.1" + checksum: b119c78574b6d65935e35098c2afdcd752b84268e18746606af149e3c424e15621b6f1ff0b42b2676dc012fc4f0d313f964b41a4b5031e525faa03997457da02 + languageName: node + linkType: hard + +"webcrypto-core@npm:^1.7.7": + version: 1.7.7 + resolution: "webcrypto-core@npm:1.7.7" + dependencies: + "@peculiar/asn1-schema": ^2.3.6 + "@peculiar/json-schema": ^1.1.12 + asn1js: ^3.0.1 + pvtsutils: ^1.3.2 + tslib: ^2.4.0 + checksum: 1dc5aedb250372dd95e175a671b990ae50e36974f99c4efc85d88e6528c1bc52dd964d44a41b68043c21fb26aabfe8aad4f05a1c39ca28d61de5ca7388413d52 + languageName: node + linkType: hard + +"webidl-conversions@npm:^3.0.0": + version: 3.0.1 + resolution: "webidl-conversions@npm:3.0.1" + checksum: c92a0a6ab95314bde9c32e1d0a6dfac83b578f8fa5f21e675bc2706ed6981bc26b7eb7e6a1fab158e5ce4adf9caa4a0aee49a52505d4d13c7be545f15021b17c + languageName: node + linkType: hard + +"whatwg-fetch@npm:^3.4.1": + version: 3.6.2 + resolution: "whatwg-fetch@npm:3.6.2" + checksum: ee976b7249e7791edb0d0a62cd806b29006ad7ec3a3d89145921ad8c00a3a67e4be8f3fb3ec6bc7b58498724fd568d11aeeeea1f7827e7e1e5eae6c8a275afed + languageName: node + linkType: hard + +"whatwg-url@npm:^5.0.0": + version: 5.0.0 + resolution: "whatwg-url@npm:5.0.0" + dependencies: + tr46: ~0.0.3 + webidl-conversions: ^3.0.0 + checksum: b8daed4ad3356cc4899048a15b2c143a9aed0dfae1f611ebd55073310c7b910f522ad75d727346ad64203d7e6c79ef25eafd465f4d12775ca44b90fa82ed9e2c + languageName: node + linkType: hard + +"which-boxed-primitive@npm:^1.0.2": + version: 1.0.2 + resolution: "which-boxed-primitive@npm:1.0.2" + dependencies: + is-bigint: ^1.0.1 + is-boolean-object: ^1.1.0 + is-number-object: ^1.0.4 + is-string: ^1.0.5 + is-symbol: ^1.0.3 + checksum: 53ce774c7379071729533922adcca47220228405e1895f26673bbd71bdf7fb09bee38c1d6399395927c6289476b5ae0629863427fd151491b71c4b6cb04f3a5e + languageName: node + linkType: hard + +"which-collection@npm:^1.0.1": + version: 1.0.1 + resolution: "which-collection@npm:1.0.1" + dependencies: + is-map: ^2.0.1 + is-set: ^2.0.1 + is-weakmap: ^2.0.1 + is-weakset: ^2.0.1 + checksum: c815bbd163107ef9cb84f135e6f34453eaf4cca994e7ba85ddb0d27cea724c623fae2a473ceccfd5549c53cc65a5d82692de418166df3f858e1e5dc60818581c + languageName: node + linkType: hard + +"which-module@npm:^2.0.0": + version: 2.0.0 + resolution: "which-module@npm:2.0.0" + checksum: 809f7fd3dfcb2cdbe0180b60d68100c88785084f8f9492b0998c051d7a8efe56784492609d3f09ac161635b78ea29219eb1418a98c15ce87d085bce905705c9c + languageName: node + linkType: hard + +"which-typed-array@npm:^1.1.9": + version: 1.1.9 + resolution: "which-typed-array@npm:1.1.9" + dependencies: + available-typed-arrays: ^1.0.5 + call-bind: ^1.0.2 + for-each: ^0.3.3 + gopd: ^1.0.1 + has-tostringtag: ^1.0.0 + is-typed-array: ^1.1.10 + checksum: fe0178ca44c57699ca2c0e657b64eaa8d2db2372a4e2851184f568f98c478ae3dc3fdb5f7e46c384487046b0cf9e23241423242b277e03e8ba3dabc7c84c98ef + languageName: node + linkType: hard + +"which@npm:^2.0.1, which@npm:^2.0.2": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: ^2.0.0 + bin: + node-which: ./bin/node-which + checksum: 1a5c563d3c1b52d5f893c8b61afe11abc3bab4afac492e8da5bde69d550de701cf9806235f20a47b5c8fa8a1d6a9135841de2596535e998027a54589000e66d1 + languageName: node + linkType: hard + +"wide-align@npm:^1.1.5": + version: 1.1.5 + resolution: "wide-align@npm:1.1.5" + dependencies: + string-width: ^1.0.2 || 2 || 3 || 4 + checksum: d5fc37cd561f9daee3c80e03b92ed3e84d80dde3365a8767263d03dacfc8fa06b065ffe1df00d8c2a09f731482fcacae745abfbb478d4af36d0a891fad4834d3 + languageName: node + linkType: hard + +"word-wrap@npm:^1.2.3": + version: 1.2.3 + resolution: "word-wrap@npm:1.2.3" + checksum: 30b48f91fcf12106ed3186ae4fa86a6a1842416df425be7b60485de14bec665a54a68e4b5156647dec3a70f25e84d270ca8bc8cd23182ed095f5c7206a938c1f + languageName: node + linkType: hard + +"wrap-ansi@npm:^6.2.0": + version: 6.2.0 + resolution: "wrap-ansi@npm:6.2.0" + dependencies: + ansi-styles: ^4.0.0 + string-width: ^4.1.0 + strip-ansi: ^6.0.0 + checksum: 6cd96a410161ff617b63581a08376f0cb9162375adeb7956e10c8cd397821f7eb2a6de24eb22a0b28401300bf228c86e50617cd568209b5f6775b93c97d2fe3a + languageName: node + linkType: hard + +"wrap-ansi@npm:^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: ^4.0.0 + string-width: ^4.1.0 + strip-ansi: ^6.0.0 + checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b + languageName: node + linkType: hard + +"wrappy@npm:1": + version: 1.0.2 + resolution: "wrappy@npm:1.0.2" + checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 + languageName: node + linkType: hard + +"ws@npm:8.12.1": + version: 8.12.1 + resolution: "ws@npm:8.12.1" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 97301c1c4d838fc81bd413f370f75c12aabe44527b31323b761eab3043a9ecb7e32ffd668548382c9a6a5ad3a1c3a9249608e8338e6b939f2f9540f1e21970b5 + languageName: node + linkType: hard + +"ws@npm:^8.12.0": + version: 8.13.0 + resolution: "ws@npm:8.13.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 53e991bbf928faf5dc6efac9b8eb9ab6497c69feeb94f963d648b7a3530a720b19ec2e0ec037344257e05a4f35bd9ad04d9de6f289615ffb133282031b18c61c + languageName: node + linkType: hard + +"y18n@npm:^4.0.0": + version: 4.0.3 + resolution: "y18n@npm:4.0.3" + checksum: 014dfcd9b5f4105c3bb397c1c8c6429a9df004aa560964fb36732bfb999bfe83d45ae40aeda5b55d21b1ee53d8291580a32a756a443e064317953f08025b1aa4 + languageName: node + linkType: hard + +"y18n@npm:^5.0.5": + version: 5.0.8 + resolution: "y18n@npm:5.0.8" + checksum: 54f0fb95621ee60898a38c572c515659e51cc9d9f787fb109cef6fde4befbe1c4602dc999d30110feee37456ad0f1660fa2edcfde6a9a740f86a290999550d30 + languageName: node + linkType: hard + +"yallist@npm:^3.0.2": + version: 3.1.1 + resolution: "yallist@npm:3.1.1" + checksum: 48f7bb00dc19fc635a13a39fe547f527b10c9290e7b3e836b9a8f1ca04d4d342e85714416b3c2ab74949c9c66f9cebb0473e6bc353b79035356103b47641285d + languageName: node + linkType: hard + +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 + languageName: node + linkType: hard + +"yaml-ast-parser@npm:^0.0.43": + version: 0.0.43 + resolution: "yaml-ast-parser@npm:0.0.43" + checksum: fb5df4c067b6ccbd00953a46faf6ff27f0e290d623c712dc41f330251118f110e22cfd184bbff498bd969cbcda3cd27e0f9d0adb9e6d90eb60ccafc0d8e28077 + languageName: node + linkType: hard + +"yaml@npm:^1.10.0": + version: 1.10.2 + resolution: "yaml@npm:1.10.2" + checksum: ce4ada136e8a78a0b08dc10b4b900936912d15de59905b2bf415b4d33c63df1d555d23acb2a41b23cf9fb5da41c256441afca3d6509de7247daa062fd2c5ea5f + languageName: node + linkType: hard + +"yargs-parser@npm:^18.1.2": + version: 18.1.3 + resolution: "yargs-parser@npm:18.1.3" + dependencies: + camelcase: ^5.0.0 + decamelize: ^1.2.0 + checksum: 60e8c7d1b85814594d3719300ecad4e6ae3796748b0926137bfec1f3042581b8646d67e83c6fc80a692ef08b8390f21ddcacb9464476c39bbdf52e34961dd4d9 + languageName: node + linkType: hard + +"yargs-parser@npm:^21.1.1": + version: 21.1.1 + resolution: "yargs-parser@npm:21.1.1" + checksum: ed2d96a616a9e3e1cc7d204c62ecc61f7aaab633dcbfab2c6df50f7f87b393993fe6640d017759fe112d0cb1e0119f2b4150a87305cc873fd90831c6a58ccf1c + languageName: node + linkType: hard + +"yargs@npm:^15.3.1": + version: 15.4.1 + resolution: "yargs@npm:15.4.1" + dependencies: + cliui: ^6.0.0 + decamelize: ^1.2.0 + find-up: ^4.1.0 + get-caller-file: ^2.0.1 + require-directory: ^2.1.1 + require-main-filename: ^2.0.0 + set-blocking: ^2.0.0 + string-width: ^4.2.0 + which-module: ^2.0.0 + y18n: ^4.0.0 + yargs-parser: ^18.1.2 + checksum: 40b974f508d8aed28598087720e086ecd32a5fd3e945e95ea4457da04ee9bdb8bdd17fd91acff36dc5b7f0595a735929c514c40c402416bbb87c03f6fb782373 + languageName: node + linkType: hard + +"yargs@npm:^17.0.0": + version: 17.7.1 + resolution: "yargs@npm:17.7.1" + dependencies: + cliui: ^8.0.1 + escalade: ^3.1.1 + get-caller-file: ^2.0.5 + require-directory: ^2.1.1 + string-width: ^4.2.3 + y18n: ^5.0.5 + yargs-parser: ^21.1.1 + checksum: 3d8a43c336a4942bc68080768664aca85c7bd406f018bad362fd255c41c8f4e650277f42fd65d543fce99e084124ddafee7bbfc1a5c6a8fda4cec78609dcf8d4 + languageName: node + linkType: hard + +"yocto-queue@npm:^0.1.0": + version: 0.1.0 + resolution: "yocto-queue@npm:0.1.0" + checksum: f77b3d8d00310def622123df93d4ee654fc6a0096182af8bd60679ddcdfb3474c56c6c7190817c84a2785648cdee9d721c0154eb45698c62176c322fb46fc700 + languageName: node + linkType: hard + +"zen-observable-ts@npm:^0.8.12, zen-observable-ts@npm:^0.8.21": + version: 0.8.21 + resolution: "zen-observable-ts@npm:0.8.21" + dependencies: + tslib: ^1.9.3 + zen-observable: ^0.8.0 + checksum: 2931628598937effcc77acf88ac8d3468c0584bbc4488726ae2c94f6a02615ff80e9d6dc0943b71bc874466ab371837737ce8245eed3bfea38daa466a2fdc6ce + languageName: node + linkType: hard + +"zen-observable-ts@npm:^1.2.5": + version: 1.2.5 + resolution: "zen-observable-ts@npm:1.2.5" + dependencies: + zen-observable: 0.8.15 + checksum: 3b707b7a0239a9bc40f73ba71b27733a689a957c1f364fabb9fa9cbd7d04b7c2faf0d517bf17004e3ed3f4330ac613e84c0d32313e450ddaa046f3350af44541 + languageName: node + linkType: hard + +"zen-observable@npm:0.8.11": + version: 0.8.11 + resolution: "zen-observable@npm:0.8.11" + checksum: 4b5e61c46cc5fc3906a5f30b6d3ac4c3c92f5101ff2867fd5ab1b147484a4117b440980d86cba22f3a44c9107ea19c6e9cd01789ec641a56b390e58550e1fcd6 + languageName: node + linkType: hard + +"zen-observable@npm:0.8.15, zen-observable@npm:^0.8.0": + version: 0.8.15 + resolution: "zen-observable@npm:0.8.15" + checksum: b7289084bc1fc74a559b7259faa23d3214b14b538a8843d2b001a35e27147833f4107590b1b44bf5bc7f6dfe6f488660d3a3725f268e09b3925b3476153b7821 + languageName: node + linkType: hard + +"zwitch@npm:^2.0.0": + version: 2.0.4 + resolution: "zwitch@npm:2.0.4" + checksum: f22ec5fc2d5f02c423c93d35cdfa83573a3a3bd98c66b927c368ea4d0e7252a500df2a90a6b45522be536a96a73404393c958e945fdba95e6832c200791702b6 + languageName: node + linkType: hard diff --git a/pkg/ui/window.go b/pkg/ui/window.go new file mode 100644 index 00000000..ddb4bb20 --- /dev/null +++ b/pkg/ui/window.go @@ -0,0 +1,48 @@ +//go:build ui || generate + +package ui + +import ( + "context" + + "github.com/wailsapp/wails/v2/pkg/runtime" +) + +const ( + Width = 1024 + Height = 768 +) + +// Window struct +type Window struct { + ctx context.Context +} + +// startup is called when the app starts. The context is saved +// so we can call the runtime methods. +func (this *Window) startup(ctx context.Context) { + this.ctx = ctx +} + +func (this *Window) width() int { + return Width +} + +func (this *Window) height() int { + return Height +} + +// Close closes the application +func (this *Window) Close() { + runtime.Quit(this.ctx) +} + +// SetClipboard allows to copy provided text to OS clipboard +func (this *Window) SetClipboard(text string) error { + return runtime.ClipboardSetText(this.ctx, text) +} + +// NewWindow creates a new App application struct +func NewWindow() *Window { + return &Window{} +} diff --git a/wails.json b/wails.json new file mode 100644 index 00000000..6bbc76ba --- /dev/null +++ b/wails.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://wails.io/schemas/config.v2.json", + "name": "plural", + "appargs": "install", + "outputfilename": "plural", + "frontend:dir": "pkg/ui/web", + "frontend:install": "yarn install", + "frontend:build": "yarn build", + "frontend:dev:watcher": "yarn dev", + "frontend:dev:serverUrl": "auto", + "author": { + "name": "Sebastian Florek", + "email": "sebastian@plural.sh" + } +}

    JiM{fi+2rry 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 IFJRg9Ea|Tq*#H0l literal 0 HcmV?d00001 diff --git a/pkg/ui/web/public/fonts/ABCMonumentGroteskSemi-Mono-Regular.woff b/pkg/ui/web/public/fonts/ABCMonumentGroteskSemi-Mono-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..a1b692338863ab342366d5eeac2e6d093714c64a GIT binary patch literal 58548 zcmZU1V{m5A)ApTYW9@EiCmY+gZQHhO+fMG-wr$(k*mj=%{p`#k0QR9Wm~PC@*3s#okJdj9(m&vTw*nacml;q1 zKfB*dg)So3BLEicy(d&H*S!faLifOAY{<1_1oWHG$F3>g^rx?OPl|?(6N{h0n)0 zK#xLqMn_L;RaaL_OIuA#^LMy_6YHHDTMO><=ig&RYIyK93_+U2!vaibpP-X!}IbeGhUt*DPq^^psh&q%dJfT#Ywo1ug z1EHa#;fbPw)5Mjf%yWO#9}ALL#%{M4ZI=k&p5F_^CX8|iaGTj;NM`?CR-jY$%*uE@ zW4k@+85>r;=#!7B+>`b7)GBhl(tY15BiW?Ot&=Cyb!i`{a?b0y37i%fIS_uc+arrj zJ#jh6896qqyX_jG*0BCKxOMkvY5RK%qiy4Jc^j-@da4^sI}ce!%iS%cs^P1G?mP8Y zmaBSh|4tNl#eWB6L!&TwPj_;257S%Yee-}rdvKewlTX&7$8$3;@Xatb^8xr3IuhB~ zaT7cu`LNV)i zOq!CqfxBX6{8~Tayvt#om`^WlrvnXdE|l`)v23Cy4`t}ysf zb6#0q&5gBTXXFwsI)Qk%TwS3J` zOwD6hBZFEr4#_F>?;!aVcq}#}nP-qMnfQhY*I44-XoOG84hp9@sUlJJHZxJWarsZp zwv5tFY8T_UQK^dwu2xc&A#U|372A?H#1I81+&WT^a&IM{34QVe|2`#9Fp+6;XBpq~dIsfm6wkK0 zayDc{<%~*w)N{l*&lDw|z zRY|HWWT(XC+tv(JgG{nw4sP6_fg)eG;;W&OKOCHe<1kU! zDkx+o9NBhC*5BxuB&zKRlp7CmR7_icj)-c?a~nMCfAeoRtP0Q)xg%E7!1%@y<+yKW z2tu#uo2t$!uFmTHe8oTmM~g>a+EGV$Xw`m9_EL+Wjn2`m*mq@6?Nvm9WhL@jj@c`j zcjh7U(vD5*IBJ-kd;pGjMCE#fz0|9HK-L<_u2olC6qT4xmdhm6rT*6a%m`CGH6-92 zzKByao4hC3a7jQ#C2lAy(0VNM8!?m-HDxyP8Fy{a_H{|1ROsiV!={}Q&%7Nw%qm}K zvYkaw^KmBfgftK@w;r z!qVrKxdTH%veIkMp}-sXlY>(EItzeCCEHjqk2!_V4t^Z(IC9Ii1*(h%#kj9vQkK4axK& z6e;~kBgty3c#&6rF2*@2hP5L{NBTz2Ma(mV$B=F)TlgNlucZ*HgsED^ODE11m38Un zX_gIyje{shhAdFi*vymSR(;lmDd$Lq5+F*+XVRDP+nSgIF^L6@XAjnlqKstXp;*q$ zVErgg<>wGrpL>=o^U7$>q9t>Ci6 z1sJeu;Aq;PagvUr2IlHl8UsAt5oV_U{t%APwQrf}*hTUY)_&r^9C=f*xwfUy4w1rCW;&68ega30pi z#)_HVD5qj0w%f21=#HtsYD|x@5@!&Hggn?fzVQ;EKiURxu*B=bnf?&h8dKJqVvaIG z9@CmI8;Y`WPwN$We1i{allMN}O_0DmHKGg8OskxpIW)1^Q?ViHzcivx=4?$g zH*!Q{mokNLWlZ#JRn;B$o-{#lY|Djoi_2Q-wwkZzpDu3odunSYsFe}U+aIy=MiE+?+ygCw;vCB~On#3S4 zNg#7eXeu{j#*^a@w@?wTlj%-rDT;)@T~izsF_#ZsU&0W5jJ8eri+xB;d&6ctPtN!^ zt+6iVxF|uu!Y!TEIEi>f`|w?adrF0SbIOE{tTi(r%L;)Geya`I7Wj(pGs#NiM>rO4JzZYLwy z^|`=I78$b&Kw&@$3xrU98P4d?y4HAxfOlSZKY#Z;E0%b8v{#gOR8*8#SQe2ZAw?9Q zrqEP-hx`B!fpmimc|?SUxkt$6p6BeXL8^v5W9r{v-P~aeD!_;+Za>9ScoS{>qA!#+ zE)pR%qt{qm1U}5rl;{4DU{gipB`@dkVWF_%8_&KuIPt;p&T%>_^+;lWL|RHX<6BdZ zQL-(^V@|^qk1i=zXehO#2+`oLDq@k}DC1rvIAe28X_wl{yHYS;bUb5z40+@8E+TJ7 z*z)`Gw-Is8voqu$`m>y~@UymZIpzHM3U%fhn>-s}vr>zStHMS_M}_v%l?CFX+9PsP%epR3 zc}|TEFh;RP`MZ3(Y`cc1n5VG2w7a^yW?BxdjJM)@`3BQb+EH3mnl-v%Sej9dQH4<( zDKEW3ya8X^tX~-bUNAbn5*@6 zlW95?_K2|cj}3WCMC7rHJ!Bh_)^FGBjsfnY`c|*%r1wDrMI=Q=MMp)-1()LHV&2U5 z3m#Hvh}B$sv;Ijkz}{4L;C33nNHjr20lvWdB_`HlszCH$k(e z5!a+=$j1fa0IiXTn_q0t^CkxK5RVSOeh#CF9u7lc`=V(G*)WHo&r@=)j`H6){24mh z*ELy!%PKz~25Z~bwHnM=SLd?a{+Jffx3SgEzoy@qDqfZmpT<(%cMZPGs5@uB(;=`l zHNjWmOHbJvirMtqO-H3ZX1FJ3b|yAtecCB6-pG5khp)+aw@{Wpkau;Y$Gr1)D*c(o zOqY<2_gxTRPFU1(41HhAl-elrX7t>%zV009hR9}U17P0Vg8g70+yesv7CljM^r4Hp*X1{BO&d@cj$t3z zxkQ!_s2Ymc>;oGUGdnwsjWFY4*h%iLwOAyE(22Q)H&UT{zJ-6?5mIvtQBnp_=roSl zwR~a_Zebtb$ztc4)(~nw88p-*?7*X{^eO6#*}99_YKqzTap$~V+4DU}j(uslKQFZ2 z#;CcvjOnP55gm)Q;L6Dpikn$tVC)q9B0&!yo0^>E_*gMk*C={rKpcv)6T9HF4zFCQ zy#qdn-$L9(+(gG`>KL-cUfGu?W;h2q7ipR1)q1t9-q;_pXj!w#cuMUVd%5I*Y4UC8@EJAULW}U|7Cyzf{j&sg{jG z4I70j1_l+a#AlCy-(gO<%-&g^PZzxPm!9E49snaay6SFuNe1Kz=A_)O+*V?u`u|0~ z$t5TdK=|3^-G3i*{W`ugGq`6F}+ z_K`Hfz|!*aC-(0{6docfCNBJ5#z|VS;Q;6mH;>n;n}=uEhkwb1%{&fe#?>M4ozdI$ zseaC~ll|tqNcnYgje|*n<|Ww4eLI{qk>lU}waw50#J?B+xxuMM*((Cl3{$J<*Y)4W z&kwSNjE^|jog3*p>s85W#DBUTI@ySW3J=~&krxa4Mv<2bnv}w_3{xxr&jG5-XLVpCLV23J&h;aeod6rzxT z5~cNUeu2j{;JX;cPjI-T;ReqoAqXSTP^v;9OOoJ)?y8;aZO8{sI~7 zreD^3j(xJVwgcG%u2+P9Rns~Bi~!9LP)qR>xg2@4uwBnesl(X$9v__9Cxl#93k_BL zEzUIUj@X$|uv1(TJOqQ_Yaa<2H-L8(zY-?Sq6cbT2SQ&Npc?u%HPm#7QOqTdqtn8t zKsi81G^pDd?zK+~1IH-vQDh-w^iu^qs_?nrB{C|QufGS**hgIaNRH-bj+p-qfnYif zIk}UV_^=cVgNc<&7!rYCfO-gni9!PX1b9F?GL#9%c$&C)pOnNu8`SUy-6(9VfymG8 zGlmC5g(HIA8MWcB#2!w&p&1e)zSXKqk)!Jcn{QV?Bo1YVkB8&W7u#BvL^{P_tTcCv4*9|-FwS5Pw4BS19%erbL_J(Q=e0S zSGc6Vso>th`^q(zp29Xk{llwj>S23rI{#jNj=zqC_hTj@|LUc@TA52s)O&oZK-0Jk z^Hlk>aPm9Qt85)@n=$NZU{$cw`%?fVn+z5@-NgXC942BgI6k8sRK8+RG5IoDtG9ig z5h&pZKJ|pa)UB^u$mqiP_5*w-QN6josky27>^xMqmtQ4u9RV)m6a)PP$Ko&MKKBeK zurN9E*ok+BuL2~8V1cZu!NQt(lo5GGh>W%VIDkVV8t!~Em(AF}75x+~MNEF7HfEtsGk}%be$w#K#O28qa$3w-EXiV=m5+lP=5s13R8jUyva`Rfei0S&p)l zVIkO5v@U;HhM*)`jim2zKO=5R;E>KPoR;g6H!X`?bUy=47P2m+kzXmDSVTGFa8Bls zsw(y=v5{jf(_FN+AZrTu;M*$v%EMK7E%!Bs3%!b}$D&d*W6_*Z&kJZ6m- z)R$>dgsw|l19jxx7bPijJ)|#-U{01EFg>WdVsvC}^H}F^A4uO+Js7)!wQa$Co4`M+G1$(V~eouX*Btgr>qZ} zZ#dc_JtY&Th)&?2@n1r|#XYmSr?yN$5)IjJaiTK>>paTSo|B%k4kd!WQ*v-qbZ`@C zbQB^}X6P~W#%{$3hQo_Rs0#LrgckHoNg6Ukay@h!#kh*O=DjEA{^p}$QSA3%3t_ME z=95hN84SGis7gPZ0vz($D6;Mf3Co};(lP{t2j+&^M&5Me!o_{$SvjqGJq&))z>p zqws?<>Q9FvO-P@ZG(2L2P5VQdp*}iDS2sy$Lf;UiK2Bxmqo2ZPKM7+(0+yycX<-82 zkfJ_PY05%}mF{MObWhokzSeJL+)Tfbjx#A^g4U2JuJ=Ue`LDh5IRZGwu@7RK#L$VR z8%hy6X0i8W8OhL>q%%(1PO2YaJLa_Y64RrlOHLXe!8j(j4QrVuq+?A=AEDlJI%c*F zY#LwD`_et9LrTHi$GH!3nJA<)k!HL1a~U(FNgZJ%4jD1BPdbvOy7wK@)24eJq1%pWG7N?QxOQf?-Y98Sz4tJW4rz1*%-^afWdYN?7>89Jl84-)je2n1__bM^?()%_b zOE$nw)RR_5C^ulH7)q<>R1IX*Ijd7^##YU+=s8#RvKR?3XMOrx4}OiZm}J&UujQ)2 zE+;e@WY$fsp;}2cqikeY4>TKZ)LpJ2Scx_xZKPlJYc#M_{%arC8?@CSo3YNrOn*{N zs;JFH7d0#R&Y`9AN#&to4e1z2s*eHV#mN$NNCl<6q?$9ZS;d*jmF3G>D9Dm~EE>)d z&Z^F2ospbHowMGW+r=0)4l39S+p5U-oU~kR{-8}{AK9ceGvXMW8G58$kH#J!-%-A3 zdm-q`m$>4@a^yIxtgx$*O-WfVuU00m5jTvOygFZ=$CSNWZe=<@>f6*VNF`a6}-!@2(1Vn7i|=9R!GjFK=DG$ z2z16#cv+U3uQuvy3>d`!_WgZ1NWD*gTNgHYo-WIztM9YHbsaj*>-HV@6u4OGT}U6j zkEw0_a5}Qg+y42|U8jD45FN@IW6{}gJ2Xt2p~iH&MhqM)CKZ?NV8U5>NG;CH)UkT2 zKh@=Zd?!C4yHRW&qJ!15U#YMD%QhjHl3STo#gH*K#ley}Z)Ms5G?C5hJ7Sr-W)`LP zv6$-^vZc;xIn-Eh#9ngHnb4-bZV{@&Y`U{-YF_%Q;@f1i!cqSi$wFYg+{iwEq@Nkl z{J8F7#hG^*)NH!`xmYdQp?N8>{=L}k`ObdnYyIsRYJwx<>b96)V3-=ikMrz8b-LKO z0F;5w=5e`Nb$2@M(q__Lcg0vH>6}=n5$ynKu(s$Jcu&4%IQvHjM%PU7WV$wMTZe8y ztlHFeS!J4ztTokPS)iGwTB+)P7k;9@J3r-iz-X^He_qTE_AT{I=yweWhkn@b#4N}7 z#8hA}WT};0$rNTAWXEtCe_DOtmt389TX^d5Ib z0yhw^*xfF6^ZM)qcM!iU#a0NALW1DM(H&e)Vg)J_G2In>iSobMGq(Y}7) zTYw5b8<0dW2Cz_w5C~l8Nkj|uLzD;2+3a1OzLh}Tsk-b2x9Mee)1%GYdkQ19(d4+5 ze0ah4;27vBgiQ2ijw}R3*d3G{bfiX{V+#My4&fZErfu?op>W8GCL&NbYN9L}Axy0I<{4qndKRghfva zFh!bT&VDgdShy_qmpaRf%g+>y7nGfZ%v~0Eig^B8DhI2J_RYdc!%5$1u75Uo!$8V# zdI&f?9WEU)6-KSSXgPN%e2&Vh>1AU-zK<3;f%e@b)B;@kJwgJODy8$g(daxuQ*u0I zS$p05G_L48rI^;TweqpvX5x(&t7X!5t<(5+LWat-mdbZ+MfdD${tK-|xA?pMG_|AW zB=vp*i`KTMla0ne_+h*>xkBYi!`s#0iCU zAQ3>*0uG?wiIOP~`uKfFA<&Frz`RaB&(|sqd0x`qH7eyifppb3H_s=})?_hKQ+r%) zswMh(w%t>ZqsIeDG#NbL@MxjXRbH;~&O`tz;|a6DRWu{9p>~?mDAfoKnJNK?2&uAMG!pIfuuB zg#*GcB6RW^g%a;c=zP4xh9;;@dMNRh3{_pGK$ArPYPR-4XHgp(7>}8+@3a1KZ@BDq zEYVz1uqTV)`l~A$$*C+h3(_KkR*;kkgaJ}4h@wW8V3Pv51oa1E2{n<;P_jcdYT0t$ zk*=2h0J@A?76-m!AUW3}-;_vc8-$*xj9I3|3D|Ww{^fRA5nS_ z-e-Ee-G~L$@n;U-0TTSNgPtnl3 zgsb#OZ2sguKL#hY8}Tj7f9wV&)+J2OihDUH=ixkauS1e19*_N5#@W(}Hh6daLkLph zjhDzxBCvB4ezm%h25RFkZW;@n^nd|gmh_l3Q$Z5+YtH6cGw`UJ_WxS^Hi~3whkGzrm?TQ>~I;>r2_L1^43xTYddu zr31QQN4e4pP!?UZqdJ3-L-X_4_Gl<0&@YarSwBE)EkkxA)5xT zj8a6&S1FN$^}D#$#arx$Xxdj9Dr?m7h!w+p+c6?xu4wMmrR%axiOcj0>iHpfTWeP8!%f6$5Y8$%v+8 zt%`#5_0!ZuAaw|dU*_I@!WNBwVz|1~B>gP-Sv{0p={UID`6MDmy7__~VtR7bbEW=6 z6&a2inMZs%K>~Sv{ieU9xswID0{)x|GX=Fi0X7PC_fMc~QGCHo5fN>Y^F9$g{Lpl#i>E-)12kfu zIJu|l8?nn?lkaX!$GpB+@s*7K2xaRZCv{m-Sh`Kml;_F5fq`OB zM4L(xx3^zy=?x0v)ex8bY158_Oo13Y24l*+rI_d%>B-R_`Uz4yQtCYJ^{rQfY zX7JS))3CnsW`D5BpLUyeZVEhkL)B|;tGCFzQ0j>T-DPn<35UW3%xQHZt+i0KQs9Z| zor8mKo&)&7`_Z^cd4>5Uc)SQPfDW~Y^_wwgnt8nvi0IYB6L&;b_mtRX&^oVL&ODR( z{&tWy+BYU73Ixp)5?GSJ;9nL4>`1L}EDKP&_4r_NV1v#e)>KWk;!@2?3DUZsqy4h< z2DX!Zi1?ZunbJKp0Yj|}L)b9^6o2~J?MMsqz%fn32`RW2g*`-qI35}8$o5x*3=dl1 zAewt=TvjLPzY;@2pFpwa%bGCo(M10C-)Oa0h9&zjx*jzl-n`(AE29WgVVfi1^^dfj z(8Go5I=~Co(XaGB3EdmqhHNxAi=!wcs=8U!@IlRl(RA94C8HhLHp)ZGd(&0$QmkGH z&Cf*W%h1DiAO*3X=+|uzU~ciV-^4KYnTNWbV04mc*(btug|4Qq`~!QMvEou~^5(pB!k-LZF;C2tYIVKor;{Mm=$(Y@@M zSDaz;M;7G@d){{r$|l%jZYYd5K%(`C4w0FJs`Sttq&A-k!lEvTn=;5fxF6xfh^A>C zD%_@%u8j9+NJIVEF_&1fbNt$15X7rFoU_I|u;f7rbu&X64XsZUoXUwcv}89HQw_0s z8y<4tSLq`zut`W?1jDS-=hg?@BIvAH^T;gRN69i@T57ows!KgaMudj=bZU?6*Bf)- z<*XS~HM>QmNq%sg0Q{a=B-ZYDjp?&P|7Jq2?WVIwLHqme31_7&+rS@Ws%efEd@L`3 zZL@K9tJBHDW1uV_Oe>~~lfwQ>mA4;rZLG^p&Zx5oy@y&(B!!jz%^iRaDr$@K9NUF` z(GC5$VRzVS>z>f9uv9i5U%W*h&mLbzJJ5|EGb%qH8k+=RuPN6cN8CKUeP{cTCit&y zkirX<2=+Lv`hZ*hV&F>go^wgvP34G#f(cJnnD(S&mpbuhBl^)ndnda6j~eQJM;(H$ z$i>TKg$luxcGKH z4(f#Mirn#j>LVieOIYD;7cp72Qw-E~lRWr(#o*VV_aG0E95{9~mkdkz%M36!$mG1> z(mSjd2yG?E8M3TZU;UkjLPJ*w2i5tse$yJhEJucDZep`R z?vfW%4Nkzt!efPkbM1kpCpryK!nv+Yb_MEnRG>#9TH8EQiP;DGyCS}QI7S%%>oBh60@8-HOf4CF0N2t&aC?bkq@SxFpHt{@J{xX!)d`~~RH*lP)h*&kVF zU~w4ejYe8GR5G36VBW^ylI_y4E!u80X2dFWw_A+dETeJmfiGxIE>K*T)zalZp-n_E;)Y z_3ot>xnvVt$-c^mXli|js{dx)I6XQh%bkRCvbd_i2J6CcFRho1GQw-{#FvuM$G2Bp zYwPq83A@$rNL(dUuw|n$nBMefo^D8rQ$I^_@o>~YRnr(3>6s^-NON_X*6yp5 z1D$5efR^!cAlVNC!gx}q)EQK7ck3x;9^0c(UE%X42I122aX-i;gjd;V{F5}q&I(Yc z*LRy4Z|kd1ihobP-L4y^X=o9{#SCUdCA(x4V$i|M_yxwH;@dKTiQ!m zo&>R!L6IrUGh(*u9W>%xx2Z=gr$CtO&i%W}-QXdScYFGYPNR@%Wgz@v2acz-YwfP~ zXWM#Y#j(Rwc^qMGVk5F9ppOetX<~Fxhqz~<$gtt;YxYQ*ZlHkHJoTnC%T>@=&mit9 zM9(2rcMu0`51t^MKoE1y7*b-Zoo3GgojZ1$l}_*cUdX6q-eY|nt}hwU$a3>RxUq&X zZ77E526uunJjyD7P9|m|&FTCprSXjm25ikpn7>!M_)k>2MP5)3u6Rt~$fB4#y_dfz z10V|F4#U6A*CNpL$JJsMZX$L@2uY{-n5mg1bVn1dD6dA+E~Bzqob4hT*K|uCGn8{n zXo+g16%FdzcEQYbAtGY0PH*hxMxM=RGZ5U$ARQv%Ia}svR;Dw2+{k?TmZ=eCVBoW` z1YiW}H4k6{duG+)j%z(09lK=haJ$#n%L#dW zpkVGyPxlMJ6qeN$V3!7x>!7E3qfs9YbUi<>v&(+v(&-RQ;d^5pi%m|^L#)9$@mDH; z&6g*rgGIHDUFY@1duCK>f}91X=EpU|iwAi`L7HzrM{$01?d5leicxw!B@2#S^ z^f^o~F(o{Oou@+eY`7nK?R3FOmr%+caLV{aF@;F3fgz~~~(V#r)oQ(IFx>lNDH0H`_9catCg znZIlQTOPHW#$s;~`mxG8zB`)eJ;ie@H$Eb zOb_uB+W3aLBI1jR$NY)cH(;9gP||zn*tjOm=Nk- ztuF?OVX2~5ZwVX*Ffydh{V zgLe?l>8(&3gJ~b}ztD2}f64AHo3?*E`-9uL)YU4k!<|QTH<(i23~@Q@PQr4g-t-3) zq09 zDPLAX6kozw7lCANFJ$e&6`kw$)LwPl_9Q7<Joy)Z;V{D5s5Z~HbG5zE;AWF)OPDOH7Bf`4(%i%yiSz_a^}|Q z{u#}|rjPQ-eGVV(cr}1RwawJt=DsrhKwy6;*fht!O5gcbizJm|pUjLjQrn28^1pvy z*Dk%B8RzF=lW{a%tcO%hlKM~4;VZlCn(cRud$D?v6 zxxEdj&G1(0P44ia(lqeCKUweAmx_K1nhxY>>dB%8DE#Vd@pz=hOUlm~1$C0|^CvOj zs_6nm;?5;Fb5IKR>+F+$?Zm$0qqz` zgmL6^go$d$Q&$F_^~%)3G7W?(RBp5rGL9C~poUPBj&^E;TftCo`vx7=&b_OQf-+mL zU^3SSIp-%rA<(SjwFe`8No@C6zx&u_N#fPn27oh&nvcB@2SJlm_(EzLsDfAH_E>zS zv~5;JpMh_r*g~SQEutZy*!LhmmI+3BaRsKlsUav?ik=30GF2iDjOGjdyw0!9$E@mE zq`*MvU?s&fuivh8kmYzO9QJKq~_WTs=R@AL*@Yq?du%5 z5rp|9L0ae1&yQTx+8nnO)PMTdgwtEy@u|Kz@sV16J3T1wA${O?4T^pbbhr}l^LJvq zZ!MeDzR#eh*OfP9CgACE(V5oE?q-dlHoR2?%N{SX#s&*jlY)g5RFoXh@;WTuwfQ}LDgX-C@lQ}f zk1^5uJ`m9O0Urx&pz{f6h1=z&Y&%yKt#NhU#3@*>^O?w?_Soy!8 z3_A_b9#|%65)vv(4W)e;>zqvW5L|0Y`0MTVCag6vRB_VvR)ZX~cY459GW*)t;C;Av z8w^*x&eOLiA6UvM86*M%+%ZLgbtm3%9*f^%~u*p;=`(L*zE zbMjf=t0%zoX3u&xY}b>r@cb5vMfMkdPA^3ilwlAw7l%=OD6b}Y*t>m;A_G=j2R!w4 zu&BVuPO8Wm4-jsE;lZw7ko>UQZW9x0n`Iy5f~y4gFxYW9)NQeMR%8;4VlSVv@2dLWU{MGch=4&ch{U-?4OrW2qDDETF5&6PToMbtk5bcnVXw+T`lKa zL}I^2n8W^%nddQj)NpdWNB`BstV4KCxg0kbUt7ZK%(7VgBlw(76)H08sN_7x+Plvk8K&V zbJSw-C%-Ahrmy9I-vp#1al^|A-39T)Sr4%gkw*IODD2B`B5Hkj z!3u72dnB;;0Y4@u*bOr?|F(C2=%}AZvT~hg(|S!ZMu=+C_iXZ0ClR_Xs$b;)g1Lt? z#rEu#W{;W2Xu9E`6^&j&F&YR~r{l=gyL$Kw(cmi=B&d@96JlCN8v3ZZaXb@`$U+e@&@m42LUT0U@d44*mDWkD<-+5A6rFme9t|AY{_;`^BjWVkJ;abCDuMDu zw{npWNy?WJu0*t+Zz&V`ub9w zAXVbY!(pTi*huVA$+P-W$EEhQ5j||Eh^R_$rXjEYguD}Qv}5hzJje-mFo zb31_x--!FmL2OOtQ(6`HYpm)(BR4041xqify)wM0g)@8n;<4y2K0`xs=&fajMrV5;Wun)1|woOs1|P#)BfIce)xCb`(G`;gm20A%{7 zVgOjcbGdO{*ZP%3!>;)ARpL&5F9UG*nRUYa7~v+wTTk}cbkbOJ(2itxgC&*s3ci=0 zd9FOOAFQ>?zH;A+6O$`XyRMKLWKxko}7YqjouvU^h-ZCt$>0q7|f&uMnF; zYJO-ZFoqYh8#)oxp=&E#@XltFphn_vMn*5Q1l(9KaFJ;h;u;iUS{B60Rq`se1u=6FUs6Kw!th*~J+--!!hAX`I z@S@ZKi3&FFL%kf-Z)&DV0+M_9wB z&3?KZ$>nZaKaoNRU zobyIjAnc&TS5*Yv;P$cATQc4jdj~yRkwyt3f=MGMPHUv{4Iv`cn?)>@GxG8<1gilqey@_Vh`dDwrXx1J@#S0ciz%QbA zNPY^h|5{0U?D-=c>3dTO*B1U^0>u2;0=-YIqWBNv~u+P^QpF}if=$&uX#BNDPRj;Z-wr<|6C$t@n?UW`it z`coew>10RQ7!kuH9$imbEp-zc{h)ovV#Ik5B(n$ev!=h@7eZC>T}x&lrCxFKj&qs= zYZ$4%34sjUoP!N?*pQP~AeX54rdHK>+BKA_Pz>6ER{^8e8ma4XFfhAW5b;TqoF5 zDhPjiSZ~3uBOxhm`Y6gUd2UYoi>4v)xK=yM!{)Fh0zH_}ER%{LWP=8z>=hZVpAPoy zWL&^b!Y&j4a2VeA-k2uM+J&Uwkv9EiYhNs7E>|@ME6vpxpgR3uX13jDZxMg69ReRE zmRVBkn$wjQqA!9f{@vggE~>e%c^!L!FN3Sv%ObAhb=xZ|C*G@@bfR7w(MO$9I4*yT zNhmK$P4pmGmg(Xmd$!4GX-O#RpnN+mUS4ou84esDuZN^?zl>Vt1T$)>H@-`j$Prs8 z$`f#beGZU~#y~L#DyHvv5Q5zDawHsJ!*>Q$pSiBe)(H+<@`IMETpOM^MMeT~R#@^y zl4n=1+Ft`imQxy-m8@L-YciHd(Q4%uFU4}(SGGMjs@9g%yY9g*QQ6B@^UhN+u!6sl z-QRmJrk$FdA9_C<=d)|t%h_o!7c+MizZtQj?YdblYJSPU1zgI5MZ4amd4Jx_W;mJq zTgkW7H{Xa(i0%&OEA}`F}?jVq=ty|1M~JQ(pkrt*0%QGCojO>KZNi(9ANO=@6F>3`%BF10`4jm&a@^ba-_w zts@=}+ey)LQJr{BefjWchWN`Gknjgd8bw1}{nrBnMIvtzqfk2fmvH(aA+$(elvWbR zKz@=Xy8I~tbjG#vSgv^*%Hh|p)x7!XV!+sK*tio6Y>| zt?NKNphXymiS-YZTcG%eSB_qN$BLEi$k3MR5KU~1CX_&LfV3Vho5PXN-7QwAjMhfN z^qQ^Q&_m9}Ie^1|Y>X0rK>TshasdqpsdZ$5*h~sTLehG!E{dq+z>CX$movu$ZTofYs=CHsI?@PmT3gBXyxpWTk{H%b5 zgQ02My}**Ov-MqxVtKf3V6O3;Mr0LZu?GrLG$|9>{{c5Z$iM!B$c8`nDLd{4bJ|I!(mdj92!Z_5b%@&tHM-&zERw{1;+o7abxo#$ z+*5I~zZs*ta!-3Ck<iVgea8aqeE6A->(x1CMrj!G`R^rRb|1B()1_e9-m`eSt~2RwrnecNz633yf=+2kFdFyO0*ekqpx ztW^GLHyMGf3keck@yDK3dhqYR55`i(!gM)J4{hp^XE>u4f*pIPF=w>;d!1MK9Am_O z(e!*02hCG!o5>iBxg_b(yawy0Sc+tpe58!2B^9x6D~F5Etfe0K+=vg28bPAk-~;3r z3jXvDI-e*^=nIuz9i=5nD0tFJg$n43_an9jLMf)G&PClsp`v;Ml=JRZ?3UuuN&zw1 z?($%9SGbs@9STucSn(uF-Uc8FS8}m5K9&<*;H2;JVW313UalHhhX!IOF2%~3FPEt< zY9z^7GPnxvl6sIFnEA0J3FcC)pE1u--Uf26BNp#^SPyq@oe5O($xkS|HS#&=T%oe7 zY%Av0%C%8W<&%qqvv8W;xvEDZ>2bEI2XaG$ze~9(leNfe5;)YoDlWnLLoi66$V&d# zG)ZUzNG_#H_;a4&F3}|htV)hm;ZgE;bj3yK1l34~cV&s^8ALK}~es0MeJS3fUAB*yok&rA- z=!_PLFL>e4Jd8kTM6h5vf7`ie%4Ok8Ro;;BX$p!YTu2HR(iq$nqk{DaE=j>PQ#wF! zeZjaoU}mOcKe0DP` z@~wse_zh35p{<)Y=$U#3pde`o06FM0P-**Dy9!4$z^v(kS z?X@2OdcA%G(Bw9_1|A2hXL9Jd))fS~ms4&ac0q%@DyS}A6>|GD7!_FHNCP;#`&b`py|6e&*bthhEAO7ANC* zzi$+^s*I`}+$|Fui&$e;Re3BX^DQ=j7rw@#eumFvO~1wF{NqaHS%q;plCR?C)HRF~ zg()C#jqRG@+zNHz&7fOzk~p+fvTsA=wh#cRl}b1PcEuIPJ>piY4~{w0Yg;e}ml~Wt z0-*P>#Z&!1WqRR}JLf`^2q_DiDWlGKZ(AtjNK4=i5tFu;NeAByN}h9(L(8OYt&ODH z;C)|Bdhdi&&bwxDaHXM-YQ^a3fx|#7h+4H|71vYqYh1#L9asnE+y~co9X)pV$mVn4 z3WvGF)(*Kof%U#)u*}F{E@rR{ws^JkLX{~y8n|*gF=b^M-+9q~7E8dwRf|`1{WM!v z?1 zD-5N^s8#jd7j49sj3xOc4~Lq+z>Kju(HNWChEL1+q**>6Toa&!mt(R9R(Z?= za&#v@z%zyTkQSjogoR!RM}Mn@|*%@Tsyw!EGL8y zhJWX3ga~vPpBPr;q80eWa9C}i4PEgu@8=OCT`fj|nfrq-hFn~j0}4UWww(Q!_Mbbx z|2B98k|)J?$5Xy6CcSS>)ctTV3@)@KS2A`5LZGvLI5seTH$4&ug8pDcfZxd3H^&?$ zd49THt&lx(de$BamJh-8BZ=1&N8b!e!;%vi`wcw2vkR&@#|^5*u6{G!K~FI2!OC*{ z$r(OSugdx5!OYv7aKhQ}6Ur9n%?XY60}dcKog@Q3h`+k`*p4Fyww(gc!J)nYnc=hK z;;~_~@lc(i7LFG|!rHStj_o*>xZ^xH0}e0PHEYY9jb0$Ib`CgJ@zrVIf5Kc@&kF|l zV`V>*5B}#M{4y9rV?MYs&5$S_l4+PEhXk+lo6vBQZs0hNfavA!ph z3!nqi+(H&4GZmSS0;oAaji6@6myn7O$gcwJLECPA9kGC;7NFPNI7o9H$d4vFK+YLj zF5!l||39T5Rox7oJ)?sBMp)+>fYzM$pu&Axb!uz7^z~$NzQjrkU@Ng|l*6_R+X60v zi`VvE!Q6bM@GMEO|81Hyug82`ikVYk8}|RnVByBR-vFez>NTzr9ciL0iSzN&9&H`PKOa6RJv zcp*2S_y5mC3gwrQRs+=maCptGb=-;omFET0Rw(Q`NbW(lvu=9;P>p4_UCe|jRh zDKW_u)I=l$E!NZWsMS@e&6iL46fb^G*nN=Qi+GRa6ik(pMBzPkYt4y6;1-u@(;Xi+ zW1sP>4X?%jMpq+bQgZ5lt&v(^@`03vHXG}n+zc3$L&Hs&A9C|3PdW-hO{){Zt)|Y+0SscWi?5xenm`K7&6Pb%b zG7nWb3v$+qG4-KQbtcE~%Jn2&!FZ=4->ND1FDKw4a_&8k&%GxSdEq=9XlQD@f~mq; zkVZc(J`Lkf;{i>n_ADA=&!QGeXqtvGu7L5skh4$^<;LRDFNRSB+58%0X(`n|36lMa z$~7jnuqXi`BWG6>r{X+zDo&*Gu%3Y?$O3DSk%TXdE-k6zVw#LGQY_?8n-uYtM`~kz zN^aS+N{`@X2aAO3u^4g94f~Z?j5t)jp^BYbE5n2~@_D+(Uzw|pa=-ro-C1GlpQY{1FcEBDDQNln`R$m-+$fmo^t zyS?kk$vC%|7cN$XPNg^-bX+53V>T~3YlJH$ypWT|*Z#qkd@|mvpDLV{+-s$XO*9-4 zW1W|JE*py-=*1UeugrVKIl#|tfdl%iiXIX@VDSv{W3HsQ1M}Z=gCwVp0RB+v@fEy; zUsc=g|9T_-8uqIpePx>R$=S5y{>9dP1qxwAR&!qoKXHc*c?` zF+&O2Yter!N#usZC|wz5hBR@3u_uYh!`-DUK0A^t zA>4C$P0v#DF%*AHm9K>0Mnh3ePpnSmU%ZWy)#=d6u3{wUvvR@;Zk1;DzGLT)oaNwC zX(&iF%mcs?t^lgb;Oy$8RoqI=Y_FM9LuPX5v7s+;lePkor>gz?3)nqJJd$|e=!SR> z``%~3ABF}1^nzo6Y8N=U>M+4DHzI6K^n4C2M(06437@aC&;vZNo6-0zX;LQi&%t7y zB6Ywr;iMlUmg1Rx^L-Lbewva7qk{3sqdFDlU40lQD<$ZLmWZ=%cpMoBhJbN%e5cI0 zJYjEtFab5FnaO|Cr>jb_#FB@}p(5q?O2QW#6lH8zJDZq9 z3HOuO$bLB#iG^PS*H(W1*BfziM@86$NXz>)hKpcaCy-N(U)DxnDMq11Rp=+YnazZePDW2N9e9wwqfGfLm);-5av8|a_ zWorhjg#;yV%#pycg*HZdM4XXN@ILO6s^q;)yU1%NNoi1|VO_X{g#&9s0oqR>SNfa$ z;1{bdk^}aZhgOEaMf4TGzET7>9o<2WbS+1B{-YgSp8+@6eH04yR`5^p9WOjZW)cuQbA3gG;{T0!N`|n%C0 zu|6Nk8%-X`ULn7Ylj_UKOQW$qpU3}e?=G@A==JZt>&oU}+<){YMrWm*uJZExx9E_*R50zS`$zPY-rVtA`)SgCMH3YQpBh`M=X|84M? zgS2ZZ`oRJvR(cdmf5V~b{9|5&drS-HZrSnYH)`QhVajyt9^+@UwwwZj*3ZJ;t&?is z@^eei1I)zRy8v2%f+@H9AL9O*W&6H%VsNgKZ2QmTpPh1k(lYdpY^OvmJgG&UwP>97 z1^HprJ!t_eC6V7n85VTMuCouRysp=>dRJ0esU`n63NKBA3~UssgB@><`Y5Er_1ME3 z9OFF+{GZaE11ySUX>gt0aYt8WT@0tYdgh#S&RH>n1jU2`il_w1h~!3+AUT5|3Sz>D zf(j}qDky@28T8J0cb+x8=HC0eX8}Qd_x|_)9||+o-Bs1qGu_qG6=st4|2JqMkv}sO z`&~(lNjM-xnF+N04K%f2=x-~p$e+P5ey!qzRDSm(d6`6r7L1?;xiFH<;iMp*6s&I` z@h72hk5ai08wr(9WYcFTMg(=@0T!lRqJZ*70C_dkq&^db_bAdgf2xU)SO-s^0n_WwNo1ER?!zf{J#SL)38@D<>UyWXsg6%c)PHrvvh}bHOf{h^Y!!hQ zY*XAgbN1%Vb!V0=G+wuOarW9Gl?=Mjcr=$m1TEG7MKD(TXDPgB_$7ln*Bcf#aI(;|*pI(iA~m4{ zEE0h+KT+|!ROTswp7T->j1eFZt4+Y8r~?(WrS4O0;Q{p!R73hvNI&?e;t#2;ZlF5W z0e0hSM0lw7XQ|8$%8TK*V$BziU}=R24nn!&Pib+>FH*9q%rDY}jC&&ZgZCicQ5vh!{smD$jO6@?#*v|itvT>-Q1k(E5LwxePl+Pr6{ zng6FFm+qjG=+LeJBewV;{P^J>GJV-8XkCMGH62UlfT?m{j&7tXr=s}BMw%q zHqX3Xa5U>m{$cZ_s<{^17As|XwY%7UIgQ=!B2%+uS)dp!oa(F zC4wv86SBlZOQIJ5LlmhYFhT)ha)u@F`iX;t5Y*$?O5A{_T*T{^$f0r3+IRXZRaL7Cq;Am-gUmtv`QKs2Qeh}n$}h|8%1;!Ns* zxQIF+RyR5zng@~rOeZ7s>2A~UqokXSADFAhj}{2yS3}2dHXXkN*rG5-oA&H94fu5A zG9AB^U4cgIZT0v~Bjd-Z$M0&>@f$_P&xwrRD)snXZ90B%g^XX1a?xwJq8>l2@x$?h zA%8!9gjx0Y)ijP@0M9iaKj<_U`tunuK=aajqNS4w$a?<9Rdb!#7esA{-xY3lz=ZuZ zhS~Gj_}a1zHV#@$MvfC0Cx0h@M?W_F!DQq#g~20sPrzLfUV?Cs)4dR^a>PS%7Em+UEoB~WV`z2j>JIC%j<;g~PbH$oUBa)3nP_^f;`E7+9=r|Ku%l9>>&a z;1vpw<35L6i`jExH$yjFcQY2AYr7xYcWUny_N>@l*VD+ul$E`5seqLQcMD)yh1N;v zi~GXBULWMY^Lt^vV$TTUH6syA#z{(taZ83c6Sfpc$UR4f3|iBXZbPqRQdvQq4V-!K z{@$6o^t4uCJ+XW(Xi4RnxMQ`1)aeLjx3Sqv$)8Z8c>LZ6 zcgC{*9urhQLzGzdu`%w{i|Y8&iqgw8^wghxC9G1QXIpZn9;SZJLIf(ZkS#tpIfkv6 zIY(me=YZ@HyW`GG@~-}gMStmt<$r-_Zt0y&aRiD)5q|8P(lSYP!~>%GC|G=spRSO9 zdC?G?YJ>`l8)H*-mdO7sr{QXZ*i`*gvf3`f0qZX}uU{b>4%yl~H=?n0q^GQ)NnLN{ zr=R^}FuYTIzWV?)KF_P@-hKX*9xB}O)@;yF{4OpQ(+tgT0lTIbvZpo~^ivzbsaJ&qHuNaQSbk`#kh7hGE5^+02E0 z*+&HosgV@kO?g=}`|v^)9#+>`TntYY55?y)9M`Vd=BBTjDwe@)zS|vGoTmx08_**k z))$D#X#Jsp3%};!fK|WZ3la#|hRqTbjgo!if^36r0v*_^c-nQ82a}kfnBc^qIMz?> zYwK%?_ON(;0sJ;bqKii}`*!Wy<-UXU6}unWm$EOJT@9nhAcTMWFEu_fF% zaSgWTyOZIQP#acmx_-LRJ^D>UZ{WFrCu#}bLG2+OGlujbW=X14ZdQyt z*7c=4{Z@}MYKefdps{PK@*#Pd~4;RLi4<{~tZu@VGc zcMc~hlBE1&+)J?&S$Nnvv+^^p5g%X%Lf5esGR02UyqK7jr0`>i%{^+Wr(?QZcfIM6 z%c_NL%#@oe%4-U)Rli(*Wvr5D_yQZ&*Q&`1MJ4=+N*MlGxab}XxUN@7M>P4nakmlJ z_)s@S0iB4DZs z2JS&bMPHZ26n|V6MNcF}uwTw$kn|u7UM${L&g9VXT0J($S z)z4UYPWJ+wxCB;9@pfr@`dnDE>c2CS67JB0T2qf4I+%Wk;SOUFaAQKZ49UGhAYmO|C1zYDNX^Q$Z zLCsIo2C~(5@*CH5K+gbrbEvpwK;J({Wtc+ht)XtuLu!xXv^<*gg1hdOw5cE+Y za2Nz*aPSfK-Cs(@sC9W&(4y$U+ZShy#td3MxR*-y+NFr^UbNR%>-;^w!##O9e~iym z%$Up=A6*r@6yd(4ceoY8z0v%nr6-KoIn$4Cz59SUv-PU&4Fr8jhoKdM-mLsAD&BQ- z!#TFJoT)R$feLv!w0QcGEUu@~3FmYx7DwYOW><#eX>^X|J7{B#al^5uavjb+yW_b-1)`(!zKt=63DEw<(O>I`4>t9(C z+5Le}Yq?6zOMIY+zdBIyw63oNLZASh!28L*xFbT9bzTUKgh-r+d~qbcjfOC?Vj4*H z9wE+)f9CNHooHN;lWQ*Sg zq45t8$Z#pNK(MxUZ3RMAgy{j${Q)d^pqWs??<5s4k!r#%cN%hMSBH zi26~iy$+dWZ$E$d;?e9gh|M{&QBTi&;~JIB5F3=$`jk;kNVi&k7rGObwyN;tpDO+z zlAOeZv&us#!Q-G8E6>{hkdfcD3EJgvf!MK2wqi|H-Cq)e-BxRrJCJp-TL9}bm5K96 z@=8antOS$#elebgq_m`9)$OJFN+0?u&bcelfczy=f*fn{L@}?_uEiU!K$wX^oCDPNe z+-kLQ%SvOfzAPkM#rood$IqsmPGJQKuk)b8HE5ap>Z}$a((C$)LTGk>Q!@Fp7fiu^RCs=RZw%cZta>sHpX__fM zpKQC)*m9SF;m#v@s-1m^^fCvbyfp|x0E5LiK;eY!kdtp%R9Mu(C^r2p6BZSf92)Cu@9ThevO^>d zT^yD7;OegeneGKJARl^sOKCsUDRv`EPX`w^tOkh2dKGU(=6GAK7ZaV75Ox%?7t^;H zt~9qa*t9L}f=Xu}GwYge$ ziY>_8!P+w5X-f80vPb)8da6)`R-l1Y99FMS3e5$$HIQR`4$|#EdSD+_Fb~^ z88>tdZs(5Mu(!kkpmhzpJbA>*|B;9Huc((8Sx?Ucb4lHmp9_rhp?$t_0d)SpD^Ju9 zMM_LmGRj1^jgC+En}&=wq4~%x$}+{C^vrmxgOw>-$4F=;Gs%PK|oVoH^c$R*; z4a07MR@G1K~_s${2S=uKN$Je zOC^fsUxvcWYO)=R%ZfQ3n-yacvpLp;eT`=h$CH>nTkN*lZ6Pn&!id^Ynz6N`L;w*A zSPK1NAS{L@xIYZQOYven5D&mh@Dd<@VX;bfPMEn$} zbxmkrdcE{TsR*iIvjRp-OL=nz>==(n;;N-$StuSwDv_F+S4gGnr6PU|!2@HYrBtyS zE0wJlSb@Q1BECN@8P^E%Efc{5A%D*%w5a8&;wXEjh+Eya|U2Pu)4#5X-Fa$4M0>L6l|N9+&X(Wh}e3Jr_LX)DB?Na@c z!;^nWl7BkBh=0bWEG1_OuN_R>8J`W=I$9cCoS9xzozTV-M@S zmyv(kIml(B+dfnK?T*e~-oBnb-rmRy`5<3EA3u*E&j7y=zm%}(18jUKb2REeW>7*v zWLQdiMtowJf4qO>{sU+~%0Mw*sqV=hDfTH_**MDsd&1X;uMe;ZG6}E>S?p)Y+DOm_ zWb19|wb6Gka`)SdT#*CXJ{o0<`up#!Rw%JAnTFr9p{nbdCED=5p6?$2ELYP zjprsWJ8vg1XU~1!VLs8mF|5y7za-boUa`JWei5wvx8a8VX#okrv4IIe$M#3;5BCd2 zAt=Ev)*jKqMIOk@$J>XM|2}+?tGkaAA?)sJ?&0X;Nq&4O_?AzQ??FTw`GxEc7V7y2 z?GHvl=%7ciBiezSExmTIwi2|@*Uj6Fm47<1$oGIx=-x=y;{Xxe=|x_FC>F)}rrL$u zlG>iTyzP9wy!Uy#c-nh7y4$$zTI=F~SQoS>*gl@LwqCS1%p(k?pisX9egS>~fd>N) z9Eb{zB=iD3gZ3d0=c9DBSkkG$C6dVu~ z8XV#uieeDC@eSG^cOd-0enA>uZr;ww!Oz~`dH+5^fc|?Ac!v0fp@X48F~JG@kNCw3 zLJ#r|^7N&`bn|s3WR4H=vGumtXXS3=VeM<>Ywc$rU=zB~&&%OILXwgeqS;Q=ZB@kCs4Y>@;-xnJ|hX62v9FREJDp`QwYWxGB8-efE1JZ{$OsZ*Q+aw*!dv7YF+7-;exRF4f)+>y7xcYsf@SFjJ|FkpXBKuAz%XkZc>=pE>;^de7|kDIrvkEgpk!RX`V zM<&%Tf?L(JvNxbH^|3lyG5m|Vb)~yPB>z|e6Q%MKt~5w-y6bux@P>vdKB)ndr0_2= zqF!GoTxmpMJX0($afQiJHOk-0pxwi1^$2-MwY;nmTMb24MsWQ~QPmJk{CY5?4nhxH zN;lc?OK9ZVi}mi*(foXVssg4+<=bGYR35pJe(;&rwCZ(`H`b1Y62V9%2B!#ZENGjU z@7t89oe}C=g=s*J+MXeb#xMxexJx!tc({OJiv~q;(Di#9_k^e)^(dk=;19LoR+tcJ z=x4lDXl^bvkNiRNk`JVD*t0*L`P251t}v=0E>KiMT%cH2e;gv9F>|G8VyAtN<}qjx zJiotrL$SnZKtQAI$s2q~XuCsTA@&C>G?!eaa0FhB`~0osp57x(;vpogp5A1&kP@?L_L-tbzLBl zXKK8b5+wJe@>|nzCrJE;jhZj0S@uLvMf={cyDZV+?NRcpHA)YwAPLf^0nbel(QVbg4WGW=P3C zbf#3cpH!Io+}T#^4_e-V4^_Y{T0WbW&-sc#aI0uRy+V_P7a$$$2$;@NOyx~6(VBmJ zt#}YG6;Pg~D9f9o{J-q{X*3BYBJ||D`2iv{(#Oo)nv~3h0ZzE zFi#3+o(Qv1V@Zv=WRg@?oArY^QNRfQq{Db3Ucf6)kEf_l#0!&SJe?flDGmbuioQwd z$?mlDL@u2=|5-nE#y3u#@pS4GC^wrr)pU7rwY=I@P4$5*rCKda$q(q1{EILp6Yy86 zO-gHoQqp)5wNMeJS$B9_A7J=>lK{hW`F{V40K=rM5U2HpI!-H5>i<)mRvT*v2dlm2 zWJ6Hp@{ljC(7gN}ZhjEKH5Ua;eFFW!9JY)j8vIl|bpq~>w_^8~xGjuRJ#2|(=I>#d z3cWc{l5`>Q-0|ca2((aIZ-nO~EOr^U$j zx8k65n@QmB=_U}m7T?jeC3JUxL)UjQ6)dP5;~Awif6S5p4Bc@ z%o00}Ua%fZ5IdU+i$oQO!q^`?|EzdTZK5N;gd8)PJuZiWgk8YX`8@XD4u&N(g`@pZ7 z9pTLQ;EqoR!TA&;E`!Lun5m>D@p(iqIyb zSANE5`pjjU=l-{}CsEoB3BjtGBm|q;G$B|{ybX+e#BU%E&Rgp618xd_!!!xLSEq}H zLmonSBsIt%S&h&m24B{;M#jEdeN&F5pNUOni(WIahqA6DW&5l_i_mr!&y&a+@$ni2 zpMijHY6HG2-{8yDwyDQ=_)J_XTlkuZqxjDF=rzSRtehYtPw1K^3Cr?`SnpQCh)T_Z zS8(nHwb);;fJIVSBfL@#f6xGLNO1OCo#5<&I>Fg(Qor~S%zdbJ^VyhpaQ21#Gd$#t z6m!tr?VIKy_$d{7Ko3-fj;s!v$3BZ-oZl{cjyn>4OJ4^M!?w6zCSC;_U{(Qi{;Yyd z<7sd+o4Rg9!u{5jym)){`s=qBbo*gOe@$N%W$yMPm{YD*@pSAvI75lm@P>-nXx{cs zbI4ObiT#W!DY5yKnA6+k&$0GbVtq3jh;?d0tScpET=JX{s}YE`R1<4R-S)UKb=%AD zQ@6zs-QZu9n$YPjO#M}KmH(Fl-iq;XJZTWNam3c_Tk%0~`~n_iM*Nw5R=0qTh|pm6 zuQ2Ub(Wmbk{3;Inz5z`RH{*@ygE~1}F_A;^eXxC~b+vlQOF%D|RFmg&9N(UFBrhf7 zA}V3u>Ab`P@!+K+2Po03O#RC{$zFD<)y7q5Ad7!`JqG%N>eEB$r9{7M%A1_b(l9A- zKv8ja!}Qrk>!(aMI(<)d|IF#fO8M_~cUulydhO}c!t*a{3f4?ejn!E`Oes@yU{kJj z_tnyu;QMkZ9dSBOr30W zszg;<&%vFR!4YgyVDhvk$z60#?(!R?DRFX9YM>LNH!~e)O1K>wV+ldIRh9y!>~1T>h@%wEXw_ z!*aq$^)~XhScWbhF5~TA+a&we-n|PgQvW|LS9BhULlB_mrx@WO(Js@LT&R=YFV_3u2F_V$W5J z9TKVBZEfRiVRTd3A9YoCB1*8oh!)H*iW;piZZ#NRP?ml$0<|lDFakuc(j?mnnTXfY zhE?>wqZYlNe_Ngl5qJdQjXZ=`#lG__Z7lb)v_6=8Z38t5(h6i)_)A;EM(EIh;aNik zzdCmT(cQ0zhLNZ5In8u4l4iPj1|#WlwK~(y-TF*7=`QM=3U|NeRM;-mYL-)hJmQ3% zFv?DQdO$(gSPu@=hP|8GhTTDNQ*Fb(c#+zMy-+0+a@J&C5%H_|It6aI2|-($#d8nx?b+o-;4`T+-v*ky)RhMFt~y3~wrf0cEh#Rx^uF5%Gn5pkf$Gg_RSKC0>cU zqC>E9BHDph4nVHc-XUu|Kz+e%!<#BmI&6ZjNVq%rC-VH5XdxK4n!_$G6T`xX+jF-dNMyDa`~8EzCod7LmS9E!vhrLQca7I zP3+s4L$@zYp*sqCZE8rNdklWA`8O$a-v}vmg|>F2?d-maU!YrVLjqmhCJA(3HA|rT z^9a(ACeU5c_q(J{wQc@gQl}=B8`3w`wr@z^w3ViB%J`4zn@p!>{$2W}MSZ^}3bc{m z-1HJb@}9PoNFW6IfsKMSV8FTYdjsGQib+|ItbFH9ghuR(nb~)fXV;1X4u- zL+SzQ^QXS*<0sjwT8n#{(4Xj*uJ8}x7;JT40&pXMioQ(_!7kILne=$ghazh{UK8MH z{6SF~1?vi@Yr0a|cr5zI@P@Oh5cOG=8YCQ6g$RdLVUW;pu-3Z%V67YyzCT!t>RW%V zcD4RoZEWAB$7*{Z|7$*@{Q7)G0&EoIig;rImP=t?UtwPLupc(AqQINHJ#_>kusZvC zghjloh|d*3uJ!opL0%0Y6I!p{T`0faT__j^^DQ(h>k~Ek!(at^k2RiyM)O=vpeL=b zT2r6i#sI1t)7y*}N$<|TOsFBD`e5~3)5oR%9*nzw)^)WTf|zct&n>PM#z86ExnT_jz%#kn%W>glsu0r zK0_VJ@fpDex%#zWgFMoAh^lv^336+R{LhL%1qg=ixK9}j{~POSXs*juFJ ziR4pg+0CfetZXg}zyoT_aewHqb>+QWhit~SDD0N(Ffz1fAM;C?K!-qke>?V<7{;-9 zd(MWVtUN0LWRsEOSjH*P$=|_`jVM#w{P(h&gMShZYP%incWWhUh2<3}>ID$MW$cI4mZO>cLz*i9lw)5G<0 zJ)g6~+?YVz<=t%HoY|>m68YRR$)5*6<067SY+WD7Rml6ITNh6h9boYm$&x7D6m*RR z9lSwN?38bZ=Aua}w#;!OJNBK5`S1HLjr^N>cYhYVyVrm9?yfiR?^iA29qJAI zo7?wysD?w-zW??Q?E9B|XWwsp8ymlrylrmZKZx4*H}y2A5j+hpH}y1VmiO*WW8S;C zzsY-7@5~WKeww&*lr?qdSXein**n*LiMz27MZxW|<3n~dKYjojOA1_9IM1Nr48-nd zebVgTvkUm~LlGnY$4&fn96~z3pnP2T2dd)xFyTcZ#UV7hLFn3pGs1M(Cv|;)CpF8O zczsk7HGr_AO?^xHftbeW)`NcXcljamMrV-iPce zetd7VniRON*f+z27I>ZYy5RAMHRH#RK!7ax3K=(p{C$iL;l0ojUF5qm^3Ml~ z0;_^Au>Rr$Mh8X)>#!HJ)P6Zf9Ap?(AGfJ+EDMa?9v0@0VsKKukDrO254VqNE z1NMS-;X`U&n92|QF5^4wECzY8=2P0$Y<{G=tNaGSQoS5j3gv21@Y>&%HxN*phmy{H zHD3&*Hj5U5`QjLQ+2P-qFV?eAPr^old!U^61VeuuL7Um4g;?Hb06CCgcngOp26xFV zki$%hp&65F1Rm5F!qpfS5Da5}grSIFm_;xgf}idarI$LI7s4Q!%c-1xSS!0)V!FRzi!3^!{8$u_iy6+&fdV&}PP%4@t=iQW63m zzbUD=;aq-;I;4GT!$~ndAtg3+%4;zDB)Fgj0R}@X>N2iuyLp{8ZuBvHHt<_%`BrPK_z8!!7$X0TvFYCohcUeFeUc&%?+ z%>A~-{Dv0KX^VmI=YMK(iYE^$KeU9(%Ydf96z&(4P*Dl@LW<1!B~(O0icDC$_m-&* zoWE^%8{BTYkcs&LXqSPA{+37O!W8&b@$%9`qBpkCEgLmLZ#ovKu;k+G8l_w}_ay#R z!T(gNGX~Xl{Y!^A#}85%?#Xb3FthErvAG|p4*)F>~(N-w;?OU zkzBq@-57$pjGz|Pqi#u2(~YAK*WX92A}MGoH24p-WxS^A&FwajUFdNW_7xFX zCO-h?VZ{RwLnjbFlpAQkDLz>Nn)+qq#~Ms0lSa#PbDk@!E&a>Tc))tN#hF|j*7 zIbRVJ77`GKQc>u3G#wdx?{IVQaNXzWf-I10Ix1z+nSj)gD3QXY5%zQsfW$!A>;TPL_hmY%m!$&>ndO2C3Yc&L)4|Tf?>g5v8zZ1M%1k|+7Tj(bE zkvNw^`yxoZ1s(2bovN&S3Pz76S4=6F|D{1D=vImeQhA;0MRX!Q^)$OmLZB0+@_%aJ zC9pygGs|d^;7xpj*rCfb6pTpRUbKeBVQ+LjITQ(dhVe zl+C`FnYKiUN7r>Oh9P27w@7>!MLX@^>c0fpL|U;WA!55&k2sWvGMv-4MYDMNVFhr6 zZ`ViSa~V$SR-5iKQpvXQqlK)u@6}mv{rJ%hS#Rsp;le0&N#WOgxP681QS~7M7SNCZ z0>F|2E~){Z{DQAB1Qs;L5D=iCO~D(QfCo*i{ZyZnd16B{>?SbY_-mr(T8$2TlENj7 z_YQ}pVPd>KP@*(l1q|Xk}Ao2wjDc^UBd>lVQdO}hP}={U|+KDTD57_zm;Jt=T`o$ z4z)Vn>X}qSI#g;X-6+kL{?7I0jJWNbFBi`p*o+ev$pNZTq%8+YW9!uI-Gri`#B* zo7DD5+dFOFwd>t(XuFB+^x9ds^KKW}?rOW@cIE9}wBy^$+AG^nXuq+&eE?@bn7{kj z_61rRTHUp#Y0cMKp|wS8k5-`8Rjp#JH(GV_@$%Jje|e_-uDneCrGrKXwnOI*Jvxl; z;L_nrhnpQ9c6i?5Lx(SlmWsBD!HV&UnTo{|imcl7IcvtvysjZU394eT_flT|0LP9dGnbjt7a zpwqj~y*m%XDR zuG(D}b=B{>v#VX#sIG}!uXMfN^-VWvx53?}cU#eIOSfI!oV)pU3+;BYTT!>_ZohZ? zmy%QVRSr?=DUFq8N_VB7@}M$Hd0APge4}Dj{Z-pl`&8+w8rARJCEZosCwJHBuGf7_ zcZcr#yC-%p>|WBn8gyY*F!kmPo5x{XP^7mzJ z$S{Oo{uRP-FtHMPg9&V$K(@LQ@x+O^58i~GpW`+#TE*ek+up(=6{2wehAM&SmZKcvyqjhnWGV6x#-FlxsNYC&Z)Uc)1X27iI3?XeGW3fT7IM1S5D03 z@DIRMoH81xM16bcFIYcVXZTbXJdx#%9*Mcjsp+}s3f=q{;1&pLp%J5fu#ByCVth_U zf(F^xv1Qq7XU<-}dA@4h#H(Vi{D%36(YgjhRRhqvQoon%D0&3np=vO7W0Rvl?;+^U zqEgfHDG4mc>rI#7!n(z1BwRoU4||0W410-CIm6kY^}eRQ$(e_-kaBC$u7tOcWJdboP6_lVvk5RgA&;s^J1mpb6il?{(5guN> z3=hV;aPJJfj8K}E58A)0Kr!(h?x^Gj7~g&N%awxaU(V|dz%2~)`>Qy3B_{R9ktR;q zl6@mS2)3WWm5if`?2)HSxXUR=&!H0b*X7S~KRjUB=s`*}JHs$%C(F&S+PE4GVR7f` zanJ|4ekg+;N>sBsZ)y_DJv_5<=A5+~rcGUY>aMCJ`&5OJ8=-UMN!87B&tK*1Pg0Fr zwsM4$!_$`Gjy-Y5NBy9aio1sjGEU$0!t+*+>47F9vm0Kw*$GZeXrF7Nfc6Yl=fe=# zp@Kf9upF;da)S*oeSj7hF28@5J$uZ+l}m<`hs^8+vpZBbW?e*f#HHv%2U#$EfgaWM z#FNovvU!-yaHyiLCrn0@z;qOI$n}zaw$nN%UAx_TS!^~6O=7sMrt5YuKr9~IzZ#rC z_Xc!^QzDdJSUx%$==@xkn{1m~^(;B3?0Mvzd8(0HjpmYW|0uH;!$qD6ITDt|`iVogM;L{fuqAj4 zHbdmK`U$fzl(TJgwZUs?>A|GRovgF_f=>2W!33@ z)%k!~4wde@G(VZ;Zp5E2LeE+9Xbp(MZI#&iFP&=0hF)S0+8i?d$CCtoq%dw`C0~Wm~iuuHj31R+=jIU%W8H6?P5IpYJ{xDd@{Y_#t z?(dUqk=5w&^#o}3ce%5;Je1{-vN>vZ=w?4lvKpKaqvW8Bn8R^LPsd*+opkoM@ZUkG zYZ`8vpc*6Lw&v=k(bz;?hV~(E(y*Fdpj6#Oms7Ly*)ft~I{Fio+(fiG!RrY-+Jgzi zTA*qCfoy>LzNvyPD&A?hgtOXZ=3t1h1Z}@ZQ@0g_o=-iTcqlXC68Z&Q)TbrMd;3^Q=|_XuR%k?sdMbqCuZenv`0zPXpdaeIFEcD zsXu+{le)7F_0_Z|B7O5+E6DORyw1BC(#V_hgZvU_-#|`7`UtLB64PesO;z0A=P^~M zF=f?xOx1}`Nnd0(@877A z2#4bFu4x4KN9e4{{yFT^aK;s6Lr?cW zBhbM0s3+?8cz2}@%l&=8be8+~@x+_O^p>b&dULq!ucVX zjGrD_cyj%*&FAfIp%QfU@FDVmPphVm4%~l;H@pb~1S-yz50qDuxl z2oecgw{9O}I@*4N3EGXU1MPxXpRr7`d#ZObVdvQ8lV4b}>B}BWR@ib}v|sYy1m0!H zL#eX`%T;)$1Q}Ud>3Fj_P{ASzx@MQUHiG3` za3;duRBiNjflP*TSZua!nLEq3mfUeo)(h8bdY;EUUGRgmJZ|i*#&bLly-z5siD2ub zl3@|nrRWpOEkhr%(lCL&Y+4*7phPN zy1B-$J6jXYxPx+J1wF{?j)qJ`xHVcCwLW?yd9G$Y69?@M+==#}#g-c;EoJkjF{yD! zl1`Ebr2=K?)}Wi{V%&vnmP^P8%SPu>j&rtECRu?0G3&M@2%^Mab!M+;uR zKB_Zxn3>K{71skBFxDGv)>|7|pSM13bCT^LtS*N5BbkTMLKuY53OtxzkzaT+wM(5$ zfkg}+bQJ~{VVM{V;Um!@?vKLvi55~b@#27-{y7seiF$DH_~ByGr3dKPa=)eQ>u6@* zmnpZ%TiFW@T8{c5<4ChibCz4|pld)TupSi#UvxoZWw`~Jt94Cw%q1;nA%k;1_vkWx z0JnTR9~3nA$fN7%Ey}SzzA1yflYA-<6|tP|p}EIV0Xms}>|%J${&2udZwxbnj zgN2!)J(+M8LNDk6dZ3TVU%U`6z(3<2SRd;F`3nn(jynuXp$$xdsUU^6FpNx3t#Dgv z_m5i<#gu5l`@B7T-4Sc=6B?z0Ns=<76Qh(y$YkFx`|Y;Q7QXA*;=Rm;q=bAj@x{4^ zI)*y=InzCg$eQ6+xGu6q)6kp(vjTJtWyQoFBMaj8&9hB+MyD&$@#K(W2iOmZWYr%E zlZg`ezWehp&(J#}Q|G$A^WYhtDB+&nE_(cU{;e@%=P#Hz@%F-}WTM=9;_{`;lR3FZ zHtOk`Zz8%P;eL5BUJg^|5x!Tlf&H;5ICj-w|`KscNu*ss_0C7-1$dZ#okRtISjhit;5t z$u>v!oWU|E?z;Iv2bZ-V@I1eLZi}{FMBH>Q@ zoC%MMX7N1<_XP0=YIVku`J~aDjo}>0i{s!M9vvPN7R_c{V8Ua_t|ZRa&etC8VEah8 z@KYC3&!%2X&p(Oovyb#HO~S1#$F5WsyD~Qt(l2Kx?>1DTl?yF4@6y?foma{<~tRgQ>c zRyhyGttW3d{X~iKj~_jrSy+&mjSASy5^fRJcz|Ak2E)-bZuLQwxf3XU!!>jW#UF@` ziH-_M4M<~k#O}6U_Lk%gF+&!o^^rN+?YhU-ZjakGWXoO=?~e#hIzkHbPM^ATY5l2H ztJZJOQ|X=Fkf-F*V|QC@+heuO!a6ZMEg>mQ#ntH{ocx#0JH(WeZPOC+mT%@Y5URv! zh-s3nh%A~ic#=VipD^4)(C87+>rj0>Z7m-a8B3sE`@#9V|WoL{!z4i7ZCdc6Ju4f2Vp+D(&4s-OY zP1VMm?ERPI)fV-eN!RIu}WXZ;)iwGjAQmb8n>8310APsCfg?iqMt58dI@Gk zi!b99Oys)Yl|Q&DE9Yc zhWmf1-apb6Rcd8X$(bKsv6NYVbXD9!YSTA}ewrGDX2$4btYcR!Jz|k}jXAybn(bXg zws#*sBN&eE+1xZaNBD1|SYAY#PKmo&?1dv4m&2Y}=rqfzHA}TB%6bNZFGMjB+k-Zu zwQ9|iQyCX?HvL1bH0-&OBh3^&VR>Bzp0w=0xqhv`Ug$FeEpoga4U z%S$C6F-*cWZFFATfGiI*$0IYW$#A)#7>~@cg8AV_9y%cSnd||kH2Gf8EEf~^A9VSq z(f#+DEjkt|#MeWa+vI zxs#uLeyq)n_>MQeJmJ_~xWp^a=*S zpoP^~6KgD@S@VWn9|Iy4x4`l&C{*aqfwNJEqLLFr4-;)Wm28GPpn3b&*;_j7vU1%< zzg*^#C&vU|M)Sb{q3-t(`f{D>rJOyoL3X~8u@P|*v20c@6B!qKI4r@})^`uu#^RO| zjwmzkwoYs$Xp+qcD#rWKW*k=J#l)qhL=Y9cAZzoA`J2s_8Eqyj`>egpn7fOfeY#!r z@!i6kLzEnti~Hf0OL1R!+?y>I2g1O+F#6-K>@A!t;f^H4rlV8n(W-MJ_76iV4bUXC zDb_6AmgS81SZ+Y8*r7L<{r;&izeb7jcAi=r!*b_ScdgrCvCGKNBKef+OltB4CAVx# zM$Uy}NAj;7GdEDJF)>|1wu7xV4xTgQ`r;R=Y;+nPQk|9^nIWiK4vv2MV7IPk_9gbKhv7i)lyRc~1Ogz|&RImgi5TR1?aEs8RCf6`` zIMGJzCaps=ADuyynEDIs_n0UyD-m#SvY4OT0v^&vn1Cf=utYl!%%{5Ikzw+Wfr@80fTlXmU~k^eE2WEHT1y&lT! zEm?Pxtnl6SX5gW?YtHQVMBmpq_VnhnRaYmgI0K6#dAWy==3G8xu}ZaM=MFN|0=oaq z%eS#dm6R0~ml_+LO4NoD{nHcu#v^@WGz)Eswn(*Oxy|;wOppOP?yBzVnroM<{$6n9Mvd zh_Q>YO578Z?Hfy0J(lnJxUQ$z7TKcpzOgZhanWRhJphK%jS%=_`d>_@GCYWhu}idy zwKMh;%!})KPUL%v;|PM&etYb!Z0+q>vIvq^_yfFWY~pR>tP;|^51|zDf^760UxiOG|cUpo~yiJ@f3m@i`A_@;P(v0l4xz=Pa2VBbYo!Ec%UC8swY$iU_xuB-!6Z$ zl2DFFD?)|C?@3#V#oEe0ji~r3Y#?kLKOW&%P>m`p@n$b(C)(v};hmU3IU*d=R(@&W zk*Vkk`eO2sJR*0{vF!b~*?D5$9Zrth$r|)?7EzbECCGS_&n)uzn^iHpLv*9pg=dFf ziaHd^f@u|cP}dWWK+}2hn<(x*=MnjF6bJ+ersJ7IdoMX;JFj!rwcqW=VzcpRI>QY^ z*raYHnAhpmAZ*GTkUnp!TZT>R3~Gp~%j;niekJMAH#_TZciyUhTSL`Qg*+tngkA}R zU=zQL;YOh5P(t3MZZ(0eeuZEwzZ#SOWQAd2(mi~jj%*^K3P!?O{I9xH3CE{mV_bzt z;>lvEiO8T zr7#TfF@!FMhoQO{O#T!Z!OvvN#OGl0hvAMUgybk=QL;}gQCB|KO@75s7QXL^xvyVY zCEVWxBjFaPKjm3lnL8QLQw)=P^oz&!135`Y6Vi{xTtjcs#RUj!v1r*oovkJ;8I{pf zEy-#P6NPV^GSa{4<)k0&lrbpUJH~^JeZkm-SOxAPkHla!cjb<$q^?w`JD=3;corm} zP2+~{O|xZVUNbwxOv2WXx=$oO>dc@rvT8Itf^L31t>V;Y&>85E5PM*2-6F>EoX1U6 zp+2EzIrVY$7PKS8CW-|!UWbV`3R+0kN%d(p-N6_*Y%^oiVI!QT;X^ghsybPP2Xpky zsW>ttez>YT2)A6dy!W)lSH7r5I5W7*t6|U?#yslPC_dcx)FRTGASYj?I_y2%!e|L0x&>J#dY)#N?qxz} zU08nyv0rlT!!V-2>)-27=26SkyqhVhS1+WQtx~PtZoY<4>VRdqgM@n+arP=bVCzh7 zJCXt2Lf(lj!aHF~-U(CsPBeT~YVZvqPp~2A7h`=enne~;{dwfYGbDTP-t-50lRa>6 z+>2h5J#a7jgL{!Za4#~<GJK3jb0x^Oy1VJ!_=CQ)#MbZ*t3WpqaKZk%e+p~r)ddv`J3^Rq9 z!z^LeFk4uMj`Y+?qoR^l)%4PxK6>-&|CM)dAv=k93QUpX^A|Uj;_y3n{HoK9x;_NJ(d;h!lzxSN)Jnx_UAts^#?kO`#a{K2M zP;hy1RRv{{1>DXkt|F>wN|Evqapq4njDk13{Y{CYBInF+1lAV*QFrQOv zN-HOFdvGn9bJa$eQUq)22O6Zfr5I{PvDBR6D4r6i1tn4vCF?mMng(cU(bUJpK~Y~# zgY??|Ktx>yY8t9(3Z;RDQ7Wj7T7!n`@s^r4(bTGGD}zM_VWGA(oQh~HO`>Tun-(S;_Ru~$M91h1U1AI8@l2k}i@26o^DDf8H}du9}GlJ!OF{-A+DwIMshf^9=>A4JAQ z&5l0O>`e1B@kd(hO4`tJW~;2$=Tl!v%WbqK_z+HFVo!tMuqjO}r-XJOABy}I^#sn@06`MuZoKGmmZpPD|K`W(%Q%gW9gYv?qq z%xq_w?K-pFYqWi%%(lpE-!agX94jDkJ0}`K1h# zhh?xlCkteeJR{G_Ldlf-q`UNxuF_3a$8kI-auWCAfn3HDxr(Ro0)Cbk@^kQz#k_>q@LG7u ztGtf?!0+(8@RSdE8~=s3^Iv%f{|$cgcm4_pWl63S%19X{r7~8=ONC69Dyfzlc|u_I za+C__4S3{x^Z{*yPwu0mbe?@Vf|EIed&4V7a1nSY=SrRi51kD@mcU0}0tf5hrEl>j z-i+OM@Gg!0K|aDK;Hwt|E(mY6NsJ^wziH5AXW*I*?G2FvXrl<2mIKdez;Z71uoSvp zEo)`HydfK9lWdkPvR!t{ZuwaD$pJY`B6(Z_+D_6z=g3^p$D|N6Te8THtEHKQ@Nxc{ zpX8IU)aeo{q2T2lKZUDGX)a;>Eq}+#8|)G%Hom}@_-XRxX%a8t{5@ac*|?exjw8Uo z@Ely#NDGM+A8EpKaWz8{B?^-H^E_P5lq89krV_~T41PkAA+1${`5D}7m&u^xWGv_; zser|g<2@vNfIo-jtitGQXh0zMGSHb)13FqpfsT<<%sa?mfF9;AK@ahNG2UNtLFdVQ z(B-lMv{qJv7RyM`r{oFH2{ImZx>SQsl`7nO0+Cx3D&QcDkE8z$p9Vbzj2!)w{0--;(;!AIVvWIhf#T5H=K2-}@cgP{49G(_>jD>ZL}z!5lc#4nYr9g#riI+gijF`B65 zXsz!VtZB8`_cSZrX;!*I6E$HqO{Yq-!>gxr4bOmY!+vz0k2R_StsAFnXu9s&2fbKb z4;U%`9$if&1GgWVlYyw{yspX({#w@OamP@gueiJybJ|fj@R|eLJp&uOz~955d|)$8 z#fmJj6wz%S{Gb-Lt11!;G+M8EGwY#o&{_@jQOR~?@rcWD@PaT{{z=%l4OSfvJC1?BPYsH8H6X5+*!R2Xic@`XA<;0&iqnzh#=u*YuT;ZR-bEHGHSw>X!(NAH{1J8D+t4r~P(v*P`$qGZ zlV${#m!NVsH2XDHI}OdAgJ!>jW-lQwU4dp*>}dkc`a`pU(5&)$Uqp{diZ{rbpfVe+@MdzR=CRnrtomOHxz_hTW$VpZW> zt!`H7nr4=+YL-fkQP*gRb9Mcqtz1_z&UMR3ATSWyL@{LATaiVwuH<};C zk>W{lrTDVC*m;TeCso^6p?7y$H#DB4D;-CbQ>JU1a$Vgh{Tua-vVl@v#~4vx>eMIy$FnsUOj2V|%j56O?UTC)Zck z;&yJ7glPCaNAJ&kkj z9NayR=F>B@fS$#v_c>Zbi)jfxPfKYT&cG|EmR8aW^dkKl=i%SbYWgj`jOu#}PDI;i zJMBOm`G|JWZk&%lroHqjYV!SbfDYoUe3*`)K0ih$=p>!Ox%nKOrweq6E(37E8QPcq zIe@Jk%%N;U4IjlZ9E%zv0X0N2r*Ladg zi_Y=Wi;d@KaJy{Ti?Roly&ini9_%Sjs%IHpk=e2-j~=EXoP?_I{Q}6ln%3d${~o0K z2+|w`_ve^QEz~^;xx0H_i*fci(iLJjWg)5+;AA|ODq$`2A&vS8*c-G7obLpu2f*2x zpM@oO_3x_xOtMjL8c6w6NM-67BxGCy3D(jEdI!Ak0I&PO+uf^uug+a{-Vw<3r2aG% zwajR$&_DNH1R2)QYqXIzgX`Vk@@~_(SI@3`&Y)08m`g)wIE|umnhIGLLXMYdJ-tQm zgYR8;iI%;(b=7Tq3W1c3RdGLM&3g6es?T;f<#cYO68q_C)2l;Q9j4)gmFcmX`l)Ep zt2bA@rIHmAyRV3TT&;O^<*KXJ6bPx^RW(0`ro8%b)lUiqK=Ou_$(_@VS0}DINv5Wd z-nF{8-5T-g!Br25gBpx~V4Zzb|xyj}5*BVQmK(DP#E zikVI4A6LY@I9)4F0q%Y$T>n;F9M!!i;l-sp8cqE)tx}d8J9#4yxci1nmSc}j^`}ulym!#aF##8?f$oW zXaB2Jnd3Qz^0Zqmv9p|UZuY!AyZM<_lH=I`>u+zxUe5BwHrVG@?%=B{6-TsCb@a_h z;LLZ7%i1@;Y7^+z;lZj(y?#!e`HQNz-i@wg!Ij}vtp6UxwXNgKM}*TF*LSxMFjkgs z7c*^}cJlLx58v8Go;#;e6+HL(RFKXVtwIltL=YwrOO4*J`It{q=aNn_9a~ z{gtGdB)iP6f3k5u-~FAg=gS|u*ZnFDPyg4xj{6neJ+rxyHQlf7{t4X8t?zy(PtRFz z)n4v*_576m*6-_{gT{XLayxlw$W8qUIIZ5^!c#GaBt&9}-FR}E_GI?pf4)4Sp7%Dq z{!HH;rY%l@h+5e~>aFl<-MeD;1ZR`Mq~BZAZ{(`~tUWUW2&%WgQz%5-z8_1gBuBmV zO6qUcxPR~Tk*jZ8srM|Wg8x`)E^!hs3DQCmB?WaR$?6q~Ai0C=3;od=v=#dYY<+^=u1+SRI{3Ze;hAt8k52;mY8#$X~a zdDx;@Kb{)~Y*UP}TphjZ3rcKatjw_F+|&U^8F z(eJY)eg1V9kCRy!o`02|uhjFB^RMIlfe&55`N|J{fb&)M^{OkEaL)egZoBz2%O%a7 zr%#-dGJ3Ey*4^Qa^%i&+cvpE3c#nF2;r+_{o%gc0!Q0~P^m@Ga zV)0m6tUf%CjZKQpi7kp<68muMy4a1e&v5_6*f(R}kNrdJm$4PGjj?^P{&-n@T>P~7 ztoXwCMez^DuZrJ_yCeQk{IBD`i2o}7e0*bkXS^j*m8ehLlvtLyJ8@s)p~SZm-%I>u z;&+LrL|ZbRXiAPvPD-AZoFxhOyx-+k`aRxU;B0@tH_z`9&#jaaw@Ol^vDj~RFNpJ| zOVXPOeTpRIcS;rCYW*g;-tU%s{avm@QtqJN>`n2Tyyc&S8KDwkB z%(|tDZ}o&d&OeBc4#MhJUvdra?(loux%@FxF~DaZ7$_bKErf139Vez@(p18q75=+Y ziJw}3lhom>93Z#cy%1`fc7BV17NRzrkP7sGdkcQI1bBIo+Qavf09lTyMQjoc!uP^XeVYe`)l*X8`#?055bJAd~O zzf#TvuXgb2B&1q++#xaLAYbPal9Ou)D=yW9RqwaCZupWUW%}<<_?aXem69@(61}V7 zuADFD!U<;_iW5Vd#*j_9=T(El2xLgZkAcHAQX<#F0lmv`7qc%acXN53$MqWGyVl=o z?~^76n|WW%`~CK(@^lAp61?fMr>#7tcxp4>TX?GCsRiGq+5c<9|10dxyP==%tRMZW zJp8N3LT!SV?O@WK{azVW?o)d?~_z3>qK{QtH3Q z+YE0rgaa>$x0+PclbVF(sv!TVjCK=aAKd(zNy`Czstl7~G**1g#g{(a!FO_&YXZ*> z%i{-#y92*fPW zBf*{gL@Cu3mSe?0C6uVbM-5+V!Mcw7k@#pJ#wo@vm5I2~x>SL`ImqU%P> zI9VX)Qf6E)OJzB_@H6sRxl`_yr`@OAGIxu+)!pW9cb|64-51=Q?u+g&celI8eaU^< zeZ}4D?sNB}i@xd}bYF81xv#r#xIb~IZ%#nW?Y`#a!EZZAyT;#6%pJ!m?Zsi( z(At$ruD#~l@w z{dGs=>s@5J5y-}^{MQ_G#PPJ7>j3{SFPdZ=1oB6WN zf5l%J$fVJzCx`kwEw}C%$}i(*SHMZa-{ikRnYEdB8||x7dxziazwN(b&#htE-8~Qv z*w8xUdpvA&u0!i5x$d&h@x0g?^GlHeIb74U1x()Z*Mu>4T8v$)#R8cn#xiOqYp9=C zsqeqZwI~~7QC@gEsQKnT57iAyEwJ+6@mJ@iF-OYCdz!}8)J1|cZVuBJq$Zgc-frd3 zp$<)jai_(9bpVGWJCu`0b3|!T39)Ne5HGUR9Hb(@mT)Ww?STB}P0(wwpH0+tPuM|; zJfwW|_a5(Bj!B8;$87;ssp&>v2Gt1s*X*o0ZR>Hx;Dpv2Ert$rok)rHFvLzo`8g!c zfmFpMnJvStE~)jq6Bx7Vw4ss{_WJ!C!`J@ve3@?2It*>_V~ufNATwz6T|-(nyN)&VL&jV{ zxB0tIV0@-GPJAghB;MoFEs4GxQTK-u3nbn8ss)yTt1CU%bmEfat|&k_u|I6o82cR?LOr`CFO3J zTP79m7I%x3xm(?>yt&QY#+%#S?Yz0e-NE^D?sF1%pLd^^qcr#>-H_MwP&YSJcmY6rkn}g4@y|bm-o9E4wT5rBLpReb5=kRrbw}7wbdgl_( zLT@2{&hyU0&mwP;WV{Q#i#T8EUCQ|~?=nevi@n8?@-Fu-=YEN|MEhdpW8!cb`lki(Br^1UmIRh@#!>5tBQ{Y8| zoGzo_)!D|mvBtC6vJh8qJS#Sy)ya*xjNF3rjDIoXUqY7SN{owhjf-*P;z`EEgmJOb zxR^37CXI`g#>JFzF=<>(8W&^6#khOaJqrJR;eH{`I9lVLb}?Fuu+( zzK(D!-Abu7zMgD+t#!?=SoqA&7E9mvXHS>h336-@>_1d z;%)HbPB?I{(mtzKIS#LbgO*TG&n@`9J?pFc@HI1Q`6#?~q*`ORRswAn?OoQK>nx8X+^5~Ak?`ei zITHSudrXqXUk`V(<@O58?d6us%Poh;!@M2jYR!{DZp>J2tgzfwYPqW{CwG-v?kda6 zU4zTTO3Obf%RiNte^Qoz;+AvbCjAMM{0*D+N{V6DIdn zCim4=o~0;1mRmpfqwX=%uaf<&wOOai9DI}qd{XH#x8HhlqF$Z0V8mBcKh+tvl18nh zm4qpyR?MgsGi_9ArCBvyLTTVx zT0I+ec5uWi|DdKN(^&KjW$r}M((Ct;Gmf$U+CP9RSPy?+p{$`cW<3Z}L7gyTt-Ur{ z)v==tZ=j`^u)c;Z)?41?_tQ!_aF~DBlH;w-DV6vwhE6>|7a<)hE~+0DmmcjyJd&OZ zYqilH&*#z56qpPS%SQ{Pg;gS&0V z+~ae+_0g8>?SMXNH+^(iy4e5ko6m*v{E_vx!sLF;-nZJ-)j%i6|HS{u8@+SnD=x-OE>;7*dy;zr3`xN>)=yHh5* zFS;*M6TQpbMUC@rcem8Jd)z%z?Y`u`M7{IN?#tBVzv8|k6WqP-Uh4Drx%*_SyWia} z4ekN=fTZ15-B+ozKIk5#_4_sVHK}qBxreCXf8BjuO04x8w0p<6KG!EBt@WF-)^Dw~ zek-l@>#X%#td=a^#b6&Dby>=eB#k2vN!3x|H7R3B`B-zowJdxJo)u0arj!Ksny~>5 zW=FZvv;xQ&eaGX*$pq`ms0J#48fe-efklPd+#LQGeFT2QM$957*;M4a`m9qQsnEsv zGS1o^1Fkyj#)nQU4UrR|A#^4DU1IIL2NQw4lTjIuVd8Vz2qI)a@-EBMO74Z<1LTmx=dK-`mb>euBRu4+>Z&* z(bdt0t_*GIB1<~8o4e}>EaW09xL9BXC$4^*^;xC82JZ@Bsdu0Eg!ixBGq`8H72fL5 zcKhtu3f$`0n|AGwd+}xQ=i{pr-%I>5`N8COlRr&vNwy_>aPOt!$(~dZ*IC|*)WXy( z+-3S+zotIO`>RrGQ|r>FrKhFmq?e_aryoo|>^+hGZu;NTFQy+(uO-&3OE<-Uz;V}? zNoQunR%EWv+!VTHnFlgIv3Nt5c_#C6(bA$HmCPu)s^lhOHCM7M*;8`2w<6i2P;y_% zE0zviNlVFlLHMPM(oK>7*oxAdN^b`qDE&#88x}B{x-kNAcusy}8pe%izirwF_#OD?p`()5~jrgj+FU+K4Mh{3x|B!aQ=dWqM9s zR##S6Q+Hb3w7NNU3sMW~ZmL^W_nEqH)cw3}W4%{Dj`OYc->6?3IO965eqCDot{+FP zo&cVt)X>qX-N@Zuq^+5bZI5*ssl0*Tfbo}wnV6Cb`pE*D+HSMuz1BY{pP^3lS>D~{x4Aq01MY6%9>3jviR+jBK57uD(C%LC z#-FrwrY+<)uz8&4Cx9oxbr&hzO=-QCQh1VCqF4CMQcc~hhB#_@9?$(X)QheKpS$?` zhrEBB6#tC)pCqq71x`WwDhZ{=C_%fL^c~Rjxh32$2e+^Id)>X@cAwwu?)Ue(2mH6( zSGj+X_g};BLw=L{I`1EYirr>gtg`?VcSqQ9VtgDPJxL4!y{ia4<|g|cN+Y+D+LhU} zlg1ACnS$~aev{5#K>H;~#etBDt+JfZo&Xf{-BMwk_#*YPulPH_un`P*fng&Ut^va) zFx&xlyTGo|Ec&PW9X98o4q9}{k7x%!PTGG)$WK7YCyDRZ)Hi?YzXo0EiJ<|E$C!k* z`m0@?zaPxgVBYK&`0L!|{sw5YI_Qs;BDdY&?RNOP;oA?5Z*iHLzNv+WeZf<3RTuYm2FUEGkn_(Wwt<>t?+FGX-MiATWA~J zXtv=Q;M>HR&dD<)h_#qli;1<1*t+;DEtA1AZRxABH1=8g#*v=!YSoU`zXpyjhrf4{ z{<|y}mJwp9<+Ht{wHf+3LYquFzR2|}(D`1!pSpB8HR(#~(POAZS5t>BrtVxx&AAM` zt4xAcNeaAs9qmVO?*;ch@ZJw+e+UHw$~76~qWlt2Z6mqa!PR|6xyi`L5`SYziQ1b?zJs!<*2}Lh5U~&W(YiI#cEexbh^= zJNa`L&%5EwUU=FW&W+iJ&t2r;HVdQM!btLd19)wh??Z8^2dJDT1&zCF`E(AN~-qRY?cn2D-x7h-F)pO z4YU0gzI4lcN;PEO(xtPz>cO*2W`pHia^czB&m#xT=l&e9S!fmqb$JEW2_ZBn=i{r_Y>63(E!ArBK8!qr-(5{jH8Kh3^9%-#xe3ograSpQG_yz zbd?j5j>%W)ND?KX$jQJdz^TA#z!|`qqGM+w;D=TanF-7$ZwB-z59v_}J&K^mD7ldD zi-9WuwZ*uFtInVN2G>6Zz6tyZ@Gaomz{9{Jz@xxpzz+!Pued6=HAg%FhR<;Sib=c3 zT0ncpwdYuSgEs)$!>u(ZwGGu8mi8R0osQaJYTvZ>z-{)kc5t(4Qbn~s0&H}I?^3C0VG!C)Mi%qC}?W86<_ zO*Ah@d1lf;!aZ4po+VYAxCAt%d&k_Vn^YxGIuyym1) zP<|woA4ST>k+R98Y#f+YBi$Y{8AH<3X5~^7=7CzU9gj?pLZ<7H>1t%U9_&k@<;jC& zda~8#R6d^x?%UKSAbmxoPx5j z8Xr~os0pkqP7FDX*3cJ;IU)#Q_A zIh!(mKKe5i>Xv%^H-x&SHqbcPu% zdL3m1(O>`fdEPJY`LKWIKI`nW*Zy+WUi-fGb>EBza<;BqDuu6|8)2*8_4v|yu-yN3 zrUYRuKe8?fe`r_5e4?Mw1Z@_lJt>35O2`Dh?Z;Ftk4Oi;5Y8Y0gb9Yx+yL}4sUw3o zm1pU{J^S!M&&Uj-du!+hZ1UB<9{DeAawmY+VG_3XEt7<|Q3xupeDhJ-{RsfUm?;)^ zDsb8IcZ{?z({x;6^~N%k=+AP3p$ak5jThzItT@$M?2e>Ux-G*T%N`d6c-&qb<5mM) z`C49*$`o-5ln~R8lYg7~t?X-_qZnh_zD{4MV|>A!H0vQ@Rghpw*uv_<k7M z3FtTG7f7iKvlX@#&gS}d(ev*jJ$A92vMTRobZz9j@BhBEd@?)pXsM;$YU6Q&t{mSi z+m&5Rq=(Mf*)yK!T=&1YwnYHIHA`P(KHLXrnBuWYUvw2MZruxQlK^*)M}?3XMS|3O z7$QL`J*wEUFRwNo^y%UMGww;=c(JB=)_8G@0Jyltev48CzeUh+$$Ze{x`yzxaA|h! zJZ4sDCL4Ty;K~Pcai#9=+*_wzAGt$wv}clPDr%{$eQG_Y*uh5N4W@ga`?`;H0n3@2 z-KKFy8S8oogT?4~GVkG{hW4!kR9D66KTd{K+PJ8bD{k)R6H`+zB(;u(z~|2w3eb2i-3NmruZsmbON^OC%xUM6$w=7QZD!4;L^%U^S|2%?>IIb zSzst~XzZ=Rf+l3Wnm}O*xnXWCoC;SIGcqU|_f#^Xle7I=X4>(ISKUlRYp`a!DtM)P z+4-d9T%k%y`0Ck}a;U&iKZ5vhN7ytRV`kAc%UikF^2lX)z*0@Bb@0l4aYtFHGWBd^ zm~HuHAo;NoE-qLPz1YIPTad{0VGu#&*m!vy$`o`=H-B?~Whlp+RNbQ8;e-@ zaPj6<_)I1nTKG+-niw|}FQ=Q#3@pb_IBN=3mUGlLIUQ|m{Zi8zZCV^46^wk^(`)T_cs>Xp9boVOL-z{WP=(VSvja})3_94H1$8wYXp^zI_!=!<*tD#*z<26B!Q;ft)L{3h;M zcXmecEz#rbf+S^MipQGalCf1^OXxR=h9j-J?iB6R4=S`kpb}c%8DJxo&-WpUVIY*U z;!!GDXic47#r$?^@NegnuvuSfm+2$L1S>}DpUg6{b3%;67WIi(&!u9Pl8c`)tm+bl zJ8*_V#2b~TFO7i!XQSYE<@pQOvI&##6hbcJM}BR6T@^XOByR{aN_&asbP*6Q>TUvW z?c0cK^2Fbc;n0Y{+v?KlG8vcoq{lRuS>k3=7@#V+PU0ONRwE;)1!#OtF3tYC(=$x4 z(?FN8!!P+>}WytEHT9>13>FQ5N&+vjR6#(=XBd^W@2iL0bwGVlV{Sl1(cUP@}b zs0{ez425k{k0kHL;U?2#fEE)#_c|nF?er>E|>RS+`=$R`yc6%uyf!K^sT7ZYr#E9x0+UJCPa6>Zrhsk%LX61hUbQKBJT@`Xs?@@C|irS4j89JALE^KR&<5{~>zW4ZoF}V5r zrVUZ$)J_Dgvwgasb@=Oq9>XGDD|fbSx~{O{u54oTRklFXxNt~4U7&}Ik_N96OX^yy z$kXBhw}w^^)4cLTWmCey#ceeb7Zg=;=FJ=+^Hv8tM=8@(szK9)mq%r~Lh=hTLAn@V zJ4~=TaunTvzMF34mQ*5^)vcfMIEMUntI$#N({YB8X*7Hy_d|n;Y%G5T;^P6^!>jQ} z$>po1afat4At@sBdx3d~NM?D&g44aGIj!EhgdGwMA73XgyVPddMi#j zy$gbR1uRZx9O*a)=M4@oDW~EY=fc=fuKa}plPt||EwhoXFuvxikLCv9aR+NUKLY91 z+3p0o?9cPfJn}@=9mWI^V$s>MUv<9P2fxnj8M!E9s20>lZN{bD{B$7njge(gSc7@( zg?gIH*~3Je2$$?v)T68~W&gPmYCEyF62H%}jgOE|rhFXVN(c=d=dqmx&2oU#ml#*g zuwpUGKOQ^BPlcfW8eM?B0g}8--S1+B!a5VeaTNL#@B^db{wJ50li_y&;qB+F2D;Mv z=XW2i))NKa!34*@v~O4HiKBbl?%Iw7xo^Rchd%5cV3o&Y<;lLw*Qby>6ar9U1yjW1 zAA)}NV|9lr6(+@5ALzU*2VY4**qgaN4bcvD{;k`3hH|~clMVT-bV%C0UiySGBHzvK zvD~V4-}pkOe+M=TMwG(mpD&kV`EG?wT1Y1{z)yVj)~N0C@Q{+6qg)?4{E_Pba(Z*c zdE>M6``y8P#jj59Mq!YqPOjW%sWFoCPAPc$K07$_orf5^Jedifp@*l8kq)o+x1|)X z+roT~i=$#jgNqk0Kx!ps&;u%vn#1BJJ4WO?hv_ea>~NscU@=3GAGlvachjx~CjgHq zPl9=fp2!aNN-gXDZY0pw)CE7NKuO8+%qQ>CULJe0oOquA*f>sa@|-gujdQzYw(|V2 zN`wk1zE@CM*LX?ZG&a^$#P@g5cUvrgD+p_ni+{?&d*%@?ijn<8HEyzUV7qVT#gOi}<&AHX( z#kuBc_l%j%J5@SwTPNK>>X-Jy`z*Qm1C|}CLBrX%gJUx<2E}Kn1Zpl1y`;Ja7UU-f z((Z2AS9+{TOWQYZi~6_7aa9QWFl|P^eU4vcT(UgF_g7Rl|31a{&lr45*ORJebA8qu zn8+=_RTpRwbWVf8j5~MWNcAAR6zF6rdrym=r73lgb(?zS;K%|^Ww4zq zJ-#nUv`q+{WRHbmG+cB!B)+QaYfl^S+lhj%6KUlu{4*0o{RTRdn?>P?Q|yINJsVsa z5g^;E5av>rlvG9jc6hBA@wEp$){YzoG$>X5RckuWv|1lq{hb*u#ry3zX4uJm-`Qix zm*gPQ?d~ioKzX^8FZENK#GXG%l|>ra(6gS~+@+Q!gv$0mxF>&ZJQ2P*^Y%X6{P0Yj zJRArIWs)oJGyh|Zpl`Sj6QR``61gL5CjKS!h)0?!oOn_2d_rGCi|jDa@Rj0vzO^d% zs+6n`m5vFSC3~)JN;cmQ6Z+IUD<@>1zokAoap()^8#!2ss1B=k7hBn3KZ%SJ@6T=@ z^%?w8-*mOK*!jMkW?}UH2VPrA&!`#gbak)UHdmBtV1AzU8XMt#cFxuCVBJ(8I>&M9 z#LzF-%ZGy92Xy<{O~o4^I>p4_7!fJx3a)(cg+ev1wzU3GftnQ#gnc}_<2yL_(~FAaAh{=?yL<}_C*jSd^RRW3ZT#CRZ>F%EkZPf z04`NnsQTsG7D4Do&I?7>zt_p5LRDzk(Ruv2POd7nC3@~XOGpE&!insuCr6Mc@2Ll6 zkcZr9C2jL$WQ)tIA>Xg_LBlQ=#9YQLaMdGx`5lDOM|9b1K>SNNiLYs01@Zh}qjc2H z;2*J>pU|1%>6sCJnXqeX3WygEaM{48r+b)Va{6Dz~ctv z_&XU5lQy>nQ?se~@loo3@sj@h2yYo5BdGKH#xjq}!x#Q~n29-|7NAQ@#%?f8e_EmJ zd79P4YGvI4#y2vxvmPRB6r%s&=#J`8@5<}v9d_z6 z-67@9L&&2;KdseutYTem3)16uOLXK`i0UDJ7P~agcqE{@u|a{qyC5sTVcq)H5}olh zHU{C(g}CHEZA2Jp(?mAMs7LI3x=X>6Z25z%#ZII)zh$c2v!hBvP0W>iIb8ARF1l5d zMeZ=ZHFGvL!g**qZzv!zC^nFl(q>T9HS?2Kc>)@k)Px4kIS=%?1W&ax9V&9(F?)@9 zZ3-5raH0$*i`eC-JZeRb&$}7;4I4k4IFxHlp5(O%k==b#aP__Ux3J(%^j10t)b-O6AC5;Mxm)> zr%w(h?YSCP_g|Hkx)>6q0O_24VDrMFq9jDu$nfFwa;Drc=PcW@hYe-yg2$e)ut{-&NaHVil?9&M_g2Y43UUwf(~1+mAUK zcPXh4?P2T-M~vT<)O7lhl9Z4)O_lJ+1zs8MT1;@lBn1DHdvk00yPPYnnUgdK=H!yJ z3iq&QIy4J?3^K`VYRO#jQ?Fm@d6hb; zwgd!xNeohcQxL)wgcx^E1G^_`SdbHq&)QDifnDTcIx#+^AuSCJPv6&ccCc4xYp46Q z=dTp@*_vV(l~)>nb}a-QfPF|6YNA9XnkTY_5>F}PHY?EjN!xhu2tPFn*QrMPXkSBA zSHSZG+6t;K#eZIMIZsxln+8si1_@#=145lrw2QIijiof(#q8_97Y%Kf!pMD;Wamn% zLv3ZT-#13mN^fB_(-g{^*PnpHMWN+_&5kL=+%$4>gnYEtUn}-b>@4Mh@h&%r9*3U{ z-E$>jEq=x>PUWG^hCFMNz<3oY;G9j-{9hLv4NY#>G`r#NP3Frb`bFB#LUf#rYw>@6#mVatYW2HAX_*$FF3wxe;pip!b>%d%tq*2<*e z)n)Lr`Qv^bLOQW8yrtb9tAAawlmy{$uj;@f_-Oev33}c2t0;5otj&hjkhK6Ow*=`k-P^1e*X?r%`Wh{p|*76Ctkdi5?nH-eoQi ziWAYn)Vv-g+$Og!-L7Fh@Wc_6d=3hI71#Qcq5mq`l9mYlQ?|kaPqkbsTOor#7Fm!t zjXAJm7_2#A@-&Tz?RBY-YzhbTm=%bJW0&ZNlET(C&!0jV)rto?NUW zR?C6*?L^jAJrd#vtDP8TW$HLGQgrmSaYBuQv4i-Yp6fYKFD@=FZL-70F<)XelL7Ul zYo7t0*W#p2YfWuJf0~AcNMWjOv}=?zWLCb(nCN<8&y4$*D?477z{MmMe*`AoLvcrO z@PuZT%d2H%wr8@|O~}&HyHc~Oc}J3V$)PS&%4~*Fz}IZnSipOFMsjD~ch{?R7P1x! zn{L0*sY^XGcVjx1Eqt`$Cl_FSpe44@gQK&PtL|zZ-SLr7B{*r_l$B+uhz>~0A+P-5 zp8~Etf4l5o*6=4t|K9_7!DlGnA>TMV>htlywu#1wQVyp6hr~g?u+>skFGaUxkk!1; zvho>Dq;Br7;rDi7?p9KT3va&lj3K4L)UPIrd`lftB+WLqd_Wmt*})!9M+d{?UF4uF zNAM@Lk;V6>cE#;sW^ms%*bYhh$DVs}%iviDT94aMRSyYEZ|kQ5G*shr{J}lC; zosca&#B3f@5??;a^O64_kpqMW-VNsWfO+Dg(rf+Q3@$7Iq)U@m*@K}u z%^Sm&qjf2VzMh6~85PX<6G^;c63Q&8nnhF-7_$>vKfn=L7o8e$30s!-wilCMYb#aF zpzJ~ylSCE;5I*K;Th)d0 z0hbYrvUMWJNYuo7o2<|L6Q4QF^~RX>dc$GJx5BZ(*BJvUu$=fEVAvoq64`i% z!$Heb&)b(yu{6c{9{YMn#hGj9sl9&-u ziz?)Wzi=w3O0z7Q7@9Gmjfvo3sVG6F z8&oNq$(&|W5++in={-wBnW2UFS2Tgy^h^2AilZ?v*?3*%rv=-oVyzdC=c)Zg2lCiH z6WA!gE<6vu@<5rU%0*q)z#;98$3G^zVd%)oD3?R^X5ny--JKg;i-e{5Sr02E-xK*$ z7u_KA`x)fX3_n9d4L4r7f8si2k2i3x%B7p;!L9C5IY})Kux@`kI-r15 zT<<}SK;8;$7x(W@_RdcflKq~)Q%^@!->8|Mw?f>8V77aT%bMfsPl8l%UoXUem{mo} z&8fcVh3Kj-@uH_=2D8BEsvnAraTRs+3-kHE+;@TqBlX_kSmfJjt`b`-i*Qp82me<+ zI7<;h%J9hU4;-Hkf=q1|vcbZ?(D2s6ktwxoYXfIAAw;8-bID!&Uj{JGDYiArMNJHK zoLxQ2W{nh@s$VJK&ZF6I{Is5v9qX-LdI6CUJX7DjT@NfdLq9NfIxKBMzR?N=X3^p?i94>17|NdtagfmG>EhBmPdKb+0t^2spU(PG z%Zd4u!dexRx?G_;p%k?u>q@VPFSJMA*MQ$#ORoo3tx=8$#BDcaA3KV|jPLc!-U0#6*y; zDVR{?^878n%>9=GS-MzoflW<4oBft(0NT(7K`=D3cX=L%Ha{+d97Z+5bB+wqr>~m{ zRT)1Nj@0m+!2;9$Wj~LqpVl^4e1eFS(_M$-*CF~k^gfybOno9-LEF4)K)g$;VxSa5 zlUqa}-sss0(vMH|k@9xrwEEb8cxaaS_2CQwV8Z{TI*sC~tNjNQ;!P4dhcJq+F`w~6 z1Mq`>p3^vCO%B%&J2>^N0ZJ1r4N@30+QRfY0ulYrp**ac+*A&XkX8maR!+6CUfFhp z(2Xr<1^)VM(MM)(-lCH*Df+P6$o~2_NF<1>M+v(@uqwIzcIG~xVZjP&?&9c()JCh_ zFc3h^d`pO_3$I9ZHs^MXx6wxHHi}ZZz8~S(^VOUWj%-2y@sML@s0769c0= z&VPV#R2L$iDSQ<9^o{R>6a${zT1H_X@H^T#g}C`EOKOPHV@g>To2tya$4}vGJ7O|F zx{J~cM}$-Jq(7MR=M}pK>icJ)n)$xrT2dOzm*4k&iX!t%J^vJc>w=F^9Esm1mCMD+ zvMMJ6+59KpTb6hWMvRoN7q$vi?xY*ipn_IgtRD5}dUx~sPah-MwUerihHSCC5A;-z zclTVmy6Xw}()sirQqbtCYLP3WO5du|=P6g%=K*gG+|2EvRmmcVv2vG##3NT@<=+kx zKM`DIlG8l)HLM1b<^N&y8V(9=zp%$<&sy90R{ZOWkpk2)!8|);|)tkabGK1UAn_}^Q03YDfz&*P)bP5E_7Vj8n;^RJiIm9qd zH+_h^25$QrEsQw!h`7V{|M2DTC*!ovi$?yG9jz1a53XY52p_&vI=+(6ICjQej>I?1 zx0E0V-U6t}>FbEfcyyh8*_U&xc_-Gj8@Z3^`Im!A4zpSE>66Zp)R9|4IkIcBs*iPz zpghM})N`&Im`ztq{XVzbcp{rNz1rC4krz%cwAr*%)m{yOnWV~O3W1}g>5^r9an1sT zz>d;%vH!ije#$wuYY=LUYJ8Ip)DdOVov!i7sHF>jJ;ku{y5Gs{0RJRA{-bCE+gd}j zn@GJx1Ao7@J^HD`948#@?$qJ;OnWM!SaiDTg@asrSEsp*uj6PvK{JcWZyhzOv4p1i zj#XInDxc8?X)M{ z(61lqY(kem>OE9{!2gu%!<~+WC2o&@J@++|BWy}CEyc?-Yb^N&6UDN{aX$8lY8>eB zTf+ony1m#W5mua5Qwv<3*=*#Zc659a%QcBy3z=UF$vxX@%u}!9<#xYGlng57azSy9 z9Xb_l$h^VUetD!2psm>MU=s!UC6*I~^LjwOBH6gCy*+uBgw*ayvD7bZ=ox+ZY&bCB z%|Wky&m>G#w?DblGnc*nW`vG<)$OWi_HmYTPPH<(*G+Ef8pj=#m0xv~!6SE3Tl&aa za(l14@tf+oeuc)d`$ZPNY=SGhPu!VWbGVgYTC-sf%s<(M3XV|6jX|Rse>%x=jyn|f z$!v>f_a4r)zU;OwdmqOsRD|Gp>%i&Q~)O{ZkSL9GVns9EZb-Ne+qFpT+q5_Lb z17CU%y=w2#LlVpmWR15RH3|k0tgx`vucJ1VTS*V+ZDY>|rG-{=rSu;|c~va^##Vvm zx0Gx{^jdyV%f$bf(}gbGC%W0xict5zcLEn8D9vYfZ|z#dc{Tiy|Jg>o-)``*M`o!Y zkonW2P$-QdNZ7`@;hl2ur;+8wP$^L1P&(x*52G-Rs1@>JM4n2O_M+T21o+=eKj19c zt>}3@$$7}t!jv;AO)~3>XY<#ht>h(_nSz=2y>3Rp!PyYo*=XVuD>jcjDIOu$c)Lp4IfDc2wE z5yvrJ3DIYUceRcVMiN(LlSmm(8TB;a*%txXmULL&l zrVX%?wH3p6<80!6bKDzTV#v(WSN1NRh7U%d)`$?a;TUsX6l&$J#VDs;&=9wNf-NRN zO$dT}v)$eWUGjYp+;Q)1e;zo=44eX3p5CUdn+o2Zc0$SwOR-8b7NT3hdVWXgbSO8FR#3M0MSo#2fil6djbQ^+^37BQpLs z1T6>Xly>!4Vq}VtCwJDPXU--?LT^t;H@~MT2!9gGEl4*hv%^WRrvAv7MTIw+@Rz;> z+qo@XGuz|^<34b&LI)^DIumchqJ&`*DoNgb50~zm%#&1ATIH3+{I(qO^z@ORCp4t5 zuS#oJX#0q|^9gr<)H0#>b%PVIW-Hq*>)Y@@ko=<#WghPAMHTWqL)ilyb;Tq{g)V`3Zg5dvSE*#{U5^vI?32 literal 0 HcmV?d00001 diff --git a/pkg/ui/web/public/fonts/monument-bold-italic.woff b/pkg/ui/web/public/fonts/monument-bold-italic.woff new file mode 100644 index 0000000000000000000000000000000000000000..b7ab6626d833a7bc7b49d609cc99cfd57fb906a4 GIT binary patch literal 68804 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≧~)xBd^o{6ehq+)V=j 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 C$k#Oh literal 0 HcmV?d00001 diff --git a/pkg/ui/web/public/fonts/monument-bold.woff b/pkg/ui/web/public/fonts/monument-bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..d80582c8facffa4d1e4441c68e3d3a0ae9e8224a GIT binary patch literal 66320 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 S0VRl?Z_u}JXcaW*=l=pNHFpI7 literal 0 HcmV?d00001 diff --git a/pkg/ui/web/public/fonts/monument-bold.woff2 b/pkg/ui/web/public/fonts/monument-bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..19f2cd5195b22b46d68a932f066b3a9574a61b50 GIT binary patch literal 50112 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%0A8Af_|RA2-Wi&hpP}8J{=1YMGdC;l}Rofm?gL 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
    rs7{dVD^KuVQlBrZReFEvwj&pg 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 Ji+;lTtrk102pTZ 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 z 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 literal 0 HcmV?d00001 diff --git a/pkg/ui/web/public/fonts/monument-medium.woff b/pkg/ui/web/public/fonts/monument-medium.woff new file mode 100644 index 0000000000000000000000000000000000000000..2eb30c9e5340ef13108a97f062ac929310c99caa GIT binary patch literal 69176 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