diff --git a/.editorconfig b/.editorconfig index ad02b44ed..b011d080b 100644 --- a/.editorconfig +++ b/.editorconfig @@ -12,3 +12,12 @@ indent_size = 2 [{Makefile,**.mk}] indent_style = tab + +[*.py] +indent_size = 4 + +[*.rs] +indent_size = 4 + +[*.vala] +indent_size = 4 diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 000000000..af3bfa9f5 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,3 @@ +src/lib +troll +demos diff --git a/.eslintrc.yaml b/.eslintrc.yaml new file mode 100644 index 000000000..0e85dbbe1 --- /dev/null +++ b/.eslintrc.yaml @@ -0,0 +1,73 @@ +root: true +env: + es2023: true +parser: "@babel/eslint-parser" +parserOptions: + sourceType: module + requireConfigFile: false + babelOptions: + plugins: + - "@babel/plugin-syntax-import-attributes" +extends: + - eslint:recommended + - plugin:import/errors + - plugin:import/warnings + - plugin:prettier/recommended +globals: + __DEV__: readonly + pkg: readonly + # gjs + ARGV: readonly + Debugger: readonly + GIRepositoryGType: readonly + globalThis: readonly + imports: readonly + Intl: readonly + log: readonly + logError: readonly + print: readonly + printerr: readonly + window: readonly + TextEncoder: readonly + TextDecoder: readonly + console: readonly + setTimeout: readonly + setInterval: readonly + clearTimeout: readonly + clearInterval: readonly +rules: + # Possible Problems + # https://eslint.org/docs/latest/rules/#possible-problems + array-callback-return: [error] # https://eslint.org/docs/latest/rules/array-callback-return + no-duplicate-imports: [error] # https://eslint.org/docs/latest/rules/no-duplicate-imports + no-new-native-nonconstructor: [error] # https://eslint.org/docs/latest/rules/no-new-native-nonconstructor + no-restricted-globals: # https://eslint.org/docs/rules/no-restricted-globals + - error + - window + - printerr + - print + - imports + - logError + - log + no-unused-vars: # https://eslint.org/docs/latest/rules/no-unused-vars + - error + - vars: all + args: all + argsIgnorePattern: "^_" + + # Suggestions + # https://eslint.org/docs/latest/rules/#suggestions + eqeqeq: [error, always] # https://eslint.org/docs/rules/eqeqeq + no-implicit-globals: [error] # https://eslint.org/docs/latest/rules/no-implicit-globals + no-var: [error] # https://eslint.org/docs/rules/no-var + prefer-arrow-callback: [ + error, + { allowNamedFunctions: true, allowUnboundThis: true }, + ] # https://eslint.org/docs/rules/prefer-arrow-callback + prefer-const: [error] # https://eslint.org/docs/rules/prefer-const + + # eslint-plugin-import + # https://github.com/benmosher/eslint-plugin-import/ + import/extensions: ["error", "ignorePackages"] + import/no-unresolved: + [2, { ignore: ["gi://*", "resource://*", "cairo", "gettext", "system"] }] diff --git a/.foundry/.gitignore b/.foundry/.gitignore new file mode 100644 index 000000000..a30dfbfa8 --- /dev/null +++ b/.foundry/.gitignore @@ -0,0 +1,3 @@ +tmp/ +user/ +cache/ diff --git a/.gitconfig b/.gitconfig new file mode 100644 index 000000000..8d7e2b9c7 --- /dev/null +++ b/.gitconfig @@ -0,0 +1,4 @@ +[re.sonny.Commit] +title-length-hint=72 +body-length-wrap=50 +auto-capitalize-title=true diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 000000000..c97cf781a --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,16 @@ +/src/langs/javascript/ @sonnyp +*.js @sonnyp + +/src/langs/vala/ @lw64 +*.vala @lw64 + +/src/langs/rust/ @Hofer-Julian +*.rs @Hofer-Julian +Cargo.toml @Hofer-Julian +Cargo.lock @Hofer-Julian + +/src/langs/python/ @theCapypara +*.py @theCapypara + +*.c @andyholmes +*.h @andyholmes diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml new file mode 100644 index 000000000..a392c6f15 --- /dev/null +++ b/.github/workflows/CI.yaml @@ -0,0 +1,60 @@ +name: CI + +# See also https://github.com/flatpak/flatpak-github-actions + +on: + pull_request: + branches: [main] + workflow_dispatch: + +jobs: + CI: + # https://github.com/actions/runner-images/issues/13964 + runs-on: ubuntu-26.04 + + steps: + # Cache apt + - name: Cache apt + uses: actions/cache@v4 + with: + path: /var/cache/apt/archives + key: apt-cache-${{ runner.arch }} + + # Cache Flatpak + - name: Cache Flatpak dependencies + uses: actions/cache@v4 + with: + path: ~/.local/share/flatpak + key: flatpak-deps-${{ runner.arch }} + + # Cache flatpak-builder state + - name: Cache .flatpak-builder + uses: actions/cache@v4 + with: + path: .flatpak-builder + key: flatpak-builder-${{ runner.arch }} + + # Cache Foundry + - name: Cache .foundry + uses: actions/cache@v4 + with: + path: .foundry + key: foundry-${{ runner.arch }} + + - name: Install host dependencies + run: | + sudo apt-get -y update + sudo apt-get -y install flatpak mutter flatpak-builder foundry + + - uses: actions/checkout@v4 + with: + submodules: recursive + + - uses: actions/setup-node@v4 + with: + node-version: 24 + cache: "npm" + + - run: mutter --wayland --no-x11 --headless --wayland-display=wayland-0 --virtual-monitor 1280x720 > /tmp/mutter.log 2>&1 & + - run: make ci + - run: cat /tmp/mutter.log diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml new file mode 100644 index 000000000..6f399cbd9 --- /dev/null +++ b/.github/workflows/deploy.yaml @@ -0,0 +1,32 @@ +name: Deploy + +on: + push: + branches: [main] + workflow_dispatch: + +jobs: + flatpak: + name: "Flatpak" + runs-on: ubuntu-latest + container: + image: bilelmoussaoui/flatpak-github-actions:gnome-nightly + options: --privileged + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 + name: "Build" + with: + bundle: re.sonny.Workbench.Devel.flatpak + manifest-path: build-aux/re.sonny.Workbench.Devel.json + cache-key: flatpak-builder-${{ github.sha }} + + - uses: flatpak/flatpak-github-actions/flat-manager@v6 + name: "Deploy" + with: + repository: nightly + flat-manager-url: https://flat-manager.gnome.org/ + token: ${{ secrets.GNOME_NIGHTLY_TOKEN }} diff --git a/.gitignore b/.gitignore index c31fc6c12..3c3629e64 100644 --- a/.gitignore +++ b/.gitignore @@ -1,18 +1 @@ -.flatpak -.flatpak-builder -build -builddir -/flatpak node_modules -repo -install -.eslintcache -*~ -*.compiled -*.flatpak -.fenv - -# Project files -src/Library/**/settings -src/Library/**/workbench.vala -src/Library/**/main.ui diff --git a/.gitmodules b/.gitmodules index ce0f66806..0e93612bd 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,10 @@ [submodule "troll"] path = troll url = https://github.com/sonnyp/troll.git +[submodule "demos"] + path = demos + url = https://github.com/workbenchdev/demos.git +[submodule "src/langs/typescript/template/gi-types"] + path = gi-types + url = https://gitlab.gnome.org/BrainBlasted/gi-typescript-definitions.git + branch = nightly diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 000000000..d24fdfc60 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +npx lint-staged diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000..be2f7ed5d --- /dev/null +++ b/.prettierignore @@ -0,0 +1,2 @@ +src/lib +troll diff --git a/.vscode/extensions.json b/.vscode/extensions.json index abe2f53ea..b58a2b074 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -8,6 +8,7 @@ "mesonbuild.mesonbuild", "prince781.vala", "bodil.blueprint-gtk", - "rome.rome" + "dbaeumer.vscode-eslint", + "charliermarsh.ruff" ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index 4e7f58a5f..3374992bd 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,22 +5,34 @@ "files.watcherExclude": { "**/.git/objects/**": true, "**/.git/subtree-cache/**": true, - "**/node_modules/*/**": true, "**/.hg/store/**": true, + "**/node_modules/*/**": true, "**/.flatpak": true, "**/src/lib": true, ".flatpak": true, ".flatpak/**": true, "_build/**": true }, - "editor.defaultFormatter": "rome.rome", - "[javascript]": { - "editor.defaultFormatter": "rome.rome" + "editor.defaultFormatter": "esbenp.prettier-vscode", + "[yaml]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" }, "[json]": { - "editor.defaultFormatter": "rome.rome" + "editor.defaultFormatter": "esbenp.prettier-vscode" }, + "rust-analyzer.server.path": "${workspaceFolder}/.flatpak/rust-analyzer.sh", + "rust-analyzer.runnables.command": "${workspaceFolder}/.flatpak/cargo.sh", + "rust-analyzer.files.excludeDirs": [ + ".flatpak", + ".flatpak-builder", + "_build", + "build", + "builddir" + ], "vala.languageServerPath": "${workspaceFolder}/.flatpak/vala-language-server.sh", + "[meson]": { + "editor.defaultFormatter": "mesonbuild.mesonbuild" + }, "mesonbuild.configureOnOpen": false, "mesonbuild.buildFolder": "_build", "mesonbuild.mesonPath": "${workspaceFolder}/.flatpak/meson.sh" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 23187aff1..bc2188677 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,112 +1,52 @@ # Contributing -Thank you for considering contributing to Workbench. Feel free to [get in touch](https://matrix.to/#/%23workbench:gnome.org). +If you are interested in contributing to the Library/demos, please head over to https://github.com/workbenchdev/demos instead. -## Setup +Either way, don't hesitate to [get in touch](https://matrix.to/#/%23workbench:gnome.org). + +## Getting started The following is the recommended setup: 1. Install [GNOME Builder from Flathub](https://flathub.org/apps/details/org.gnome.Builder) 2. Open Builder and select "Clone Repository..." -3. Clone `https://github.com/sonnyp/Workbench.git` (or your fork) +3. Clone `https://github.com/workbenchdev/Workbench.git` (or your fork) 4. Press the Run ▶ button Make sure that you're building the development target `re.sonny.Workbench.Devel`. -ℹ️ Select "Blueprint" instead of "XML" in Workbench UI panel. Blueprint is experimental but that's what we use for making Workbench. - If you know what you are doing you can also use VSCode with the extensions recommended in this workspace or anything else you are comfortable with. Don't forget to fetch the submodules. -## Getting started - -If you're completely new to GNOME development this is for you. - -Open the "Welcome" example from Workbench Library. - -Important fundamentals are - * objects - * properties - * signals - -Every widget in GTK is an object. For example, `Gtk.Box`, `Gtk.Button`, ... - -Properties affect an object to change its appearance or behavior. - -Signals are events that can be listened to. Like `clicked` on `Gtk.Button`. - -The Welcome example in the Library has all 3. Play with it, try to understand and make changes. If you break things you can always go back by select "Welcome" example from the Workbench Library again. - -Once you understand these 3 things, try creating something new. There are plenty of widgets and patterns to explore. - -## Your first contribution - -Your first contribution should be a new example or demo for the Workbench library. - -Library examples and demos have 3 functions - -1. Showcase the capabilities of the platform -2. Teach how to use the APIs, patterns and widgets -3. Provide functional snippets ready to use - -Pick a widget and make a Library demo for it within Workbench directly. - -Check [here for ideas](https://github.com/sonnyp/Workbench/issues/69) and [here for examples](https://github.com/sonnyp/Workbench/issues?q=label%3A%22Library+%F0%9F%93%9A%EF%B8%8F%22). +## Setup -Feel free to reach out and ask for a topic or feedback. +We provide a couple of tools to make the development process pleasant. -Some guidelines +- Code formatter that runs automatically on git commit +- Single command to run all the tests locally -* Start with something small and accessible -* Focus on quality over quantity -* Make sure you don't pick something deprecated [or soon to be](https://docs.gtk.org/gtk4/#classes) -* Select "Blueprint" instead of "XML" in the UI panel -* Keep it concise and interactive -* Add links to follow up on the topic covered -* Follow the patterns of existing entries -* Follow [the Style Guide](https://github.com/sonnyp/Workbench/wiki/Style-Guide) +```sh +# Ubuntu requirements +# sudo apt install flatpak flatpak-builder nodejs make gcc g++ -## Create Library entry +# Fedora requirements +# sudo dnf install flatpak flatpak-builder nodejs make gcc gcc-c++ -To create a new Library entry, duplicate an existing one and proceed to the next section. +cd Workbench +make +``` +Before submitting a PR, we recommend running tests locally with ```sh -cp -r src/Library/demos/Button src/Library/demos/Something +make test ``` -### Update Library entry - -To update or port an existing Library entry - -1. Open Workbench -2. Select "Open Project…" in the menu -3. Select the corresponding Library folder, for example `Workbench/src/Library/demos/Something` -4. Make the changes - ## Submitting a contribution -Once you're satisfied with the result - you can send a pull request to include it in Workbench. - -Some guidelines: - -* Unless you don't want too - add your name to [the list of contributors](./src/about.js) -* Use a short PR title - eg. "library: Add Video entry" - it will be used as commit message -* If relevant, mention the related issue in the PR description -* Test your code before asking for review, for example by starting Workbench and opening the Libary entry -* Always review your own work before asking someone else - -## Learn - -Here is a compilation of resources to learn more about the GNOME platform. - -* [Workbench](https://github.com/sonnyp/Workbench) 😉 -* [GObject](https://gjs.guide/guides/gobject/basics.html#gobject-construction) -* [GTK4 + GJS Book](https://rmnvgr.gitlab.io/gtk4-gjs-book/) -* [Asynchronous programming](https://gjs.guide/guides/gjs/asynchronous-programming.html) -* [API references](https://gjs-docs.gnome.org/) make sure to enable at least GTK, GJS, GLib, Gio -* [GJS docs](https://gitlab.gnome.org/GNOME/gjs/-/tree/master/doc) -* [GJS examples](https://gitlab.gnome.org/GNOME/gjs/-/tree/master/examples) -* [Human Interface Guidelines](https://developer.gnome.org/hig/) +- Unless you don't want too - add your name to [the list of contributors](./src/about.js) +- Open a pull request +- Make sure to review your own changes +- Commits are squashed into a single commit on merge ## Debugging @@ -118,20 +58,12 @@ To view debug logs, use the following command in [`src/workbench`](../src/workbe See also -* [GJS Logging](https://gitlab.gnome.org/GNOME/gjs/-/blob/master/doc/Logging.md) -* [Flatpak Debugging](https://docs.flatpak.org/en/latest/debugging.html) +- [GJS Logging](https://gitlab.gnome.org/GNOME/gjs/-/blob/master/doc/Logging.md) +- [Flatpak Debugging](https://docs.flatpak.org/en/latest/debugging.html) - +Workbench doesn't currently support translations for its user interface. GNOME documentation is only available in English and we do not want to mislead non-English speakers. ## Troubleshooting @@ -144,16 +76,3 @@ If that doesn't solve it - remove the GNOME Builder cache directory ```sh rm -r ~/.var/app/org.gnome.Builder/cache/ ``` - -### git says `blueprint-compiler` is modified - -Update submodules. - -On GNOME Builder, open search palette with `Ctrl+Enter` and search/select `Update Dependencies...` - -or - -```sh -cd workbench -git submodule update -``` diff --git a/Makefile b/Makefile index fa2c690bd..62e66a1d3 100644 --- a/Makefile +++ b/Makefile @@ -1,20 +1,83 @@ +SHELL:=/bin/bash -O globstar +ROOT := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))) +.PHONY: setup build lint unit test ci sandbox flatpak +.DEFAULT_GOAL := setup -.PHONY: lint test +setup: + flatpak remote-add --user --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo + flatpak install --or-update --user --noninteractive flathub org.gnome.Sdk//50 org.flatpak.Builder org.freedesktop.Sdk.Extension.rust-stable//25.08 org.freedesktop.Sdk.Extension.vala//25.08 org.freedesktop.Sdk.Extension.llvm21//25.08 org.freedesktop.Sdk.Extension.node24//25.08 org.freedesktop.Sdk.Extension.typescript//25.08 +# flatpak remote-add --user --if-not-exists flathub-beta https://flathub.org/beta-repo/flathub-beta.flatpakrepo +# flatpak remote-add --user --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo +# flatpak install --or-update --user --noninteractive gnome-nightly org.gnome.Sdk//master + git submodule update --init + npm install --no-fund + @echo "✅ You can use "make build" to build Workbench" + +stable: + foundry build build-aux/re.sonny.Workbench.json + +devel: + foundry build build-aux/re.sonny.Workbench.Devel.json + +build: devel + +cli: + ./troll/gjspack/bin/gjspack src/cli/main.js --appid=re.sonny.Workbench.cli --prefix=/re/sonny/Workbench --resource-root=src/ --no-executable flatpak/files/share/re.sonny.Workbench.cli/ + cp src/cli/bin.js flatpak/files/bin/workbench-cli # FIXME lint: - ./node_modules/.bin/rome ci . +# JavaScript + ./node_modules/.bin/eslint --max-warnings=0 src +# Rust + foundry devenv -- rustfmt --check --edition 2021 $(ROOT)/src/**/*.rs +# Python + foundry devenv -- ruff check --config=$(ROOT)/src/langs/python/ruff.toml $(ROOT)/src/**/*.py + foundry devenv -- ruff format --config=$(ROOT)/src/langs/python/ruff.toml --check $(ROOT)/src/**/*.py +# Blueprint + foundry devenv -- blueprint-compiler format $(ROOT)/src/**/*.blp + foundry run -- workbench-cli check blueprint $(ROOT)/src/**/*.blp +# Vala + # foundry run -- workbench-cli check vala $(ROOT)/src/**/*.vala +# CSS + foundry run -- workbench-cli check css $(ROOT)/src/**/*.css +# Flatpak manifests + flatpak run --user --command=flatpak-builder-lint org.flatpak.Builder manifest --exceptions --user-exceptions ./build-aux/exceptions.json build-aux/re.sonny.Workbench.json + flatpak run --user --command=flatpak-builder-lint org.flatpak.Builder manifest --exceptions --user-exceptions ./build-aux/exceptions.json build-aux/re.sonny.Workbench.Devel.json + +unit: + foundry run -- gjs -m $(ROOT)/troll/tst/bin.js $(ROOT)/test/*.test.js -test: lint - ./troll/tst/bin.js test/*.test.js # https://github.com/ximion/appstream/issues/398#issuecomment-1129454985 # flatpak run org.freedesktop.appstream.cli validate --override=release-time-missing=info --no-net data/app.metainfo.xml # desktop-file-validate --no-hints data/app.desktop # https://discourse.gnome.org/t/gtk-builder-tool-requires-and-libraries/9222 # gtk-builder-tool validate src/*.ui - flatpak-builder --show-manifest re.sonny.Workbench.json > /dev/null - flatpak-builder --show-manifest re.sonny.Workbench.Devel.json > /dev/null - find po/ -type f -name "*po" -print0 | xargs -0 -n1 msgfmt -o /dev/null --check - flatpak run --command=flatpak-builder-lint org.flatpak.Builder --exceptions re.sonny.Workbench.json - flatpak run org.flathub.flatpak-external-data-checker re.sonny.Workbench.json +# flatpak run org.flathub.flatpak-external-data-checker re.sonny.Workbench.json +# flatpak run org.flathub.flatpak-external-data-checker re.sonny.Workbench.Devel.json # as used by Flathub # flatpak run --env=G_DEBUG=fatal-criticals --command=appstream-util org.flatpak.Builder validate data/app.metainfo.xml + +test: unit lint + foundry run -- workbench-cli ci $(ROOT)/demos/src/Welcome + +install: + artifact=$$(foundry export \ + | grep -oE 'file://[^[:space:]]+' \ + | tail -n1 \ + | sed 's|^file://||'); \ + test -n "$$artifact" || { echo "No artifact found"; exit 1; }; \ + flatpak install --user --assumeyes "$$artifact" + +ci: setup build test install +# We install because foundry has no flag to override permissions +# see Permissions.js for why we need them + flatpak run --command="workbench-cli" --share=network --socket=pulseaudio --device=input --filesystem=$(ROOT) re.sonny.Workbench.Devel ci $(ROOT)/demos/src/* + + +flatpak: + flatpak run org.flatpak.Builder --ccache --force-clean flatpak build-aux/re.sonny.Workbench.Devel.json +# This is what Flathub does - consider moving to lint + flatpak run --env=G_DEBUG=fatal-criticals --command=appstream-util org.flatpak.Builder validate flatpak/files/share/appdata/re.sonny.Workbench.Devel.appdata.xml + flatpak run --command="desktop-file-validate" --filesystem=host:ro org.freedesktop.Sdk//25.08 flatpak/files/share/applications/re.sonny.Workbench.Devel.desktop +# appstreamcli validate --override=release-time-missing=info /path/to/your/app.metainfo.xml + flatpak run org.flatpak.Builder --run flatpak build-aux/re.sonny.Workbench.Devel.json bash diff --git a/README.md b/README.md index e5e89e864..86042dd9e 100644 --- a/README.md +++ b/README.md @@ -6,20 +6,20 @@ Learn and prototype with GNOME technologies ![](data/workbench.gif) -Download on Flathub +Download on Flathub -Workbench goal is to let you experiment with GNOME technologies, no matter if tinkering for the first time or building and testing a GTK user interface. +Workbench lets you experiment with GNOME technologies, no matter if tinkering for the first time or building and testing a GTK user interface. Among other things, Workbench comes with -- realtime GTK/CSS preview -- library of examples and demos -- JavaScript and Vala support -- XML and Blueprint for describing user interface -- syntax highlighting, undo/redo, autosave, session restore -- code linter and formatter -- terminal output -- 1000+ icons +- Live GTK/CSS preview +- Library of 100+ examples + +- JavaScript, Rust, Python and Vala support +- Declarative user interface syntax +- Autosave, sessions and projects +- Code diagnostics, completion and formatter +- Terminal output ℹ️ Workbench is made possible by Flatpak. Only Flathub Workbench is supported. @@ -27,34 +27,28 @@ Among other things, Workbench comes with > **“** It is an essential tool for those who develop applications with GTK **”** • **“** as someone who is learning GTK, Workbench is definitely a must have! **”** • **“** created a simple mockup using the amazing Workbench app **”** • **“** It used to be hard but Workbench helps me learn GTK. **”** • **“** I recommend it even to those who are new to GTK **”** • **“** This tool has simplified my life by saving my time drastically. **”** • **“** Gone too wild playing with Workbench **”** +## Language support + +| | Formatter | Linter | Library demos[1] | +| ---------- | --------- | ------ | ---------------- | +| JavaScript | ✅ | ✅ | 103 | +| Python | ✅ | ✅ | 98 | +| Vala | ✅ | ✅ | 92 | +| Rust | ✅ | ✅ | 52 | +| Blueprint | ✅ | ✅ | | +| CSS | ✅ | ✅ | | + +[1] As of 2024-06-16 + ## Tips and tricks
Disable code formatting -Workbench uses [Rome](https://rome.tools/) and [Prettier](https://prettier.io/) code formatters. If you need to exclude some code you can use special comments. - -[JavaScript](https://prettier.io/docs/en/ignore.html#javascript) - -```js -// rome-ignore format -matrix( - 1, 0, 0, - 0, 1, 0, - 0, 0, 1 -); -``` +[JavaScript](https://biomejs.dev/formatter/#ignore-code) [CSS](https://prettier.io/docs/en/ignore.html#css) -```css -/* prettier-ignore */ -.my ugly rule -{ - -} -``` -
@@ -64,11 +58,22 @@ Use GNOME Builder to start a new project using the appropriate GNOME Application
+## Code of conduct + +Workbench follows the [GNOME Code of Conduct](https://conduct.gnome.org/). + +- **Be friendly.** Use welcoming and inclusive language. +- **Be empathetic.** Be respectful of differing viewpoints and experiences. +- **Be respectful.** When we disagree, we do so in a polite and constructive manner. +- **Be considerate.** Remember that decisions are often a difficult choice between competing priorities. +- **Be patient and generous.** If someone asks for help it is because they need it. +- **Try to be concise.** Read the discussion before commenting. + ## Credits -Workbench would not be possible without +Workbench is made of many components. -Flatpak, GTK, GLib, GtkSourceView, libadwaita, VTE, GJS, Blueprint, icon-development-kit, Vala +Thank you Flatpak, GTK, GLib, GtkSourceView, libadwaita, VTE, GJS, Blueprint, icon-development-kit, Vala, GTKCssLanguageServer, gtk-rs, PyGObject and the GNOME community 🖤 diff --git a/Workbench.doap b/Workbench.doap index 949542d8c..adbfe0aed 100644 --- a/Workbench.doap +++ b/Workbench.doap @@ -13,6 +13,9 @@ JavaScript Vala + C + Rust + Python GTK 4 Libadwaita @@ -20,7 +23,7 @@ Sonny Piers - + sonnyp @@ -36,4 +39,23 @@ + + + Julian Hofer + + julianhofer + + + + Hofer-Julian + + + + + + Hofer-Julian + + + + diff --git a/build-aux/README.md b/build-aux/README.md new file mode 100644 index 000000000..84b4d777b --- /dev/null +++ b/build-aux/README.md @@ -0,0 +1,40 @@ +# Build Utilities + +This directory contains the Flatpak Manifest and other build utilities. + +## Workbench Flatpak Manifests + +### Python Modules + +The `modules/python-*.json` files contain Flatpak modules to install Python dependencies. + +These files are (sometimes partially, see below) auto-generated. Here is how to generate it: + +1. Obtain an up-to-date copy of [flatpak-builder-tools](https://github.com/flatpak/flatpak-builder-tools). +2. Make sure you have a Python virtualenv activated with the dependencies for the `pip` generator from the repo above. +3. Run `python3 <...>/flatpak-builder-tools/pip/flatpak-pip-generator -o modules/python- --build-isolation` + +You will notice that Workbench will not build after auto-generating these files as described above. +This is due to these issues: + +- https://github.com/flatpak/flatpak-builder-tools/issues/380 +- https://github.com/pypa/pip/issues/7863 + +This means that the generated JSON file now needs its build dependencies manually added. Check the build dependencies +of the package and their dependencies and add them to the JSON as well. Brute-forcing the build to obtain missing packages +may help as does referencing old commits of the file. You can also use the generator command to generate dependencies +for them and then merge it into the file by hand, but note that you will also need to manually collect their build +dependencies too. + +In some cases you may also need to manually remove some packages the generator adds (such as `packaging` with `rope`, +as the SDK and Runtime already contain a version of these packages that can not be replaced. Make sure the package +you want to install is actually compatible with the version of that dependency in the SDK/Runtime. + +#### Python packages with Maturin as build system + +Python packages with Maturin as build system need some additional manual steps to get working. You will have to have +Rust enabled for compilation and pull in additional dependencies. See `modules/python-ruff.json` for example. + +You can generate Maturin's dependencies with another generator provided by the Flatpak Builder Tools. Clone +the Maturin repo in the corresponding version you need and run: +`python3 <...>/flatpak-builder-tools/cargo/flatpak-cargo-generator.py <...>/Cargo.lock -o modules/cargo-sources-maturin.json` diff --git a/build-aux/exceptions.json b/build-aux/exceptions.json new file mode 100644 index 000000000..6661ce152 --- /dev/null +++ b/build-aux/exceptions.json @@ -0,0 +1,4 @@ +{ + "re.sonny.Workbench": ["external-gitmodule-url-found"], + "re.sonny.Workbench.Devel": ["external-gitmodule-url-found"] +} diff --git a/build-aux/library.js b/build-aux/library.js new file mode 100755 index 000000000..ec18b355e --- /dev/null +++ b/build-aux/library.js @@ -0,0 +1,250 @@ +#!/usr/bin/env -S gjs -m + +import Gio from "gi://Gio"; +import GLib from "gi://GLib"; +import { programArgs, exit } from "system"; + +Gio._promisify( + Gio.File.prototype, + "enumerate_children_async", + "enumerate_children_finish", +); + +Gio._promisify( + Gio.File.prototype, + "replace_contents_async", + "replace_contents_finish", +); + +Gio._promisify( + Gio.File.prototype, + "make_directory_async", + "make_directory_finish", +); + +Gio._promisify(Gio.File.prototype, "copy_async", "copy_finish"); + +const loop = new GLib.MainLoop(null, false); + +const [pkgdatadir] = programArgs; +GLib.mkdir_with_parents( + Gio.File.new_for_path(pkgdatadir).get_child("demos").get_path(), + 0o755, +); + +const demos_dir = Gio.File.new_for_path( + GLib.getenv("MESON_SOURCE_ROOT"), +).get_child("demos/src"); +const demos = []; + +(async () => { + const enumerator = await demos_dir.enumerate_children_async( + `${Gio.FILE_ATTRIBUTE_STANDARD_NAME},${Gio.FILE_ATTRIBUTE_STANDARD_IS_HIDDEN}`, + Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, + GLib.PRIORITY_DEFAULT, + null, + ); + for (const file_info of enumerator) { + if (file_info.get_is_hidden()) continue; + if (file_info.get_file_type() !== Gio.FileType.DIRECTORY) continue; + + const demo_dir = enumerator.get_child(file_info); + + let str; + try { + str = new TextDecoder().decode( + demo_dir.get_child("main.json").load_contents(null)[1], + ); + } catch (err) { + console.warn(err); + continue; + } + + const demo = JSON.parse(str); + demo.name = file_info.get_name(); + + if (!isDemoCompatible(demo)) { + continue; + } + + const languages = []; + if (demo_dir.get_child("main.js").query_exists(null)) { + languages.push("javascript"); + } + if (demo_dir.get_child("main.ts").query_exists(null)) { + languages.push("typescript"); + } + if (demo_dir.get_child("main.vala").query_exists(null)) { + languages.push("vala"); + } + if (demo_dir.get_child("code.rs").query_exists(null)) { + languages.push("rust"); + } + if (demo_dir.get_child("main.py").query_exists(null)) { + languages.push("python"); + } + demo.languages = languages; + + await copyDemo( + demo_dir, + Gio.File.new_for_path(pkgdatadir) + .get_child("demos") + .get_child(demo_dir.get_basename()), + ); + + demos.push(demo); + } + + demos.sort((a, b) => { + if (a.name === "Welcome") return -1; + if (b.name === "Welcome") return 1; + if (a.name === "Platform Tools") return -1; + if (b.name === "Platform Tools") return 1; + else return a.name.localeCompare(b.name); + }); + + await Gio.File.new_for_path(pkgdatadir) + .get_child("demos/index.json") + .replace_contents_async( + new TextEncoder().encode(JSON.stringify(demos)), + null, + false, + Gio.FileCreateFlags.NONE, + null, + ); +})() + .catch((err) => { + loop.quit(); + console.error(err); + exit(1); + }) + .then(() => { + loop.quit(); + }); + +async function copyDemo(source, destination) { + try { + destination.make_directory_with_parents(null); + } catch (err) { + if (!err.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.EXISTS)) { + throw err; + } + } + + const enumerator = await source.enumerate_children_async( + `${Gio.FILE_ATTRIBUTE_STANDARD_NAME},${Gio.FILE_ATTRIBUTE_STANDARD_IS_HIDDEN}`, + Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, + GLib.PRIORITY_DEFAULT, + null, + ); + + for await (const file_info of enumerator) { + if (file_info.get_is_hidden()) continue; + + const child = enumerator.get_child(file_info); + if ( + // Sync with demos "make clean" and .gitignore + [ + "Cargo.lock", + "Cargo.toml", + "lib.rs", + "workbench.rs", + "workbench.vala", + "libworkbenchcode.so", + "settings", + "main.ui", + "icons.gresource", + "icons.gresource.xml", + ].includes(child.get_basename()) + ) { + continue; + } + + const child_dest = destination.get_child(child.get_basename()); + + if (file_info.get_file_type() === Gio.FileType.DIRECTORY) { + await copyDirectory(child, child_dest); + continue; + } + + try { + await child.copy_async( + child_dest, // destination + Gio.FileCopyFlags.NONE, // flags + GLib.PRIORITY_DEFAULT, // priority + null, // cancellable + null, // progress_callback + ); + } catch (err) { + if (!err.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.EXISTS)) { + throw err; + } + } + } +} + +async function copyDirectory(source, destination) { + try { + await destination.make_directory_async(GLib.PRIORITY_DEFAULT, null); + } catch (err) { + if (!err.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.EXISTS)) { + throw err; + } + } + + const enumerator = await source.enumerate_children_async( + `${Gio.FILE_ATTRIBUTE_STANDARD_NAME},${Gio.FILE_ATTRIBUTE_STANDARD_IS_HIDDEN}`, + Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, + GLib.PRIORITY_DEFAULT, + null, + ); + + for await (const file_info of enumerator) { + if (file_info.get_is_hidden()) continue; + + const child = enumerator.get_child(file_info); + const child_dest = destination.get_child(child.get_basename()); + + if (file_info.get_file_type() === Gio.FileType.DIRECTORY) { + await copyDirectory(child, child_dest); + continue; + } + + try { + await child.copy_async( + child_dest, // destination + Gio.FileCopyFlags.NONE, // flags + GLib.PRIORITY_DEFAULT, // priority + null, // cancellable + null, // progress_callback + ); + } catch (err) { + if (!err.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.EXISTS)) { + throw err; + } + } + } +} + +const key_file = new GLib.KeyFile(); +key_file.load_from_file("/.flatpak-info", GLib.KeyFileFlags.NONE); +// runtime/org.gnome.Sdk/x86_64/master +const [, , , runtime_version] = key_file + .get_string("Application", "runtime") + .split("/"); + +function isDemoCompatible(demo) { + const demo_runtime_version = demo["runtime-version"]; + + if (demo_runtime_version === "master") { + return runtime_version === "master"; + } else if (runtime_version === "master") { + return true; + } else if (!demo_runtime_version) { + return true; + } + + return +runtime_version >= +demo_runtime_version; +} + +loop.run(); diff --git a/build-aux/list-demo-blp-files.sh b/build-aux/list-demo-blp-files.sh deleted file mode 100755 index 77362aa39..000000000 --- a/build-aux/list-demo-blp-files.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -cd $MESON_SOURCE_ROOT/src || exit -find . -path './Library/demos/*' -name '*.blp' diff --git a/build-aux/modules/GTKCssLanguageServer.json b/build-aux/modules/GTKCssLanguageServer.json new file mode 100644 index 000000000..8175a729a --- /dev/null +++ b/build-aux/modules/GTKCssLanguageServer.json @@ -0,0 +1,26 @@ +{ + "name": "GTKCssLanguageServer", + "config-opts": ["--buildtype=release"], + "buildsystem": "meson", + "sources": [ + { + "type": "git", + "url": "https://github.com/JCWasmx86/GTKCssLanguageServer", + "commit": "dcbe75012d2d26fbca2729cee014e4860e31fa53" + } + ], + "modules": [ + { + "name": "jsonrpc-glib", + "config-opts": ["--buildtype=release", "-Denable_tests=false"], + "buildsystem": "meson", + "sources": [ + { + "type": "archive", + "url": "https://download.gnome.org/sources/jsonrpc-glib/3.44/jsonrpc-glib-3.44.2.tar.xz", + "sha256": "965496b6e1314f3468b482a5d80340dc3b0340a5402d7783cad24154aee77396" + } + ] + } + ] +} diff --git a/build-aux/modules/biome.json b/build-aux/modules/biome.json new file mode 100644 index 000000000..1c31b5817 --- /dev/null +++ b/build-aux/modules/biome.json @@ -0,0 +1,21 @@ +{ + "name": "biome", + "buildsystem": "simple", + "build-commands": ["chmod +x biome", "install -D biome /app/bin/biome"], + "sources": [ + { + "type": "file", + "dest-filename": "biome", + "only-arches": ["aarch64"], + "url": "https://github.com/biomejs/biome/releases/download/cli%2Fv1.9.4/biome-linux-arm64", + "sha256": "f0f0f3e7cdec78420a600b05bfc364aa9b804811bd3bbae04e7bf090828ae970" + }, + { + "type": "file", + "dest-filename": "biome", + "only-arches": ["x86_64"], + "url": "https://github.com/biomejs/biome/releases/download/cli%2Fv1.9.4/biome-linux-x64", + "sha256": "ce247fb644999ef52e5111dd6fd6e471019669fc9c4a44b5699721e39b7032c3" + } + ] +} diff --git a/build-aux/modules/gom.json b/build-aux/modules/gom.json new file mode 100644 index 000000000..d36df22e8 --- /dev/null +++ b/build-aux/modules/gom.json @@ -0,0 +1,12 @@ +{ + "name": "gom", + "buildsystem": "meson", + "config-opts": ["-Denable-gtk-doc=false"], + "sources": [ + { + "type": "archive", + "url": "https://download.gnome.org/sources/gom/0.5/gom-0.5.6.tar.xz", + "sha256": "4d7a5e268698c8e7e40603e36e9e3a2b76133931ce1b637c1136301491b54cc3" + } + ] +} diff --git a/build-aux/modules/libportal.json b/build-aux/modules/libportal.json new file mode 100644 index 000000000..6ec0005d4 --- /dev/null +++ b/build-aux/modules/libportal.json @@ -0,0 +1,18 @@ +{ + "name": "libportal", + "buildsystem": "meson", + "config-opts": [ + "-Dtests=false", + "-Dbackend-gtk3=disabled", + "-Dbackend-gtk4=enabled", + "-Dbackend-qt5=disabled", + "-Ddocs=false" + ], + "sources": [ + { + "type": "archive", + "url": "https://github.com/flatpak/libportal/releases/download/0.9.1/libportal-0.9.1.tar.xz", + "sha256": "de801ee349ed3c255a9af3c01b1a401fab5b3fc1c35eb2fd7dfb35d4b8194d7f" + } + ] +} diff --git a/build-aux/modules/libshumate.json b/build-aux/modules/libshumate.json new file mode 100644 index 000000000..eff76e80a --- /dev/null +++ b/build-aux/modules/libshumate.json @@ -0,0 +1,26 @@ +{ + "name": "libshumate", + "buildsystem": "meson", + "config-opts": ["-Ddemos=false", "-Dgtk_doc=false"], + "sources": [ + { + "type": "archive", + "url": "https://download.gnome.org/sources/libshumate/1.6/libshumate-1.6.1.tar.xz", + "sha256": "b36aad34500791785f546684d0f2ed644e4819ff4e85ae67a2245f159eccb2d4" + } + ], + "modules": [ + { + "name": "protobuf-c", + "buildsystem": "autotools", + "config-opts": ["--disable-protoc"], + "sources": [ + { + "type": "archive", + "url": "https://github.com/protobuf-c/protobuf-c/releases/download/v1.5.2/protobuf-c-1.5.2.tar.gz", + "sha256": "e2c86271873a79c92b58fef7ebf8de1aa0df4738347a8bd5d4e65a80a16d0d24" + } + ] + } + ] +} diff --git a/build-aux/modules/libspelling.json b/build-aux/modules/libspelling.json new file mode 100644 index 000000000..05448b1f6 --- /dev/null +++ b/build-aux/modules/libspelling.json @@ -0,0 +1,12 @@ +{ + "name": "libspelling", + "buildsystem": "meson", + "config-opts": ["-Ddocs=false"], + "sources": [ + { + "type": "archive", + "url": "https://download.gnome.org/sources/libspelling/0.4/libspelling-0.4.9.tar.xz", + "sha256": "d093fd35ae0f1c98fb58876505287fc0a885e47da9d2411d6d7cd595f34d4ebf" + } + ] +} diff --git a/build-aux/modules/python-python-lsp-ruff.json b/build-aux/modules/python-python-lsp-ruff.json new file mode 100644 index 000000000..700c27e03 --- /dev/null +++ b/build-aux/modules/python-python-lsp-ruff.json @@ -0,0 +1,64 @@ +{ + "name": "python3-python-lsp-ruff", + "buildsystem": "simple", + "build-commands": [ + "pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"python-lsp-ruff\"" + ], + "sources": [ + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/e1/c7/247d04257d391251f32a7179cb74b418954022f1e9e276b5933e6ac1d3b1/python_lsp_ruff-2.2.0-py3-none-any.whl", + "sha256": "fe0487c7997b38a59862c44e19cb815e24bb1b2f7cef4f1f32c61cf623a5ce94" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/b3/0d/cd4a4071c7f38385dc5ba91286723b4d1090b87815db48216212c6c6c30e/cattrs-23.2.3-py3-none-any.whl", + "sha256": "0341994d94971052e9ee70662542699a3162ea1e0c62f7ce1b4a57f563685108" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/8d/37/2351e48cb3309673492d3a8c59d407b75fb6630e560eb27ecd4da03adc9a/lsprotocol-2023.0.1-py3-none-any.whl", + "sha256": "c75223c9e4af2f24272b14c6375787438279369236cd568f596d4951052a60f2" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/91/f7/3b9c3a588e46bbdc2671d8fd07ecee118a672db50d72656b5726fbeffbcd/python_lsp_server-1.10.0-py3-none-any.whl", + "sha256": "1a9f338bd7cf3cdde5ae85a2bd93fd5be9e55249f6482d88f99fb6227215424a" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/e0/44/827b2a91a5816512fcaf3cc4ebc465ccd5d598c45cefa6703fcf4a79018f/attrs-23.2.0-py3-none-any.whl", + "sha256": "99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/20/9f/bc63f0f0737ad7a60800bfd472a4836661adae21f9c2535f3957b1e54ceb/jedi-0.19.1-py2.py3-none-any.whl", + "sha256": "e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/a5/5b/0cc789b59e8cc1bf288b38111d002d8c5917123194d45b29dcdac64723cc/pluggy-1.4.0-py3-none-any.whl", + "sha256": "7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/cb/d9/656659d5b5d5f402b2b174cd0ba9bc827e07ce3c0bf88da65424baf64af8/python_lsp_jsonrpc-1.1.2-py3-none-any.whl", + "sha256": "7339c2e9630ae98903fdaea1ace8c47fba0484983794d6aafd0bd8989be2b03c" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/6e/54/6f2bdac7117e89a47de4511c9f01732a283457ab1bf856e1e51aa861619e/ujson-5.9.0.tar.gz", + "sha256": "89cc92e73d5501b8a7f48575eeb14ad27156ad092c2e9fc7e3cf949f07e75532" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/c1/cf/4eee59f6c4111b3e80cc32cf6bac483a90646f5c8693e84496c9855e8e38/docstring_to_markdown-0.15-py3-none-any.whl", + "sha256": "27afb3faedba81e34c33521c32bbd258d7fbb79eedf7d29bc4e81080e854aec0" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/05/63/8011bd08a4111858f79d2b09aad86638490d62fbf881c44e434a6dfca87b/parso-0.8.3-py2.py3-none-any.whl", + "sha256": "c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75" + } + ] +} diff --git a/build-aux/modules/python-python-lsp-server.json b/build-aux/modules/python-python-lsp-server.json new file mode 100644 index 000000000..28139d740 --- /dev/null +++ b/build-aux/modules/python-python-lsp-server.json @@ -0,0 +1,69 @@ +{ + "name": "python3-python-lsp-server", + "buildsystem": "simple", + "build-commands": [ + "pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"python-lsp-server\"" + ], + "sources": [ + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/be/4f/1b6eb5a6d92ae52f3798e9fdffd225f1bcd017172bb732743315390a9025/docstring_to_markdown-0.13-py3-none-any.whl", + "sha256": "aa487059d0883e70e54da25c7b230e918d9e4d40f23d6dfaa2b73e4225b2d7dd" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/20/9f/bc63f0f0737ad7a60800bfd472a4836661adae21f9c2535f3957b1e54ceb/jedi-0.19.1-py2.py3-none-any.whl", + "sha256": "e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/05/63/8011bd08a4111858f79d2b09aad86638490d62fbf881c44e434a6dfca87b/parso-0.8.3-py2.py3-none-any.whl", + "sha256": "c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/05/b8/42ed91898d4784546c5f06c60506400548db3f7a4b3fb441cba4e5c17952/pluggy-1.3.0-py3-none-any.whl", + "sha256": "d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/cb/d9/656659d5b5d5f402b2b174cd0ba9bc827e07ce3c0bf88da65424baf64af8/python_lsp_jsonrpc-1.1.2-py3-none-any.whl", + "sha256": "7339c2e9630ae98903fdaea1ace8c47fba0484983794d6aafd0bd8989be2b03c" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/83/49/355783384945708c604f4ad4c773d4ec93bc609b691698e5d8ecfc51d01c/python_lsp_server-1.9.0-py3-none-any.whl", + "sha256": "6b947cf9dc33d7bed9abc936bb173140fcf606b6eb50cf02e27d4cb09f10d3fb" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/6e/54/6f2bdac7117e89a47de4511c9f01732a283457ab1bf856e1e51aa861619e/ujson-5.9.0.tar.gz", + "sha256": "89cc92e73d5501b8a7f48575eeb14ad27156ad092c2e9fc7e3cf949f07e75532" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/ec/1a/610693ac4ee14fcdf2d9bf3c493370e4f2ef7ae2e19217d7a237ff42367d/packaging-23.2-py3-none-any.whl", + "sha256": "8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/0e/a3/b9a8b0adfe672bf0df5901707aa929d30a97ee390ba651910186776746d2/setuptools_scm-8.0.4-py3-none-any.whl", + "sha256": "b47844cd2a84b83b3187a5782c71128c28b4c94cad8bfb871da2784a5cb54c4f" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/b7/f4/6a90020cd2d93349b442bfcb657d0dc91eee65491600b2cb1d388bc98e6b/typing_extensions-4.9.0-py3-none-any.whl", + "sha256": "af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/bb/e1/ed2dd0850446b8697ad28d118df885ad04140c64ace06c4bd559f7c8a94f/setuptools-69.0.2-py3-none-any.whl", + "sha256": "1e8fdff6797d3865f37397be788a4e3cba233608e9b509382a2777d25ebde7f2" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/c7/c3/55076fc728723ef927521abaa1955213d094933dc36d4a2008d5101e1af5/wheel-0.42.0-py3-none-any.whl", + "sha256": "177f9c9b0d45c47873b619f5b650346d632cdc35fb5e4d25058e09c9e581433d" + } + ] +} diff --git a/build-aux/modules/python-ruff.json b/build-aux/modules/python-ruff.json new file mode 100644 index 000000000..5fa2184cf --- /dev/null +++ b/build-aux/modules/python-ruff.json @@ -0,0 +1,48 @@ +{ + "name": "python3-ruff", + "buildsystem": "simple", + "build-commands": [ + ". /usr/lib/sdk/rust-stable/enable.sh && pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"ruff\"" + ], + "build-options": { + "env": { + "CARGO_HOME": "/run/build/python3-ruff/cargo", + "CARGO_NET_OFFLINE": "true" + } + }, + "sources": [ + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/20/90/43a3aa35f037e91582ec7516a92084a71f84e89e39ef580813bed072b154/maturin-1.4.0.tar.gz", + "sha256": "ed12e1768094a7adeafc3a74ebdb8dc2201fa64c4e7e31f14cfc70378bf93790" + }, + "sources/cargo-sources-maturin.json", + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/ef/cc/93f7213b2ab5ed383f98ce8020e632ef256b406b8569606c3f160ed8e1c9/setuptools-68.2.2.tar.gz", + "sha256": "4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/c7/c3/55076fc728723ef927521abaa1955213d094933dc36d4a2008d5101e1af5/wheel-0.42.0-py3-none-any.whl", + "sha256": "177f9c9b0d45c47873b619f5b650346d632cdc35fb5e4d25058e09c9e581433d" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/f7/7f/8b1c33598b03ad612b8ced223f9ca54076b789fabf5a66ce37cc096d9cf7/setuptools_rust-1.9.0-py3-none-any.whl", + "sha256": "409caf49dcf7ad9bd510b4bf4011fbad504e745fae98f57fe1c06f3a97719638" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/6a/23/8146aad7d88f4fcb3a6218f41a60f6c2d4e3a72de72da1825dc7c8f7877c/semantic_version-2.10.0-py2.py3-none-any.whl", + "sha256": "de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177" + }, + + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/61/b0/5fb64bc79464823ca94e566c9000143ddc11f9396c6e20202315059dd64f/ruff-0.3.0.tar.gz", + "sha256": "0886184ba2618d815067cf43e005388967b67ab9c80df52b32ec1152ab49f53a" + }, + "sources/cargo-sources-ruff.json" + ] +} diff --git a/build-aux/modules/sources/cargo-sources-maturin.json b/build-aux/modules/sources/cargo-sources-maturin.json new file mode 100644 index 000000000..07d9a36ef --- /dev/null +++ b/build-aux/modules/sources/cargo-sources-maturin.json @@ -0,0 +1,3986 @@ +[ + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/adler/adler-1.0.2.crate", + "sha256": "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe", + "dest": "cargo/vendor/adler-1.0.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe\", \"files\": {}}", + "dest": "cargo/vendor/adler-1.0.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ahash/ahash-0.8.6.crate", + "sha256": "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a", + "dest": "cargo/vendor/ahash-0.8.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a\", \"files\": {}}", + "dest": "cargo/vendor/ahash-0.8.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/aho-corasick/aho-corasick-1.1.2.crate", + "sha256": "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0", + "dest": "cargo/vendor/aho-corasick-1.1.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0\", \"files\": {}}", + "dest": "cargo/vendor/aho-corasick-1.1.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/allocator-api2/allocator-api2-0.2.16.crate", + "sha256": "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5", + "dest": "cargo/vendor/allocator-api2-0.2.16" + }, + { + "type": "inline", + "contents": "{\"package\": \"0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5\", \"files\": {}}", + "dest": "cargo/vendor/allocator-api2-0.2.16", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/anstream/anstream-0.3.2.crate", + "sha256": "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163", + "dest": "cargo/vendor/anstream-0.3.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163\", \"files\": {}}", + "dest": "cargo/vendor/anstream-0.3.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/anstream/anstream-0.6.4.crate", + "sha256": "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44", + "dest": "cargo/vendor/anstream-0.6.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44\", \"files\": {}}", + "dest": "cargo/vendor/anstream-0.6.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/anstyle/anstyle-1.0.2.crate", + "sha256": "15c4c2c83f81532e5845a733998b6971faca23490340a418e9b72a3ec9de12ea", + "dest": "cargo/vendor/anstyle-1.0.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"15c4c2c83f81532e5845a733998b6971faca23490340a418e9b72a3ec9de12ea\", \"files\": {}}", + "dest": "cargo/vendor/anstyle-1.0.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/anstyle-parse/anstyle-parse-0.2.1.crate", + "sha256": "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333", + "dest": "cargo/vendor/anstyle-parse-0.2.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333\", \"files\": {}}", + "dest": "cargo/vendor/anstyle-parse-0.2.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/anstyle-query/anstyle-query-1.0.0.crate", + "sha256": "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b", + "dest": "cargo/vendor/anstyle-query-1.0.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b\", \"files\": {}}", + "dest": "cargo/vendor/anstyle-query-1.0.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/anstyle-wincon/anstyle-wincon-1.0.2.crate", + "sha256": "c677ab05e09154296dd37acecd46420c17b9713e8366facafa8fc0885167cf4c", + "dest": "cargo/vendor/anstyle-wincon-1.0.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"c677ab05e09154296dd37acecd46420c17b9713e8366facafa8fc0885167cf4c\", \"files\": {}}", + "dest": "cargo/vendor/anstyle-wincon-1.0.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/anstyle-wincon/anstyle-wincon-3.0.1.crate", + "sha256": "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628", + "dest": "cargo/vendor/anstyle-wincon-3.0.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628\", \"files\": {}}", + "dest": "cargo/vendor/anstyle-wincon-3.0.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/anyhow/anyhow-1.0.75.crate", + "sha256": "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6", + "dest": "cargo/vendor/anyhow-1.0.75" + }, + { + "type": "inline", + "contents": "{\"package\": \"a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6\", \"files\": {}}", + "dest": "cargo/vendor/anyhow-1.0.75", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/autocfg/autocfg-1.1.0.crate", + "sha256": "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa", + "dest": "cargo/vendor/autocfg-1.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa\", \"files\": {}}", + "dest": "cargo/vendor/autocfg-1.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/base64/base64-0.13.1.crate", + "sha256": "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8", + "dest": "cargo/vendor/base64-0.13.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8\", \"files\": {}}", + "dest": "cargo/vendor/base64-0.13.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/base64/base64-0.21.5.crate", + "sha256": "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9", + "dest": "cargo/vendor/base64-0.21.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9\", \"files\": {}}", + "dest": "cargo/vendor/base64-0.21.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bitflags/bitflags-1.3.2.crate", + "sha256": "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a", + "dest": "cargo/vendor/bitflags-1.3.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a\", \"files\": {}}", + "dest": "cargo/vendor/bitflags-1.3.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bitflags/bitflags-2.4.1.crate", + "sha256": "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07", + "dest": "cargo/vendor/bitflags-2.4.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07\", \"files\": {}}", + "dest": "cargo/vendor/bitflags-2.4.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/block-buffer/block-buffer-0.10.4.crate", + "sha256": "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71", + "dest": "cargo/vendor/block-buffer-0.10.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71\", \"files\": {}}", + "dest": "cargo/vendor/block-buffer-0.10.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bstr/bstr-1.8.0.crate", + "sha256": "542f33a8835a0884b006a0c3df3dadd99c0c3f296ed26c2fdc8028e01ad6230c", + "dest": "cargo/vendor/bstr-1.8.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"542f33a8835a0884b006a0c3df3dadd99c0c3f296ed26c2fdc8028e01ad6230c\", \"files\": {}}", + "dest": "cargo/vendor/bstr-1.8.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/byteorder/byteorder-1.5.0.crate", + "sha256": "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b", + "dest": "cargo/vendor/byteorder-1.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b\", \"files\": {}}", + "dest": "cargo/vendor/byteorder-1.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bytes/bytes-1.5.0.crate", + "sha256": "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223", + "dest": "cargo/vendor/bytes-1.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223\", \"files\": {}}", + "dest": "cargo/vendor/bytes-1.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bytesize/bytesize-1.3.0.crate", + "sha256": "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc", + "dest": "cargo/vendor/bytesize-1.3.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc\", \"files\": {}}", + "dest": "cargo/vendor/bytesize-1.3.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bzip2/bzip2-0.4.4.crate", + "sha256": "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8", + "dest": "cargo/vendor/bzip2-0.4.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8\", \"files\": {}}", + "dest": "cargo/vendor/bzip2-0.4.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bzip2-sys/bzip2-sys-0.1.11+1.0.8.crate", + "sha256": "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc", + "dest": "cargo/vendor/bzip2-sys-0.1.11+1.0.8" + }, + { + "type": "inline", + "contents": "{\"package\": \"736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc\", \"files\": {}}", + "dest": "cargo/vendor/bzip2-sys-0.1.11+1.0.8", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cab/cab-0.4.1.crate", + "sha256": "ae6b4de23c7d39c0631fd3cc952d87951c86c75a13812d7247cb7a896e7b3551", + "dest": "cargo/vendor/cab-0.4.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"ae6b4de23c7d39c0631fd3cc952d87951c86c75a13812d7247cb7a896e7b3551\", \"files\": {}}", + "dest": "cargo/vendor/cab-0.4.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/camino/camino-1.1.6.crate", + "sha256": "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c", + "dest": "cargo/vendor/camino-1.1.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c\", \"files\": {}}", + "dest": "cargo/vendor/camino-1.1.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cargo-config2/cargo-config2-0.1.16.crate", + "sha256": "7f387366785e82c7ec7ef5b845a7f61324fbf5d467d6a878469eac30c1c44b1b", + "dest": "cargo/vendor/cargo-config2-0.1.16" + }, + { + "type": "inline", + "contents": "{\"package\": \"7f387366785e82c7ec7ef5b845a7f61324fbf5d467d6a878469eac30c1c44b1b\", \"files\": {}}", + "dest": "cargo/vendor/cargo-config2-0.1.16", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cargo-options/cargo-options-0.7.2.crate", + "sha256": "cad71bf996c8e5b9d28ef3472d7ee41f277edf4e38cd597f51ad0438d05d76ea", + "dest": "cargo/vendor/cargo-options-0.7.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"cad71bf996c8e5b9d28ef3472d7ee41f277edf4e38cd597f51ad0438d05d76ea\", \"files\": {}}", + "dest": "cargo/vendor/cargo-options-0.7.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cargo-platform/cargo-platform-0.1.5.crate", + "sha256": "e34637b3140142bdf929fb439e8aa4ebad7651ebf7b1080b3930aa16ac1459ff", + "dest": "cargo/vendor/cargo-platform-0.1.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"e34637b3140142bdf929fb439e8aa4ebad7651ebf7b1080b3930aa16ac1459ff\", \"files\": {}}", + "dest": "cargo/vendor/cargo-platform-0.1.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cargo-xwin/cargo-xwin-0.16.2.crate", + "sha256": "02bb6bf59526935e47445f959a19c2168f151284dbf7e57f5577934334e9a61d", + "dest": "cargo/vendor/cargo-xwin-0.16.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"02bb6bf59526935e47445f959a19c2168f151284dbf7e57f5577934334e9a61d\", \"files\": {}}", + "dest": "cargo/vendor/cargo-xwin-0.16.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cargo-zigbuild/cargo-zigbuild-0.18.0.crate", + "sha256": "edc9c2fe646a29983b5f7263bd789175f2aaad7ea42525affa40e2172be93286", + "dest": "cargo/vendor/cargo-zigbuild-0.18.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"edc9c2fe646a29983b5f7263bd789175f2aaad7ea42525affa40e2172be93286\", \"files\": {}}", + "dest": "cargo/vendor/cargo-zigbuild-0.18.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cargo_metadata/cargo_metadata-0.18.1.crate", + "sha256": "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037", + "dest": "cargo/vendor/cargo_metadata-0.18.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037\", \"files\": {}}", + "dest": "cargo/vendor/cargo_metadata-0.18.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cbindgen/cbindgen-0.26.0.crate", + "sha256": "da6bc11b07529f16944307272d5bd9b22530bc7d05751717c9d416586cedab49", + "dest": "cargo/vendor/cbindgen-0.26.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"da6bc11b07529f16944307272d5bd9b22530bc7d05751717c9d416586cedab49\", \"files\": {}}", + "dest": "cargo/vendor/cbindgen-0.26.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cc/cc-1.0.83.crate", + "sha256": "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0", + "dest": "cargo/vendor/cc-1.0.83" + }, + { + "type": "inline", + "contents": "{\"package\": \"f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0\", \"files\": {}}", + "dest": "cargo/vendor/cc-1.0.83", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cfb/cfb-0.9.0.crate", + "sha256": "b390793e912300f1aa713429f7fd0c391024e6c18b988962558bc4f96a349b1f", + "dest": "cargo/vendor/cfb-0.9.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"b390793e912300f1aa713429f7fd0c391024e6c18b988962558bc4f96a349b1f\", \"files\": {}}", + "dest": "cargo/vendor/cfb-0.9.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cfg-if/cfg-if-1.0.0.crate", + "sha256": "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd", + "dest": "cargo/vendor/cfg-if-1.0.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd\", \"files\": {}}", + "dest": "cargo/vendor/cfg-if-1.0.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/charset/charset-0.1.3.crate", + "sha256": "18e9079d1a12a2cc2bffb5db039c43661836ead4082120d5844f02555aca2d46", + "dest": "cargo/vendor/charset-0.1.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"18e9079d1a12a2cc2bffb5db039c43661836ead4082120d5844f02555aca2d46\", \"files\": {}}", + "dest": "cargo/vendor/charset-0.1.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/chumsky/chumsky-0.9.3.crate", + "sha256": "8eebd66744a15ded14960ab4ccdbfb51ad3b81f51f3f04a80adac98c985396c9", + "dest": "cargo/vendor/chumsky-0.9.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"8eebd66744a15ded14960ab4ccdbfb51ad3b81f51f3f04a80adac98c985396c9\", \"files\": {}}", + "dest": "cargo/vendor/chumsky-0.9.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/clap/clap-4.3.24.crate", + "sha256": "fb690e81c7840c0d7aade59f242ea3b41b9bc27bcd5997890e7702ae4b32e487", + "dest": "cargo/vendor/clap-4.3.24" + }, + { + "type": "inline", + "contents": "{\"package\": \"fb690e81c7840c0d7aade59f242ea3b41b9bc27bcd5997890e7702ae4b32e487\", \"files\": {}}", + "dest": "cargo/vendor/clap-4.3.24", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/clap_builder/clap_builder-4.3.24.crate", + "sha256": "5ed2e96bc16d8d740f6f48d663eddf4b8a0983e79210fd55479b7bcd0a69860e", + "dest": "cargo/vendor/clap_builder-4.3.24" + }, + { + "type": "inline", + "contents": "{\"package\": \"5ed2e96bc16d8d740f6f48d663eddf4b8a0983e79210fd55479b7bcd0a69860e\", \"files\": {}}", + "dest": "cargo/vendor/clap_builder-4.3.24", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/clap_complete/clap_complete-4.3.2.crate", + "sha256": "5fc443334c81a804575546c5a8a79b4913b50e28d69232903604cada1de817ce", + "dest": "cargo/vendor/clap_complete-4.3.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"5fc443334c81a804575546c5a8a79b4913b50e28d69232903604cada1de817ce\", \"files\": {}}", + "dest": "cargo/vendor/clap_complete-4.3.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/clap_complete_command/clap_complete_command-0.5.1.crate", + "sha256": "183495371ea78d4c9ff638bfc6497d46fed2396e4f9c50aebc1278a4a9919a3d", + "dest": "cargo/vendor/clap_complete_command-0.5.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"183495371ea78d4c9ff638bfc6497d46fed2396e4f9c50aebc1278a4a9919a3d\", \"files\": {}}", + "dest": "cargo/vendor/clap_complete_command-0.5.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/clap_complete_fig/clap_complete_fig-4.3.1.crate", + "sha256": "99fee1d30a51305a6c2ed3fc5709be3c8af626c9c958e04dd9ae94e27bcbce9f", + "dest": "cargo/vendor/clap_complete_fig-4.3.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"99fee1d30a51305a6c2ed3fc5709be3c8af626c9c958e04dd9ae94e27bcbce9f\", \"files\": {}}", + "dest": "cargo/vendor/clap_complete_fig-4.3.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/clap_complete_nushell/clap_complete_nushell-0.1.11.crate", + "sha256": "5d02bc8b1a18ee47c4d2eec3fb5ac034dc68ebea6125b1509e9ccdffcddce66e", + "dest": "cargo/vendor/clap_complete_nushell-0.1.11" + }, + { + "type": "inline", + "contents": "{\"package\": \"5d02bc8b1a18ee47c4d2eec3fb5ac034dc68ebea6125b1509e9ccdffcddce66e\", \"files\": {}}", + "dest": "cargo/vendor/clap_complete_nushell-0.1.11", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/clap_derive/clap_derive-4.3.12.crate", + "sha256": "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050", + "dest": "cargo/vendor/clap_derive-4.3.12" + }, + { + "type": "inline", + "contents": "{\"package\": \"54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050\", \"files\": {}}", + "dest": "cargo/vendor/clap_derive-4.3.12", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/clap_lex/clap_lex-0.5.0.crate", + "sha256": "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b", + "dest": "cargo/vendor/clap_lex-0.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b\", \"files\": {}}", + "dest": "cargo/vendor/clap_lex-0.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cli-table/cli-table-0.4.7.crate", + "sha256": "adfbb116d9e2c4be7011360d0c0bee565712c11e969c9609b25b619366dc379d", + "dest": "cargo/vendor/cli-table-0.4.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"adfbb116d9e2c4be7011360d0c0bee565712c11e969c9609b25b619366dc379d\", \"files\": {}}", + "dest": "cargo/vendor/cli-table-0.4.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/colorchoice/colorchoice-1.0.0.crate", + "sha256": "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7", + "dest": "cargo/vendor/colorchoice-1.0.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7\", \"files\": {}}", + "dest": "cargo/vendor/colorchoice-1.0.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/configparser/configparser-3.0.3.crate", + "sha256": "e0e56e414a2a52ab2a104f85cd40933c2fbc278b83637facf646ecf451b49237", + "dest": "cargo/vendor/configparser-3.0.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"e0e56e414a2a52ab2a104f85cd40933c2fbc278b83637facf646ecf451b49237\", \"files\": {}}", + "dest": "cargo/vendor/configparser-3.0.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/console/console-0.15.7.crate", + "sha256": "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8", + "dest": "cargo/vendor/console-0.15.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8\", \"files\": {}}", + "dest": "cargo/vendor/console-0.15.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/content_inspector/content_inspector-0.2.4.crate", + "sha256": "b7bda66e858c683005a53a9a60c69a4aca7eeaa45d124526e389f7aec8e62f38", + "dest": "cargo/vendor/content_inspector-0.2.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"b7bda66e858c683005a53a9a60c69a4aca7eeaa45d124526e389f7aec8e62f38\", \"files\": {}}", + "dest": "cargo/vendor/content_inspector-0.2.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/core-foundation/core-foundation-0.9.3.crate", + "sha256": "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146", + "dest": "cargo/vendor/core-foundation-0.9.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146\", \"files\": {}}", + "dest": "cargo/vendor/core-foundation-0.9.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/core-foundation-sys/core-foundation-sys-0.8.4.crate", + "sha256": "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa", + "dest": "cargo/vendor/core-foundation-sys-0.8.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa\", \"files\": {}}", + "dest": "cargo/vendor/core-foundation-sys-0.8.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cpufeatures/cpufeatures-0.2.11.crate", + "sha256": "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0", + "dest": "cargo/vendor/cpufeatures-0.2.11" + }, + { + "type": "inline", + "contents": "{\"package\": \"ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0\", \"files\": {}}", + "dest": "cargo/vendor/cpufeatures-0.2.11", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/crc32fast/crc32fast-1.3.2.crate", + "sha256": "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d", + "dest": "cargo/vendor/crc32fast-1.3.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d\", \"files\": {}}", + "dest": "cargo/vendor/crc32fast-1.3.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/crossbeam-channel/crossbeam-channel-0.5.8.crate", + "sha256": "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200", + "dest": "cargo/vendor/crossbeam-channel-0.5.8" + }, + { + "type": "inline", + "contents": "{\"package\": \"a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200\", \"files\": {}}", + "dest": "cargo/vendor/crossbeam-channel-0.5.8", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/crossbeam-deque/crossbeam-deque-0.8.3.crate", + "sha256": "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef", + "dest": "cargo/vendor/crossbeam-deque-0.8.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef\", \"files\": {}}", + "dest": "cargo/vendor/crossbeam-deque-0.8.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/crossbeam-epoch/crossbeam-epoch-0.9.15.crate", + "sha256": "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7", + "dest": "cargo/vendor/crossbeam-epoch-0.9.15" + }, + { + "type": "inline", + "contents": "{\"package\": \"ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7\", \"files\": {}}", + "dest": "cargo/vendor/crossbeam-epoch-0.9.15", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/crossbeam-utils/crossbeam-utils-0.8.16.crate", + "sha256": "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294", + "dest": "cargo/vendor/crossbeam-utils-0.8.16" + }, + { + "type": "inline", + "contents": "{\"package\": \"5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294\", \"files\": {}}", + "dest": "cargo/vendor/crossbeam-utils-0.8.16", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/crypto-common/crypto-common-0.1.6.crate", + "sha256": "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3", + "dest": "cargo/vendor/crypto-common-0.1.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3\", \"files\": {}}", + "dest": "cargo/vendor/crypto-common-0.1.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/data-encoding/data-encoding-2.5.0.crate", + "sha256": "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5", + "dest": "cargo/vendor/data-encoding-2.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5\", \"files\": {}}", + "dest": "cargo/vendor/data-encoding-2.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/deranged/deranged-0.3.9.crate", + "sha256": "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3", + "dest": "cargo/vendor/deranged-0.3.9" + }, + { + "type": "inline", + "contents": "{\"package\": \"0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3\", \"files\": {}}", + "dest": "cargo/vendor/deranged-0.3.9", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/dialoguer/dialoguer-0.11.0.crate", + "sha256": "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de", + "dest": "cargo/vendor/dialoguer-0.11.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de\", \"files\": {}}", + "dest": "cargo/vendor/dialoguer-0.11.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/diff/diff-0.1.13.crate", + "sha256": "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8", + "dest": "cargo/vendor/diff-0.1.13" + }, + { + "type": "inline", + "contents": "{\"package\": \"56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8\", \"files\": {}}", + "dest": "cargo/vendor/diff-0.1.13", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/digest/digest-0.10.7.crate", + "sha256": "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292", + "dest": "cargo/vendor/digest-0.10.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292\", \"files\": {}}", + "dest": "cargo/vendor/digest-0.10.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/dirs/dirs-5.0.1.crate", + "sha256": "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225", + "dest": "cargo/vendor/dirs-5.0.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225\", \"files\": {}}", + "dest": "cargo/vendor/dirs-5.0.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/dirs-sys/dirs-sys-0.4.1.crate", + "sha256": "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c", + "dest": "cargo/vendor/dirs-sys-0.4.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c\", \"files\": {}}", + "dest": "cargo/vendor/dirs-sys-0.4.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/dissimilar/dissimilar-1.0.7.crate", + "sha256": "86e3bdc80eee6e16b2b6b0f87fbc98c04bee3455e35174c0de1a125d0688c632", + "dest": "cargo/vendor/dissimilar-1.0.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"86e3bdc80eee6e16b2b6b0f87fbc98c04bee3455e35174c0de1a125d0688c632\", \"files\": {}}", + "dest": "cargo/vendor/dissimilar-1.0.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/dunce/dunce-1.0.4.crate", + "sha256": "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b", + "dest": "cargo/vendor/dunce-1.0.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b\", \"files\": {}}", + "dest": "cargo/vendor/dunce-1.0.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/either/either-1.9.0.crate", + "sha256": "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07", + "dest": "cargo/vendor/either-1.9.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07\", \"files\": {}}", + "dest": "cargo/vendor/either-1.9.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/encode_unicode/encode_unicode-0.3.6.crate", + "sha256": "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f", + "dest": "cargo/vendor/encode_unicode-0.3.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f\", \"files\": {}}", + "dest": "cargo/vendor/encode_unicode-0.3.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/encoding_rs/encoding_rs-0.8.33.crate", + "sha256": "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1", + "dest": "cargo/vendor/encoding_rs-0.8.33" + }, + { + "type": "inline", + "contents": "{\"package\": \"7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1\", \"files\": {}}", + "dest": "cargo/vendor/encoding_rs-0.8.33", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/equivalent/equivalent-1.0.1.crate", + "sha256": "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5", + "dest": "cargo/vendor/equivalent-1.0.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5\", \"files\": {}}", + "dest": "cargo/vendor/equivalent-1.0.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/errno/errno-0.3.8.crate", + "sha256": "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245", + "dest": "cargo/vendor/errno-0.3.8" + }, + { + "type": "inline", + "contents": "{\"package\": \"a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245\", \"files\": {}}", + "dest": "cargo/vendor/errno-0.3.8", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/expect-test/expect-test-1.4.1.crate", + "sha256": "30d9eafeadd538e68fb28016364c9732d78e420b9ff8853fa5e4058861e9f8d3", + "dest": "cargo/vendor/expect-test-1.4.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"30d9eafeadd538e68fb28016364c9732d78e420b9ff8853fa5e4058861e9f8d3\", \"files\": {}}", + "dest": "cargo/vendor/expect-test-1.4.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/fastrand/fastrand-2.0.1.crate", + "sha256": "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5", + "dest": "cargo/vendor/fastrand-2.0.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5\", \"files\": {}}", + "dest": "cargo/vendor/fastrand-2.0.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/fat-macho/fat-macho-0.4.7.crate", + "sha256": "63fa117c7dcabeb8c83d5c229764cfa46518545d2dba5a9a08912014711f997b", + "dest": "cargo/vendor/fat-macho-0.4.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"63fa117c7dcabeb8c83d5c229764cfa46518545d2dba5a9a08912014711f997b\", \"files\": {}}", + "dest": "cargo/vendor/fat-macho-0.4.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/filetime/filetime-0.2.22.crate", + "sha256": "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0", + "dest": "cargo/vendor/filetime-0.2.22" + }, + { + "type": "inline", + "contents": "{\"package\": \"d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0\", \"files\": {}}", + "dest": "cargo/vendor/filetime-0.2.22", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/flate2/flate2-1.0.28.crate", + "sha256": "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e", + "dest": "cargo/vendor/flate2-1.0.28" + }, + { + "type": "inline", + "contents": "{\"package\": \"46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e\", \"files\": {}}", + "dest": "cargo/vendor/flate2-1.0.28", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/fnv/fnv-1.0.7.crate", + "sha256": "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1", + "dest": "cargo/vendor/fnv-1.0.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1\", \"files\": {}}", + "dest": "cargo/vendor/fnv-1.0.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/foreign-types/foreign-types-0.3.2.crate", + "sha256": "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1", + "dest": "cargo/vendor/foreign-types-0.3.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1\", \"files\": {}}", + "dest": "cargo/vendor/foreign-types-0.3.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/foreign-types-shared/foreign-types-shared-0.1.1.crate", + "sha256": "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b", + "dest": "cargo/vendor/foreign-types-shared-0.1.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b\", \"files\": {}}", + "dest": "cargo/vendor/foreign-types-shared-0.1.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/form_urlencoded/form_urlencoded-1.2.1.crate", + "sha256": "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456", + "dest": "cargo/vendor/form_urlencoded-1.2.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456\", \"files\": {}}", + "dest": "cargo/vendor/form_urlencoded-1.2.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/fs-err/fs-err-2.11.0.crate", + "sha256": "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41", + "dest": "cargo/vendor/fs-err-2.11.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41\", \"files\": {}}", + "dest": "cargo/vendor/fs-err-2.11.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/generic-array/generic-array-0.14.7.crate", + "sha256": "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a", + "dest": "cargo/vendor/generic-array-0.14.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a\", \"files\": {}}", + "dest": "cargo/vendor/generic-array-0.14.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/getrandom/getrandom-0.2.11.crate", + "sha256": "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f", + "dest": "cargo/vendor/getrandom-0.2.11" + }, + { + "type": "inline", + "contents": "{\"package\": \"fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f\", \"files\": {}}", + "dest": "cargo/vendor/getrandom-0.2.11", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/glob/glob-0.3.1.crate", + "sha256": "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b", + "dest": "cargo/vendor/glob-0.3.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b\", \"files\": {}}", + "dest": "cargo/vendor/glob-0.3.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/globset/globset-0.4.14.crate", + "sha256": "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1", + "dest": "cargo/vendor/globset-0.4.14" + }, + { + "type": "inline", + "contents": "{\"package\": \"57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1\", \"files\": {}}", + "dest": "cargo/vendor/globset-0.4.14", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/goblin/goblin-0.7.1.crate", + "sha256": "f27c1b4369c2cd341b5de549380158b105a04c331be5db9110eef7b6d2742134", + "dest": "cargo/vendor/goblin-0.7.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"f27c1b4369c2cd341b5de549380158b105a04c331be5db9110eef7b6d2742134\", \"files\": {}}", + "dest": "cargo/vendor/goblin-0.7.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/hashbrown/hashbrown-0.12.3.crate", + "sha256": "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888", + "dest": "cargo/vendor/hashbrown-0.12.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888\", \"files\": {}}", + "dest": "cargo/vendor/hashbrown-0.12.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/hashbrown/hashbrown-0.14.3.crate", + "sha256": "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604", + "dest": "cargo/vendor/hashbrown-0.14.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604\", \"files\": {}}", + "dest": "cargo/vendor/hashbrown-0.14.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/heck/heck-0.4.1.crate", + "sha256": "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8", + "dest": "cargo/vendor/heck-0.4.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8\", \"files\": {}}", + "dest": "cargo/vendor/heck-0.4.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/hermit-abi/hermit-abi-0.3.3.crate", + "sha256": "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7", + "dest": "cargo/vendor/hermit-abi-0.3.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7\", \"files\": {}}", + "dest": "cargo/vendor/hermit-abi-0.3.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/home/home-0.5.5.crate", + "sha256": "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb", + "dest": "cargo/vendor/home-0.5.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb\", \"files\": {}}", + "dest": "cargo/vendor/home-0.5.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/humantime/humantime-2.1.0.crate", + "sha256": "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4", + "dest": "cargo/vendor/humantime-2.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4\", \"files\": {}}", + "dest": "cargo/vendor/humantime-2.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/humantime-serde/humantime-serde-1.1.1.crate", + "sha256": "57a3db5ea5923d99402c94e9feb261dc5ee9b4efa158b0315f788cf549cc200c", + "dest": "cargo/vendor/humantime-serde-1.1.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"57a3db5ea5923d99402c94e9feb261dc5ee9b4efa158b0315f788cf549cc200c\", \"files\": {}}", + "dest": "cargo/vendor/humantime-serde-1.1.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/idna/idna-0.5.0.crate", + "sha256": "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6", + "dest": "cargo/vendor/idna-0.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6\", \"files\": {}}", + "dest": "cargo/vendor/idna-0.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ignore/ignore-0.4.20.crate", + "sha256": "dbe7873dab538a9a44ad79ede1faf5f30d49f9a5c883ddbab48bce81b64b7492", + "dest": "cargo/vendor/ignore-0.4.20" + }, + { + "type": "inline", + "contents": "{\"package\": \"dbe7873dab538a9a44ad79ede1faf5f30d49f9a5c883ddbab48bce81b64b7492\", \"files\": {}}", + "dest": "cargo/vendor/ignore-0.4.20", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/indexmap/indexmap-1.9.3.crate", + "sha256": "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99", + "dest": "cargo/vendor/indexmap-1.9.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99\", \"files\": {}}", + "dest": "cargo/vendor/indexmap-1.9.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/indexmap/indexmap-2.1.0.crate", + "sha256": "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f", + "dest": "cargo/vendor/indexmap-2.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f\", \"files\": {}}", + "dest": "cargo/vendor/indexmap-2.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/indicatif/indicatif-0.17.7.crate", + "sha256": "fb28741c9db9a713d93deb3bb9515c20788cef5815265bee4980e87bde7e0f25", + "dest": "cargo/vendor/indicatif-0.17.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"fb28741c9db9a713d93deb3bb9515c20788cef5815265bee4980e87bde7e0f25\", \"files\": {}}", + "dest": "cargo/vendor/indicatif-0.17.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/indoc/indoc-2.0.4.crate", + "sha256": "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8", + "dest": "cargo/vendor/indoc-2.0.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8\", \"files\": {}}", + "dest": "cargo/vendor/indoc-2.0.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/instant/instant-0.1.12.crate", + "sha256": "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c", + "dest": "cargo/vendor/instant-0.1.12" + }, + { + "type": "inline", + "contents": "{\"package\": \"7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c\", \"files\": {}}", + "dest": "cargo/vendor/instant-0.1.12", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/io-lifetimes/io-lifetimes-1.0.11.crate", + "sha256": "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2", + "dest": "cargo/vendor/io-lifetimes-1.0.11" + }, + { + "type": "inline", + "contents": "{\"package\": \"eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2\", \"files\": {}}", + "dest": "cargo/vendor/io-lifetimes-1.0.11", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/is-terminal/is-terminal-0.4.9.crate", + "sha256": "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b", + "dest": "cargo/vendor/is-terminal-0.4.9" + }, + { + "type": "inline", + "contents": "{\"package\": \"cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b\", \"files\": {}}", + "dest": "cargo/vendor/is-terminal-0.4.9", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/itertools/itertools-0.11.0.crate", + "sha256": "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57", + "dest": "cargo/vendor/itertools-0.11.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57\", \"files\": {}}", + "dest": "cargo/vendor/itertools-0.11.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/itertools/itertools-0.12.0.crate", + "sha256": "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0", + "dest": "cargo/vendor/itertools-0.12.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0\", \"files\": {}}", + "dest": "cargo/vendor/itertools-0.12.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/itoa/itoa-1.0.9.crate", + "sha256": "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38", + "dest": "cargo/vendor/itoa-1.0.9" + }, + { + "type": "inline", + "contents": "{\"package\": \"af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38\", \"files\": {}}", + "dest": "cargo/vendor/itoa-1.0.9", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/keyring/keyring-2.0.5.crate", + "sha256": "9549a129bd08149e0a71b2d1ce2729780d47127991bfd0a78cc1df697ec72492", + "dest": "cargo/vendor/keyring-2.0.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"9549a129bd08149e0a71b2d1ce2729780d47127991bfd0a78cc1df697ec72492\", \"files\": {}}", + "dest": "cargo/vendor/keyring-2.0.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/lazy_static/lazy_static-1.4.0.crate", + "sha256": "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646", + "dest": "cargo/vendor/lazy_static-1.4.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646\", \"files\": {}}", + "dest": "cargo/vendor/lazy_static-1.4.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/lddtree/lddtree-0.3.3.crate", + "sha256": "2f5bfec46830ad3a95199ae6804dfe9f51fdad43d7a95fbb6c185efa9824c295", + "dest": "cargo/vendor/lddtree-0.3.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"2f5bfec46830ad3a95199ae6804dfe9f51fdad43d7a95fbb6c185efa9824c295\", \"files\": {}}", + "dest": "cargo/vendor/lddtree-0.3.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/libc/libc-0.2.150.crate", + "sha256": "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c", + "dest": "cargo/vendor/libc-0.2.150" + }, + { + "type": "inline", + "contents": "{\"package\": \"89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c\", \"files\": {}}", + "dest": "cargo/vendor/libc-0.2.150", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/libredox/libredox-0.0.1.crate", + "sha256": "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8", + "dest": "cargo/vendor/libredox-0.0.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8\", \"files\": {}}", + "dest": "cargo/vendor/libredox-0.0.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/linux-keyutils/linux-keyutils-0.2.3.crate", + "sha256": "3f27bb67f6dd1d0bb5ab582868e4f65052e58da6401188a08f0da09cf512b84b", + "dest": "cargo/vendor/linux-keyutils-0.2.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"3f27bb67f6dd1d0bb5ab582868e4f65052e58da6401188a08f0da09cf512b84b\", \"files\": {}}", + "dest": "cargo/vendor/linux-keyutils-0.2.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/linux-raw-sys/linux-raw-sys-0.3.8.crate", + "sha256": "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519", + "dest": "cargo/vendor/linux-raw-sys-0.3.8" + }, + { + "type": "inline", + "contents": "{\"package\": \"ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519\", \"files\": {}}", + "dest": "cargo/vendor/linux-raw-sys-0.3.8", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/linux-raw-sys/linux-raw-sys-0.4.11.crate", + "sha256": "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829", + "dest": "cargo/vendor/linux-raw-sys-0.4.11" + }, + { + "type": "inline", + "contents": "{\"package\": \"969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829\", \"files\": {}}", + "dest": "cargo/vendor/linux-raw-sys-0.4.11", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/lock_api/lock_api-0.4.11.crate", + "sha256": "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45", + "dest": "cargo/vendor/lock_api-0.4.11" + }, + { + "type": "inline", + "contents": "{\"package\": \"3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45\", \"files\": {}}", + "dest": "cargo/vendor/lock_api-0.4.11", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/log/log-0.4.20.crate", + "sha256": "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f", + "dest": "cargo/vendor/log-0.4.20" + }, + { + "type": "inline", + "contents": "{\"package\": \"b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f\", \"files\": {}}", + "dest": "cargo/vendor/log-0.4.20", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/lzxd/lzxd-0.1.4.crate", + "sha256": "784462f20dddd9dfdb45de963fa4ad4a288cb10a7889ac5d2c34fb6481c6b213", + "dest": "cargo/vendor/lzxd-0.1.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"784462f20dddd9dfdb45de963fa4ad4a288cb10a7889ac5d2c34fb6481c6b213\", \"files\": {}}", + "dest": "cargo/vendor/lzxd-0.1.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/mailparse/mailparse-0.14.0.crate", + "sha256": "6b56570f5f8c0047260d1c8b5b331f62eb9c660b9dd4071a8c46f8c7d3f280aa", + "dest": "cargo/vendor/mailparse-0.14.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"6b56570f5f8c0047260d1c8b5b331f62eb9c660b9dd4071a8c46f8c7d3f280aa\", \"files\": {}}", + "dest": "cargo/vendor/mailparse-0.14.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/matchers/matchers-0.1.0.crate", + "sha256": "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558", + "dest": "cargo/vendor/matchers-0.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558\", \"files\": {}}", + "dest": "cargo/vendor/matchers-0.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/memchr/memchr-2.6.4.crate", + "sha256": "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167", + "dest": "cargo/vendor/memchr-2.6.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167\", \"files\": {}}", + "dest": "cargo/vendor/memchr-2.6.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/memoffset/memoffset-0.9.0.crate", + "sha256": "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c", + "dest": "cargo/vendor/memoffset-0.9.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c\", \"files\": {}}", + "dest": "cargo/vendor/memoffset-0.9.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/mime/mime-0.3.17.crate", + "sha256": "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a", + "dest": "cargo/vendor/mime-0.3.17" + }, + { + "type": "inline", + "contents": "{\"package\": \"6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a\", \"files\": {}}", + "dest": "cargo/vendor/mime-0.3.17", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/mime_guess/mime_guess-2.0.4.crate", + "sha256": "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef", + "dest": "cargo/vendor/mime_guess-2.0.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef\", \"files\": {}}", + "dest": "cargo/vendor/mime_guess-2.0.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/minijinja/minijinja-1.0.10.crate", + "sha256": "208758577ef2c86cf5dd3e85730d161413ec3284e2d73b2ef65d9a24d9971bcb", + "dest": "cargo/vendor/minijinja-1.0.10" + }, + { + "type": "inline", + "contents": "{\"package\": \"208758577ef2c86cf5dd3e85730d161413ec3284e2d73b2ef65d9a24d9971bcb\", \"files\": {}}", + "dest": "cargo/vendor/minijinja-1.0.10", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/minimal-lexical/minimal-lexical-0.2.1.crate", + "sha256": "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a", + "dest": "cargo/vendor/minimal-lexical-0.2.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a\", \"files\": {}}", + "dest": "cargo/vendor/minimal-lexical-0.2.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/miniz_oxide/miniz_oxide-0.7.1.crate", + "sha256": "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7", + "dest": "cargo/vendor/miniz_oxide-0.7.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7\", \"files\": {}}", + "dest": "cargo/vendor/miniz_oxide-0.7.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/msi/msi-0.7.0.crate", + "sha256": "226b2404f03d2cf47375b9715c8adfae4e388bb2377cff908e8a40f31e421514", + "dest": "cargo/vendor/msi-0.7.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"226b2404f03d2cf47375b9715c8adfae4e388bb2377cff908e8a40f31e421514\", \"files\": {}}", + "dest": "cargo/vendor/msi-0.7.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/multipart/multipart-0.18.0.crate", + "sha256": "00dec633863867f29cb39df64a397cdf4a6354708ddd7759f70c7fb51c5f9182", + "dest": "cargo/vendor/multipart-0.18.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"00dec633863867f29cb39df64a397cdf4a6354708ddd7759f70c7fb51c5f9182\", \"files\": {}}", + "dest": "cargo/vendor/multipart-0.18.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/native-tls/native-tls-0.2.11.crate", + "sha256": "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e", + "dest": "cargo/vendor/native-tls-0.2.11" + }, + { + "type": "inline", + "contents": "{\"package\": \"07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e\", \"files\": {}}", + "dest": "cargo/vendor/native-tls-0.2.11", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/nom/nom-7.1.3.crate", + "sha256": "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a", + "dest": "cargo/vendor/nom-7.1.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a\", \"files\": {}}", + "dest": "cargo/vendor/nom-7.1.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/normalize-line-endings/normalize-line-endings-0.3.0.crate", + "sha256": "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be", + "dest": "cargo/vendor/normalize-line-endings-0.3.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be\", \"files\": {}}", + "dest": "cargo/vendor/normalize-line-endings-0.3.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/normpath/normpath-1.1.1.crate", + "sha256": "ec60c60a693226186f5d6edf073232bfb6464ed97eb22cf3b01c1e8198fd97f5", + "dest": "cargo/vendor/normpath-1.1.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"ec60c60a693226186f5d6edf073232bfb6464ed97eb22cf3b01c1e8198fd97f5\", \"files\": {}}", + "dest": "cargo/vendor/normpath-1.1.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/nu-ansi-term/nu-ansi-term-0.46.0.crate", + "sha256": "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84", + "dest": "cargo/vendor/nu-ansi-term-0.46.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84\", \"files\": {}}", + "dest": "cargo/vendor/nu-ansi-term-0.46.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/number_prefix/number_prefix-0.4.0.crate", + "sha256": "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3", + "dest": "cargo/vendor/number_prefix-0.4.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3\", \"files\": {}}", + "dest": "cargo/vendor/number_prefix-0.4.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/once_cell/once_cell-1.18.0.crate", + "sha256": "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d", + "dest": "cargo/vendor/once_cell-1.18.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d\", \"files\": {}}", + "dest": "cargo/vendor/once_cell-1.18.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/openssl/openssl-0.10.60.crate", + "sha256": "79a4c6c3a2b158f7f8f2a2fc5a969fa3a068df6fc9dbb4a43845436e3af7c800", + "dest": "cargo/vendor/openssl-0.10.60" + }, + { + "type": "inline", + "contents": "{\"package\": \"79a4c6c3a2b158f7f8f2a2fc5a969fa3a068df6fc9dbb4a43845436e3af7c800\", \"files\": {}}", + "dest": "cargo/vendor/openssl-0.10.60", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/openssl-macros/openssl-macros-0.1.1.crate", + "sha256": "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c", + "dest": "cargo/vendor/openssl-macros-0.1.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c\", \"files\": {}}", + "dest": "cargo/vendor/openssl-macros-0.1.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/openssl-probe/openssl-probe-0.1.5.crate", + "sha256": "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf", + "dest": "cargo/vendor/openssl-probe-0.1.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf\", \"files\": {}}", + "dest": "cargo/vendor/openssl-probe-0.1.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/openssl-sys/openssl-sys-0.9.96.crate", + "sha256": "3812c071ba60da8b5677cc12bcb1d42989a65553772897a7e0355545a819838f", + "dest": "cargo/vendor/openssl-sys-0.9.96" + }, + { + "type": "inline", + "contents": "{\"package\": \"3812c071ba60da8b5677cc12bcb1d42989a65553772897a7e0355545a819838f\", \"files\": {}}", + "dest": "cargo/vendor/openssl-sys-0.9.96", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/option-ext/option-ext-0.2.0.crate", + "sha256": "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d", + "dest": "cargo/vendor/option-ext-0.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d\", \"files\": {}}", + "dest": "cargo/vendor/option-ext-0.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/os_pipe/os_pipe-1.1.4.crate", + "sha256": "0ae859aa07428ca9a929b936690f8b12dc5f11dd8c6992a18ca93919f28bc177", + "dest": "cargo/vendor/os_pipe-1.1.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"0ae859aa07428ca9a929b936690f8b12dc5f11dd8c6992a18ca93919f28bc177\", \"files\": {}}", + "dest": "cargo/vendor/os_pipe-1.1.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/overload/overload-0.1.1.crate", + "sha256": "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39", + "dest": "cargo/vendor/overload-0.1.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39\", \"files\": {}}", + "dest": "cargo/vendor/overload-0.1.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/parking_lot/parking_lot-0.12.1.crate", + "sha256": "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f", + "dest": "cargo/vendor/parking_lot-0.12.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f\", \"files\": {}}", + "dest": "cargo/vendor/parking_lot-0.12.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/parking_lot_core/parking_lot_core-0.9.9.crate", + "sha256": "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e", + "dest": "cargo/vendor/parking_lot_core-0.9.9" + }, + { + "type": "inline", + "contents": "{\"package\": \"4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e\", \"files\": {}}", + "dest": "cargo/vendor/parking_lot_core-0.9.9", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/paste/paste-1.0.14.crate", + "sha256": "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c", + "dest": "cargo/vendor/paste-1.0.14" + }, + { + "type": "inline", + "contents": "{\"package\": \"de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c\", \"files\": {}}", + "dest": "cargo/vendor/paste-1.0.14", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/path-slash/path-slash-0.2.1.crate", + "sha256": "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42", + "dest": "cargo/vendor/path-slash-0.2.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42\", \"files\": {}}", + "dest": "cargo/vendor/path-slash-0.2.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/pep440_rs/pep440_rs-0.3.12.crate", + "sha256": "887f66cc62717ea72caac4f1eb4e6f392224da3ffff3f40ec13ab427802746d6", + "dest": "cargo/vendor/pep440_rs-0.3.12" + }, + { + "type": "inline", + "contents": "{\"package\": \"887f66cc62717ea72caac4f1eb4e6f392224da3ffff3f40ec13ab427802746d6\", \"files\": {}}", + "dest": "cargo/vendor/pep440_rs-0.3.12", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/pep508_rs/pep508_rs-0.2.3.crate", + "sha256": "e4516b53d9ea6112ebb38b4af08d5707d30b994fb7f98ff133c5dcf7ed8fa854", + "dest": "cargo/vendor/pep508_rs-0.2.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"e4516b53d9ea6112ebb38b4af08d5707d30b994fb7f98ff133c5dcf7ed8fa854\", \"files\": {}}", + "dest": "cargo/vendor/pep508_rs-0.2.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/percent-encoding/percent-encoding-2.3.1.crate", + "sha256": "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e", + "dest": "cargo/vendor/percent-encoding-2.3.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e\", \"files\": {}}", + "dest": "cargo/vendor/percent-encoding-2.3.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/pin-project-lite/pin-project-lite-0.2.13.crate", + "sha256": "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58", + "dest": "cargo/vendor/pin-project-lite-0.2.13" + }, + { + "type": "inline", + "contents": "{\"package\": \"8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58\", \"files\": {}}", + "dest": "cargo/vendor/pin-project-lite-0.2.13", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/pkg-config/pkg-config-0.3.27.crate", + "sha256": "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964", + "dest": "cargo/vendor/pkg-config-0.3.27" + }, + { + "type": "inline", + "contents": "{\"package\": \"26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964\", \"files\": {}}", + "dest": "cargo/vendor/pkg-config-0.3.27", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/plain/plain-0.2.3.crate", + "sha256": "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6", + "dest": "cargo/vendor/plain-0.2.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6\", \"files\": {}}", + "dest": "cargo/vendor/plain-0.2.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/platform-info/platform-info-2.0.2.crate", + "sha256": "d6259c4860e53bf665016f1b2f46a8859cadfa717581dc9d597ae4069de6300f", + "dest": "cargo/vendor/platform-info-2.0.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"d6259c4860e53bf665016f1b2f46a8859cadfa717581dc9d597ae4069de6300f\", \"files\": {}}", + "dest": "cargo/vendor/platform-info-2.0.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/portable-atomic/portable-atomic-1.5.1.crate", + "sha256": "3bccab0e7fd7cc19f820a1c8c91720af652d0c88dc9664dd72aef2614f04af3b", + "dest": "cargo/vendor/portable-atomic-1.5.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"3bccab0e7fd7cc19f820a1c8c91720af652d0c88dc9664dd72aef2614f04af3b\", \"files\": {}}", + "dest": "cargo/vendor/portable-atomic-1.5.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/powerfmt/powerfmt-0.2.0.crate", + "sha256": "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391", + "dest": "cargo/vendor/powerfmt-0.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391\", \"files\": {}}", + "dest": "cargo/vendor/powerfmt-0.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ppv-lite86/ppv-lite86-0.2.17.crate", + "sha256": "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de", + "dest": "cargo/vendor/ppv-lite86-0.2.17" + }, + { + "type": "inline", + "contents": "{\"package\": \"5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de\", \"files\": {}}", + "dest": "cargo/vendor/ppv-lite86-0.2.17", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/pretty_assertions/pretty_assertions-1.4.0.crate", + "sha256": "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66", + "dest": "cargo/vendor/pretty_assertions-1.4.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66\", \"files\": {}}", + "dest": "cargo/vendor/pretty_assertions-1.4.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/proc-macro2/proc-macro2-1.0.70.crate", + "sha256": "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b", + "dest": "cargo/vendor/proc-macro2-1.0.70" + }, + { + "type": "inline", + "contents": "{\"package\": \"39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b\", \"files\": {}}", + "dest": "cargo/vendor/proc-macro2-1.0.70", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/psm/psm-0.1.21.crate", + "sha256": "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874", + "dest": "cargo/vendor/psm-0.1.21" + }, + { + "type": "inline", + "contents": "{\"package\": \"5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874\", \"files\": {}}", + "dest": "cargo/vendor/psm-0.1.21", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/pyproject-toml/pyproject-toml-0.8.1.crate", + "sha256": "46d4a5e69187f23a29f8aa0ea57491d104ba541bc55f76552c2a74962aa20e04", + "dest": "cargo/vendor/pyproject-toml-0.8.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"46d4a5e69187f23a29f8aa0ea57491d104ba541bc55f76552c2a74962aa20e04\", \"files\": {}}", + "dest": "cargo/vendor/pyproject-toml-0.8.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/python-pkginfo/python-pkginfo-0.6.0.crate", + "sha256": "037469c164f08c891bf6d69ca02f1d56210011451e229618669777df82124cfa", + "dest": "cargo/vendor/python-pkginfo-0.6.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"037469c164f08c891bf6d69ca02f1d56210011451e229618669777df82124cfa\", \"files\": {}}", + "dest": "cargo/vendor/python-pkginfo-0.6.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/quote/quote-1.0.33.crate", + "sha256": "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae", + "dest": "cargo/vendor/quote-1.0.33" + }, + { + "type": "inline", + "contents": "{\"package\": \"5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae\", \"files\": {}}", + "dest": "cargo/vendor/quote-1.0.33", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/quoted_printable/quoted_printable-0.4.8.crate", + "sha256": "5a3866219251662ec3b26fc217e3e05bf9c4f84325234dfb96bf0bf840889e49", + "dest": "cargo/vendor/quoted_printable-0.4.8" + }, + { + "type": "inline", + "contents": "{\"package\": \"5a3866219251662ec3b26fc217e3e05bf9c4f84325234dfb96bf0bf840889e49\", \"files\": {}}", + "dest": "cargo/vendor/quoted_printable-0.4.8", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rand/rand-0.8.5.crate", + "sha256": "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404", + "dest": "cargo/vendor/rand-0.8.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404\", \"files\": {}}", + "dest": "cargo/vendor/rand-0.8.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rand_chacha/rand_chacha-0.3.1.crate", + "sha256": "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88", + "dest": "cargo/vendor/rand_chacha-0.3.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88\", \"files\": {}}", + "dest": "cargo/vendor/rand_chacha-0.3.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rand_core/rand_core-0.6.4.crate", + "sha256": "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c", + "dest": "cargo/vendor/rand_core-0.6.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c\", \"files\": {}}", + "dest": "cargo/vendor/rand_core-0.6.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rayon/rayon-1.8.0.crate", + "sha256": "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1", + "dest": "cargo/vendor/rayon-1.8.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1\", \"files\": {}}", + "dest": "cargo/vendor/rayon-1.8.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rayon-core/rayon-core-1.12.0.crate", + "sha256": "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed", + "dest": "cargo/vendor/rayon-core-1.12.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed\", \"files\": {}}", + "dest": "cargo/vendor/rayon-core-1.12.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/redox_syscall/redox_syscall-0.3.5.crate", + "sha256": "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29", + "dest": "cargo/vendor/redox_syscall-0.3.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29\", \"files\": {}}", + "dest": "cargo/vendor/redox_syscall-0.3.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/redox_syscall/redox_syscall-0.4.1.crate", + "sha256": "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa", + "dest": "cargo/vendor/redox_syscall-0.4.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa\", \"files\": {}}", + "dest": "cargo/vendor/redox_syscall-0.4.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/redox_users/redox_users-0.4.4.crate", + "sha256": "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4", + "dest": "cargo/vendor/redox_users-0.4.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4\", \"files\": {}}", + "dest": "cargo/vendor/redox_users-0.4.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/regex/regex-1.10.2.crate", + "sha256": "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343", + "dest": "cargo/vendor/regex-1.10.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343\", \"files\": {}}", + "dest": "cargo/vendor/regex-1.10.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/regex-automata/regex-automata-0.1.10.crate", + "sha256": "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132", + "dest": "cargo/vendor/regex-automata-0.1.10" + }, + { + "type": "inline", + "contents": "{\"package\": \"6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132\", \"files\": {}}", + "dest": "cargo/vendor/regex-automata-0.1.10", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/regex-automata/regex-automata-0.4.3.crate", + "sha256": "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f", + "dest": "cargo/vendor/regex-automata-0.4.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f\", \"files\": {}}", + "dest": "cargo/vendor/regex-automata-0.4.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/regex-syntax/regex-syntax-0.6.29.crate", + "sha256": "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1", + "dest": "cargo/vendor/regex-syntax-0.6.29" + }, + { + "type": "inline", + "contents": "{\"package\": \"f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1\", \"files\": {}}", + "dest": "cargo/vendor/regex-syntax-0.6.29", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/regex-syntax/regex-syntax-0.8.2.crate", + "sha256": "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f", + "dest": "cargo/vendor/regex-syntax-0.8.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f\", \"files\": {}}", + "dest": "cargo/vendor/regex-syntax-0.8.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rfc2047-decoder/rfc2047-decoder-0.2.2.crate", + "sha256": "61fc4b4e52897c3e30b12b7e9b04461215b647fbe66f6def60dd8edbce14ec2e", + "dest": "cargo/vendor/rfc2047-decoder-0.2.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"61fc4b4e52897c3e30b12b7e9b04461215b647fbe66f6def60dd8edbce14ec2e\", \"files\": {}}", + "dest": "cargo/vendor/rfc2047-decoder-0.2.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ring/ring-0.17.6.crate", + "sha256": "684d5e6e18f669ccebf64a92236bb7db9a34f07be010e3627368182027180866", + "dest": "cargo/vendor/ring-0.17.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"684d5e6e18f669ccebf64a92236bb7db9a34f07be010e3627368182027180866\", \"files\": {}}", + "dest": "cargo/vendor/ring-0.17.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustc_version/rustc_version-0.4.0.crate", + "sha256": "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366", + "dest": "cargo/vendor/rustc_version-0.4.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366\", \"files\": {}}", + "dest": "cargo/vendor/rustc_version-0.4.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustix/rustix-0.37.27.crate", + "sha256": "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2", + "dest": "cargo/vendor/rustix-0.37.27" + }, + { + "type": "inline", + "contents": "{\"package\": \"fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2\", \"files\": {}}", + "dest": "cargo/vendor/rustix-0.37.27", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustix/rustix-0.38.21.crate", + "sha256": "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3", + "dest": "cargo/vendor/rustix-0.38.21" + }, + { + "type": "inline", + "contents": "{\"package\": \"2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3\", \"files\": {}}", + "dest": "cargo/vendor/rustix-0.38.21", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustls/rustls-0.21.9.crate", + "sha256": "629648aced5775d558af50b2b4c7b02983a04b312126d45eeead26e7caa498b9", + "dest": "cargo/vendor/rustls-0.21.9" + }, + { + "type": "inline", + "contents": "{\"package\": \"629648aced5775d558af50b2b4c7b02983a04b312126d45eeead26e7caa498b9\", \"files\": {}}", + "dest": "cargo/vendor/rustls-0.21.9", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustls-pemfile/rustls-pemfile-2.0.0.crate", + "sha256": "35e4980fa29e4c4b212ffb3db068a564cbf560e51d3944b7c88bd8bf5bec64f4", + "dest": "cargo/vendor/rustls-pemfile-2.0.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"35e4980fa29e4c4b212ffb3db068a564cbf560e51d3944b7c88bd8bf5bec64f4\", \"files\": {}}", + "dest": "cargo/vendor/rustls-pemfile-2.0.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustls-pki-types/rustls-pki-types-1.0.0.crate", + "sha256": "eb0a1f9b9efec70d32e6d6aa3e58ebd88c3754ec98dfe9145c63cf54cc829b83", + "dest": "cargo/vendor/rustls-pki-types-1.0.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"eb0a1f9b9efec70d32e6d6aa3e58ebd88c3754ec98dfe9145c63cf54cc829b83\", \"files\": {}}", + "dest": "cargo/vendor/rustls-pki-types-1.0.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustls-webpki/rustls-webpki-0.101.7.crate", + "sha256": "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765", + "dest": "cargo/vendor/rustls-webpki-0.101.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765\", \"files\": {}}", + "dest": "cargo/vendor/rustls-webpki-0.101.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustversion/rustversion-1.0.14.crate", + "sha256": "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4", + "dest": "cargo/vendor/rustversion-1.0.14" + }, + { + "type": "inline", + "contents": "{\"package\": \"7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4\", \"files\": {}}", + "dest": "cargo/vendor/rustversion-1.0.14", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ryu/ryu-1.0.15.crate", + "sha256": "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741", + "dest": "cargo/vendor/ryu-1.0.15" + }, + { + "type": "inline", + "contents": "{\"package\": \"1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741\", \"files\": {}}", + "dest": "cargo/vendor/ryu-1.0.15", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/same-file/same-file-1.0.6.crate", + "sha256": "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502", + "dest": "cargo/vendor/same-file-1.0.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502\", \"files\": {}}", + "dest": "cargo/vendor/same-file-1.0.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/schannel/schannel-0.1.22.crate", + "sha256": "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88", + "dest": "cargo/vendor/schannel-0.1.22" + }, + { + "type": "inline", + "contents": "{\"package\": \"0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88\", \"files\": {}}", + "dest": "cargo/vendor/schannel-0.1.22", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/scopeguard/scopeguard-1.2.0.crate", + "sha256": "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49", + "dest": "cargo/vendor/scopeguard-1.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49\", \"files\": {}}", + "dest": "cargo/vendor/scopeguard-1.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/scroll/scroll-0.11.0.crate", + "sha256": "04c565b551bafbef4157586fa379538366e4385d42082f255bfd96e4fe8519da", + "dest": "cargo/vendor/scroll-0.11.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"04c565b551bafbef4157586fa379538366e4385d42082f255bfd96e4fe8519da\", \"files\": {}}", + "dest": "cargo/vendor/scroll-0.11.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/scroll_derive/scroll_derive-0.11.1.crate", + "sha256": "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae", + "dest": "cargo/vendor/scroll_derive-0.11.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae\", \"files\": {}}", + "dest": "cargo/vendor/scroll_derive-0.11.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/sct/sct-0.7.1.crate", + "sha256": "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414", + "dest": "cargo/vendor/sct-0.7.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414\", \"files\": {}}", + "dest": "cargo/vendor/sct-0.7.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/security-framework/security-framework-2.9.2.crate", + "sha256": "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de", + "dest": "cargo/vendor/security-framework-2.9.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de\", \"files\": {}}", + "dest": "cargo/vendor/security-framework-2.9.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/security-framework-sys/security-framework-sys-2.9.1.crate", + "sha256": "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a", + "dest": "cargo/vendor/security-framework-sys-2.9.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a\", \"files\": {}}", + "dest": "cargo/vendor/security-framework-sys-2.9.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/semver/semver-1.0.20.crate", + "sha256": "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090", + "dest": "cargo/vendor/semver-1.0.20" + }, + { + "type": "inline", + "contents": "{\"package\": \"836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090\", \"files\": {}}", + "dest": "cargo/vendor/semver-1.0.20", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/serde/serde-1.0.193.crate", + "sha256": "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89", + "dest": "cargo/vendor/serde-1.0.193" + }, + { + "type": "inline", + "contents": "{\"package\": \"25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89\", \"files\": {}}", + "dest": "cargo/vendor/serde-1.0.193", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/serde_derive/serde_derive-1.0.193.crate", + "sha256": "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3", + "dest": "cargo/vendor/serde_derive-1.0.193" + }, + { + "type": "inline", + "contents": "{\"package\": \"43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3\", \"files\": {}}", + "dest": "cargo/vendor/serde_derive-1.0.193", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/serde_json/serde_json-1.0.108.crate", + "sha256": "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b", + "dest": "cargo/vendor/serde_json-1.0.108" + }, + { + "type": "inline", + "contents": "{\"package\": \"3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b\", \"files\": {}}", + "dest": "cargo/vendor/serde_json-1.0.108", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/serde_spanned/serde_spanned-0.6.4.crate", + "sha256": "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80", + "dest": "cargo/vendor/serde_spanned-0.6.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80\", \"files\": {}}", + "dest": "cargo/vendor/serde_spanned-0.6.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/sha2/sha2-0.10.8.crate", + "sha256": "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8", + "dest": "cargo/vendor/sha2-0.10.8" + }, + { + "type": "inline", + "contents": "{\"package\": \"793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8\", \"files\": {}}", + "dest": "cargo/vendor/sha2-0.10.8", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/sharded-slab/sharded-slab-0.1.7.crate", + "sha256": "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6", + "dest": "cargo/vendor/sharded-slab-0.1.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6\", \"files\": {}}", + "dest": "cargo/vendor/sharded-slab-0.1.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/shell-words/shell-words-1.1.0.crate", + "sha256": "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde", + "dest": "cargo/vendor/shell-words-1.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde\", \"files\": {}}", + "dest": "cargo/vendor/shell-words-1.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/shlex/shlex-1.2.0.crate", + "sha256": "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380", + "dest": "cargo/vendor/shlex-1.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380\", \"files\": {}}", + "dest": "cargo/vendor/shlex-1.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/similar/similar-2.3.0.crate", + "sha256": "2aeaf503862c419d66959f5d7ca015337d864e9c49485d771b732e2a20453597", + "dest": "cargo/vendor/similar-2.3.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"2aeaf503862c419d66959f5d7ca015337d864e9c49485d771b732e2a20453597\", \"files\": {}}", + "dest": "cargo/vendor/similar-2.3.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/smallvec/smallvec-1.11.2.crate", + "sha256": "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970", + "dest": "cargo/vendor/smallvec-1.11.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970\", \"files\": {}}", + "dest": "cargo/vendor/smallvec-1.11.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/smawk/smawk-0.3.2.crate", + "sha256": "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c", + "dest": "cargo/vendor/smawk-0.3.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c\", \"files\": {}}", + "dest": "cargo/vendor/smawk-0.3.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/snapbox/snapbox-0.4.14.crate", + "sha256": "4b377c0b6e4715c116473d8e40d51e3fa5b0a2297ca9b2a931ba800667b259ed", + "dest": "cargo/vendor/snapbox-0.4.14" + }, + { + "type": "inline", + "contents": "{\"package\": \"4b377c0b6e4715c116473d8e40d51e3fa5b0a2297ca9b2a931ba800667b259ed\", \"files\": {}}", + "dest": "cargo/vendor/snapbox-0.4.14", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/snapbox-macros/snapbox-macros-0.3.6.crate", + "sha256": "ed1559baff8a696add3322b9be3e940d433e7bb4e38d79017205fd37ff28b28e", + "dest": "cargo/vendor/snapbox-macros-0.3.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"ed1559baff8a696add3322b9be3e940d433e7bb4e38d79017205fd37ff28b28e\", \"files\": {}}", + "dest": "cargo/vendor/snapbox-macros-0.3.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/socks/socks-0.3.4.crate", + "sha256": "f0c3dbbd9ae980613c6dd8e28a9407b50509d3803b57624d5dfe8315218cd58b", + "dest": "cargo/vendor/socks-0.3.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"f0c3dbbd9ae980613c6dd8e28a9407b50509d3803b57624d5dfe8315218cd58b\", \"files\": {}}", + "dest": "cargo/vendor/socks-0.3.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/spin/spin-0.9.8.crate", + "sha256": "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67", + "dest": "cargo/vendor/spin-0.9.8" + }, + { + "type": "inline", + "contents": "{\"package\": \"6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67\", \"files\": {}}", + "dest": "cargo/vendor/spin-0.9.8", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/stacker/stacker-0.1.15.crate", + "sha256": "c886bd4480155fd3ef527d45e9ac8dd7118a898a46530b7b94c3e21866259fce", + "dest": "cargo/vendor/stacker-0.1.15" + }, + { + "type": "inline", + "contents": "{\"package\": \"c886bd4480155fd3ef527d45e9ac8dd7118a898a46530b7b94c3e21866259fce\", \"files\": {}}", + "dest": "cargo/vendor/stacker-0.1.15", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/static_assertions/static_assertions-1.1.0.crate", + "sha256": "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f", + "dest": "cargo/vendor/static_assertions-1.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f\", \"files\": {}}", + "dest": "cargo/vendor/static_assertions-1.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/strsim/strsim-0.10.0.crate", + "sha256": "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623", + "dest": "cargo/vendor/strsim-0.10.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623\", \"files\": {}}", + "dest": "cargo/vendor/strsim-0.10.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/syn/syn-1.0.109.crate", + "sha256": "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237", + "dest": "cargo/vendor/syn-1.0.109" + }, + { + "type": "inline", + "contents": "{\"package\": \"72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237\", \"files\": {}}", + "dest": "cargo/vendor/syn-1.0.109", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/syn/syn-2.0.39.crate", + "sha256": "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a", + "dest": "cargo/vendor/syn-2.0.39" + }, + { + "type": "inline", + "contents": "{\"package\": \"23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a\", \"files\": {}}", + "dest": "cargo/vendor/syn-2.0.39", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tar/tar-0.4.40.crate", + "sha256": "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb", + "dest": "cargo/vendor/tar-0.4.40" + }, + { + "type": "inline", + "contents": "{\"package\": \"b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb\", \"files\": {}}", + "dest": "cargo/vendor/tar-0.4.40", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/target-lexicon/target-lexicon-0.12.12.crate", + "sha256": "14c39fd04924ca3a864207c66fc2cd7d22d7c016007f9ce846cbb9326331930a", + "dest": "cargo/vendor/target-lexicon-0.12.12" + }, + { + "type": "inline", + "contents": "{\"package\": \"14c39fd04924ca3a864207c66fc2cd7d22d7c016007f9ce846cbb9326331930a\", \"files\": {}}", + "dest": "cargo/vendor/target-lexicon-0.12.12", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tempfile/tempfile-3.8.1.crate", + "sha256": "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5", + "dest": "cargo/vendor/tempfile-3.8.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5\", \"files\": {}}", + "dest": "cargo/vendor/tempfile-3.8.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/termcolor/termcolor-1.4.0.crate", + "sha256": "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449", + "dest": "cargo/vendor/termcolor-1.4.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449\", \"files\": {}}", + "dest": "cargo/vendor/termcolor-1.4.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/terminal_size/terminal_size-0.2.6.crate", + "sha256": "8e6bf6f19e9f8ed8d4048dc22981458ebcf406d67e94cd422e5ecd73d63b3237", + "dest": "cargo/vendor/terminal_size-0.2.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"8e6bf6f19e9f8ed8d4048dc22981458ebcf406d67e94cd422e5ecd73d63b3237\", \"files\": {}}", + "dest": "cargo/vendor/terminal_size-0.2.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/textwrap/textwrap-0.16.0.crate", + "sha256": "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d", + "dest": "cargo/vendor/textwrap-0.16.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d\", \"files\": {}}", + "dest": "cargo/vendor/textwrap-0.16.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/thiserror/thiserror-1.0.50.crate", + "sha256": "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2", + "dest": "cargo/vendor/thiserror-1.0.50" + }, + { + "type": "inline", + "contents": "{\"package\": \"f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2\", \"files\": {}}", + "dest": "cargo/vendor/thiserror-1.0.50", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/thiserror-impl/thiserror-impl-1.0.50.crate", + "sha256": "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8", + "dest": "cargo/vendor/thiserror-impl-1.0.50" + }, + { + "type": "inline", + "contents": "{\"package\": \"266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8\", \"files\": {}}", + "dest": "cargo/vendor/thiserror-impl-1.0.50", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/thread_local/thread_local-1.1.7.crate", + "sha256": "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152", + "dest": "cargo/vendor/thread_local-1.1.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152\", \"files\": {}}", + "dest": "cargo/vendor/thread_local-1.1.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/time/time-0.3.30.crate", + "sha256": "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5", + "dest": "cargo/vendor/time-0.3.30" + }, + { + "type": "inline", + "contents": "{\"package\": \"c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5\", \"files\": {}}", + "dest": "cargo/vendor/time-0.3.30", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/time-core/time-core-0.1.2.crate", + "sha256": "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3", + "dest": "cargo/vendor/time-core-0.1.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3\", \"files\": {}}", + "dest": "cargo/vendor/time-core-0.1.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/time-macros/time-macros-0.2.15.crate", + "sha256": "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20", + "dest": "cargo/vendor/time-macros-0.2.15" + }, + { + "type": "inline", + "contents": "{\"package\": \"4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20\", \"files\": {}}", + "dest": "cargo/vendor/time-macros-0.2.15", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tinyvec/tinyvec-1.6.0.crate", + "sha256": "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50", + "dest": "cargo/vendor/tinyvec-1.6.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50\", \"files\": {}}", + "dest": "cargo/vendor/tinyvec-1.6.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tinyvec_macros/tinyvec_macros-0.1.1.crate", + "sha256": "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20", + "dest": "cargo/vendor/tinyvec_macros-0.1.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20\", \"files\": {}}", + "dest": "cargo/vendor/tinyvec_macros-0.1.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/toml/toml-0.5.11.crate", + "sha256": "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234", + "dest": "cargo/vendor/toml-0.5.11" + }, + { + "type": "inline", + "contents": "{\"package\": \"f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234\", \"files\": {}}", + "dest": "cargo/vendor/toml-0.5.11", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/toml/toml-0.8.8.crate", + "sha256": "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35", + "dest": "cargo/vendor/toml-0.8.8" + }, + { + "type": "inline", + "contents": "{\"package\": \"a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35\", \"files\": {}}", + "dest": "cargo/vendor/toml-0.8.8", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/toml_datetime/toml_datetime-0.6.5.crate", + "sha256": "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1", + "dest": "cargo/vendor/toml_datetime-0.6.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1\", \"files\": {}}", + "dest": "cargo/vendor/toml_datetime-0.6.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/toml_edit/toml_edit-0.20.7.crate", + "sha256": "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81", + "dest": "cargo/vendor/toml_edit-0.20.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81\", \"files\": {}}", + "dest": "cargo/vendor/toml_edit-0.20.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/toml_edit/toml_edit-0.21.0.crate", + "sha256": "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03", + "dest": "cargo/vendor/toml_edit-0.21.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03\", \"files\": {}}", + "dest": "cargo/vendor/toml_edit-0.21.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tracing/tracing-0.1.40.crate", + "sha256": "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef", + "dest": "cargo/vendor/tracing-0.1.40" + }, + { + "type": "inline", + "contents": "{\"package\": \"c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef\", \"files\": {}}", + "dest": "cargo/vendor/tracing-0.1.40", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tracing-attributes/tracing-attributes-0.1.27.crate", + "sha256": "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7", + "dest": "cargo/vendor/tracing-attributes-0.1.27" + }, + { + "type": "inline", + "contents": "{\"package\": \"34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7\", \"files\": {}}", + "dest": "cargo/vendor/tracing-attributes-0.1.27", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tracing-core/tracing-core-0.1.32.crate", + "sha256": "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54", + "dest": "cargo/vendor/tracing-core-0.1.32" + }, + { + "type": "inline", + "contents": "{\"package\": \"c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54\", \"files\": {}}", + "dest": "cargo/vendor/tracing-core-0.1.32", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tracing-log/tracing-log-0.2.0.crate", + "sha256": "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3", + "dest": "cargo/vendor/tracing-log-0.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3\", \"files\": {}}", + "dest": "cargo/vendor/tracing-log-0.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tracing-serde/tracing-serde-0.1.3.crate", + "sha256": "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1", + "dest": "cargo/vendor/tracing-serde-0.1.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1\", \"files\": {}}", + "dest": "cargo/vendor/tracing-serde-0.1.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tracing-subscriber/tracing-subscriber-0.3.18.crate", + "sha256": "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b", + "dest": "cargo/vendor/tracing-subscriber-0.3.18" + }, + { + "type": "inline", + "contents": "{\"package\": \"ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b\", \"files\": {}}", + "dest": "cargo/vendor/tracing-subscriber-0.3.18", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/trycmd/trycmd-0.14.19.crate", + "sha256": "ed009372a42fb103e6f8767b9222925485e03cca032b700d203e2c5b67bee4fb", + "dest": "cargo/vendor/trycmd-0.14.19" + }, + { + "type": "inline", + "contents": "{\"package\": \"ed009372a42fb103e6f8767b9222925485e03cca032b700d203e2c5b67bee4fb\", \"files\": {}}", + "dest": "cargo/vendor/trycmd-0.14.19", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/twox-hash/twox-hash-1.6.3.crate", + "sha256": "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675", + "dest": "cargo/vendor/twox-hash-1.6.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675\", \"files\": {}}", + "dest": "cargo/vendor/twox-hash-1.6.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/typenum/typenum-1.17.0.crate", + "sha256": "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825", + "dest": "cargo/vendor/typenum-1.17.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825\", \"files\": {}}", + "dest": "cargo/vendor/typenum-1.17.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/unicase/unicase-2.7.0.crate", + "sha256": "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89", + "dest": "cargo/vendor/unicase-2.7.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89\", \"files\": {}}", + "dest": "cargo/vendor/unicase-2.7.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/unicode-bidi/unicode-bidi-0.3.13.crate", + "sha256": "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460", + "dest": "cargo/vendor/unicode-bidi-0.3.13" + }, + { + "type": "inline", + "contents": "{\"package\": \"92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460\", \"files\": {}}", + "dest": "cargo/vendor/unicode-bidi-0.3.13", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/unicode-ident/unicode-ident-1.0.12.crate", + "sha256": "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b", + "dest": "cargo/vendor/unicode-ident-1.0.12" + }, + { + "type": "inline", + "contents": "{\"package\": \"3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b\", \"files\": {}}", + "dest": "cargo/vendor/unicode-ident-1.0.12", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/unicode-linebreak/unicode-linebreak-0.1.5.crate", + "sha256": "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f", + "dest": "cargo/vendor/unicode-linebreak-0.1.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f\", \"files\": {}}", + "dest": "cargo/vendor/unicode-linebreak-0.1.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/unicode-normalization/unicode-normalization-0.1.22.crate", + "sha256": "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921", + "dest": "cargo/vendor/unicode-normalization-0.1.22" + }, + { + "type": "inline", + "contents": "{\"package\": \"5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921\", \"files\": {}}", + "dest": "cargo/vendor/unicode-normalization-0.1.22", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/unicode-width/unicode-width-0.1.11.crate", + "sha256": "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85", + "dest": "cargo/vendor/unicode-width-0.1.11" + }, + { + "type": "inline", + "contents": "{\"package\": \"e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85\", \"files\": {}}", + "dest": "cargo/vendor/unicode-width-0.1.11", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/untrusted/untrusted-0.9.0.crate", + "sha256": "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1", + "dest": "cargo/vendor/untrusted-0.9.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1\", \"files\": {}}", + "dest": "cargo/vendor/untrusted-0.9.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ureq/ureq-2.9.1.crate", + "sha256": "f8cdd25c339e200129fe4de81451814e5228c9b771d57378817d6117cc2b3f97", + "dest": "cargo/vendor/ureq-2.9.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"f8cdd25c339e200129fe4de81451814e5228c9b771d57378817d6117cc2b3f97\", \"files\": {}}", + "dest": "cargo/vendor/ureq-2.9.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/url/url-2.5.0.crate", + "sha256": "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633", + "dest": "cargo/vendor/url-2.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633\", \"files\": {}}", + "dest": "cargo/vendor/url-2.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/utf8parse/utf8parse-0.2.1.crate", + "sha256": "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a", + "dest": "cargo/vendor/utf8parse-0.2.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a\", \"files\": {}}", + "dest": "cargo/vendor/utf8parse-0.2.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/uuid/uuid-1.6.1.crate", + "sha256": "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560", + "dest": "cargo/vendor/uuid-1.6.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560\", \"files\": {}}", + "dest": "cargo/vendor/uuid-1.6.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/valuable/valuable-0.1.0.crate", + "sha256": "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d", + "dest": "cargo/vendor/valuable-0.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d\", \"files\": {}}", + "dest": "cargo/vendor/valuable-0.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/vcpkg/vcpkg-0.2.15.crate", + "sha256": "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426", + "dest": "cargo/vendor/vcpkg-0.2.15" + }, + { + "type": "inline", + "contents": "{\"package\": \"accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426\", \"files\": {}}", + "dest": "cargo/vendor/vcpkg-0.2.15", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/version_check/version_check-0.9.4.crate", + "sha256": "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f", + "dest": "cargo/vendor/version_check-0.9.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f\", \"files\": {}}", + "dest": "cargo/vendor/version_check-0.9.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/versions/versions-5.0.1.crate", + "sha256": "c73a36bc44e3039f51fbee93e39f41225f6b17b380eb70cc2aab942df06b34dd", + "dest": "cargo/vendor/versions-5.0.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"c73a36bc44e3039f51fbee93e39f41225f6b17b380eb70cc2aab942df06b34dd\", \"files\": {}}", + "dest": "cargo/vendor/versions-5.0.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wait-timeout/wait-timeout-0.2.0.crate", + "sha256": "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6", + "dest": "cargo/vendor/wait-timeout-0.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6\", \"files\": {}}", + "dest": "cargo/vendor/wait-timeout-0.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/walkdir/walkdir-2.4.0.crate", + "sha256": "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee", + "dest": "cargo/vendor/walkdir-2.4.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee\", \"files\": {}}", + "dest": "cargo/vendor/walkdir-2.4.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wasi/wasi-0.11.0+wasi-snapshot-preview1.crate", + "sha256": "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423", + "dest": "cargo/vendor/wasi-0.11.0+wasi-snapshot-preview1" + }, + { + "type": "inline", + "contents": "{\"package\": \"9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423\", \"files\": {}}", + "dest": "cargo/vendor/wasi-0.11.0+wasi-snapshot-preview1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/webpki-roots/webpki-roots-0.25.3.crate", + "sha256": "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10", + "dest": "cargo/vendor/webpki-roots-0.25.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10\", \"files\": {}}", + "dest": "cargo/vendor/webpki-roots-0.25.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/which/which-5.0.0.crate", + "sha256": "9bf3ea8596f3a0dd5980b46430f2058dfe2c36a27ccfbb1845d6fbfcd9ba6e14", + "dest": "cargo/vendor/which-5.0.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"9bf3ea8596f3a0dd5980b46430f2058dfe2c36a27ccfbb1845d6fbfcd9ba6e14\", \"files\": {}}", + "dest": "cargo/vendor/which-5.0.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wild/wild-2.2.0.crate", + "sha256": "10d01931a94d5a115a53f95292f51d316856b68a035618eb831bbba593a30b67", + "dest": "cargo/vendor/wild-2.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"10d01931a94d5a115a53f95292f51d316856b68a035618eb831bbba593a30b67\", \"files\": {}}", + "dest": "cargo/vendor/wild-2.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/winapi/winapi-0.3.9.crate", + "sha256": "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419", + "dest": "cargo/vendor/winapi-0.3.9" + }, + { + "type": "inline", + "contents": "{\"package\": \"5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419\", \"files\": {}}", + "dest": "cargo/vendor/winapi-0.3.9", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/winapi-i686-pc-windows-gnu/winapi-i686-pc-windows-gnu-0.4.0.crate", + "sha256": "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6", + "dest": "cargo/vendor/winapi-i686-pc-windows-gnu-0.4.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6\", \"files\": {}}", + "dest": "cargo/vendor/winapi-i686-pc-windows-gnu-0.4.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/winapi-util/winapi-util-0.1.6.crate", + "sha256": "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596", + "dest": "cargo/vendor/winapi-util-0.1.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596\", \"files\": {}}", + "dest": "cargo/vendor/winapi-util-0.1.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/winapi-x86_64-pc-windows-gnu/winapi-x86_64-pc-windows-gnu-0.4.0.crate", + "sha256": "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f", + "dest": "cargo/vendor/winapi-x86_64-pc-windows-gnu-0.4.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f\", \"files\": {}}", + "dest": "cargo/vendor/winapi-x86_64-pc-windows-gnu-0.4.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-sys/windows-sys-0.45.0.crate", + "sha256": "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0", + "dest": "cargo/vendor/windows-sys-0.45.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0\", \"files\": {}}", + "dest": "cargo/vendor/windows-sys-0.45.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-sys/windows-sys-0.48.0.crate", + "sha256": "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9", + "dest": "cargo/vendor/windows-sys-0.48.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9\", \"files\": {}}", + "dest": "cargo/vendor/windows-sys-0.48.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-sys/windows-sys-0.52.0.crate", + "sha256": "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d", + "dest": "cargo/vendor/windows-sys-0.52.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d\", \"files\": {}}", + "dest": "cargo/vendor/windows-sys-0.52.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-targets/windows-targets-0.42.2.crate", + "sha256": "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071", + "dest": "cargo/vendor/windows-targets-0.42.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071\", \"files\": {}}", + "dest": "cargo/vendor/windows-targets-0.42.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-targets/windows-targets-0.48.5.crate", + "sha256": "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c", + "dest": "cargo/vendor/windows-targets-0.48.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c\", \"files\": {}}", + "dest": "cargo/vendor/windows-targets-0.48.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-targets/windows-targets-0.52.0.crate", + "sha256": "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd", + "dest": "cargo/vendor/windows-targets-0.52.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd\", \"files\": {}}", + "dest": "cargo/vendor/windows-targets-0.52.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_aarch64_gnullvm/windows_aarch64_gnullvm-0.42.2.crate", + "sha256": "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8", + "dest": "cargo/vendor/windows_aarch64_gnullvm-0.42.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8\", \"files\": {}}", + "dest": "cargo/vendor/windows_aarch64_gnullvm-0.42.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_aarch64_gnullvm/windows_aarch64_gnullvm-0.48.5.crate", + "sha256": "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8", + "dest": "cargo/vendor/windows_aarch64_gnullvm-0.48.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8\", \"files\": {}}", + "dest": "cargo/vendor/windows_aarch64_gnullvm-0.48.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_aarch64_gnullvm/windows_aarch64_gnullvm-0.52.0.crate", + "sha256": "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea", + "dest": "cargo/vendor/windows_aarch64_gnullvm-0.52.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea\", \"files\": {}}", + "dest": "cargo/vendor/windows_aarch64_gnullvm-0.52.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_aarch64_msvc/windows_aarch64_msvc-0.42.2.crate", + "sha256": "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43", + "dest": "cargo/vendor/windows_aarch64_msvc-0.42.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43\", \"files\": {}}", + "dest": "cargo/vendor/windows_aarch64_msvc-0.42.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_aarch64_msvc/windows_aarch64_msvc-0.48.5.crate", + "sha256": "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc", + "dest": "cargo/vendor/windows_aarch64_msvc-0.48.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc\", \"files\": {}}", + "dest": "cargo/vendor/windows_aarch64_msvc-0.48.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_aarch64_msvc/windows_aarch64_msvc-0.52.0.crate", + "sha256": "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef", + "dest": "cargo/vendor/windows_aarch64_msvc-0.52.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef\", \"files\": {}}", + "dest": "cargo/vendor/windows_aarch64_msvc-0.52.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_i686_gnu/windows_i686_gnu-0.42.2.crate", + "sha256": "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f", + "dest": "cargo/vendor/windows_i686_gnu-0.42.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f\", \"files\": {}}", + "dest": "cargo/vendor/windows_i686_gnu-0.42.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_i686_gnu/windows_i686_gnu-0.48.5.crate", + "sha256": "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e", + "dest": "cargo/vendor/windows_i686_gnu-0.48.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e\", \"files\": {}}", + "dest": "cargo/vendor/windows_i686_gnu-0.48.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_i686_gnu/windows_i686_gnu-0.52.0.crate", + "sha256": "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313", + "dest": "cargo/vendor/windows_i686_gnu-0.52.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313\", \"files\": {}}", + "dest": "cargo/vendor/windows_i686_gnu-0.52.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_i686_msvc/windows_i686_msvc-0.42.2.crate", + "sha256": "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060", + "dest": "cargo/vendor/windows_i686_msvc-0.42.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060\", \"files\": {}}", + "dest": "cargo/vendor/windows_i686_msvc-0.42.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_i686_msvc/windows_i686_msvc-0.48.5.crate", + "sha256": "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406", + "dest": "cargo/vendor/windows_i686_msvc-0.48.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406\", \"files\": {}}", + "dest": "cargo/vendor/windows_i686_msvc-0.48.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_i686_msvc/windows_i686_msvc-0.52.0.crate", + "sha256": "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a", + "dest": "cargo/vendor/windows_i686_msvc-0.52.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a\", \"files\": {}}", + "dest": "cargo/vendor/windows_i686_msvc-0.52.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_x86_64_gnu/windows_x86_64_gnu-0.42.2.crate", + "sha256": "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36", + "dest": "cargo/vendor/windows_x86_64_gnu-0.42.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36\", \"files\": {}}", + "dest": "cargo/vendor/windows_x86_64_gnu-0.42.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_x86_64_gnu/windows_x86_64_gnu-0.48.5.crate", + "sha256": "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e", + "dest": "cargo/vendor/windows_x86_64_gnu-0.48.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e\", \"files\": {}}", + "dest": "cargo/vendor/windows_x86_64_gnu-0.48.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_x86_64_gnu/windows_x86_64_gnu-0.52.0.crate", + "sha256": "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd", + "dest": "cargo/vendor/windows_x86_64_gnu-0.52.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd\", \"files\": {}}", + "dest": "cargo/vendor/windows_x86_64_gnu-0.52.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_x86_64_gnullvm/windows_x86_64_gnullvm-0.42.2.crate", + "sha256": "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3", + "dest": "cargo/vendor/windows_x86_64_gnullvm-0.42.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3\", \"files\": {}}", + "dest": "cargo/vendor/windows_x86_64_gnullvm-0.42.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_x86_64_gnullvm/windows_x86_64_gnullvm-0.48.5.crate", + "sha256": "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc", + "dest": "cargo/vendor/windows_x86_64_gnullvm-0.48.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc\", \"files\": {}}", + "dest": "cargo/vendor/windows_x86_64_gnullvm-0.48.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_x86_64_gnullvm/windows_x86_64_gnullvm-0.52.0.crate", + "sha256": "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e", + "dest": "cargo/vendor/windows_x86_64_gnullvm-0.52.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e\", \"files\": {}}", + "dest": "cargo/vendor/windows_x86_64_gnullvm-0.52.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_x86_64_msvc/windows_x86_64_msvc-0.42.2.crate", + "sha256": "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0", + "dest": "cargo/vendor/windows_x86_64_msvc-0.42.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0\", \"files\": {}}", + "dest": "cargo/vendor/windows_x86_64_msvc-0.42.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_x86_64_msvc/windows_x86_64_msvc-0.48.5.crate", + "sha256": "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538", + "dest": "cargo/vendor/windows_x86_64_msvc-0.48.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538\", \"files\": {}}", + "dest": "cargo/vendor/windows_x86_64_msvc-0.48.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_x86_64_msvc/windows_x86_64_msvc-0.52.0.crate", + "sha256": "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04", + "dest": "cargo/vendor/windows_x86_64_msvc-0.52.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04\", \"files\": {}}", + "dest": "cargo/vendor/windows_x86_64_msvc-0.52.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/winnow/winnow-0.5.19.crate", + "sha256": "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b", + "dest": "cargo/vendor/winnow-0.5.19" + }, + { + "type": "inline", + "contents": "{\"package\": \"829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b\", \"files\": {}}", + "dest": "cargo/vendor/winnow-0.5.19", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/xattr/xattr-1.0.1.crate", + "sha256": "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985", + "dest": "cargo/vendor/xattr-1.0.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985\", \"files\": {}}", + "dest": "cargo/vendor/xattr-1.0.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/xwin/xwin-0.5.0.crate", + "sha256": "c43e0202f5457b48558096cb7b36d0e473f267551a89c82ed72d73b01dfd4007", + "dest": "cargo/vendor/xwin-0.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"c43e0202f5457b48558096cb7b36d0e473f267551a89c82ed72d73b01dfd4007\", \"files\": {}}", + "dest": "cargo/vendor/xwin-0.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/yansi/yansi-0.5.1.crate", + "sha256": "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec", + "dest": "cargo/vendor/yansi-0.5.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec\", \"files\": {}}", + "dest": "cargo/vendor/yansi-0.5.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zerocopy/zerocopy-0.7.28.crate", + "sha256": "7d6f15f7ade05d2a4935e34a457b936c23dc70a05cc1d97133dc99e7a3fe0f0e", + "dest": "cargo/vendor/zerocopy-0.7.28" + }, + { + "type": "inline", + "contents": "{\"package\": \"7d6f15f7ade05d2a4935e34a457b936c23dc70a05cc1d97133dc99e7a3fe0f0e\", \"files\": {}}", + "dest": "cargo/vendor/zerocopy-0.7.28", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zerocopy-derive/zerocopy-derive-0.7.28.crate", + "sha256": "dbbad221e3f78500350ecbd7dfa4e63ef945c05f4c61cb7f4d3f84cd0bba649b", + "dest": "cargo/vendor/zerocopy-derive-0.7.28" + }, + { + "type": "inline", + "contents": "{\"package\": \"dbbad221e3f78500350ecbd7dfa4e63ef945c05f4c61cb7f4d3f84cd0bba649b\", \"files\": {}}", + "dest": "cargo/vendor/zerocopy-derive-0.7.28", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zeroize/zeroize-1.7.0.crate", + "sha256": "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d", + "dest": "cargo/vendor/zeroize-1.7.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d\", \"files\": {}}", + "dest": "cargo/vendor/zeroize-1.7.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zip/zip-0.6.6.crate", + "sha256": "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261", + "dest": "cargo/vendor/zip-0.6.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261\", \"files\": {}}", + "dest": "cargo/vendor/zip-0.6.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "inline", + "contents": "[source.vendored-sources]\ndirectory = \"cargo/vendor\"\n\n[source.crates-io]\nreplace-with = \"vendored-sources\"\n", + "dest": "cargo", + "dest-filename": "config" + } +] diff --git a/build-aux/modules/sources/cargo-sources-ruff.json b/build-aux/modules/sources/cargo-sources-ruff.json new file mode 100644 index 000000000..49280a3a5 --- /dev/null +++ b/build-aux/modules/sources/cargo-sources-ruff.json @@ -0,0 +1,4584 @@ +[ + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/Inflector/Inflector-0.11.4.crate", + "sha256": "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3", + "dest": "cargo/vendor/Inflector-0.11.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3\", \"files\": {}}", + "dest": "cargo/vendor/Inflector-0.11.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/adler/adler-1.0.2.crate", + "sha256": "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe", + "dest": "cargo/vendor/adler-1.0.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe\", \"files\": {}}", + "dest": "cargo/vendor/adler-1.0.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ahash/ahash-0.8.7.crate", + "sha256": "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01", + "dest": "cargo/vendor/ahash-0.8.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01\", \"files\": {}}", + "dest": "cargo/vendor/ahash-0.8.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/aho-corasick/aho-corasick-1.1.2.crate", + "sha256": "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0", + "dest": "cargo/vendor/aho-corasick-1.1.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0\", \"files\": {}}", + "dest": "cargo/vendor/aho-corasick-1.1.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/android-tzdata/android-tzdata-0.1.1.crate", + "sha256": "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0", + "dest": "cargo/vendor/android-tzdata-0.1.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0\", \"files\": {}}", + "dest": "cargo/vendor/android-tzdata-0.1.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/android_system_properties/android_system_properties-0.1.5.crate", + "sha256": "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311", + "dest": "cargo/vendor/android_system_properties-0.1.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311\", \"files\": {}}", + "dest": "cargo/vendor/android_system_properties-0.1.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/anes/anes-0.1.6.crate", + "sha256": "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299", + "dest": "cargo/vendor/anes-0.1.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299\", \"files\": {}}", + "dest": "cargo/vendor/anes-0.1.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/annotate-snippets/annotate-snippets-0.6.1.crate", + "sha256": "c7021ce4924a3f25f802b2cccd1af585e39ea1a363a1aa2e72afe54b67a3a7a7", + "dest": "cargo/vendor/annotate-snippets-0.6.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"c7021ce4924a3f25f802b2cccd1af585e39ea1a363a1aa2e72afe54b67a3a7a7\", \"files\": {}}", + "dest": "cargo/vendor/annotate-snippets-0.6.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/annotate-snippets/annotate-snippets-0.9.2.crate", + "sha256": "ccaf7e9dfbb6ab22c82e473cd1a8a7bd313c19a5b7e40970f3d89ef5a5c9e81e", + "dest": "cargo/vendor/annotate-snippets-0.9.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"ccaf7e9dfbb6ab22c82e473cd1a8a7bd313c19a5b7e40970f3d89ef5a5c9e81e\", \"files\": {}}", + "dest": "cargo/vendor/annotate-snippets-0.9.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/anstream/anstream-0.6.11.crate", + "sha256": "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5", + "dest": "cargo/vendor/anstream-0.6.11" + }, + { + "type": "inline", + "contents": "{\"package\": \"6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5\", \"files\": {}}", + "dest": "cargo/vendor/anstream-0.6.11", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/anstyle/anstyle-1.0.6.crate", + "sha256": "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc", + "dest": "cargo/vendor/anstyle-1.0.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc\", \"files\": {}}", + "dest": "cargo/vendor/anstyle-1.0.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/anstyle-parse/anstyle-parse-0.2.3.crate", + "sha256": "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c", + "dest": "cargo/vendor/anstyle-parse-0.2.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c\", \"files\": {}}", + "dest": "cargo/vendor/anstyle-parse-0.2.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/anstyle-query/anstyle-query-1.0.2.crate", + "sha256": "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648", + "dest": "cargo/vendor/anstyle-query-1.0.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648\", \"files\": {}}", + "dest": "cargo/vendor/anstyle-query-1.0.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/anstyle-wincon/anstyle-wincon-3.0.2.crate", + "sha256": "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7", + "dest": "cargo/vendor/anstyle-wincon-3.0.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7\", \"files\": {}}", + "dest": "cargo/vendor/anstyle-wincon-3.0.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/anyhow/anyhow-1.0.80.crate", + "sha256": "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1", + "dest": "cargo/vendor/anyhow-1.0.80" + }, + { + "type": "inline", + "contents": "{\"package\": \"5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1\", \"files\": {}}", + "dest": "cargo/vendor/anyhow-1.0.80", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/argfile/argfile-0.1.6.crate", + "sha256": "1287c4f82a41c5085e65ee337c7934d71ab43d5187740a81fb69129013f6a5f6", + "dest": "cargo/vendor/argfile-0.1.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"1287c4f82a41c5085e65ee337c7934d71ab43d5187740a81fb69129013f6a5f6\", \"files\": {}}", + "dest": "cargo/vendor/argfile-0.1.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/arrayvec/arrayvec-0.7.4.crate", + "sha256": "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711", + "dest": "cargo/vendor/arrayvec-0.7.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711\", \"files\": {}}", + "dest": "cargo/vendor/arrayvec-0.7.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ascii-canvas/ascii-canvas-3.0.0.crate", + "sha256": "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6", + "dest": "cargo/vendor/ascii-canvas-3.0.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6\", \"files\": {}}", + "dest": "cargo/vendor/ascii-canvas-3.0.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/assert_cmd/assert_cmd-2.0.13.crate", + "sha256": "00ad3f3a942eee60335ab4342358c161ee296829e0d16ff42fc1d6cb07815467", + "dest": "cargo/vendor/assert_cmd-2.0.13" + }, + { + "type": "inline", + "contents": "{\"package\": \"00ad3f3a942eee60335ab4342358c161ee296829e0d16ff42fc1d6cb07815467\", \"files\": {}}", + "dest": "cargo/vendor/assert_cmd-2.0.13", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/autocfg/autocfg-1.1.0.crate", + "sha256": "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa", + "dest": "cargo/vendor/autocfg-1.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa\", \"files\": {}}", + "dest": "cargo/vendor/autocfg-1.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/base64/base64-0.21.7.crate", + "sha256": "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567", + "dest": "cargo/vendor/base64-0.21.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567\", \"files\": {}}", + "dest": "cargo/vendor/base64-0.21.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bincode/bincode-1.3.3.crate", + "sha256": "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad", + "dest": "cargo/vendor/bincode-1.3.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad\", \"files\": {}}", + "dest": "cargo/vendor/bincode-1.3.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bit-set/bit-set-0.5.3.crate", + "sha256": "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1", + "dest": "cargo/vendor/bit-set-0.5.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1\", \"files\": {}}", + "dest": "cargo/vendor/bit-set-0.5.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bit-vec/bit-vec-0.6.3.crate", + "sha256": "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb", + "dest": "cargo/vendor/bit-vec-0.6.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb\", \"files\": {}}", + "dest": "cargo/vendor/bit-vec-0.6.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bitflags/bitflags-1.3.2.crate", + "sha256": "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a", + "dest": "cargo/vendor/bitflags-1.3.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a\", \"files\": {}}", + "dest": "cargo/vendor/bitflags-1.3.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bitflags/bitflags-2.4.2.crate", + "sha256": "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf", + "dest": "cargo/vendor/bitflags-2.4.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf\", \"files\": {}}", + "dest": "cargo/vendor/bitflags-2.4.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bstr/bstr-1.9.1.crate", + "sha256": "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706", + "dest": "cargo/vendor/bstr-1.9.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706\", \"files\": {}}", + "dest": "cargo/vendor/bstr-1.9.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bumpalo/bumpalo-3.14.0.crate", + "sha256": "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec", + "dest": "cargo/vendor/bumpalo-3.14.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec\", \"files\": {}}", + "dest": "cargo/vendor/bumpalo-3.14.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cachedir/cachedir-0.3.1.crate", + "sha256": "4703f3937077db8fa35bee3c8789343c1aec2585f0146f09d658d4ccc0e8d873", + "dest": "cargo/vendor/cachedir-0.3.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"4703f3937077db8fa35bee3c8789343c1aec2585f0146f09d658d4ccc0e8d873\", \"files\": {}}", + "dest": "cargo/vendor/cachedir-0.3.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cast/cast-0.3.0.crate", + "sha256": "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5", + "dest": "cargo/vendor/cast-0.3.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5\", \"files\": {}}", + "dest": "cargo/vendor/cast-0.3.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cc/cc-1.0.83.crate", + "sha256": "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0", + "dest": "cargo/vendor/cc-1.0.83" + }, + { + "type": "inline", + "contents": "{\"package\": \"f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0\", \"files\": {}}", + "dest": "cargo/vendor/cc-1.0.83", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cfg-if/cfg-if-1.0.0.crate", + "sha256": "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd", + "dest": "cargo/vendor/cfg-if-1.0.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd\", \"files\": {}}", + "dest": "cargo/vendor/cfg-if-1.0.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/chic/chic-1.2.2.crate", + "sha256": "a5b5db619f3556839cb2223ae86ff3f9a09da2c5013be42bc9af08c9589bf70c", + "dest": "cargo/vendor/chic-1.2.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"a5b5db619f3556839cb2223ae86ff3f9a09da2c5013be42bc9af08c9589bf70c\", \"files\": {}}", + "dest": "cargo/vendor/chic-1.2.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/chrono/chrono-0.4.34.crate", + "sha256": "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b", + "dest": "cargo/vendor/chrono-0.4.34" + }, + { + "type": "inline", + "contents": "{\"package\": \"5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b\", \"files\": {}}", + "dest": "cargo/vendor/chrono-0.4.34", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ciborium/ciborium-0.2.2.crate", + "sha256": "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e", + "dest": "cargo/vendor/ciborium-0.2.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e\", \"files\": {}}", + "dest": "cargo/vendor/ciborium-0.2.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ciborium-io/ciborium-io-0.2.2.crate", + "sha256": "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757", + "dest": "cargo/vendor/ciborium-io-0.2.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757\", \"files\": {}}", + "dest": "cargo/vendor/ciborium-io-0.2.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ciborium-ll/ciborium-ll-0.2.2.crate", + "sha256": "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9", + "dest": "cargo/vendor/ciborium-ll-0.2.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9\", \"files\": {}}", + "dest": "cargo/vendor/ciborium-ll-0.2.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/clap/clap-4.5.1.crate", + "sha256": "c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da", + "dest": "cargo/vendor/clap-4.5.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da\", \"files\": {}}", + "dest": "cargo/vendor/clap-4.5.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/clap_builder/clap_builder-4.5.1.crate", + "sha256": "9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb", + "dest": "cargo/vendor/clap_builder-4.5.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb\", \"files\": {}}", + "dest": "cargo/vendor/clap_builder-4.5.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/clap_complete/clap_complete-4.5.0.crate", + "sha256": "299353be8209bd133b049bf1c63582d184a8b39fd9c04f15fe65f50f88bdfe6c", + "dest": "cargo/vendor/clap_complete-4.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"299353be8209bd133b049bf1c63582d184a8b39fd9c04f15fe65f50f88bdfe6c\", \"files\": {}}", + "dest": "cargo/vendor/clap_complete-4.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/clap_complete_command/clap_complete_command-0.5.1.crate", + "sha256": "183495371ea78d4c9ff638bfc6497d46fed2396e4f9c50aebc1278a4a9919a3d", + "dest": "cargo/vendor/clap_complete_command-0.5.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"183495371ea78d4c9ff638bfc6497d46fed2396e4f9c50aebc1278a4a9919a3d\", \"files\": {}}", + "dest": "cargo/vendor/clap_complete_command-0.5.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/clap_complete_fig/clap_complete_fig-4.5.0.crate", + "sha256": "54b3e65f91fabdd23cac3d57d39d5d938b4daabd070c335c006dccb866a61110", + "dest": "cargo/vendor/clap_complete_fig-4.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"54b3e65f91fabdd23cac3d57d39d5d938b4daabd070c335c006dccb866a61110\", \"files\": {}}", + "dest": "cargo/vendor/clap_complete_fig-4.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/clap_complete_nushell/clap_complete_nushell-0.1.11.crate", + "sha256": "5d02bc8b1a18ee47c4d2eec3fb5ac034dc68ebea6125b1509e9ccdffcddce66e", + "dest": "cargo/vendor/clap_complete_nushell-0.1.11" + }, + { + "type": "inline", + "contents": "{\"package\": \"5d02bc8b1a18ee47c4d2eec3fb5ac034dc68ebea6125b1509e9ccdffcddce66e\", \"files\": {}}", + "dest": "cargo/vendor/clap_complete_nushell-0.1.11", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/clap_derive/clap_derive-4.5.0.crate", + "sha256": "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47", + "dest": "cargo/vendor/clap_derive-4.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47\", \"files\": {}}", + "dest": "cargo/vendor/clap_derive-4.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/clap_lex/clap_lex-0.7.0.crate", + "sha256": "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce", + "dest": "cargo/vendor/clap_lex-0.7.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce\", \"files\": {}}", + "dest": "cargo/vendor/clap_lex-0.7.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/clearscreen/clearscreen-2.0.1.crate", + "sha256": "72f3f22f1a586604e62efd23f78218f3ccdecf7a33c4500db2d37d85a24fe994", + "dest": "cargo/vendor/clearscreen-2.0.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"72f3f22f1a586604e62efd23f78218f3ccdecf7a33c4500db2d37d85a24fe994\", \"files\": {}}", + "dest": "cargo/vendor/clearscreen-2.0.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/codspeed/codspeed-2.4.0.crate", + "sha256": "4b85b056aa0541d1975ebc524149dde72803a5d7352b6aebf9eabc44f9017246", + "dest": "cargo/vendor/codspeed-2.4.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"4b85b056aa0541d1975ebc524149dde72803a5d7352b6aebf9eabc44f9017246\", \"files\": {}}", + "dest": "cargo/vendor/codspeed-2.4.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/codspeed-criterion-compat/codspeed-criterion-compat-2.4.0.crate", + "sha256": "02ae9de916d6315a5129bca2fc7957285f0b9f77a2f6a8734a0a146caee2b0b6", + "dest": "cargo/vendor/codspeed-criterion-compat-2.4.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"02ae9de916d6315a5129bca2fc7957285f0b9f77a2f6a8734a0a146caee2b0b6\", \"files\": {}}", + "dest": "cargo/vendor/codspeed-criterion-compat-2.4.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/colorchoice/colorchoice-1.0.0.crate", + "sha256": "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7", + "dest": "cargo/vendor/colorchoice-1.0.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7\", \"files\": {}}", + "dest": "cargo/vendor/colorchoice-1.0.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/colored/colored-2.1.0.crate", + "sha256": "cbf2150cce219b664a8a70df7a1f933836724b503f8a413af9365b4dcc4d90b8", + "dest": "cargo/vendor/colored-2.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"cbf2150cce219b664a8a70df7a1f933836724b503f8a413af9365b4dcc4d90b8\", \"files\": {}}", + "dest": "cargo/vendor/colored-2.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/console/console-0.15.8.crate", + "sha256": "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb", + "dest": "cargo/vendor/console-0.15.8" + }, + { + "type": "inline", + "contents": "{\"package\": \"0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb\", \"files\": {}}", + "dest": "cargo/vendor/console-0.15.8", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/console_error_panic_hook/console_error_panic_hook-0.1.7.crate", + "sha256": "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc", + "dest": "cargo/vendor/console_error_panic_hook-0.1.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc\", \"files\": {}}", + "dest": "cargo/vendor/console_error_panic_hook-0.1.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/console_log/console_log-1.0.0.crate", + "sha256": "be8aed40e4edbf4d3b4431ab260b63fdc40f5780a4766824329ea0f1eefe3c0f", + "dest": "cargo/vendor/console_log-1.0.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"be8aed40e4edbf4d3b4431ab260b63fdc40f5780a4766824329ea0f1eefe3c0f\", \"files\": {}}", + "dest": "cargo/vendor/console_log-1.0.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/core-foundation-sys/core-foundation-sys-0.8.6.crate", + "sha256": "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f", + "dest": "cargo/vendor/core-foundation-sys-0.8.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f\", \"files\": {}}", + "dest": "cargo/vendor/core-foundation-sys-0.8.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/countme/countme-3.0.1.crate", + "sha256": "7704b5fdd17b18ae31c4c1da5a2e0305a2bf17b5249300a9ee9ed7b72114c636", + "dest": "cargo/vendor/countme-3.0.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"7704b5fdd17b18ae31c4c1da5a2e0305a2bf17b5249300a9ee9ed7b72114c636\", \"files\": {}}", + "dest": "cargo/vendor/countme-3.0.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/crc32fast/crc32fast-1.3.2.crate", + "sha256": "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d", + "dest": "cargo/vendor/crc32fast-1.3.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d\", \"files\": {}}", + "dest": "cargo/vendor/crc32fast-1.3.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/criterion/criterion-0.5.1.crate", + "sha256": "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f", + "dest": "cargo/vendor/criterion-0.5.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f\", \"files\": {}}", + "dest": "cargo/vendor/criterion-0.5.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/criterion-plot/criterion-plot-0.5.0.crate", + "sha256": "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1", + "dest": "cargo/vendor/criterion-plot-0.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1\", \"files\": {}}", + "dest": "cargo/vendor/criterion-plot-0.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/crossbeam-channel/crossbeam-channel-0.5.11.crate", + "sha256": "176dc175b78f56c0f321911d9c8eb2b77a78a4860b9c19db83835fea1a46649b", + "dest": "cargo/vendor/crossbeam-channel-0.5.11" + }, + { + "type": "inline", + "contents": "{\"package\": \"176dc175b78f56c0f321911d9c8eb2b77a78a4860b9c19db83835fea1a46649b\", \"files\": {}}", + "dest": "cargo/vendor/crossbeam-channel-0.5.11", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/crossbeam-deque/crossbeam-deque-0.8.5.crate", + "sha256": "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d", + "dest": "cargo/vendor/crossbeam-deque-0.8.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d\", \"files\": {}}", + "dest": "cargo/vendor/crossbeam-deque-0.8.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/crossbeam-epoch/crossbeam-epoch-0.9.18.crate", + "sha256": "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e", + "dest": "cargo/vendor/crossbeam-epoch-0.9.18" + }, + { + "type": "inline", + "contents": "{\"package\": \"5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e\", \"files\": {}}", + "dest": "cargo/vendor/crossbeam-epoch-0.9.18", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/crossbeam-utils/crossbeam-utils-0.8.19.crate", + "sha256": "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345", + "dest": "cargo/vendor/crossbeam-utils-0.8.19" + }, + { + "type": "inline", + "contents": "{\"package\": \"248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345\", \"files\": {}}", + "dest": "cargo/vendor/crossbeam-utils-0.8.19", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/crunchy/crunchy-0.2.2.crate", + "sha256": "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7", + "dest": "cargo/vendor/crunchy-0.2.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7\", \"files\": {}}", + "dest": "cargo/vendor/crunchy-0.2.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/darling/darling-0.20.5.crate", + "sha256": "fc5d6b04b3fd0ba9926f945895de7d806260a2d7431ba82e7edaecb043c4c6b8", + "dest": "cargo/vendor/darling-0.20.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"fc5d6b04b3fd0ba9926f945895de7d806260a2d7431ba82e7edaecb043c4c6b8\", \"files\": {}}", + "dest": "cargo/vendor/darling-0.20.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/darling_core/darling_core-0.20.5.crate", + "sha256": "04e48a959bcd5c761246f5d090ebc2fbf7b9cd527a492b07a67510c108f1e7e3", + "dest": "cargo/vendor/darling_core-0.20.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"04e48a959bcd5c761246f5d090ebc2fbf7b9cd527a492b07a67510c108f1e7e3\", \"files\": {}}", + "dest": "cargo/vendor/darling_core-0.20.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/darling_macro/darling_macro-0.20.5.crate", + "sha256": "1d1545d67a2149e1d93b7e5c7752dce5a7426eb5d1357ddcfd89336b94444f77", + "dest": "cargo/vendor/darling_macro-0.20.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"1d1545d67a2149e1d93b7e5c7752dce5a7426eb5d1357ddcfd89336b94444f77\", \"files\": {}}", + "dest": "cargo/vendor/darling_macro-0.20.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/diff/diff-0.1.13.crate", + "sha256": "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8", + "dest": "cargo/vendor/diff-0.1.13" + }, + { + "type": "inline", + "contents": "{\"package\": \"56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8\", \"files\": {}}", + "dest": "cargo/vendor/diff-0.1.13", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/difflib/difflib-0.4.0.crate", + "sha256": "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8", + "dest": "cargo/vendor/difflib-0.4.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8\", \"files\": {}}", + "dest": "cargo/vendor/difflib-0.4.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/dirs/dirs-4.0.0.crate", + "sha256": "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059", + "dest": "cargo/vendor/dirs-4.0.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059\", \"files\": {}}", + "dest": "cargo/vendor/dirs-4.0.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/dirs/dirs-5.0.1.crate", + "sha256": "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225", + "dest": "cargo/vendor/dirs-5.0.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225\", \"files\": {}}", + "dest": "cargo/vendor/dirs-5.0.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/dirs-next/dirs-next-2.0.0.crate", + "sha256": "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1", + "dest": "cargo/vendor/dirs-next-2.0.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1\", \"files\": {}}", + "dest": "cargo/vendor/dirs-next-2.0.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/dirs-sys/dirs-sys-0.3.7.crate", + "sha256": "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6", + "dest": "cargo/vendor/dirs-sys-0.3.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6\", \"files\": {}}", + "dest": "cargo/vendor/dirs-sys-0.3.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/dirs-sys/dirs-sys-0.4.1.crate", + "sha256": "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c", + "dest": "cargo/vendor/dirs-sys-0.4.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c\", \"files\": {}}", + "dest": "cargo/vendor/dirs-sys-0.4.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/dirs-sys-next/dirs-sys-next-0.1.2.crate", + "sha256": "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d", + "dest": "cargo/vendor/dirs-sys-next-0.1.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d\", \"files\": {}}", + "dest": "cargo/vendor/dirs-sys-next-0.1.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/doc-comment/doc-comment-0.3.3.crate", + "sha256": "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10", + "dest": "cargo/vendor/doc-comment-0.3.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10\", \"files\": {}}", + "dest": "cargo/vendor/doc-comment-0.3.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/drop_bomb/drop_bomb-0.1.5.crate", + "sha256": "9bda8e21c04aca2ae33ffc2fd8c23134f3cac46db123ba97bd9d3f3b8a4a85e1", + "dest": "cargo/vendor/drop_bomb-0.1.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"9bda8e21c04aca2ae33ffc2fd8c23134f3cac46db123ba97bd9d3f3b8a4a85e1\", \"files\": {}}", + "dest": "cargo/vendor/drop_bomb-0.1.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/dyn-clone/dyn-clone-1.0.16.crate", + "sha256": "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d", + "dest": "cargo/vendor/dyn-clone-1.0.16" + }, + { + "type": "inline", + "contents": "{\"package\": \"545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d\", \"files\": {}}", + "dest": "cargo/vendor/dyn-clone-1.0.16", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/either/either-1.9.0.crate", + "sha256": "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07", + "dest": "cargo/vendor/either-1.9.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07\", \"files\": {}}", + "dest": "cargo/vendor/either-1.9.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ena/ena-0.14.2.crate", + "sha256": "c533630cf40e9caa44bd91aadc88a75d75a4c3a12b4cfde353cbed41daa1e1f1", + "dest": "cargo/vendor/ena-0.14.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"c533630cf40e9caa44bd91aadc88a75d75a4c3a12b4cfde353cbed41daa1e1f1\", \"files\": {}}", + "dest": "cargo/vendor/ena-0.14.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/encode_unicode/encode_unicode-0.3.6.crate", + "sha256": "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f", + "dest": "cargo/vendor/encode_unicode-0.3.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f\", \"files\": {}}", + "dest": "cargo/vendor/encode_unicode-0.3.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/env_logger/env_logger-0.10.2.crate", + "sha256": "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580", + "dest": "cargo/vendor/env_logger-0.10.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580\", \"files\": {}}", + "dest": "cargo/vendor/env_logger-0.10.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/equivalent/equivalent-1.0.1.crate", + "sha256": "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5", + "dest": "cargo/vendor/equivalent-1.0.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5\", \"files\": {}}", + "dest": "cargo/vendor/equivalent-1.0.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/errno/errno-0.3.8.crate", + "sha256": "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245", + "dest": "cargo/vendor/errno-0.3.8" + }, + { + "type": "inline", + "contents": "{\"package\": \"a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245\", \"files\": {}}", + "dest": "cargo/vendor/errno-0.3.8", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/fastrand/fastrand-2.0.1.crate", + "sha256": "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5", + "dest": "cargo/vendor/fastrand-2.0.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5\", \"files\": {}}", + "dest": "cargo/vendor/fastrand-2.0.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/fern/fern-0.6.2.crate", + "sha256": "d9f0c14694cbd524c8720dd69b0e3179344f04ebb5f90f2e4a440c6ea3b2f1ee", + "dest": "cargo/vendor/fern-0.6.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"d9f0c14694cbd524c8720dd69b0e3179344f04ebb5f90f2e4a440c6ea3b2f1ee\", \"files\": {}}", + "dest": "cargo/vendor/fern-0.6.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/filetime/filetime-0.2.23.crate", + "sha256": "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd", + "dest": "cargo/vendor/filetime-0.2.23" + }, + { + "type": "inline", + "contents": "{\"package\": \"1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd\", \"files\": {}}", + "dest": "cargo/vendor/filetime-0.2.23", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/fixedbitset/fixedbitset-0.4.2.crate", + "sha256": "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80", + "dest": "cargo/vendor/fixedbitset-0.4.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80\", \"files\": {}}", + "dest": "cargo/vendor/fixedbitset-0.4.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/flate2/flate2-1.0.28.crate", + "sha256": "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e", + "dest": "cargo/vendor/flate2-1.0.28" + }, + { + "type": "inline", + "contents": "{\"package\": \"46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e\", \"files\": {}}", + "dest": "cargo/vendor/flate2-1.0.28", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/fnv/fnv-1.0.7.crate", + "sha256": "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1", + "dest": "cargo/vendor/fnv-1.0.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1\", \"files\": {}}", + "dest": "cargo/vendor/fnv-1.0.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/form_urlencoded/form_urlencoded-1.2.1.crate", + "sha256": "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456", + "dest": "cargo/vendor/form_urlencoded-1.2.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456\", \"files\": {}}", + "dest": "cargo/vendor/form_urlencoded-1.2.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/fs-err/fs-err-2.11.0.crate", + "sha256": "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41", + "dest": "cargo/vendor/fs-err-2.11.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41\", \"files\": {}}", + "dest": "cargo/vendor/fs-err-2.11.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/fsevent-sys/fsevent-sys-4.1.0.crate", + "sha256": "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2", + "dest": "cargo/vendor/fsevent-sys-4.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2\", \"files\": {}}", + "dest": "cargo/vendor/fsevent-sys-4.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/getopts/getopts-0.2.21.crate", + "sha256": "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5", + "dest": "cargo/vendor/getopts-0.2.21" + }, + { + "type": "inline", + "contents": "{\"package\": \"14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5\", \"files\": {}}", + "dest": "cargo/vendor/getopts-0.2.21", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/getrandom/getrandom-0.2.12.crate", + "sha256": "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5", + "dest": "cargo/vendor/getrandom-0.2.12" + }, + { + "type": "inline", + "contents": "{\"package\": \"190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5\", \"files\": {}}", + "dest": "cargo/vendor/getrandom-0.2.12", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/glob/glob-0.3.1.crate", + "sha256": "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b", + "dest": "cargo/vendor/glob-0.3.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b\", \"files\": {}}", + "dest": "cargo/vendor/glob-0.3.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/globset/globset-0.4.14.crate", + "sha256": "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1", + "dest": "cargo/vendor/globset-0.4.14" + }, + { + "type": "inline", + "contents": "{\"package\": \"57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1\", \"files\": {}}", + "dest": "cargo/vendor/globset-0.4.14", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/half/half-2.3.1.crate", + "sha256": "bc52e53916c08643f1b56ec082790d1e86a32e58dc5268f897f313fbae7b4872", + "dest": "cargo/vendor/half-2.3.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"bc52e53916c08643f1b56ec082790d1e86a32e58dc5268f897f313fbae7b4872\", \"files\": {}}", + "dest": "cargo/vendor/half-2.3.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/hashbrown/hashbrown-0.12.3.crate", + "sha256": "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888", + "dest": "cargo/vendor/hashbrown-0.12.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888\", \"files\": {}}", + "dest": "cargo/vendor/hashbrown-0.12.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/hashbrown/hashbrown-0.14.3.crate", + "sha256": "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604", + "dest": "cargo/vendor/hashbrown-0.14.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604\", \"files\": {}}", + "dest": "cargo/vendor/hashbrown-0.14.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/heck/heck-0.4.1.crate", + "sha256": "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8", + "dest": "cargo/vendor/heck-0.4.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8\", \"files\": {}}", + "dest": "cargo/vendor/heck-0.4.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/hermit-abi/hermit-abi-0.3.5.crate", + "sha256": "d0c62115964e08cb8039170eb33c1d0e2388a256930279edca206fff675f82c3", + "dest": "cargo/vendor/hermit-abi-0.3.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"d0c62115964e08cb8039170eb33c1d0e2388a256930279edca206fff675f82c3\", \"files\": {}}", + "dest": "cargo/vendor/hermit-abi-0.3.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/hexf-parse/hexf-parse-0.2.1.crate", + "sha256": "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df", + "dest": "cargo/vendor/hexf-parse-0.2.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df\", \"files\": {}}", + "dest": "cargo/vendor/hexf-parse-0.2.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/home/home-0.5.9.crate", + "sha256": "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5", + "dest": "cargo/vendor/home-0.5.9" + }, + { + "type": "inline", + "contents": "{\"package\": \"e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5\", \"files\": {}}", + "dest": "cargo/vendor/home-0.5.9", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/humantime/humantime-2.1.0.crate", + "sha256": "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4", + "dest": "cargo/vendor/humantime-2.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4\", \"files\": {}}", + "dest": "cargo/vendor/humantime-2.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/iana-time-zone/iana-time-zone-0.1.60.crate", + "sha256": "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141", + "dest": "cargo/vendor/iana-time-zone-0.1.60" + }, + { + "type": "inline", + "contents": "{\"package\": \"e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141\", \"files\": {}}", + "dest": "cargo/vendor/iana-time-zone-0.1.60", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/iana-time-zone-haiku/iana-time-zone-haiku-0.1.2.crate", + "sha256": "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f", + "dest": "cargo/vendor/iana-time-zone-haiku-0.1.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f\", \"files\": {}}", + "dest": "cargo/vendor/iana-time-zone-haiku-0.1.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ident_case/ident_case-1.0.1.crate", + "sha256": "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39", + "dest": "cargo/vendor/ident_case-1.0.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39\", \"files\": {}}", + "dest": "cargo/vendor/ident_case-1.0.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/idna/idna-0.5.0.crate", + "sha256": "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6", + "dest": "cargo/vendor/idna-0.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6\", \"files\": {}}", + "dest": "cargo/vendor/idna-0.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ignore/ignore-0.4.22.crate", + "sha256": "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1", + "dest": "cargo/vendor/ignore-0.4.22" + }, + { + "type": "inline", + "contents": "{\"package\": \"b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1\", \"files\": {}}", + "dest": "cargo/vendor/ignore-0.4.22", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/imara-diff/imara-diff-0.1.5.crate", + "sha256": "e98c1d0ad70fc91b8b9654b1f33db55e59579d3b3de2bffdced0fdb810570cb8", + "dest": "cargo/vendor/imara-diff-0.1.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"e98c1d0ad70fc91b8b9654b1f33db55e59579d3b3de2bffdced0fdb810570cb8\", \"files\": {}}", + "dest": "cargo/vendor/imara-diff-0.1.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/imperative/imperative-1.0.5.crate", + "sha256": "8b70798296d538cdaa6d652941fcc795963f8b9878b9e300c9fab7a522bd2fc0", + "dest": "cargo/vendor/imperative-1.0.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"8b70798296d538cdaa6d652941fcc795963f8b9878b9e300c9fab7a522bd2fc0\", \"files\": {}}", + "dest": "cargo/vendor/imperative-1.0.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/indexmap/indexmap-2.2.2.crate", + "sha256": "824b2ae422412366ba479e8111fd301f7b5faece8149317bb81925979a53f520", + "dest": "cargo/vendor/indexmap-2.2.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"824b2ae422412366ba479e8111fd301f7b5faece8149317bb81925979a53f520\", \"files\": {}}", + "dest": "cargo/vendor/indexmap-2.2.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/indicatif/indicatif-0.17.8.crate", + "sha256": "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3", + "dest": "cargo/vendor/indicatif-0.17.8" + }, + { + "type": "inline", + "contents": "{\"package\": \"763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3\", \"files\": {}}", + "dest": "cargo/vendor/indicatif-0.17.8", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/indoc/indoc-2.0.4.crate", + "sha256": "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8", + "dest": "cargo/vendor/indoc-2.0.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8\", \"files\": {}}", + "dest": "cargo/vendor/indoc-2.0.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/inotify/inotify-0.9.6.crate", + "sha256": "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff", + "dest": "cargo/vendor/inotify-0.9.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff\", \"files\": {}}", + "dest": "cargo/vendor/inotify-0.9.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/inotify-sys/inotify-sys-0.1.5.crate", + "sha256": "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb", + "dest": "cargo/vendor/inotify-sys-0.1.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb\", \"files\": {}}", + "dest": "cargo/vendor/inotify-sys-0.1.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/insta/insta-1.35.1.crate", + "sha256": "7c985c1bef99cf13c58fade470483d81a2bfe846ebde60ed28cc2dddec2df9e2", + "dest": "cargo/vendor/insta-1.35.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"7c985c1bef99cf13c58fade470483d81a2bfe846ebde60ed28cc2dddec2df9e2\", \"files\": {}}", + "dest": "cargo/vendor/insta-1.35.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/insta-cmd/insta-cmd-0.4.0.crate", + "sha256": "809d3023d1d6e8d5c2206f199251f75cb26180e41f18cb0f22dd119161cb5127", + "dest": "cargo/vendor/insta-cmd-0.4.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"809d3023d1d6e8d5c2206f199251f75cb26180e41f18cb0f22dd119161cb5127\", \"files\": {}}", + "dest": "cargo/vendor/insta-cmd-0.4.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/instant/instant-0.1.12.crate", + "sha256": "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c", + "dest": "cargo/vendor/instant-0.1.12" + }, + { + "type": "inline", + "contents": "{\"package\": \"7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c\", \"files\": {}}", + "dest": "cargo/vendor/instant-0.1.12", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/is-docker/is-docker-0.2.0.crate", + "sha256": "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3", + "dest": "cargo/vendor/is-docker-0.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3\", \"files\": {}}", + "dest": "cargo/vendor/is-docker-0.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/is-macro/is-macro-0.3.5.crate", + "sha256": "59a85abdc13717906baccb5a1e435556ce0df215f242892f721dff62bf25288f", + "dest": "cargo/vendor/is-macro-0.3.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"59a85abdc13717906baccb5a1e435556ce0df215f242892f721dff62bf25288f\", \"files\": {}}", + "dest": "cargo/vendor/is-macro-0.3.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/is-terminal/is-terminal-0.4.11.crate", + "sha256": "fe8f25ce1159c7740ff0b9b2f5cdf4a8428742ba7c112b9f20f22cd5219c7dab", + "dest": "cargo/vendor/is-terminal-0.4.11" + }, + { + "type": "inline", + "contents": "{\"package\": \"fe8f25ce1159c7740ff0b9b2f5cdf4a8428742ba7c112b9f20f22cd5219c7dab\", \"files\": {}}", + "dest": "cargo/vendor/is-terminal-0.4.11", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/is-wsl/is-wsl-0.4.0.crate", + "sha256": "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5", + "dest": "cargo/vendor/is-wsl-0.4.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5\", \"files\": {}}", + "dest": "cargo/vendor/is-wsl-0.4.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/itertools/itertools-0.10.5.crate", + "sha256": "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473", + "dest": "cargo/vendor/itertools-0.10.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473\", \"files\": {}}", + "dest": "cargo/vendor/itertools-0.10.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/itertools/itertools-0.12.1.crate", + "sha256": "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569", + "dest": "cargo/vendor/itertools-0.12.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569\", \"files\": {}}", + "dest": "cargo/vendor/itertools-0.12.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/itoa/itoa-1.0.10.crate", + "sha256": "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c", + "dest": "cargo/vendor/itoa-1.0.10" + }, + { + "type": "inline", + "contents": "{\"package\": \"b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c\", \"files\": {}}", + "dest": "cargo/vendor/itoa-1.0.10", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/js-sys/js-sys-0.3.68.crate", + "sha256": "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee", + "dest": "cargo/vendor/js-sys-0.3.68" + }, + { + "type": "inline", + "contents": "{\"package\": \"406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee\", \"files\": {}}", + "dest": "cargo/vendor/js-sys-0.3.68", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/kqueue/kqueue-1.0.8.crate", + "sha256": "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c", + "dest": "cargo/vendor/kqueue-1.0.8" + }, + { + "type": "inline", + "contents": "{\"package\": \"7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c\", \"files\": {}}", + "dest": "cargo/vendor/kqueue-1.0.8", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/kqueue-sys/kqueue-sys-1.0.4.crate", + "sha256": "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b", + "dest": "cargo/vendor/kqueue-sys-1.0.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b\", \"files\": {}}", + "dest": "cargo/vendor/kqueue-sys-1.0.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/lalrpop/lalrpop-0.20.0.crate", + "sha256": "da4081d44f4611b66c6dd725e6de3169f9f63905421e8626fcb86b6a898998b8", + "dest": "cargo/vendor/lalrpop-0.20.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"da4081d44f4611b66c6dd725e6de3169f9f63905421e8626fcb86b6a898998b8\", \"files\": {}}", + "dest": "cargo/vendor/lalrpop-0.20.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/lalrpop-util/lalrpop-util-0.20.0.crate", + "sha256": "3f35c735096c0293d313e8f2a641627472b83d01b937177fe76e5e2708d31e0d", + "dest": "cargo/vendor/lalrpop-util-0.20.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"3f35c735096c0293d313e8f2a641627472b83d01b937177fe76e5e2708d31e0d\", \"files\": {}}", + "dest": "cargo/vendor/lalrpop-util-0.20.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/lazy_static/lazy_static-1.4.0.crate", + "sha256": "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646", + "dest": "cargo/vendor/lazy_static-1.4.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646\", \"files\": {}}", + "dest": "cargo/vendor/lazy_static-1.4.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/lexical-parse-float/lexical-parse-float-0.8.5.crate", + "sha256": "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f", + "dest": "cargo/vendor/lexical-parse-float-0.8.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f\", \"files\": {}}", + "dest": "cargo/vendor/lexical-parse-float-0.8.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/lexical-parse-integer/lexical-parse-integer-0.8.6.crate", + "sha256": "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9", + "dest": "cargo/vendor/lexical-parse-integer-0.8.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9\", \"files\": {}}", + "dest": "cargo/vendor/lexical-parse-integer-0.8.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/lexical-util/lexical-util-0.8.5.crate", + "sha256": "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc", + "dest": "cargo/vendor/lexical-util-0.8.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc\", \"files\": {}}", + "dest": "cargo/vendor/lexical-util-0.8.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/libc/libc-0.2.153.crate", + "sha256": "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd", + "dest": "cargo/vendor/libc-0.2.153" + }, + { + "type": "inline", + "contents": "{\"package\": \"9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd\", \"files\": {}}", + "dest": "cargo/vendor/libc-0.2.153", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/libcst/libcst-1.1.0.crate", + "sha256": "bd5c2ff400caac657bf794181d885491bb97cc37c376f8cb4fa3a0cc2176a053", + "dest": "cargo/vendor/libcst-1.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"bd5c2ff400caac657bf794181d885491bb97cc37c376f8cb4fa3a0cc2176a053\", \"files\": {}}", + "dest": "cargo/vendor/libcst-1.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/libcst_derive/libcst_derive-1.1.0.crate", + "sha256": "6d7f252282b20bfec6fae65d351ab1df7e4552a6270dd7bb779ca9d6135aabe9", + "dest": "cargo/vendor/libcst_derive-1.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"6d7f252282b20bfec6fae65d351ab1df7e4552a6270dd7bb779ca9d6135aabe9\", \"files\": {}}", + "dest": "cargo/vendor/libcst_derive-1.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/libmimalloc-sys/libmimalloc-sys-0.1.35.crate", + "sha256": "3979b5c37ece694f1f5e51e7ecc871fdb0f517ed04ee45f88d15d6d553cb9664", + "dest": "cargo/vendor/libmimalloc-sys-0.1.35" + }, + { + "type": "inline", + "contents": "{\"package\": \"3979b5c37ece694f1f5e51e7ecc871fdb0f517ed04ee45f88d15d6d553cb9664\", \"files\": {}}", + "dest": "cargo/vendor/libmimalloc-sys-0.1.35", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/libredox/libredox-0.0.1.crate", + "sha256": "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8", + "dest": "cargo/vendor/libredox-0.0.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8\", \"files\": {}}", + "dest": "cargo/vendor/libredox-0.0.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/linked-hash-map/linked-hash-map-0.5.6.crate", + "sha256": "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f", + "dest": "cargo/vendor/linked-hash-map-0.5.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f\", \"files\": {}}", + "dest": "cargo/vendor/linked-hash-map-0.5.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/linux-raw-sys/linux-raw-sys-0.4.13.crate", + "sha256": "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c", + "dest": "cargo/vendor/linux-raw-sys-0.4.13" + }, + { + "type": "inline", + "contents": "{\"package\": \"01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c\", \"files\": {}}", + "dest": "cargo/vendor/linux-raw-sys-0.4.13", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/lock_api/lock_api-0.4.11.crate", + "sha256": "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45", + "dest": "cargo/vendor/lock_api-0.4.11" + }, + { + "type": "inline", + "contents": "{\"package\": \"3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45\", \"files\": {}}", + "dest": "cargo/vendor/lock_api-0.4.11", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/log/log-0.4.20.crate", + "sha256": "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f", + "dest": "cargo/vendor/log-0.4.20" + }, + { + "type": "inline", + "contents": "{\"package\": \"b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f\", \"files\": {}}", + "dest": "cargo/vendor/log-0.4.20", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/matchers/matchers-0.1.0.crate", + "sha256": "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558", + "dest": "cargo/vendor/matchers-0.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558\", \"files\": {}}", + "dest": "cargo/vendor/matchers-0.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/matches/matches-0.1.10.crate", + "sha256": "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5", + "dest": "cargo/vendor/matches-0.1.10" + }, + { + "type": "inline", + "contents": "{\"package\": \"2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5\", \"files\": {}}", + "dest": "cargo/vendor/matches-0.1.10", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/memchr/memchr-2.7.1.crate", + "sha256": "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149", + "dest": "cargo/vendor/memchr-2.7.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149\", \"files\": {}}", + "dest": "cargo/vendor/memchr-2.7.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/mimalloc/mimalloc-0.1.39.crate", + "sha256": "fa01922b5ea280a911e323e4d2fd24b7fe5cc4042e0d2cda3c40775cdc4bdc9c", + "dest": "cargo/vendor/mimalloc-0.1.39" + }, + { + "type": "inline", + "contents": "{\"package\": \"fa01922b5ea280a911e323e4d2fd24b7fe5cc4042e0d2cda3c40775cdc4bdc9c\", \"files\": {}}", + "dest": "cargo/vendor/mimalloc-0.1.39", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/minimal-lexical/minimal-lexical-0.2.1.crate", + "sha256": "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a", + "dest": "cargo/vendor/minimal-lexical-0.2.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a\", \"files\": {}}", + "dest": "cargo/vendor/minimal-lexical-0.2.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/miniz_oxide/miniz_oxide-0.7.2.crate", + "sha256": "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7", + "dest": "cargo/vendor/miniz_oxide-0.7.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7\", \"files\": {}}", + "dest": "cargo/vendor/miniz_oxide-0.7.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/mio/mio-0.8.10.crate", + "sha256": "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09", + "dest": "cargo/vendor/mio-0.8.10" + }, + { + "type": "inline", + "contents": "{\"package\": \"8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09\", \"files\": {}}", + "dest": "cargo/vendor/mio-0.8.10", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/natord/natord-1.0.9.crate", + "sha256": "308d96db8debc727c3fd9744aac51751243420e46edf401010908da7f8d5e57c", + "dest": "cargo/vendor/natord-1.0.9" + }, + { + "type": "inline", + "contents": "{\"package\": \"308d96db8debc727c3fd9744aac51751243420e46edf401010908da7f8d5e57c\", \"files\": {}}", + "dest": "cargo/vendor/natord-1.0.9", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/new_debug_unreachable/new_debug_unreachable-1.0.4.crate", + "sha256": "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54", + "dest": "cargo/vendor/new_debug_unreachable-1.0.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54\", \"files\": {}}", + "dest": "cargo/vendor/new_debug_unreachable-1.0.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/nextest-workspace-hack/nextest-workspace-hack-0.1.0.crate", + "sha256": "d906846a98739ed9d73d66e62c2641eef8321f1734b7a1156ab045a0248fb2b3", + "dest": "cargo/vendor/nextest-workspace-hack-0.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"d906846a98739ed9d73d66e62c2641eef8321f1734b7a1156ab045a0248fb2b3\", \"files\": {}}", + "dest": "cargo/vendor/nextest-workspace-hack-0.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/nix/nix-0.26.4.crate", + "sha256": "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b", + "dest": "cargo/vendor/nix-0.26.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b\", \"files\": {}}", + "dest": "cargo/vendor/nix-0.26.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/nom/nom-7.1.3.crate", + "sha256": "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a", + "dest": "cargo/vendor/nom-7.1.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a\", \"files\": {}}", + "dest": "cargo/vendor/nom-7.1.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/notify/notify-6.1.1.crate", + "sha256": "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d", + "dest": "cargo/vendor/notify-6.1.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d\", \"files\": {}}", + "dest": "cargo/vendor/notify-6.1.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/nu-ansi-term/nu-ansi-term-0.46.0.crate", + "sha256": "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84", + "dest": "cargo/vendor/nu-ansi-term-0.46.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84\", \"files\": {}}", + "dest": "cargo/vendor/nu-ansi-term-0.46.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/num-traits/num-traits-0.2.18.crate", + "sha256": "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a", + "dest": "cargo/vendor/num-traits-0.2.18" + }, + { + "type": "inline", + "contents": "{\"package\": \"da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a\", \"files\": {}}", + "dest": "cargo/vendor/num-traits-0.2.18", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/number_prefix/number_prefix-0.4.0.crate", + "sha256": "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3", + "dest": "cargo/vendor/number_prefix-0.4.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3\", \"files\": {}}", + "dest": "cargo/vendor/number_prefix-0.4.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/once_cell/once_cell-1.19.0.crate", + "sha256": "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92", + "dest": "cargo/vendor/once_cell-1.19.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92\", \"files\": {}}", + "dest": "cargo/vendor/once_cell-1.19.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/oorandom/oorandom-11.1.3.crate", + "sha256": "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575", + "dest": "cargo/vendor/oorandom-11.1.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575\", \"files\": {}}", + "dest": "cargo/vendor/oorandom-11.1.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/option-ext/option-ext-0.2.0.crate", + "sha256": "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d", + "dest": "cargo/vendor/option-ext-0.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d\", \"files\": {}}", + "dest": "cargo/vendor/option-ext-0.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/os_str_bytes/os_str_bytes-6.6.1.crate", + "sha256": "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1", + "dest": "cargo/vendor/os_str_bytes-6.6.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1\", \"files\": {}}", + "dest": "cargo/vendor/os_str_bytes-6.6.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/overload/overload-0.1.1.crate", + "sha256": "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39", + "dest": "cargo/vendor/overload-0.1.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39\", \"files\": {}}", + "dest": "cargo/vendor/overload-0.1.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/parking_lot/parking_lot-0.12.1.crate", + "sha256": "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f", + "dest": "cargo/vendor/parking_lot-0.12.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f\", \"files\": {}}", + "dest": "cargo/vendor/parking_lot-0.12.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/parking_lot_core/parking_lot_core-0.9.9.crate", + "sha256": "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e", + "dest": "cargo/vendor/parking_lot_core-0.9.9" + }, + { + "type": "inline", + "contents": "{\"package\": \"4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e\", \"files\": {}}", + "dest": "cargo/vendor/parking_lot_core-0.9.9", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/paste/paste-1.0.14.crate", + "sha256": "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c", + "dest": "cargo/vendor/paste-1.0.14" + }, + { + "type": "inline", + "contents": "{\"package\": \"de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c\", \"files\": {}}", + "dest": "cargo/vendor/paste-1.0.14", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/path-absolutize/path-absolutize-3.1.1.crate", + "sha256": "e4af381fe79fa195b4909485d99f73a80792331df0625188e707854f0b3383f5", + "dest": "cargo/vendor/path-absolutize-3.1.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"e4af381fe79fa195b4909485d99f73a80792331df0625188e707854f0b3383f5\", \"files\": {}}", + "dest": "cargo/vendor/path-absolutize-3.1.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/path-dedot/path-dedot-3.1.1.crate", + "sha256": "07ba0ad7e047712414213ff67533e6dd477af0a4e1d14fb52343e53d30ea9397", + "dest": "cargo/vendor/path-dedot-3.1.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"07ba0ad7e047712414213ff67533e6dd477af0a4e1d14fb52343e53d30ea9397\", \"files\": {}}", + "dest": "cargo/vendor/path-dedot-3.1.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/pathdiff/pathdiff-0.2.1.crate", + "sha256": "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd", + "dest": "cargo/vendor/pathdiff-0.2.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd\", \"files\": {}}", + "dest": "cargo/vendor/pathdiff-0.2.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/peg/peg-0.8.2.crate", + "sha256": "400bcab7d219c38abf8bd7cc2054eb9bbbd4312d66f6a5557d572a203f646f61", + "dest": "cargo/vendor/peg-0.8.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"400bcab7d219c38abf8bd7cc2054eb9bbbd4312d66f6a5557d572a203f646f61\", \"files\": {}}", + "dest": "cargo/vendor/peg-0.8.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/peg-macros/peg-macros-0.8.2.crate", + "sha256": "46e61cce859b76d19090f62da50a9fe92bab7c2a5f09e183763559a2ac392c90", + "dest": "cargo/vendor/peg-macros-0.8.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"46e61cce859b76d19090f62da50a9fe92bab7c2a5f09e183763559a2ac392c90\", \"files\": {}}", + "dest": "cargo/vendor/peg-macros-0.8.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/peg-runtime/peg-runtime-0.8.2.crate", + "sha256": "36bae92c60fa2398ce4678b98b2c4b5a7c61099961ca1fa305aec04a9ad28922", + "dest": "cargo/vendor/peg-runtime-0.8.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"36bae92c60fa2398ce4678b98b2c4b5a7c61099961ca1fa305aec04a9ad28922\", \"files\": {}}", + "dest": "cargo/vendor/peg-runtime-0.8.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/pep440_rs/pep440_rs-0.4.0.crate", + "sha256": "e0c29f9c43de378b4e4e0cd7dbcce0e5cfb80443de8c05620368b2948bc936a1", + "dest": "cargo/vendor/pep440_rs-0.4.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"e0c29f9c43de378b4e4e0cd7dbcce0e5cfb80443de8c05620368b2948bc936a1\", \"files\": {}}", + "dest": "cargo/vendor/pep440_rs-0.4.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/pep508_rs/pep508_rs-0.3.0.crate", + "sha256": "910c513bea0f4f833122321c0f20e8c704e01de98692f6989c2ec21f43d88b1e", + "dest": "cargo/vendor/pep508_rs-0.3.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"910c513bea0f4f833122321c0f20e8c704e01de98692f6989c2ec21f43d88b1e\", \"files\": {}}", + "dest": "cargo/vendor/pep508_rs-0.3.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/percent-encoding/percent-encoding-2.3.1.crate", + "sha256": "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e", + "dest": "cargo/vendor/percent-encoding-2.3.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e\", \"files\": {}}", + "dest": "cargo/vendor/percent-encoding-2.3.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/petgraph/petgraph-0.6.4.crate", + "sha256": "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9", + "dest": "cargo/vendor/petgraph-0.6.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9\", \"files\": {}}", + "dest": "cargo/vendor/petgraph-0.6.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/phf/phf-0.11.2.crate", + "sha256": "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc", + "dest": "cargo/vendor/phf-0.11.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc\", \"files\": {}}", + "dest": "cargo/vendor/phf-0.11.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/phf_codegen/phf_codegen-0.11.2.crate", + "sha256": "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a", + "dest": "cargo/vendor/phf_codegen-0.11.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a\", \"files\": {}}", + "dest": "cargo/vendor/phf_codegen-0.11.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/phf_generator/phf_generator-0.11.2.crate", + "sha256": "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0", + "dest": "cargo/vendor/phf_generator-0.11.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0\", \"files\": {}}", + "dest": "cargo/vendor/phf_generator-0.11.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/phf_shared/phf_shared-0.10.0.crate", + "sha256": "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096", + "dest": "cargo/vendor/phf_shared-0.10.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096\", \"files\": {}}", + "dest": "cargo/vendor/phf_shared-0.10.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/phf_shared/phf_shared-0.11.2.crate", + "sha256": "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b", + "dest": "cargo/vendor/phf_shared-0.11.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b\", \"files\": {}}", + "dest": "cargo/vendor/phf_shared-0.11.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/pin-project-lite/pin-project-lite-0.2.13.crate", + "sha256": "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58", + "dest": "cargo/vendor/pin-project-lite-0.2.13" + }, + { + "type": "inline", + "contents": "{\"package\": \"8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58\", \"files\": {}}", + "dest": "cargo/vendor/pin-project-lite-0.2.13", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/pmutil/pmutil-0.6.1.crate", + "sha256": "52a40bc70c2c58040d2d8b167ba9a5ff59fc9dab7ad44771cfde3dcfde7a09c6", + "dest": "cargo/vendor/pmutil-0.6.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"52a40bc70c2c58040d2d8b167ba9a5ff59fc9dab7ad44771cfde3dcfde7a09c6\", \"files\": {}}", + "dest": "cargo/vendor/pmutil-0.6.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/portable-atomic/portable-atomic-1.6.0.crate", + "sha256": "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0", + "dest": "cargo/vendor/portable-atomic-1.6.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0\", \"files\": {}}", + "dest": "cargo/vendor/portable-atomic-1.6.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ppv-lite86/ppv-lite86-0.2.17.crate", + "sha256": "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de", + "dest": "cargo/vendor/ppv-lite86-0.2.17" + }, + { + "type": "inline", + "contents": "{\"package\": \"5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de\", \"files\": {}}", + "dest": "cargo/vendor/ppv-lite86-0.2.17", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/precomputed-hash/precomputed-hash-0.1.1.crate", + "sha256": "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c", + "dest": "cargo/vendor/precomputed-hash-0.1.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c\", \"files\": {}}", + "dest": "cargo/vendor/precomputed-hash-0.1.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/predicates/predicates-3.1.0.crate", + "sha256": "68b87bfd4605926cdfefc1c3b5f8fe560e3feca9d5552cf68c466d3d8236c7e8", + "dest": "cargo/vendor/predicates-3.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"68b87bfd4605926cdfefc1c3b5f8fe560e3feca9d5552cf68c466d3d8236c7e8\", \"files\": {}}", + "dest": "cargo/vendor/predicates-3.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/predicates-core/predicates-core-1.0.6.crate", + "sha256": "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174", + "dest": "cargo/vendor/predicates-core-1.0.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174\", \"files\": {}}", + "dest": "cargo/vendor/predicates-core-1.0.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/predicates-tree/predicates-tree-1.0.9.crate", + "sha256": "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf", + "dest": "cargo/vendor/predicates-tree-1.0.9" + }, + { + "type": "inline", + "contents": "{\"package\": \"368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf\", \"files\": {}}", + "dest": "cargo/vendor/predicates-tree-1.0.9", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/pretty_assertions/pretty_assertions-1.4.0.crate", + "sha256": "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66", + "dest": "cargo/vendor/pretty_assertions-1.4.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66\", \"files\": {}}", + "dest": "cargo/vendor/pretty_assertions-1.4.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/proc-macro2/proc-macro2-1.0.78.crate", + "sha256": "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae", + "dest": "cargo/vendor/proc-macro2-1.0.78" + }, + { + "type": "inline", + "contents": "{\"package\": \"e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae\", \"files\": {}}", + "dest": "cargo/vendor/proc-macro2-1.0.78", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/pyproject-toml/pyproject-toml-0.9.0.crate", + "sha256": "95c3dd745f99aa3c554b7bb00859f7d18c2f1d6afd749ccc86d60b61e702abd9", + "dest": "cargo/vendor/pyproject-toml-0.9.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"95c3dd745f99aa3c554b7bb00859f7d18c2f1d6afd749ccc86d60b61e702abd9\", \"files\": {}}", + "dest": "cargo/vendor/pyproject-toml-0.9.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/quick-junit/quick-junit-0.3.5.crate", + "sha256": "1b9599bffc2cd7511355996e0cfd979266b2cfa3f3ff5247d07a3a6e1ded6158", + "dest": "cargo/vendor/quick-junit-0.3.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"1b9599bffc2cd7511355996e0cfd979266b2cfa3f3ff5247d07a3a6e1ded6158\", \"files\": {}}", + "dest": "cargo/vendor/quick-junit-0.3.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/quick-xml/quick-xml-0.31.0.crate", + "sha256": "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33", + "dest": "cargo/vendor/quick-xml-0.31.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33\", \"files\": {}}", + "dest": "cargo/vendor/quick-xml-0.31.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/quote/quote-1.0.35.crate", + "sha256": "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef", + "dest": "cargo/vendor/quote-1.0.35" + }, + { + "type": "inline", + "contents": "{\"package\": \"291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef\", \"files\": {}}", + "dest": "cargo/vendor/quote-1.0.35", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rand/rand-0.8.5.crate", + "sha256": "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404", + "dest": "cargo/vendor/rand-0.8.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404\", \"files\": {}}", + "dest": "cargo/vendor/rand-0.8.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rand_chacha/rand_chacha-0.3.1.crate", + "sha256": "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88", + "dest": "cargo/vendor/rand_chacha-0.3.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88\", \"files\": {}}", + "dest": "cargo/vendor/rand_chacha-0.3.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rand_core/rand_core-0.6.4.crate", + "sha256": "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c", + "dest": "cargo/vendor/rand_core-0.6.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c\", \"files\": {}}", + "dest": "cargo/vendor/rand_core-0.6.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rayon/rayon-1.8.1.crate", + "sha256": "fa7237101a77a10773db45d62004a272517633fbcc3df19d96455ede1122e051", + "dest": "cargo/vendor/rayon-1.8.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"fa7237101a77a10773db45d62004a272517633fbcc3df19d96455ede1122e051\", \"files\": {}}", + "dest": "cargo/vendor/rayon-1.8.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rayon-core/rayon-core-1.12.1.crate", + "sha256": "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2", + "dest": "cargo/vendor/rayon-core-1.12.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2\", \"files\": {}}", + "dest": "cargo/vendor/rayon-core-1.12.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/redox_syscall/redox_syscall-0.4.1.crate", + "sha256": "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa", + "dest": "cargo/vendor/redox_syscall-0.4.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa\", \"files\": {}}", + "dest": "cargo/vendor/redox_syscall-0.4.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/redox_users/redox_users-0.4.4.crate", + "sha256": "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4", + "dest": "cargo/vendor/redox_users-0.4.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4\", \"files\": {}}", + "dest": "cargo/vendor/redox_users-0.4.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/regex/regex-1.10.3.crate", + "sha256": "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15", + "dest": "cargo/vendor/regex-1.10.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15\", \"files\": {}}", + "dest": "cargo/vendor/regex-1.10.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/regex-automata/regex-automata-0.1.10.crate", + "sha256": "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132", + "dest": "cargo/vendor/regex-automata-0.1.10" + }, + { + "type": "inline", + "contents": "{\"package\": \"6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132\", \"files\": {}}", + "dest": "cargo/vendor/regex-automata-0.1.10", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/regex-automata/regex-automata-0.4.5.crate", + "sha256": "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd", + "dest": "cargo/vendor/regex-automata-0.4.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd\", \"files\": {}}", + "dest": "cargo/vendor/regex-automata-0.4.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/regex-syntax/regex-syntax-0.6.29.crate", + "sha256": "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1", + "dest": "cargo/vendor/regex-syntax-0.6.29" + }, + { + "type": "inline", + "contents": "{\"package\": \"f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1\", \"files\": {}}", + "dest": "cargo/vendor/regex-syntax-0.6.29", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/regex-syntax/regex-syntax-0.7.5.crate", + "sha256": "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da", + "dest": "cargo/vendor/regex-syntax-0.7.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da\", \"files\": {}}", + "dest": "cargo/vendor/regex-syntax-0.7.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/regex-syntax/regex-syntax-0.8.2.crate", + "sha256": "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f", + "dest": "cargo/vendor/regex-syntax-0.8.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f\", \"files\": {}}", + "dest": "cargo/vendor/regex-syntax-0.8.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/result-like/result-like-0.5.0.crate", + "sha256": "abf7172fef6a7d056b5c26bf6c826570267562d51697f4982ff3ba4aec68a9df", + "dest": "cargo/vendor/result-like-0.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"abf7172fef6a7d056b5c26bf6c826570267562d51697f4982ff3ba4aec68a9df\", \"files\": {}}", + "dest": "cargo/vendor/result-like-0.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/result-like-derive/result-like-derive-0.5.0.crate", + "sha256": "a8d6574c02e894d66370cfc681e5d68fedbc9a548fb55b30a96b3f0ae22d0fe5", + "dest": "cargo/vendor/result-like-derive-0.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"a8d6574c02e894d66370cfc681e5d68fedbc9a548fb55b30a96b3f0ae22d0fe5\", \"files\": {}}", + "dest": "cargo/vendor/result-like-derive-0.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ring/ring-0.17.7.crate", + "sha256": "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74", + "dest": "cargo/vendor/ring-0.17.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74\", \"files\": {}}", + "dest": "cargo/vendor/ring-0.17.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rust-stemmers/rust-stemmers-1.2.0.crate", + "sha256": "e46a2036019fdb888131db7a4c847a1063a7493f971ed94ea82c67eada63ca54", + "dest": "cargo/vendor/rust-stemmers-1.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"e46a2036019fdb888131db7a4c847a1063a7493f971ed94ea82c67eada63ca54\", \"files\": {}}", + "dest": "cargo/vendor/rust-stemmers-1.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustc-hash/rustc-hash-1.1.0.crate", + "sha256": "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2", + "dest": "cargo/vendor/rustc-hash-1.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2\", \"files\": {}}", + "dest": "cargo/vendor/rustc-hash-1.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustix/rustix-0.38.31.crate", + "sha256": "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949", + "dest": "cargo/vendor/rustix-0.38.31" + }, + { + "type": "inline", + "contents": "{\"package\": \"6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949\", \"files\": {}}", + "dest": "cargo/vendor/rustix-0.38.31", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustls/rustls-0.22.2.crate", + "sha256": "e87c9956bd9807afa1f77e0f7594af32566e830e088a5576d27c5b6f30f49d41", + "dest": "cargo/vendor/rustls-0.22.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"e87c9956bd9807afa1f77e0f7594af32566e830e088a5576d27c5b6f30f49d41\", \"files\": {}}", + "dest": "cargo/vendor/rustls-0.22.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustls-pki-types/rustls-pki-types-1.2.0.crate", + "sha256": "0a716eb65e3158e90e17cd93d855216e27bde02745ab842f2cab4a39dba1bacf", + "dest": "cargo/vendor/rustls-pki-types-1.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"0a716eb65e3158e90e17cd93d855216e27bde02745ab842f2cab4a39dba1bacf\", \"files\": {}}", + "dest": "cargo/vendor/rustls-pki-types-1.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustls-webpki/rustls-webpki-0.102.2.crate", + "sha256": "faaa0a62740bedb9b2ef5afa303da42764c012f743917351dc9a237ea1663610", + "dest": "cargo/vendor/rustls-webpki-0.102.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"faaa0a62740bedb9b2ef5afa303da42764c012f743917351dc9a237ea1663610\", \"files\": {}}", + "dest": "cargo/vendor/rustls-webpki-0.102.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustversion/rustversion-1.0.14.crate", + "sha256": "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4", + "dest": "cargo/vendor/rustversion-1.0.14" + }, + { + "type": "inline", + "contents": "{\"package\": \"7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4\", \"files\": {}}", + "dest": "cargo/vendor/rustversion-1.0.14", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ryu/ryu-1.0.16.crate", + "sha256": "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c", + "dest": "cargo/vendor/ryu-1.0.16" + }, + { + "type": "inline", + "contents": "{\"package\": \"f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c\", \"files\": {}}", + "dest": "cargo/vendor/ryu-1.0.16", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/same-file/same-file-1.0.6.crate", + "sha256": "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502", + "dest": "cargo/vendor/same-file-1.0.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502\", \"files\": {}}", + "dest": "cargo/vendor/same-file-1.0.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/schemars/schemars-0.8.16.crate", + "sha256": "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29", + "dest": "cargo/vendor/schemars-0.8.16" + }, + { + "type": "inline", + "contents": "{\"package\": \"45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29\", \"files\": {}}", + "dest": "cargo/vendor/schemars-0.8.16", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/schemars_derive/schemars_derive-0.8.16.crate", + "sha256": "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967", + "dest": "cargo/vendor/schemars_derive-0.8.16" + }, + { + "type": "inline", + "contents": "{\"package\": \"c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967\", \"files\": {}}", + "dest": "cargo/vendor/schemars_derive-0.8.16", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/scoped-tls/scoped-tls-1.0.1.crate", + "sha256": "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294", + "dest": "cargo/vendor/scoped-tls-1.0.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294\", \"files\": {}}", + "dest": "cargo/vendor/scoped-tls-1.0.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/scopeguard/scopeguard-1.2.0.crate", + "sha256": "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49", + "dest": "cargo/vendor/scopeguard-1.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49\", \"files\": {}}", + "dest": "cargo/vendor/scopeguard-1.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/seahash/seahash-4.1.0.crate", + "sha256": "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b", + "dest": "cargo/vendor/seahash-4.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b\", \"files\": {}}", + "dest": "cargo/vendor/seahash-4.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/semver/semver-1.0.22.crate", + "sha256": "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca", + "dest": "cargo/vendor/semver-1.0.22" + }, + { + "type": "inline", + "contents": "{\"package\": \"92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca\", \"files\": {}}", + "dest": "cargo/vendor/semver-1.0.22", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/serde/serde-1.0.197.crate", + "sha256": "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2", + "dest": "cargo/vendor/serde-1.0.197" + }, + { + "type": "inline", + "contents": "{\"package\": \"3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2\", \"files\": {}}", + "dest": "cargo/vendor/serde-1.0.197", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/serde-wasm-bindgen/serde-wasm-bindgen-0.6.4.crate", + "sha256": "4c1432112bce8b966497ac46519535189a3250a3812cd27a999678a69756f79f", + "dest": "cargo/vendor/serde-wasm-bindgen-0.6.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"4c1432112bce8b966497ac46519535189a3250a3812cd27a999678a69756f79f\", \"files\": {}}", + "dest": "cargo/vendor/serde-wasm-bindgen-0.6.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/serde_derive/serde_derive-1.0.197.crate", + "sha256": "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b", + "dest": "cargo/vendor/serde_derive-1.0.197" + }, + { + "type": "inline", + "contents": "{\"package\": \"7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b\", \"files\": {}}", + "dest": "cargo/vendor/serde_derive-1.0.197", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/serde_derive_internals/serde_derive_internals-0.26.0.crate", + "sha256": "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c", + "dest": "cargo/vendor/serde_derive_internals-0.26.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c\", \"files\": {}}", + "dest": "cargo/vendor/serde_derive_internals-0.26.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/serde_json/serde_json-1.0.113.crate", + "sha256": "69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79", + "dest": "cargo/vendor/serde_json-1.0.113" + }, + { + "type": "inline", + "contents": "{\"package\": \"69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79\", \"files\": {}}", + "dest": "cargo/vendor/serde_json-1.0.113", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/serde_spanned/serde_spanned-0.6.5.crate", + "sha256": "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1", + "dest": "cargo/vendor/serde_spanned-0.6.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1\", \"files\": {}}", + "dest": "cargo/vendor/serde_spanned-0.6.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/serde_test/serde_test-1.0.176.crate", + "sha256": "5a2f49ace1498612d14f7e0b8245519584db8299541dfe31a06374a828d620ab", + "dest": "cargo/vendor/serde_test-1.0.176" + }, + { + "type": "inline", + "contents": "{\"package\": \"5a2f49ace1498612d14f7e0b8245519584db8299541dfe31a06374a828d620ab\", \"files\": {}}", + "dest": "cargo/vendor/serde_test-1.0.176", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/serde_with/serde_with-3.6.1.crate", + "sha256": "15d167997bd841ec232f5b2b8e0e26606df2e7caa4c31b95ea9ca52b200bd270", + "dest": "cargo/vendor/serde_with-3.6.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"15d167997bd841ec232f5b2b8e0e26606df2e7caa4c31b95ea9ca52b200bd270\", \"files\": {}}", + "dest": "cargo/vendor/serde_with-3.6.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/serde_with_macros/serde_with_macros-3.6.1.crate", + "sha256": "865f9743393e638991566a8b7a479043c2c8da94a33e0a31f18214c9cae0a64d", + "dest": "cargo/vendor/serde_with_macros-3.6.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"865f9743393e638991566a8b7a479043c2c8da94a33e0a31f18214c9cae0a64d\", \"files\": {}}", + "dest": "cargo/vendor/serde_with_macros-3.6.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/sharded-slab/sharded-slab-0.1.7.crate", + "sha256": "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6", + "dest": "cargo/vendor/sharded-slab-0.1.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6\", \"files\": {}}", + "dest": "cargo/vendor/sharded-slab-0.1.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/shellexpand/shellexpand-3.1.0.crate", + "sha256": "da03fa3b94cc19e3ebfc88c4229c49d8f08cdbd1228870a45f0ffdf84988e14b", + "dest": "cargo/vendor/shellexpand-3.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"da03fa3b94cc19e3ebfc88c4229c49d8f08cdbd1228870a45f0ffdf84988e14b\", \"files\": {}}", + "dest": "cargo/vendor/shellexpand-3.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/shlex/shlex-1.3.0.crate", + "sha256": "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64", + "dest": "cargo/vendor/shlex-1.3.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64\", \"files\": {}}", + "dest": "cargo/vendor/shlex-1.3.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/similar/similar-2.4.0.crate", + "sha256": "32fea41aca09ee824cc9724996433064c89f7777e60762749a4170a14abbfa21", + "dest": "cargo/vendor/similar-2.4.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"32fea41aca09ee824cc9724996433064c89f7777e60762749a4170a14abbfa21\", \"files\": {}}", + "dest": "cargo/vendor/similar-2.4.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/siphasher/siphasher-0.3.11.crate", + "sha256": "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d", + "dest": "cargo/vendor/siphasher-0.3.11" + }, + { + "type": "inline", + "contents": "{\"package\": \"38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d\", \"files\": {}}", + "dest": "cargo/vendor/siphasher-0.3.11", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/smallvec/smallvec-1.13.1.crate", + "sha256": "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7", + "dest": "cargo/vendor/smallvec-1.13.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7\", \"files\": {}}", + "dest": "cargo/vendor/smallvec-1.13.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/spin/spin-0.9.8.crate", + "sha256": "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67", + "dest": "cargo/vendor/spin-0.9.8" + }, + { + "type": "inline", + "contents": "{\"package\": \"6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67\", \"files\": {}}", + "dest": "cargo/vendor/spin-0.9.8", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/static_assertions/static_assertions-1.1.0.crate", + "sha256": "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f", + "dest": "cargo/vendor/static_assertions-1.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f\", \"files\": {}}", + "dest": "cargo/vendor/static_assertions-1.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/string_cache/string_cache-0.8.7.crate", + "sha256": "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b", + "dest": "cargo/vendor/string_cache-0.8.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b\", \"files\": {}}", + "dest": "cargo/vendor/string_cache-0.8.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/strip-ansi-escapes/strip-ansi-escapes-0.2.0.crate", + "sha256": "55ff8ef943b384c414f54aefa961dd2bd853add74ec75e7ac74cf91dba62bcfa", + "dest": "cargo/vendor/strip-ansi-escapes-0.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"55ff8ef943b384c414f54aefa961dd2bd853add74ec75e7ac74cf91dba62bcfa\", \"files\": {}}", + "dest": "cargo/vendor/strip-ansi-escapes-0.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/strsim/strsim-0.10.0.crate", + "sha256": "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623", + "dest": "cargo/vendor/strsim-0.10.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623\", \"files\": {}}", + "dest": "cargo/vendor/strsim-0.10.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/strsim/strsim-0.11.0.crate", + "sha256": "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01", + "dest": "cargo/vendor/strsim-0.11.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01\", \"files\": {}}", + "dest": "cargo/vendor/strsim-0.11.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/strum/strum-0.25.0.crate", + "sha256": "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125", + "dest": "cargo/vendor/strum-0.25.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125\", \"files\": {}}", + "dest": "cargo/vendor/strum-0.25.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/strum_macros/strum_macros-0.25.3.crate", + "sha256": "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0", + "dest": "cargo/vendor/strum_macros-0.25.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0\", \"files\": {}}", + "dest": "cargo/vendor/strum_macros-0.25.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/subtle/subtle-2.5.0.crate", + "sha256": "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc", + "dest": "cargo/vendor/subtle-2.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc\", \"files\": {}}", + "dest": "cargo/vendor/subtle-2.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/syn/syn-1.0.109.crate", + "sha256": "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237", + "dest": "cargo/vendor/syn-1.0.109" + }, + { + "type": "inline", + "contents": "{\"package\": \"72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237\", \"files\": {}}", + "dest": "cargo/vendor/syn-1.0.109", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/syn/syn-2.0.51.crate", + "sha256": "6ab617d94515e94ae53b8406c628598680aa0c9587474ecbe58188f7b345d66c", + "dest": "cargo/vendor/syn-2.0.51" + }, + { + "type": "inline", + "contents": "{\"package\": \"6ab617d94515e94ae53b8406c628598680aa0c9587474ecbe58188f7b345d66c\", \"files\": {}}", + "dest": "cargo/vendor/syn-2.0.51", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tempfile/tempfile-3.10.0.crate", + "sha256": "a365e8cd18e44762ef95d87f284f4b5cd04107fec2ff3052bd6a3e6069669e67", + "dest": "cargo/vendor/tempfile-3.10.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"a365e8cd18e44762ef95d87f284f4b5cd04107fec2ff3052bd6a3e6069669e67\", \"files\": {}}", + "dest": "cargo/vendor/tempfile-3.10.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/term/term-0.7.0.crate", + "sha256": "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f", + "dest": "cargo/vendor/term-0.7.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f\", \"files\": {}}", + "dest": "cargo/vendor/term-0.7.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/termcolor/termcolor-1.4.1.crate", + "sha256": "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755", + "dest": "cargo/vendor/termcolor-1.4.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755\", \"files\": {}}", + "dest": "cargo/vendor/termcolor-1.4.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/terminal_size/terminal_size-0.3.0.crate", + "sha256": "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7", + "dest": "cargo/vendor/terminal_size-0.3.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7\", \"files\": {}}", + "dest": "cargo/vendor/terminal_size-0.3.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/terminfo/terminfo-0.8.0.crate", + "sha256": "666cd3a6681775d22b200409aad3b089c5b99fb11ecdd8a204d9d62f8148498f", + "dest": "cargo/vendor/terminfo-0.8.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"666cd3a6681775d22b200409aad3b089c5b99fb11ecdd8a204d9d62f8148498f\", \"files\": {}}", + "dest": "cargo/vendor/terminfo-0.8.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/termtree/termtree-0.4.1.crate", + "sha256": "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76", + "dest": "cargo/vendor/termtree-0.4.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76\", \"files\": {}}", + "dest": "cargo/vendor/termtree-0.4.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/test-case/test-case-3.3.1.crate", + "sha256": "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8", + "dest": "cargo/vendor/test-case-3.3.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8\", \"files\": {}}", + "dest": "cargo/vendor/test-case-3.3.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/test-case-core/test-case-core-3.3.1.crate", + "sha256": "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f", + "dest": "cargo/vendor/test-case-core-3.3.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f\", \"files\": {}}", + "dest": "cargo/vendor/test-case-core-3.3.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/test-case-macros/test-case-macros-3.3.1.crate", + "sha256": "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb", + "dest": "cargo/vendor/test-case-macros-3.3.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb\", \"files\": {}}", + "dest": "cargo/vendor/test-case-macros-3.3.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/thiserror/thiserror-1.0.57.crate", + "sha256": "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b", + "dest": "cargo/vendor/thiserror-1.0.57" + }, + { + "type": "inline", + "contents": "{\"package\": \"1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b\", \"files\": {}}", + "dest": "cargo/vendor/thiserror-1.0.57", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/thiserror-impl/thiserror-impl-1.0.57.crate", + "sha256": "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81", + "dest": "cargo/vendor/thiserror-impl-1.0.57" + }, + { + "type": "inline", + "contents": "{\"package\": \"a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81\", \"files\": {}}", + "dest": "cargo/vendor/thiserror-impl-1.0.57", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/thread_local/thread_local-1.1.7.crate", + "sha256": "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152", + "dest": "cargo/vendor/thread_local-1.1.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152\", \"files\": {}}", + "dest": "cargo/vendor/thread_local-1.1.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tikv-jemalloc-sys/tikv-jemalloc-sys-0.5.4+5.3.0-patched.crate", + "sha256": "9402443cb8fd499b6f327e40565234ff34dbda27460c5b47db0db77443dd85d1", + "dest": "cargo/vendor/tikv-jemalloc-sys-0.5.4+5.3.0-patched" + }, + { + "type": "inline", + "contents": "{\"package\": \"9402443cb8fd499b6f327e40565234ff34dbda27460c5b47db0db77443dd85d1\", \"files\": {}}", + "dest": "cargo/vendor/tikv-jemalloc-sys-0.5.4+5.3.0-patched", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tikv-jemallocator/tikv-jemallocator-0.5.4.crate", + "sha256": "965fe0c26be5c56c94e38ba547249074803efd52adfb66de62107d95aab3eaca", + "dest": "cargo/vendor/tikv-jemallocator-0.5.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"965fe0c26be5c56c94e38ba547249074803efd52adfb66de62107d95aab3eaca\", \"files\": {}}", + "dest": "cargo/vendor/tikv-jemallocator-0.5.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/time/time-0.3.20.crate", + "sha256": "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890", + "dest": "cargo/vendor/time-0.3.20" + }, + { + "type": "inline", + "contents": "{\"package\": \"cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890\", \"files\": {}}", + "dest": "cargo/vendor/time-0.3.20", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/time-core/time-core-0.1.0.crate", + "sha256": "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd", + "dest": "cargo/vendor/time-core-0.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd\", \"files\": {}}", + "dest": "cargo/vendor/time-core-0.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tiny-keccak/tiny-keccak-2.0.2.crate", + "sha256": "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237", + "dest": "cargo/vendor/tiny-keccak-2.0.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237\", \"files\": {}}", + "dest": "cargo/vendor/tiny-keccak-2.0.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tinytemplate/tinytemplate-1.2.1.crate", + "sha256": "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc", + "dest": "cargo/vendor/tinytemplate-1.2.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc\", \"files\": {}}", + "dest": "cargo/vendor/tinytemplate-1.2.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tinyvec/tinyvec-1.6.0.crate", + "sha256": "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50", + "dest": "cargo/vendor/tinyvec-1.6.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50\", \"files\": {}}", + "dest": "cargo/vendor/tinyvec-1.6.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tinyvec_macros/tinyvec_macros-0.1.1.crate", + "sha256": "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20", + "dest": "cargo/vendor/tinyvec_macros-0.1.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20\", \"files\": {}}", + "dest": "cargo/vendor/tinyvec_macros-0.1.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/toml/toml-0.8.10.crate", + "sha256": "9a9aad4a3066010876e8dcf5a8a06e70a558751117a145c6ce2b82c2e2054290", + "dest": "cargo/vendor/toml-0.8.10" + }, + { + "type": "inline", + "contents": "{\"package\": \"9a9aad4a3066010876e8dcf5a8a06e70a558751117a145c6ce2b82c2e2054290\", \"files\": {}}", + "dest": "cargo/vendor/toml-0.8.10", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/toml_datetime/toml_datetime-0.6.5.crate", + "sha256": "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1", + "dest": "cargo/vendor/toml_datetime-0.6.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1\", \"files\": {}}", + "dest": "cargo/vendor/toml_datetime-0.6.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/toml_edit/toml_edit-0.22.4.crate", + "sha256": "0c9ffdf896f8daaabf9b66ba8e77ea1ed5ed0f72821b398aba62352e95062951", + "dest": "cargo/vendor/toml_edit-0.22.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"0c9ffdf896f8daaabf9b66ba8e77ea1ed5ed0f72821b398aba62352e95062951\", \"files\": {}}", + "dest": "cargo/vendor/toml_edit-0.22.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tracing/tracing-0.1.40.crate", + "sha256": "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef", + "dest": "cargo/vendor/tracing-0.1.40" + }, + { + "type": "inline", + "contents": "{\"package\": \"c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef\", \"files\": {}}", + "dest": "cargo/vendor/tracing-0.1.40", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tracing-attributes/tracing-attributes-0.1.27.crate", + "sha256": "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7", + "dest": "cargo/vendor/tracing-attributes-0.1.27" + }, + { + "type": "inline", + "contents": "{\"package\": \"34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7\", \"files\": {}}", + "dest": "cargo/vendor/tracing-attributes-0.1.27", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tracing-core/tracing-core-0.1.32.crate", + "sha256": "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54", + "dest": "cargo/vendor/tracing-core-0.1.32" + }, + { + "type": "inline", + "contents": "{\"package\": \"c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54\", \"files\": {}}", + "dest": "cargo/vendor/tracing-core-0.1.32", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tracing-indicatif/tracing-indicatif-0.3.6.crate", + "sha256": "069580424efe11d97c3fef4197fa98c004fa26672cc71ad8770d224e23b1951d", + "dest": "cargo/vendor/tracing-indicatif-0.3.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"069580424efe11d97c3fef4197fa98c004fa26672cc71ad8770d224e23b1951d\", \"files\": {}}", + "dest": "cargo/vendor/tracing-indicatif-0.3.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tracing-log/tracing-log-0.2.0.crate", + "sha256": "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3", + "dest": "cargo/vendor/tracing-log-0.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3\", \"files\": {}}", + "dest": "cargo/vendor/tracing-log-0.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tracing-subscriber/tracing-subscriber-0.3.18.crate", + "sha256": "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b", + "dest": "cargo/vendor/tracing-subscriber-0.3.18" + }, + { + "type": "inline", + "contents": "{\"package\": \"ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b\", \"files\": {}}", + "dest": "cargo/vendor/tracing-subscriber-0.3.18", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/typed-arena/typed-arena-2.0.2.crate", + "sha256": "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a", + "dest": "cargo/vendor/typed-arena-2.0.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a\", \"files\": {}}", + "dest": "cargo/vendor/typed-arena-2.0.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/unic-char-property/unic-char-property-0.9.0.crate", + "sha256": "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221", + "dest": "cargo/vendor/unic-char-property-0.9.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221\", \"files\": {}}", + "dest": "cargo/vendor/unic-char-property-0.9.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/unic-char-range/unic-char-range-0.9.0.crate", + "sha256": "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc", + "dest": "cargo/vendor/unic-char-range-0.9.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc\", \"files\": {}}", + "dest": "cargo/vendor/unic-char-range-0.9.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/unic-common/unic-common-0.9.0.crate", + "sha256": "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc", + "dest": "cargo/vendor/unic-common-0.9.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc\", \"files\": {}}", + "dest": "cargo/vendor/unic-common-0.9.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/unic-ucd-category/unic-ucd-category-0.9.0.crate", + "sha256": "1b8d4591f5fcfe1bd4453baaf803c40e1b1e69ff8455c47620440b46efef91c0", + "dest": "cargo/vendor/unic-ucd-category-0.9.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"1b8d4591f5fcfe1bd4453baaf803c40e1b1e69ff8455c47620440b46efef91c0\", \"files\": {}}", + "dest": "cargo/vendor/unic-ucd-category-0.9.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/unic-ucd-version/unic-ucd-version-0.9.0.crate", + "sha256": "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4", + "dest": "cargo/vendor/unic-ucd-version-0.9.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4\", \"files\": {}}", + "dest": "cargo/vendor/unic-ucd-version-0.9.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/unicode-bidi/unicode-bidi-0.3.15.crate", + "sha256": "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75", + "dest": "cargo/vendor/unicode-bidi-0.3.15" + }, + { + "type": "inline", + "contents": "{\"package\": \"08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75\", \"files\": {}}", + "dest": "cargo/vendor/unicode-bidi-0.3.15", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/unicode-ident/unicode-ident-1.0.12.crate", + "sha256": "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b", + "dest": "cargo/vendor/unicode-ident-1.0.12" + }, + { + "type": "inline", + "contents": "{\"package\": \"3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b\", \"files\": {}}", + "dest": "cargo/vendor/unicode-ident-1.0.12", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/unicode-normalization/unicode-normalization-0.1.22.crate", + "sha256": "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921", + "dest": "cargo/vendor/unicode-normalization-0.1.22" + }, + { + "type": "inline", + "contents": "{\"package\": \"5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921\", \"files\": {}}", + "dest": "cargo/vendor/unicode-normalization-0.1.22", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/unicode-width/unicode-width-0.1.11.crate", + "sha256": "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85", + "dest": "cargo/vendor/unicode-width-0.1.11" + }, + { + "type": "inline", + "contents": "{\"package\": \"e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85\", \"files\": {}}", + "dest": "cargo/vendor/unicode-width-0.1.11", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/unicode-xid/unicode-xid-0.2.4.crate", + "sha256": "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c", + "dest": "cargo/vendor/unicode-xid-0.2.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c\", \"files\": {}}", + "dest": "cargo/vendor/unicode-xid-0.2.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/unicode_names2/unicode_names2-1.2.1.crate", + "sha256": "ac64ef2f016dc69dfa8283394a70b057066eb054d5fcb6b9eb17bd2ec5097211", + "dest": "cargo/vendor/unicode_names2-1.2.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"ac64ef2f016dc69dfa8283394a70b057066eb054d5fcb6b9eb17bd2ec5097211\", \"files\": {}}", + "dest": "cargo/vendor/unicode_names2-1.2.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/unicode_names2_generator/unicode_names2_generator-1.2.1.crate", + "sha256": "013f6a731e80f3930de580e55ba41dfa846de4e0fdee4a701f97989cb1597d6a", + "dest": "cargo/vendor/unicode_names2_generator-1.2.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"013f6a731e80f3930de580e55ba41dfa846de4e0fdee4a701f97989cb1597d6a\", \"files\": {}}", + "dest": "cargo/vendor/unicode_names2_generator-1.2.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/untrusted/untrusted-0.9.0.crate", + "sha256": "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1", + "dest": "cargo/vendor/untrusted-0.9.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1\", \"files\": {}}", + "dest": "cargo/vendor/untrusted-0.9.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ureq/ureq-2.9.6.crate", + "sha256": "11f214ce18d8b2cbe84ed3aa6486ed3f5b285cf8d8fbdbce9f3f767a724adc35", + "dest": "cargo/vendor/ureq-2.9.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"11f214ce18d8b2cbe84ed3aa6486ed3f5b285cf8d8fbdbce9f3f767a724adc35\", \"files\": {}}", + "dest": "cargo/vendor/ureq-2.9.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/url/url-2.5.0.crate", + "sha256": "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633", + "dest": "cargo/vendor/url-2.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633\", \"files\": {}}", + "dest": "cargo/vendor/url-2.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/utf8parse/utf8parse-0.2.1.crate", + "sha256": "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a", + "dest": "cargo/vendor/utf8parse-0.2.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a\", \"files\": {}}", + "dest": "cargo/vendor/utf8parse-0.2.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/uuid/uuid-1.7.0.crate", + "sha256": "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a", + "dest": "cargo/vendor/uuid-1.7.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a\", \"files\": {}}", + "dest": "cargo/vendor/uuid-1.7.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/uuid-macro-internal/uuid-macro-internal-1.7.0.crate", + "sha256": "7abb14ae1a50dad63eaa768a458ef43d298cd1bd44951677bd10b732a9ba2a2d", + "dest": "cargo/vendor/uuid-macro-internal-1.7.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"7abb14ae1a50dad63eaa768a458ef43d298cd1bd44951677bd10b732a9ba2a2d\", \"files\": {}}", + "dest": "cargo/vendor/uuid-macro-internal-1.7.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/valuable/valuable-0.1.0.crate", + "sha256": "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d", + "dest": "cargo/vendor/valuable-0.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d\", \"files\": {}}", + "dest": "cargo/vendor/valuable-0.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/version_check/version_check-0.9.4.crate", + "sha256": "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f", + "dest": "cargo/vendor/version_check-0.9.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f\", \"files\": {}}", + "dest": "cargo/vendor/version_check-0.9.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/vt100/vt100-0.15.2.crate", + "sha256": "84cd863bf0db7e392ba3bd04994be3473491b31e66340672af5d11943c6274de", + "dest": "cargo/vendor/vt100-0.15.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"84cd863bf0db7e392ba3bd04994be3473491b31e66340672af5d11943c6274de\", \"files\": {}}", + "dest": "cargo/vendor/vt100-0.15.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/vte/vte-0.11.1.crate", + "sha256": "f5022b5fbf9407086c180e9557be968742d839e68346af7792b8592489732197", + "dest": "cargo/vendor/vte-0.11.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"f5022b5fbf9407086c180e9557be968742d839e68346af7792b8592489732197\", \"files\": {}}", + "dest": "cargo/vendor/vte-0.11.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/vte_generate_state_changes/vte_generate_state_changes-0.1.1.crate", + "sha256": "d257817081c7dffcdbab24b9e62d2def62e2ff7d00b1c20062551e6cccc145ff", + "dest": "cargo/vendor/vte_generate_state_changes-0.1.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"d257817081c7dffcdbab24b9e62d2def62e2ff7d00b1c20062551e6cccc145ff\", \"files\": {}}", + "dest": "cargo/vendor/vte_generate_state_changes-0.1.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wait-timeout/wait-timeout-0.2.0.crate", + "sha256": "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6", + "dest": "cargo/vendor/wait-timeout-0.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6\", \"files\": {}}", + "dest": "cargo/vendor/wait-timeout-0.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/walkdir/walkdir-2.4.0.crate", + "sha256": "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee", + "dest": "cargo/vendor/walkdir-2.4.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee\", \"files\": {}}", + "dest": "cargo/vendor/walkdir-2.4.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wasi/wasi-0.11.0+wasi-snapshot-preview1.crate", + "sha256": "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423", + "dest": "cargo/vendor/wasi-0.11.0+wasi-snapshot-preview1" + }, + { + "type": "inline", + "contents": "{\"package\": \"9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423\", \"files\": {}}", + "dest": "cargo/vendor/wasi-0.11.0+wasi-snapshot-preview1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wasm-bindgen/wasm-bindgen-0.2.91.crate", + "sha256": "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f", + "dest": "cargo/vendor/wasm-bindgen-0.2.91" + }, + { + "type": "inline", + "contents": "{\"package\": \"c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f\", \"files\": {}}", + "dest": "cargo/vendor/wasm-bindgen-0.2.91", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wasm-bindgen-backend/wasm-bindgen-backend-0.2.91.crate", + "sha256": "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b", + "dest": "cargo/vendor/wasm-bindgen-backend-0.2.91" + }, + { + "type": "inline", + "contents": "{\"package\": \"c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b\", \"files\": {}}", + "dest": "cargo/vendor/wasm-bindgen-backend-0.2.91", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wasm-bindgen-futures/wasm-bindgen-futures-0.4.41.crate", + "sha256": "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97", + "dest": "cargo/vendor/wasm-bindgen-futures-0.4.41" + }, + { + "type": "inline", + "contents": "{\"package\": \"877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97\", \"files\": {}}", + "dest": "cargo/vendor/wasm-bindgen-futures-0.4.41", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wasm-bindgen-macro/wasm-bindgen-macro-0.2.91.crate", + "sha256": "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed", + "dest": "cargo/vendor/wasm-bindgen-macro-0.2.91" + }, + { + "type": "inline", + "contents": "{\"package\": \"b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed\", \"files\": {}}", + "dest": "cargo/vendor/wasm-bindgen-macro-0.2.91", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wasm-bindgen-macro-support/wasm-bindgen-macro-support-0.2.91.crate", + "sha256": "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66", + "dest": "cargo/vendor/wasm-bindgen-macro-support-0.2.91" + }, + { + "type": "inline", + "contents": "{\"package\": \"642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66\", \"files\": {}}", + "dest": "cargo/vendor/wasm-bindgen-macro-support-0.2.91", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wasm-bindgen-shared/wasm-bindgen-shared-0.2.91.crate", + "sha256": "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838", + "dest": "cargo/vendor/wasm-bindgen-shared-0.2.91" + }, + { + "type": "inline", + "contents": "{\"package\": \"4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838\", \"files\": {}}", + "dest": "cargo/vendor/wasm-bindgen-shared-0.2.91", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wasm-bindgen-test/wasm-bindgen-test-0.3.41.crate", + "sha256": "143ddeb4f833e2ed0d252e618986e18bfc7b0e52f2d28d77d05b2f045dd8eb61", + "dest": "cargo/vendor/wasm-bindgen-test-0.3.41" + }, + { + "type": "inline", + "contents": "{\"package\": \"143ddeb4f833e2ed0d252e618986e18bfc7b0e52f2d28d77d05b2f045dd8eb61\", \"files\": {}}", + "dest": "cargo/vendor/wasm-bindgen-test-0.3.41", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wasm-bindgen-test-macro/wasm-bindgen-test-macro-0.3.41.crate", + "sha256": "a5211b7550606857312bba1d978a8ec75692eae187becc5e680444fffc5e6f89", + "dest": "cargo/vendor/wasm-bindgen-test-macro-0.3.41" + }, + { + "type": "inline", + "contents": "{\"package\": \"a5211b7550606857312bba1d978a8ec75692eae187becc5e680444fffc5e6f89\", \"files\": {}}", + "dest": "cargo/vendor/wasm-bindgen-test-macro-0.3.41", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/web-sys/web-sys-0.3.68.crate", + "sha256": "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446", + "dest": "cargo/vendor/web-sys-0.3.68" + }, + { + "type": "inline", + "contents": "{\"package\": \"96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446\", \"files\": {}}", + "dest": "cargo/vendor/web-sys-0.3.68", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/webpki-roots/webpki-roots-0.26.1.crate", + "sha256": "b3de34ae270483955a94f4b21bdaaeb83d508bb84a01435f393818edb0012009", + "dest": "cargo/vendor/webpki-roots-0.26.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"b3de34ae270483955a94f4b21bdaaeb83d508bb84a01435f393818edb0012009\", \"files\": {}}", + "dest": "cargo/vendor/webpki-roots-0.26.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/which/which-4.4.2.crate", + "sha256": "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7", + "dest": "cargo/vendor/which-4.4.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7\", \"files\": {}}", + "dest": "cargo/vendor/which-4.4.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wild/wild-2.2.1.crate", + "sha256": "a3131afc8c575281e1e80f36ed6a092aa502c08b18ed7524e86fbbb12bb410e1", + "dest": "cargo/vendor/wild-2.2.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"a3131afc8c575281e1e80f36ed6a092aa502c08b18ed7524e86fbbb12bb410e1\", \"files\": {}}", + "dest": "cargo/vendor/wild-2.2.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/winapi/winapi-0.3.9.crate", + "sha256": "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419", + "dest": "cargo/vendor/winapi-0.3.9" + }, + { + "type": "inline", + "contents": "{\"package\": \"5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419\", \"files\": {}}", + "dest": "cargo/vendor/winapi-0.3.9", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/winapi-i686-pc-windows-gnu/winapi-i686-pc-windows-gnu-0.4.0.crate", + "sha256": "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6", + "dest": "cargo/vendor/winapi-i686-pc-windows-gnu-0.4.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6\", \"files\": {}}", + "dest": "cargo/vendor/winapi-i686-pc-windows-gnu-0.4.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/winapi-util/winapi-util-0.1.6.crate", + "sha256": "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596", + "dest": "cargo/vendor/winapi-util-0.1.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596\", \"files\": {}}", + "dest": "cargo/vendor/winapi-util-0.1.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/winapi-x86_64-pc-windows-gnu/winapi-x86_64-pc-windows-gnu-0.4.0.crate", + "sha256": "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f", + "dest": "cargo/vendor/winapi-x86_64-pc-windows-gnu-0.4.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f\", \"files\": {}}", + "dest": "cargo/vendor/winapi-x86_64-pc-windows-gnu-0.4.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-core/windows-core-0.52.0.crate", + "sha256": "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9", + "dest": "cargo/vendor/windows-core-0.52.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9\", \"files\": {}}", + "dest": "cargo/vendor/windows-core-0.52.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-sys/windows-sys-0.48.0.crate", + "sha256": "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9", + "dest": "cargo/vendor/windows-sys-0.48.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9\", \"files\": {}}", + "dest": "cargo/vendor/windows-sys-0.48.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-sys/windows-sys-0.52.0.crate", + "sha256": "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d", + "dest": "cargo/vendor/windows-sys-0.52.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d\", \"files\": {}}", + "dest": "cargo/vendor/windows-sys-0.52.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-targets/windows-targets-0.48.5.crate", + "sha256": "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c", + "dest": "cargo/vendor/windows-targets-0.48.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c\", \"files\": {}}", + "dest": "cargo/vendor/windows-targets-0.48.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-targets/windows-targets-0.52.0.crate", + "sha256": "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd", + "dest": "cargo/vendor/windows-targets-0.52.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd\", \"files\": {}}", + "dest": "cargo/vendor/windows-targets-0.52.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_aarch64_gnullvm/windows_aarch64_gnullvm-0.48.5.crate", + "sha256": "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8", + "dest": "cargo/vendor/windows_aarch64_gnullvm-0.48.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8\", \"files\": {}}", + "dest": "cargo/vendor/windows_aarch64_gnullvm-0.48.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_aarch64_gnullvm/windows_aarch64_gnullvm-0.52.0.crate", + "sha256": "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea", + "dest": "cargo/vendor/windows_aarch64_gnullvm-0.52.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea\", \"files\": {}}", + "dest": "cargo/vendor/windows_aarch64_gnullvm-0.52.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_aarch64_msvc/windows_aarch64_msvc-0.48.5.crate", + "sha256": "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc", + "dest": "cargo/vendor/windows_aarch64_msvc-0.48.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc\", \"files\": {}}", + "dest": "cargo/vendor/windows_aarch64_msvc-0.48.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_aarch64_msvc/windows_aarch64_msvc-0.52.0.crate", + "sha256": "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef", + "dest": "cargo/vendor/windows_aarch64_msvc-0.52.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef\", \"files\": {}}", + "dest": "cargo/vendor/windows_aarch64_msvc-0.52.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_i686_gnu/windows_i686_gnu-0.48.5.crate", + "sha256": "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e", + "dest": "cargo/vendor/windows_i686_gnu-0.48.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e\", \"files\": {}}", + "dest": "cargo/vendor/windows_i686_gnu-0.48.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_i686_gnu/windows_i686_gnu-0.52.0.crate", + "sha256": "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313", + "dest": "cargo/vendor/windows_i686_gnu-0.52.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313\", \"files\": {}}", + "dest": "cargo/vendor/windows_i686_gnu-0.52.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_i686_msvc/windows_i686_msvc-0.48.5.crate", + "sha256": "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406", + "dest": "cargo/vendor/windows_i686_msvc-0.48.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406\", \"files\": {}}", + "dest": "cargo/vendor/windows_i686_msvc-0.48.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_i686_msvc/windows_i686_msvc-0.52.0.crate", + "sha256": "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a", + "dest": "cargo/vendor/windows_i686_msvc-0.52.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a\", \"files\": {}}", + "dest": "cargo/vendor/windows_i686_msvc-0.52.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_x86_64_gnu/windows_x86_64_gnu-0.48.5.crate", + "sha256": "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e", + "dest": "cargo/vendor/windows_x86_64_gnu-0.48.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e\", \"files\": {}}", + "dest": "cargo/vendor/windows_x86_64_gnu-0.48.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_x86_64_gnu/windows_x86_64_gnu-0.52.0.crate", + "sha256": "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd", + "dest": "cargo/vendor/windows_x86_64_gnu-0.52.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd\", \"files\": {}}", + "dest": "cargo/vendor/windows_x86_64_gnu-0.52.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_x86_64_gnullvm/windows_x86_64_gnullvm-0.48.5.crate", + "sha256": "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc", + "dest": "cargo/vendor/windows_x86_64_gnullvm-0.48.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc\", \"files\": {}}", + "dest": "cargo/vendor/windows_x86_64_gnullvm-0.48.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_x86_64_gnullvm/windows_x86_64_gnullvm-0.52.0.crate", + "sha256": "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e", + "dest": "cargo/vendor/windows_x86_64_gnullvm-0.52.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e\", \"files\": {}}", + "dest": "cargo/vendor/windows_x86_64_gnullvm-0.52.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_x86_64_msvc/windows_x86_64_msvc-0.48.5.crate", + "sha256": "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538", + "dest": "cargo/vendor/windows_x86_64_msvc-0.48.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538\", \"files\": {}}", + "dest": "cargo/vendor/windows_x86_64_msvc-0.48.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_x86_64_msvc/windows_x86_64_msvc-0.52.0.crate", + "sha256": "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04", + "dest": "cargo/vendor/windows_x86_64_msvc-0.52.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04\", \"files\": {}}", + "dest": "cargo/vendor/windows_x86_64_msvc-0.52.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/winnow/winnow-0.5.39.crate", + "sha256": "5389a154b01683d28c77f8f68f49dea75f0a4da32557a58f68ee51ebba472d29", + "dest": "cargo/vendor/winnow-0.5.39" + }, + { + "type": "inline", + "contents": "{\"package\": \"5389a154b01683d28c77f8f68f49dea75f0a4da32557a58f68ee51ebba472d29\", \"files\": {}}", + "dest": "cargo/vendor/winnow-0.5.39", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/yaml-rust/yaml-rust-0.4.5.crate", + "sha256": "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85", + "dest": "cargo/vendor/yaml-rust-0.4.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85\", \"files\": {}}", + "dest": "cargo/vendor/yaml-rust-0.4.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/yansi/yansi-0.5.1.crate", + "sha256": "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec", + "dest": "cargo/vendor/yansi-0.5.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec\", \"files\": {}}", + "dest": "cargo/vendor/yansi-0.5.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/yansi-term/yansi-term-0.1.2.crate", + "sha256": "fe5c30ade05e61656247b2e334a031dfd0cc466fadef865bdcdea8d537951bf1", + "dest": "cargo/vendor/yansi-term-0.1.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"fe5c30ade05e61656247b2e334a031dfd0cc466fadef865bdcdea8d537951bf1\", \"files\": {}}", + "dest": "cargo/vendor/yansi-term-0.1.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zerocopy/zerocopy-0.7.32.crate", + "sha256": "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be", + "dest": "cargo/vendor/zerocopy-0.7.32" + }, + { + "type": "inline", + "contents": "{\"package\": \"74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be\", \"files\": {}}", + "dest": "cargo/vendor/zerocopy-0.7.32", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zerocopy-derive/zerocopy-derive-0.7.32.crate", + "sha256": "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6", + "dest": "cargo/vendor/zerocopy-derive-0.7.32" + }, + { + "type": "inline", + "contents": "{\"package\": \"9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6\", \"files\": {}}", + "dest": "cargo/vendor/zerocopy-derive-0.7.32", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zeroize/zeroize-1.7.0.crate", + "sha256": "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d", + "dest": "cargo/vendor/zeroize-1.7.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d\", \"files\": {}}", + "dest": "cargo/vendor/zeroize-1.7.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "inline", + "contents": "[source.vendored-sources]\ndirectory = \"cargo/vendor\"\n\n[source.crates-io]\nreplace-with = \"vendored-sources\"\n", + "dest": "cargo", + "dest-filename": "config" + } +] diff --git a/build-aux/modules/vte.json b/build-aux/modules/vte.json new file mode 100644 index 000000000..d5b1dacc8 --- /dev/null +++ b/build-aux/modules/vte.json @@ -0,0 +1,48 @@ +{ + "name": "vte", + "buildsystem": "meson", + "config-opts": [ + "-Dapp=false", + "-Ddocs=false", + "-Dgtk3=false", + "-Dgtk4=true", + "-Dvapi=true", + "-Dglade=false" + ], + "sources": [ + { + "type": "archive", + "url": "https://download.gnome.org/sources/vte/0.84/vte-0.84.0.tar.xz", + "sha256": "0414e31583836aeb7878da25f67c515f7e8879917ecc37c92e26b83e8d8fc3e3" + } + ], + "modules": [ + { + "name": "fast_float", + "buildsystem": "cmake-ninja", + "sources": [ + { + "type": "archive", + "url": "https://github.com/fastfloat/fast_float/archive/refs/tags/v8.2.5.tar.gz", + "sha256": "17c7fb14499fcf42c3f5d143df0fbe22172e92749ec5f75ef13224005421a654" + } + ] + }, + { + "name": "simdutf", + "buildsystem": "cmake-ninja", + "config-opts": [ + "-DCMAKE_CXX_VISIBILITY_PRESET=hidden", + "-DCMAKE_POSITION_INDEPENDENT_CODE=TRUE", + "-DCMAKE_VISIBILITY_INLINES_HIDDEN=TRUE" + ], + "sources": [ + { + "type": "archive", + "url": "https://github.com/simdutf/simdutf/archive/refs/tags/v7.4.0.tar.gz", + "sha256": "8fd729ebfd5ec56cb0395bcc176c4801e1f8a0ea834d166d52279d7b9e801283" + } + ] + } + ] +} diff --git a/build-aux/re.sonny.Workbench.Devel.json b/build-aux/re.sonny.Workbench.Devel.json new file mode 100644 index 000000000..a39db132f --- /dev/null +++ b/build-aux/re.sonny.Workbench.Devel.json @@ -0,0 +1,62 @@ +{ + "$schema": "https://raw.githubusercontent.com/flatpak/flatpak-builder/main/data/flatpak-manifest.schema.json", + "id": "re.sonny.Workbench.Devel", + "runtime": "org.gnome.Sdk", + "runtime-version": "50", + "sdk": "org.gnome.Sdk", + "sdk-extensions": [ + "org.freedesktop.Sdk.Extension.vala", + "org.freedesktop.Sdk.Extension.rust-stable", + "org.freedesktop.Sdk.Extension.llvm21", + "org.freedesktop.Sdk.Extension.node24", + "org.freedesktop.Sdk.Extension.typescript" + ], + "build-options": { + "append-path": "/usr/lib/sdk/vala/bin:/usr/lib/sdk/rust-stable/bin:/usr/lib/sdk/llvm21/bin:/usr/lib/sdk/node24/bin:/usr/lib/sdk/typescript/bin", + "prepend-ld-library-path": "/usr/lib/sdk/llvm21/lib", + "append-ld-library-path": "/usr/lib/sdk/vala/lib" + }, + "command": "workbench", + "separate-locales": false, + "finish-args": [ + "--share=ipc", + "--socket=fallback-x11", + "--socket=wayland", + "--device=dri" + ], + "cleanup": [ + "#/include", + "#/lib/pkgconfig", + "/man", + "/share/doc", + "/share/gtk-doc", + "/share/man", + "#/share/pkgconfig", + "/share/installed-tests", + "*.la", + "*.a" + ], + "modules": [ + "modules/biome.json", + "modules/vte.json", + "modules/libshumate.json", + "modules/libportal.json", + "modules/libspelling.json", + "modules/gom.json", + "modules/GTKCssLanguageServer.json", + "modules/python-python-lsp-server.json", + "modules/python-ruff.json", + "modules/python-python-lsp-ruff.json", + { + "name": "Workbench", + "buildsystem": "meson", + "config-opts": ["-Dprofile=development"], + "sources": [ + { + "type": "dir", + "path": ".." + } + ] + } + ] +} diff --git a/build-aux/re.sonny.Workbench.json b/build-aux/re.sonny.Workbench.json new file mode 100644 index 000000000..68e25f5cb --- /dev/null +++ b/build-aux/re.sonny.Workbench.json @@ -0,0 +1,62 @@ +{ + "$schema": "https://raw.githubusercontent.com/flatpak/flatpak-builder/main/data/flatpak-manifest.schema.json", + "id": "re.sonny.Workbench", + "runtime": "org.gnome.Sdk", + "runtime-version": "50", + "sdk": "org.gnome.Sdk", + "sdk-extensions": [ + "org.freedesktop.Sdk.Extension.vala", + "org.freedesktop.Sdk.Extension.rust-stable", + "org.freedesktop.Sdk.Extension.llvm21", + "org.freedesktop.Sdk.Extension.node24", + "org.freedesktop.Sdk.Extension.typescript" + ], + "build-options": { + "append-path": "/usr/lib/sdk/vala/bin:/usr/lib/sdk/rust-stable/bin:/usr/lib/sdk/llvm21/bin:/usr/lib/sdk/node24/bin:/usr/lib/sdk/typescript/bin", + "prepend-ld-library-path": "/usr/lib/sdk/llvm21/lib", + "append-ld-library-path": "/usr/lib/sdk/vala/lib" + }, + "command": "workbench", + "separate-locales": false, + "finish-args": [ + "--share=ipc", + "--socket=fallback-x11", + "--socket=wayland", + "--device=dri" + ], + "cleanup": [ + "#/include", + "#/lib/pkgconfig", + "/man", + "/share/doc", + "/share/gtk-doc", + "/share/man", + "#/share/pkgconfig", + "/share/installed-tests", + "*.la", + "*.a" + ], + "modules": [ + "modules/biome.json", + "modules/vte.json", + "modules/libshumate.json", + "modules/libportal.json", + "modules/libspelling.json", + "modules/gom.json", + "modules/GTKCssLanguageServer.json", + "modules/python-python-lsp-server.json", + "modules/python-ruff.json", + "modules/python-python-lsp-ruff.json", + { + "name": "Workbench", + "buildsystem": "meson", + "config-opts": ["-Dprofile=default"], + "sources": [ + { + "type": "dir", + "path": ".." + } + ] + } + ] +} diff --git a/data/app.desktop b/data/app.desktop index f37548bbe..43316697b 100644 --- a/data/app.desktop +++ b/data/app.desktop @@ -8,6 +8,6 @@ Type=Application Categories=WebDevelopment;Development;IDE;GNOME;GTK; Icon=@app_id@ # TRANSLATORS: Don't translate -Keywords=CSS;JavaScript;GJS;Blueprint;builder;Vala;GTK;libadwaita; +Keywords=CSS;JavaScript;GJS;Blueprint;builder;Vala;GTK;libadwaita;Python;PyGObject;Rust;doc;playground;code;TypeScript; DBusActivatable=true StartupNotify=true diff --git a/data/app.gschema.xml b/data/app.gschema.xml index f20984d52..bc9c66214 100644 --- a/data/app.gschema.xml +++ b/data/app.gschema.xml @@ -1,17 +1,25 @@ - + + + + + + 0 - - false - 0 - - 0 + + [] + + + true + + + false @@ -21,6 +29,9 @@ false + + '' + true @@ -33,8 +44,8 @@ 0 - - 0 + + 'blueprint' 0 @@ -48,5 +59,17 @@ false + + 0 + + + 0 + + + false + + + false + diff --git a/data/app.metainfo.xml b/data/app.metainfo.xml index 5e9c34b6a..6c89f2b27 100644 --- a/data/app.metainfo.xml +++ b/data/app.metainfo.xml @@ -3,52 +3,486 @@ @app_id@ @app_id@.desktop Workbench - Sonny Piers - sonnyp@gnome.org + + Sonny Piers + + workbench@sonny.re CC0-1.0 GPL-3.0 - Learn and prototype with GNOME technologies - @app_id@ + Prototype with GNOME technologies -

Workbench goal is to let you experiment with GNOME technologies, no matter if tinkering for the first time or building and testing a GTK user interface.

+

Workbench is for learning and prototyping with GNOME technologies, no matter if tinkering for the first time or building and testing a GTK user interface.

Among other things, Workbench comes with

    -
  • realtime GTK/CSS preview
  • -
  • library of examples
  • -
  • JavaScript and Vala support
  • -
  • XML and Blueprint for describing user interface
  • -
  • syntax highlighting, undo/redo, autosave, session restore
  • -
  • code linter and formatter
  • -
  • terminal output
  • -
  • 1000+ icons
  • +
  • Live GTK/CSS preview
  • +
  • Library of 100+ examples
  • +
  • JavaScript, Rust, Python and Vala support
  • +
  • Declarative user interface syntax
  • +
  • Autosave, sessions and projects
  • +
  • Code diagnostics, completion and formatter
  • +
  • Terminal output
https://workbench.sonny.re https://workbench.sonny.re/feedback https://workbench.sonny.re/donate - https://workbench.sonny.re/translate https://workbench.sonny.re/source - - https://raw.githubusercontent.com/sonnyp/Workbench/main/data/screenshot.png - + https://raw.githubusercontent.com/workbenchdev/Workbench/main/data/screenshots/welcome.png + Welcome screen - - https://raw.githubusercontent.com/sonnyp/Workbench/main/data/screenshot-code.png - + https://raw.githubusercontent.com/workbenchdev/Workbench/main/data/screenshots/code.png + Drawing Area demo - - https://raw.githubusercontent.com/sonnyp/Workbench/main/data/screenshot-library.png - + https://raw.githubusercontent.com/workbenchdev/Workbench/main/data/screenshots/library.png + Library window + + +
    +
  • Use GNOME 50
  • +
  • Fix discarding/closing of sessions
  • +
  • Fix running Rust demos
  • +
+

Library:

+
    +
  • Correct network permission check
  • +
+

Dependencies:

+
    +
  • Update libshumate to 1.6.1
  • +
  • Update vte to 0.84.0
  • +
  • Update gom to 0.5.6
  • +
+
+
+ + + +
    +
  • Use GNOME 49
  • +
  • Temporarily disable experimental TypeScript support
  • +
+

Library:

+
    +
  • Add "Shortcuts Window" demo
  • +
+

Dependencies:

+
    +
  • Update libportal to 0.9.1
  • +
  • Update libshumate to 1.5.1
  • +
  • Update libspelling to 0.4.9
  • +
  • Update vte to 0.82.1
  • +
  • Update gom to 0.5.4
  • +
+
+
+ + + +
    +
  • Fix permissions dialog
  • +
  • Update Blueprint to 0.16.0
  • +
  • Update libportal to 0.9.0
  • +
+

Library:

+
    +
  • Replace GTK syntax with CSS variables
  • +
  • Fix year sorting in "Column View" Python
  • +
+
+
+ + + +
    +
  • Use GNOME 47
  • +
  • Add code suggestions/completions support
  • +
  • Add Language and Category filters to the Library
  • +
  • Add action to create new blank project
  • +
  • Add experimental TypeScript support
  • +
+

Library:

+
    +
  • Add "Button Row" demo
  • +
  • Add "Gamepad" demo
  • +
  • Add "List View with Sections" demo
  • +
  • Add "List View with a Tree" demo
  • +
  • Add "Bottom Sheet" demo
  • +
  • Add "Database" demo
  • +
  • Update "Spinner" to use AdwSpinner
  • +
  • Port "Dialog" to Python
  • +
  • Port "List View" to Python
  • +
  • Port "Grid View" to Python
  • +
  • Port "Level Bars" to Rust
  • +
  • Port "Text Fields" to Rust
  • +
  • Port "Column View" to Rust
  • +
  • Port "Clamp" to Rust
  • +
  • Port "List View" to Rust
  • +
  • Port "Frame" to Rust
  • +
  • Port "Audio" to Rust
  • +
  • Port "File Monitor" to Vala
  • +
  • Port "Scrolled Window" to Vala
  • +
  • Port "Menu" to Vala
  • +
  • Port "HTTP Server" to Vala
  • +
  • Port "Map" to Vala
  • +
  • Port "Session Monitor and Inhibit" to Vala
  • +
  • Port "Save File" to Vala
  • +
  • Port "Spin Button" to Vala
  • +
  • Port "Progress Bar" to Vala
  • +
  • Port "Label" to Vala
  • +
  • Port "Power Profile Monitor" to Vala
  • +
  • Port "Drawing Area" to Vala
  • +
  • Port "Font Dialog" to Vala
  • +
  • Port "Select Folder" to Vala
  • +
  • Port "Network Monitor" to Vala
  • +
  • Port "Toggle Button" to Vala
  • +
  • Port "Tooltip" to Vala
  • +
  • Port "Spell Checker" to Vala
  • +
  • Port "Popovers" to Vala
  • +
  • Port "Menu Button" to Vala
  • +
  • Port "Frame" to Vala
  • +
  • Port "Actions" to Vala
  • +
  • Port "Dialog" to Vala
  • +
  • Port "CSS Gradients" to Vala
  • +
  • Port "Snapshot" to Vala
  • +
+

Dependencies:

+
    + +
  • Add GOM dependency 0.5.3
  • +
  • Update Biome to 1.9.4
  • +
  • Update libshumate to 1.3
  • +
  • Update Blueprint to 0.14.0
  • +
  • Update vte to 0.78.2
  • +
  • Update libspelling to 0.4.5
  • +
  • Update libportal to 0.8.1
  • +
+
+
+ + + +
    +
  • Add "Find" to search for code in the current editor
  • +
  • Save and restore the session window dimensions
  • +
  • Add "Reveal in Folder" to browse project files
  • +
  • Remove Icon Library, please refer to the "Using Icons" entry
  • +
  • List editor shortcuts in Shortcuts
  • +
  • Fix Vala and Rust extensions detection on "Run"
  • +
  • Library: Add "Using Icons"
  • +
  • Library: Add "SVG"
  • +
  • Library: Split "List View Widget" into "List View" and "Grid View"
  • +
  • Library: Port "Animation" to Python
  • +
  • Library: Port "Radio Buttons" to Vala
  • +
  • Library: Port "Switch" to Vala
  • +
  • Library: Port "Revealer" to Vala
  • +
  • Library: Port "Styling with CSS" to Vala
  • +
  • Library: Port "Separator" to Vala
  • +
  • Library: Port "Level Bars" to Vala
  • +
  • Library: Port "Link Button" to Vala
  • +
+
+
+ + + +
    +
  • Use GNOME 46
  • +
  • Add basic Rust diagnostics
  • +
  • Add basic Python diagnostics
  • +
  • Replace Python formatter Black with Ruff
  • +
  • Support libadwaita dialogs
  • +
  • Stop adding a superfluous newlines to end of files
  • +
  • Optimize opening Library entries
  • +
  • Open project windows maximized
  • +
  • Fix dangling bwrap processes after quitting Workbench
  • +
  • Modernize the Extensions window
  • +
  • Update Biome to 1.6.0
  • +
  • Update libspelling to 0.2.1
  • +
  • Update gst-plugin-gtk4 to 0.12.1
  • +
  • Update libshumate to 1.2
  • +
  • Update VTE to 0.76
  • +
  • Update Blueprint to 0.12.0
  • +
  • Update GTKCssLanguageServer
  • +
  • Update icon-development-kit
  • +
  • Library: Adapt demos to use GNOME 46 features
  • +
  • Library: Add FileFilter example to "Open File" demo
  • +
  • Library: Add "Snapshot" demo
  • +
  • Library: Port "Scrolled Window" demo to Python
  • +
  • Library: Port "HTTP Image" demo to Python
  • +
  • Library: Port "HTTP Request" demo to Python
  • +
  • Library: Port "HTTP Server" demo to Python
  • +
  • Library: Port "Font Dialog" demo to Python
  • +
  • Library: Port "Box" demo to Python
  • +
  • Library: Port "Frame" demo to Python
  • +
  • Library: Port "Grid" demo to Python
  • +
  • Library: Port "Web View" demo to Python
  • +
  • Library: Port "Network Monitor" demo to Python
  • +
  • Library: Port "Navigation View" demo to Python
  • +
  • Library: Port "Launcher" demo to Python
  • +
  • Library: Port "Audio" demo to Python
  • +
  • Library: Port "Map" demo to Python
  • +
  • Library: Port "File Monitor" demo to Python
  • +
  • Library: Port "WebSocket Client" demo to Python
  • +
  • Library: Port "Screencast" demo to Python
  • +
  • Library: Port "Progress Bar" demo to Python
  • +
  • Library: Port "Camera" demo to Python
  • +
  • Library: Port "Location" demo to Python
  • +
  • Library: Port "List Model" demo to Python
  • +
  • Library: Port "Drop Down" demo to Python
  • +
  • Library: Port "Drawing Area" demo to Python
  • +
  • Library: Port "Session Monitor and Inhibit" demo to Python
  • +
  • Library: Port "View Switcher" demo to Python
  • +
  • Library: Port "View Switcher" demo to Python
  • +
  • Library: Port "Checkboxes" demo to Vala
  • +
  • Library: Port "Action Bar" demo to Vala
  • +
  • Library: Port "Clamp" demo to Vala
  • +
  • Library: Port "Banner" demo to Vala
  • +
  • Library: Port "Emoji Chooser" demo to Vala
  • +
+
+
+ + +
    +
  • Restore on-disk projects when starting Workbench
  • +
  • Open the Library on start if there are no sessions to restore
  • +
  • Restore scroll and cusor positions on format and Run
  • +
  • Add "Copy" and "Select All" to Console
  • +
  • Add Vala formatter support
  • +
  • Add WebP image format support
  • +
  • Use Biome instead of prettier as JavaScript formatter
  • +
  • Use GTKCssLanguageServer instead of prettier as CSS formatter
  • +
  • Fix Console style when toggling dark mode
  • +
  • Fix blank preview on demos with no code
  • +
  • Fix Style affecting other windows
  • +
  • Update Biome to 1.4.1
  • +
  • Update gst-plugin-gtk4 to 0.11.2
  • +
  • Update libshumate 1.1.2
  • +
  • Library: Add "Context Menu" entry
  • +
  • Library: Add "HTTP Server" entry
  • +
  • Library: Fix "Open File" entry
  • +
  • Library: Replace deprecated ViewSwitcherTitle
  • +
  • Library: Port "Accessibility" entry to Python
  • +
  • Library: Port "Account" entry to Python
  • +
  • Library: Port "Email" entry to Python
  • +
  • Library: Port "Overlay Split View" entry to Python
  • +
  • Library: Port "Label Bars" entry to Python
  • +
  • Library: Port "Context Menu" entry to Python
  • +
  • Library: Port "Wallpaper" entry to Python
  • +
  • Library: Port "Drop Zone" entry to Python
  • +
  • Library: Port "Column View" entry to Python
  • +
  • Library: Port "Screenshot" entry to Python
  • +
  • Library: Port "Event Controllers" entry to Python
  • +
  • Library: Port "Drag and Drop" entry to Python
  • +
  • Library: Port "Context Menu" entry to Vala
  • +
  • Library: Port "Search" entry to Vala
  • +
  • Library: Port "Grid" entry to Vala
  • +
  • Library: Port "Accessibility" entry to Vala
  • +
  • Library: Port "Animation" entry to Rust
  • +
  • Library: Port "Context Menu" entry to Rust
  • +
+
+
+ + +
    +
  • Add Python support
  • +
  • Add Blueprint formatter support
  • +
  • Replace Manuals with "Biblioteca" available on Flathub
  • +
  • Show which languages are available for each Library entry
  • +
  • Allow opening Library entries in a specific language
  • +
  • Make Library faster to launch
  • +
  • Each Workbench window has its own title
  • +
  • Do not exit if Library is the last window open
  • +
  • Improve JavaScript linting
  • +
  • Fix an issue with some libadwaita style classes not working
  • +
  • Library: Port entries to libadwaita SpinRow
  • +
  • Library: Fix "Preferences Window" adaptiveness
  • +
  • Library: Simplify "HTP Request" entry
  • +
  • Library: Simplify "Column View" entry
  • +
  • Library: Simplify "Status Page" entry
  • +
  • Library: Modernize "HTTP Image" entry
  • +
  • Library: Make the "Save File" entry actually save a file
  • +
  • Library: Port "Welcome" entry to Python
  • +
  • Library: Port "Actions" entry to Python
  • +
  • Library: Port "Spinner" entry to Python
  • +
  • Library: Port "Styling with CSS" entry to Python
  • +
  • Library: Port "Breakpoints" entry to Python
  • +
  • Library: Port "Overlay" entry to Python
  • +
  • Library: Port "Popovers" entry to Python
  • +
  • Library: Port "Emoji Chooser" entry to Python
  • +
  • Library: Port "Image" entry to Python
  • +
  • Library: Port "Separator" entry to Python
  • +
  • Library: Port "Menu Button" entry to Python
  • +
  • Library: Port "Radio Buttons" entry to Python
  • +
  • Library: Port "Link Button" entry to Python
  • +
  • Library: Port "About Window" entry to Python
  • +
  • Library: Port "Avatar" entry to Python
  • +
  • Library: Port "Button" entry to Python
  • +
  • Library: Port "Calendar" entry to Python
  • +
  • Library: Port "Checkboxes" entry to Python
  • +
  • Library: Port "Tooltip" entry to Python
  • +
  • Library: Port "Toggle Button" entry to Python
  • +
  • Library: Port "Carousel" entry to Python
  • +
  • Library: Port "CSS Gradients" entry to Python
  • +
  • Library: Port "Color Dialog" entry to Python
  • +
  • Library: Port "Memory Monitor" entry to Python
  • +
  • Library: Port "Video" entry to Python
  • +
  • Library: Port "Text Fields" entry to Python
  • +
  • Library: Port "Toolbar View" entry to Python
  • +
  • Library: Port "Tab View" entry to Python
  • +
  • Library: Port "Text View" entry to Python
  • +
  • Library: Port "Text Colors" entry to Python
  • +
  • Library: Port "Search" entry to Python
  • +
  • Library: Port "Color Picker" entry to Python
  • +
  • Library: Port "Dialogs" entry to Python
  • +
  • Library: Port "Label" entry to Python
  • +
  • Library: Port "Open File" entry to Python
  • +
  • Library: Port "Flow Box" entry to Python
  • +
  • Library: Port "Revealer" entry to Python
  • +
  • Library: Port "Menu" entry to Python
  • +
  • Library: Port "Switch" entry to Python
  • +
  • Library: Port "Stack" entry to Python
  • +
  • Library: Port "Picture" entry to Python
  • +
  • Library: Port "Power Profile Monitor" entry to Python
  • +
  • Library: Port "Spin Button" entry to Python
  • +
  • Library: Port "Source View" entry to Python
  • +
  • Library: Port "Preferences Window" entry to Python
  • +
  • Library: Port "Clamp" entry to Python
  • +
  • Library: Port "Banner" entry to Python
  • +
  • Library: Port "Save File" entry to Python
  • +
  • Library: Port "Action Bar" entry to Python
  • +
  • Library: Port "Scale" entry to Python
  • +
  • Library: Port "Spell Checker" entry to Python
  • +
  • Library: Port "Select Folder" entry to Python
  • +
  • Library: Port "Avatar" entry to Rust
  • +
  • Library: Port "Actions" entry to Rust
  • +
  • Library: Port "Animation" entry to Vala
  • +
  • Library: Port "Overlay Split View" entry to Vala
  • +
  • Library: Port "Text Colors" entry to Vala
  • +
  • Library: Port "Tab View" entry to Vala
  • +
  • Library: Port "Navigation View" entry to Vala
  • +
  • Library: Port "Open File" entry to Vala
  • +
  • Library: Port "Avatar" entry to Vala
  • +
  • Library: Port "Memory Monitor" entry to Vala
  • +
  • Library: Port "Launcher" entry to Vala
  • +
  • Library: Port "Calendar" entry to Vala
  • +
  • Library: Port "Column View" entry to Vala
  • +
  • Library: Port "HTTP Request" entry to Vala
  • +
  • Library: Port "Web View" entry to Vala
  • +
+
+
+ + +
    +
  • Rust: Fix the issue of compiling fails after updating Workbench
  • +
  • Manuals: Fix a couple of minor issues
  • +
  • Library: Port "Web View" entry to Rust
  • +
  • Library: Port "HTTP Image" entry to Rust
  • +
  • Library: Port "HTTP Image" entry to Rust
  • +
  • Library: Port "WebSocket Client" entry to Rust
  • +
  • Library: Port "Audio" entry to Vala
  • +
  • Library: Port "Video" entry to Vala
  • +
  • Library: Port "Picture" entry to Vala
  • +
  • Library: Port "Flow Box" entry to Vala
  • +
  • Library: Port "Box" entry to Vala
  • +
+
+
+ + +
    +
  • Add "Extensions" to enable Rust and Vala support
  • +
  • Add Keyboard Shortcuts to Manuals; the documentation viewer
  • +
  • Update and refresh UI
  • +
  • Add audio permission
  • +
  • Make Workbench smaller and faster to download
  • +
  • Library: Add CSS gradientts demo
  • +
  • Library: Add Property Row
  • +
  • Library: Update entries to use SpinRow and SwitchRow
  • +
  • Library: Port Map entry to Rust
  • +
  • Library: Port Emoji Chooser to Rust
  • +
  • Library: Fix Souce View entry
  • +
  • Library: Use GLib.format_size() for file sizes
  • +
+
+
+ + +
    +
  • Use GNOME 45
  • +
  • Support Rust
  • +
  • Add multi windows and sessions support
  • +
  • Support saving and opening a project
  • +
  • Add offline documentation viewer "Manuals"
  • +
  • Use GTKCssLanguageServer
  • +
  • Add a workbench.resolve API
  • +
  • Allow running Vala without UI code
  • +
  • Update to Blueprint 0.10.0
  • +
  • Update to vte 0.74
  • +
  • Update to libportal 0.7
  • +
  • Update Icon Development Kit
  • +
  • Replace Rome Language Server with Biome Language Server
  • +
  • New Library entry: Map
  • +
  • New Library entry: Search
  • +
  • New Library entry: Audio
  • +
  • New Library entry: Event Controllers
  • +
  • New Library entry: Action Bar
  • +
  • New Library entry: Location
  • +
  • New Library entry: Checkboxes
  • +
  • New Library entry: Radio Buttons
  • +
  • New Library entry: Accessibility
  • +
  • New Library entry: List View
  • +
  • New Library entry: Separator
  • +
  • New Library entry: Link Button
  • +
  • New Library entry: Actions
  • +
  • New Library entry: Tooltip
  • +
  • New Library entry: Flow Box
  • +
  • New Library entry: Emoji Chooser
  • +
  • New Library entry: Editable Label
  • +
  • New Library entry: Drop Zone
  • +
  • New Library entry: Label
  • +
  • New Library entry: Menu Button
  • +
  • New Library entry: Image
  • +
  • New Library entry: Column View
  • +
  • New Library entry: Menu
  • +
  • New Library entry: Laucher (File / Uri)
  • +
  • New Library entry: Navigation Split View
  • +
  • New Library entry: Overlay Split View
  • +
  • New Library entry: Navigation View
  • +
  • New Library entry: Scrolled Window
  • +
  • New Library entry: Power Profile Monitor
  • +
  • New Library entry: Network Monitor Demo
  • +
  • New Library entry: Clamp
  • +
  • New Library entry: Source View
  • +
  • New Library entry: Breakpoint
  • +
  • New Library entry: Screencast
  • +
  • New Library entry: Toolbar View
  • +
  • New Library entry: Picture
  • +
  • New Library entry: Memory Monitor
  • +
  • New Library entry: Camera
  • +
  • New Library entry: Center Box
  • +
  • New Library entry: File Monitor
  • +
  • New Library entry: Session Monitor and Inhibit
  • +
  • New Library entry: Open File
  • +
  • New Library entry: Save File
  • +
  • New Library entry: Select Folder
  • +
  • New Library entry: Spell Checker
  • +
  • New Library entry: HTTP Request
  • +
+
+
- +
  • Improve Screenshot Preview
  • Fix a bug causing preview to update on certain events
  • @@ -87,7 +521,7 @@ - +
    • Update icon-development-kit; adds 143 new icons
    • Update to Blueprint to 0.8.1
    • @@ -97,7 +531,7 @@ - +
      • GNOME 44
      • Workbench is now fully sandboxed and will be considered safe
      • @@ -112,7 +546,7 @@ - +
        • Switching between XML and Blueprint will now export
        • Add support for JavaScript diagnostics and linting
        • @@ -126,14 +560,14 @@ - +
          • Fix application not starting
          - +
          • Use Vala Language Server for diagnostics
          • Move Icon Browser to the main application menu
          • @@ -148,7 +582,7 @@ - +
            • GNOME 43
            • Display CSS errors inline
            • @@ -161,7 +595,7 @@ - +
              • Show tooltip hints in Blueprint UI code
              • Improve XML formatter
              • @@ -174,7 +608,7 @@ - +
                • Underline errors in Blueprint UI code
                • Fix bugs and crashes
                • @@ -182,7 +616,7 @@ - +
                  • Add an Icon Browser to find the right icons for your prototypes
                  • @@ -204,7 +638,7 @@ - +

                    Highlights

                    • Add Blueprint markup syntax for UI
                    • @@ -237,7 +671,7 @@ - +
                      • Add a Library of examples
                      • Add an example of WebSocket client
                      • @@ -257,7 +691,7 @@ - +
                        • Take a png screenshot of the preview
                        • The console is now resizable
                        • @@ -269,8 +703,9 @@ - This is the first release of Workbench. We hope you like it. + +

                          This is the first release of Workbench. We hope you like it.

                          +
                          @@ -279,9 +714,15 @@ ModernToolkit - #33d17a + #57e389 + #26a269 - - [(51, 209, 122)] - + + 1024 + + + keyboard + pointing + touch + diff --git a/data/meson.build b/data/meson.build index cfc707f0c..76838f8a8 100644 --- a/data/meson.build +++ b/data/meson.build @@ -1,68 +1,46 @@ -desktop_file = i18n.merge_file( - input: configure_file( - input: 'app.desktop', - output: 'tmp.app.desktop', - configuration: { 'app_id': app_id } - ), +desktop_file = configure_file( + input: 'app.desktop', output: '@0@.desktop'.format(app_id), - type: 'desktop', - po_dir: '../po', - install: true, - install_dir: join_paths(get_option('datadir'), 'applications') + configuration: { 'app_id': app_id }, + install_dir: get_option('datadir') / 'applications' ) -desktop_utils = find_program('desktop-file-validate', required: false) -if desktop_utils.found() - test('Validate desktop file', desktop_utils, - args: [desktop_file] - ) -endif +desktop_utils = find_program('desktop-file-validate', required: true) +test('Validate desktop file', desktop_utils, + args: [desktop_file] +) configure_file( input: 'app.service', output: '@0@.service'.format(app_id), configuration: { 'app_id': app_id, 'bindir': bindir }, - install_dir: join_paths(get_option('datadir'), 'dbus-1/services') + install_dir: get_option('datadir') / 'dbus-1/services' ) -appstream_file = i18n.merge_file( - input: configure_file( - input: 'app.metainfo.xml', - output: 'tmp.app.metainfo.xml', - configuration: { 'app_id': app_id } - ), +appstream_file = configure_file( + input: 'app.metainfo.xml', output: '@0@.metainfo.xml'.format(app_id), - po_dir: '../po', - install: true, - install_dir: join_paths(get_option('datadir'), 'metainfo') + configuration: { 'app_id': app_id }, + install_dir: get_option('datadir') / 'metainfo' ) -appstream_cli = find_program('appstreamcli', required: false) -if appstream_cli.found() - test('Validate metainfo file', appstream_cli, - args: ['validate', '--override=release-time-missing=info', '--no-net', appstream_file] - ) -endif - -appstream_util = find_program('appstream-util', required: false) -if appstream_util.found() - test('Validate appstream file', appstream_util, - args: ['validate', appstream_file] - ) -endif +appstreamcli = find_program('appstreamcli', required: false) +test( + 'Validate appstream file', + appstreamcli, + args: ['validate', '--no-net', '--explain', appstream_file], +) configure_file( input: 'app.gschema.xml', output: '@0@.gschema.xml'.format(app_id), configuration: { 'app_id': app_id }, - install_dir: join_paths(get_option('datadir'), 'glib-2.0/schemas') + install_dir: get_option('datadir') / 'glib-2.0/schemas' ) -compile_schemas = find_program('glib-compile-schemas', required: false) -if compile_schemas.found() - test('Validate schema file', compile_schemas, - args: ['--strict', '--dry-run', meson.current_source_dir()] - ) -endif +compile_schemas = find_program('glib-compile-schemas', required: true) +test('Validate schema file', compile_schemas, + args: ['--strict', '--dry-run', meson.current_source_dir()] +) -install_subdir('icons/hicolor', install_dir : join_paths(get_option('datadir'), 'icons')) +install_subdir('icons/hicolor', install_dir : get_option('datadir') / 'icons') diff --git a/data/screenshot-code.png b/data/screenshot-code.png deleted file mode 100644 index cbc1b0f33..000000000 Binary files a/data/screenshot-code.png and /dev/null differ diff --git a/data/screenshot-library.png b/data/screenshot-library.png deleted file mode 100644 index 1cbbdfc40..000000000 Binary files a/data/screenshot-library.png and /dev/null differ diff --git a/data/screenshot.png b/data/screenshot.png deleted file mode 100644 index d36529404..000000000 Binary files a/data/screenshot.png and /dev/null differ diff --git a/data/screenshots/code-dark.png b/data/screenshots/code-dark.png new file mode 100644 index 000000000..ef5aa5f6e Binary files /dev/null and b/data/screenshots/code-dark.png differ diff --git a/data/screenshots/code.png b/data/screenshots/code.png new file mode 100644 index 000000000..e64471d86 Binary files /dev/null and b/data/screenshots/code.png differ diff --git a/data/screenshots/library-dark.png b/data/screenshots/library-dark.png new file mode 100644 index 000000000..a6e2a108e Binary files /dev/null and b/data/screenshots/library-dark.png differ diff --git a/data/screenshots/library.png b/data/screenshots/library.png new file mode 100644 index 000000000..1d429dd37 Binary files /dev/null and b/data/screenshots/library.png differ diff --git a/data/screenshots/welcome-dark.png b/data/screenshots/welcome-dark.png new file mode 100644 index 000000000..f03ba2776 Binary files /dev/null and b/data/screenshots/welcome-dark.png differ diff --git a/data/screenshots/welcome.png b/data/screenshots/welcome.png new file mode 100644 index 000000000..ec5658a36 Binary files /dev/null and b/data/screenshots/welcome.png differ diff --git a/demos b/demos new file mode 160000 index 000000000..d49188e64 --- /dev/null +++ b/demos @@ -0,0 +1 @@ +Subproject commit d49188e6441d7103304d29739672101db1b95cae diff --git a/docs/maintenance.md b/docs/maintenance.md index 8d3f3e416..1fe05359a 100644 --- a/docs/maintenance.md +++ b/docs/maintenance.md @@ -1,4 +1,4 @@ -## Maintainance +## Maintenance Notes and instructions for maintainers. diff --git a/gi-types b/gi-types new file mode 160000 index 000000000..396fe1471 --- /dev/null +++ b/gi-types @@ -0,0 +1 @@ +Subproject commit 396fe147142e28a921f0745eff1a562c7a551843 diff --git a/jsconfig.json b/jsconfig.json deleted file mode 100644 index 6e72b63bb..000000000 --- a/jsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "strict": true, - "typeRoots": ["./node_modules/@types", "./node_modules/@gi-types"], - "types": ["gjs-environment", "base-types", "gtk4-types", "adw1"], - "lib": ["ES2022"], - "allowSyntheticDefaultImports": true - }, - "exclude": ["./src/lib", "node_modules"] -} diff --git a/meson.build b/meson.build index 7c0930cec..b38aecf2b 100644 --- a/meson.build +++ b/meson.build @@ -1,14 +1,19 @@ -project('Workbench', ['vala', 'c'], - version: '44.2', - meson_version: '>= 0.59.0', - license: 'GPL-3.0-only' +project( + 'Workbench', + ['vala', 'c', 'rust'], + version: '50.0', + meson_version: '>= 1.0.0', + license: 'GPL-3.0-only', + default_options: [ + 'warning_level=2', + 'werror=false', + ], ) gnome = import('gnome') -i18n = import('i18n') if get_option('profile') == 'development' - app_id = 're.sonny.Workbench.Devel' + app_id = 're.sonny.Workbench.Devel' vcs_tag = run_command('git', 'rev-parse', '--short', 'HEAD').stdout().strip() if vcs_tag == '' version_suffix = '-devel' @@ -21,16 +26,15 @@ else endif prefix = get_option('prefix') -bindir = join_paths(prefix, 'bin') -datadir = join_paths(prefix, get_option('datadir')) -pkgdatadir = join_paths(datadir, app_id) +bindir = prefix / 'bin' +datadir = prefix / get_option('datadir') +pkgdatadir = datadir / app_id subdir('data') subdir('src') -subdir('po') gnome.post_install( glib_compile_schemas: true, gtk_update_icon_cache: true, - update_desktop_database: true + update_desktop_database: true, ) diff --git a/package-lock.json b/package-lock.json index ba821bf0b..cfd2d6c3b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,494 +4,607 @@ "requires": true, "packages": { "": { - "hasInstallScript": true, "devDependencies": { - "@gi-types/adw1": "^1.1.1", - "@gi-types/base-types": "^1.0.0", - "@gi-types/gjs-environment": "^1.1.0", - "@gi-types/gtk4": "^4.6.1", - "@gi-types/gtk4-types": "^1.0.0", + "@babel/core": "^7.25.7", + "@babel/eslint-parser": "^7.25.7", + "@babel/plugin-syntax-import-attributes": "^7.25.7", "@rollup/plugin-commonjs": "^22.0.1", "@rollup/plugin-node-resolve": "^13.3.0", + "eslint": "^8.48.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-prettier": "^5.0.0", "events": "^3.3.0", - "ltx": "git://github.com/xmppjs/ltx.git#093c7bdced57c22f7eccba3bccfc141150654395", + "husky": "^8.0.3", + "lint-staged": "^14.0.1", + "ltx": "git://github.com/xmppjs/ltx.git#072690a43a51254ddd17b082131a8b9115586e8a", "postcss": "^8.4.14", - "prettier": "^2.7.1", + "prettier": "3.0.3", "rollup": "^2.76.0", "rollup-plugin-ignore": "^1.0.10", - "rollup-plugin-node-polyfills": "^0.2.1", - "rome": "^12.1.1" + "rollup-plugin-node-polyfills": "^0.2.1" } }, - "node_modules/@gi-types/accountsservice1": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/accountsservice1/-/accountsservice1-1.0.0.tgz", - "integrity": "sha512-EbtQcheg/Xj5y4k4/HoYr6y2VX80zf93SO4lEN0f6lrdUWKwndEZ5h24bgsDlv2+PoVlrgD6U9OLuRnniKWfFw==", + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", "dev": true, - "dependencies": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@gi-types/adw1": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@gi-types/adw1/-/adw1-1.1.1.tgz", - "integrity": "sha512-w+NxplCUf2AeVdSwkicbVrIOB5QJd9BQo1BI3Xq+2IZkgMRePIUG9/eGsrvmzxKU00EiH211KEwqGe/2UOmomQ==", + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", "dev": true, "dependencies": { - "@gi-types/gdk4": "^4.0.1", - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0", - "@gi-types/gsk4": "^4.0.1", - "@gi-types/gtk4": "^4.6.1" + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@gi-types/atk1": { - "version": "2.36.0", - "resolved": "https://registry.npmjs.org/@gi-types/atk1/-/atk1-2.36.0.tgz", - "integrity": "sha512-lCuoaJwqFDV+V+sf4mOcciLCJitiUsGNg/W2Q5Y+21FycPZqlsjgXb0pimo7gLdq11d1lEfHffh3AkY80+7SHw==", + "node_modules/@babel/code-frame": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz", + "integrity": "sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==", "dev": true, "dependencies": { - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "@babel/highlight": "^7.25.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@gi-types/atspi2": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/atspi2/-/atspi2-2.0.0.tgz", - "integrity": "sha512-B6E6YUEi74ylX2XVRVOhK2jwZhXijcmd2UUp9XdOXg3Ja8Z9+NleOVugShsK7v6B55E3Qzj+W8PyW2ucBnAKVA==", + "node_modules/@babel/compat-data": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.7.tgz", + "integrity": "sha512-9ickoLz+hcXCeh7jrcin+/SLWm+GkxE2kTvoYyp38p4WkdFXfQJxDFGWp/YHjiKLPx06z2A7W8XKuqbReXDzsw==", "dev": true, - "dependencies": { - "@gi-types/dbus1": "^1.0.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@gi-types/base-types": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/base-types/-/base-types-1.0.0.tgz", - "integrity": "sha512-A+TMfI4f+RgBx5uM5la4tqRrraP8N9B3SDFFPvYyH3h9VMcy03/Fp4X0LVtHuYdAUHmdRR8Z4Got9lwVd975+g==", - "dev": true, - "dependencies": { - "@gi-types/accountsservice1": "^1.0.0", - "@gi-types/atk1": "*", - "@gi-types/atspi2": "*", - "@gi-types/cairo1": "*", - "@gi-types/dbus1": "*", - "@gi-types/gck1": "*", - "@gi-types/gcr3": "*", - "@gi-types/gdkpixbuf2": "*", - "@gi-types/gdm1": "*", - "@gi-types/geoclue2": "*", - "@gi-types/gio2": "*", - "@gi-types/girepository2": "^1.68.0", - "@gi-types/glib2": "*", - "@gi-types/gmodule2": "*", - "@gi-types/gobject2": "*", - "@gi-types/harfbuzz2": "*", - "@gi-types/ibus1": "*", - "@gi-types/json1": "*", - "@gi-types/malcontent0": "*", - "@gi-types/modemmanager1": "*", - "@gi-types/nm1": "*", - "@gi-types/notify0": "*", - "@gi-types/pango1": "*", - "@gi-types/polkit1": "*", - "@gi-types/polkitagent1": "*", - "@gi-types/rsvg2": "*", - "@gi-types/soup2": "*", - "@gi-types/telepathyglib0": "*", - "@gi-types/telepathylogger0": "*", - "@gi-types/upowerglib1": "*", - "@gi-types/xlib2": "*" - } - }, - "node_modules/@gi-types/cairo1": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/cairo1/-/cairo1-1.0.0.tgz", - "integrity": "sha512-EURdj33wnPbspWDOyHc2yNmzqnUaDJ+ix6paIooffuPyOKLer+M/+eBFcou6X3j8o6CZvH4D/dguoi3gNzsTQw==", + "node_modules/@babel/core": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.7.tgz", + "integrity": "sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow==", "dev": true, "dependencies": { - "@gi-types/gobject2": "^2.68.0" + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.25.7", + "@babel/generator": "^7.25.7", + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helpers": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/template": "^7.25.7", + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@gi-types/dbus1": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/dbus1/-/dbus1-1.0.0.tgz", - "integrity": "sha512-MyT8RkHL6vySSpd5UWmDmojBZyC3W6zLtpJykABi0TV+pw+TVXQUghP7aYOiFGaXfiYzzRxBp8JoNq6PHHmw+A==", + "node_modules/@babel/eslint-parser": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.25.7.tgz", + "integrity": "sha512-B+BO9x86VYsQHimucBAL1fxTJKF4wyKY6ZVzee9QgzdZOUfs3BaR6AQrgoGrRI+7IFS1wUz/VyQ+SoBcSpdPbw==", "dev": true, "dependencies": { - "@gi-types/gobject2": "^2.68.0" + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0", + "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" } }, - "node_modules/@gi-types/freetype22": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@gi-types/freetype22/-/freetype22-2.0.1.tgz", - "integrity": "sha512-3p4XvTSn6o1UCGpla/1KhvMIwZkgIyBtGErbnXuAvGzULtlseQjX2IljY4fi2FKtFd9ngRtIIF71inRPUIj+1w==", + "node_modules/@babel/generator": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.7.tgz", + "integrity": "sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==", "dev": true, "dependencies": { - "@gi-types/gobject2": "^2.72.1" + "@babel/types": "^7.25.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@gi-types/gck1": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/gck1/-/gck1-1.0.0.tgz", - "integrity": "sha512-MZOJt+9AFiMCAcvi4aIwLCJxqpUrVQTjnLfncK5+52q6Tap6Pw5nMj5RVg5ks6BGL9F2I4BO4689m/TqYlJ8QA==", + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz", + "integrity": "sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==", "dev": true, "dependencies": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "@babel/compat-data": "^7.25.7", + "@babel/helper-validator-option": "^7.25.7", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@gi-types/gcr3": { - "version": "3.40.0", - "resolved": "https://registry.npmjs.org/@gi-types/gcr3/-/gcr3-3.40.0.tgz", - "integrity": "sha512-bgEq++sDcq+8VHFcURCX983/8ifANy9T5LawOiXrN5VVgul7UtO9E+17D1ffiVgQvl2vk13yedN3oboouVG7lg==", + "node_modules/@babel/helper-module-imports": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz", + "integrity": "sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==", "dev": true, "dependencies": { - "@gi-types/gck1": "^1.0.0", - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@gi-types/gdk4": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@gi-types/gdk4/-/gdk4-4.0.1.tgz", - "integrity": "sha512-Msf4bWdw8A0qorTvbvWgCwMno8nUCGLiDcEhNI6iqh6o8IJKchID9a51j6KeqpHkwSPZAcaR2TKM+CVafa4pOw==", + "node_modules/@babel/helper-module-transforms": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz", + "integrity": "sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==", "dev": true, "dependencies": { - "@gi-types/cairo1": "^1.0.0", - "@gi-types/gdkpixbuf2": "^2.0.0", - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0", - "@gi-types/pango1": "^1.0.0" + "@babel/helper-module-imports": "^7.25.7", + "@babel/helper-simple-access": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", + "@babel/traverse": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@gi-types/gdkpixbuf2": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/gdkpixbuf2/-/gdkpixbuf2-2.0.0.tgz", - "integrity": "sha512-8oSX5p09U1JwoNvo8s+OPTsUn6n4K7lkKVa8LC12VxL1z9csI63zmQ4LVHmL54+PQDkVjZGM/zNnV0aHerO2Tw==", + "node_modules/@babel/helper-plugin-utils": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz", + "integrity": "sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==", "dev": true, - "dependencies": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gmodule2": "^2.0.0", - "@gi-types/gobject2": "^2.68.0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@gi-types/gdm1": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/gdm1/-/gdm1-1.0.0.tgz", - "integrity": "sha512-I3p/NPRFRgP2PFLkz64yGNlM5ZGH0ZtWWnivrhEL4Kx7YLfHpRULj1KW2x2W5xIsHMKLwgQmum1qb3dpbQk+Mw==", + "node_modules/@babel/helper-simple-access": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz", + "integrity": "sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==", "dev": true, "dependencies": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@gi-types/geoclue2": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/geoclue2/-/geoclue2-2.0.0.tgz", - "integrity": "sha512-fgtBPESIGkxmKFQ2TIWN2OTfJLj3PYgZUYDa/DPTL0GbLLOZuclLw+Bt+ON2gljf23Lr1CunZqz1f8IcwUzpLQ==", + "node_modules/@babel/helper-string-parser": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz", + "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==", "dev": true, - "dependencies": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@gi-types/gio2": { - "version": "2.72.1", - "resolved": "https://registry.npmjs.org/@gi-types/gio2/-/gio2-2.72.1.tgz", - "integrity": "sha512-V3ASxEbq4xBdw/rcROEbNrTqtFtWfwFOcOsXO+48JPIEqZRTJZcf9LX/ATxi9hxaZXogpmOBMsxuyNsd5ZQXyA==", + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", + "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", "dev": true, - "dependencies": { - "@gi-types/glib2": "^2.72.1", - "@gi-types/gobject2": "^2.72.1" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@gi-types/girepository2": { - "version": "1.68.0", - "resolved": "https://registry.npmjs.org/@gi-types/girepository2/-/girepository2-1.68.0.tgz", - "integrity": "sha512-OYTsgMdQ1UWua6Bvx/rSL29qn9CCZ1rMpoBsfvDs5ol+9nNYsxUIl7AvRIojEk/IbWmYh/K9Kv3Mqi3ntB3aTA==", + "node_modules/@babel/helper-validator-option": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz", + "integrity": "sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==", "dev": true, - "dependencies": { - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@gi-types/gjs-environment": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@gi-types/gjs-environment/-/gjs-environment-1.1.0.tgz", - "integrity": "sha512-WXQ1xwuLou5qobQ76LyYxU5bgZYNbkypm3ZLphNWZLuj8C9MbWmb9BJihdq2IAAyH6+HIrrN6ss1syu7IJZUaA==", + "node_modules/@babel/helpers": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.7.tgz", + "integrity": "sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==", "dev": true, "dependencies": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "@babel/template": "^7.25.7", + "@babel/types": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@gi-types/glib2": { - "version": "2.72.1", - "resolved": "https://registry.npmjs.org/@gi-types/glib2/-/glib2-2.72.1.tgz", - "integrity": "sha512-Mfhs1UGV1a0GOLolqA1xC2oVV5cILbJjGh/M9Db3irqWNIWGM0LUFkoG2nRMBpJ0enhIYbqY9CCpGlMpAnyxOw==", + "node_modules/@babel/highlight": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz", + "integrity": "sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==", "dev": true, "dependencies": { - "@gi-types/gobject2": "^2.72.1" + "@babel/helper-validator-identifier": "^7.25.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@gi-types/gmodule2": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/gmodule2/-/gmodule2-2.0.0.tgz", - "integrity": "sha512-Wnn3CImVWdJbAU2dqeCa7ieFEtxhcCyZVR2d6QHOrFngKBZqDnUqw35mv9mUjp48D5B3kS1QuCszvUZ8VSeHcA==", + "node_modules/@babel/highlight/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": { - "@gi-types/gobject2": "^2.68.0" + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/@gi-types/gobject2": { - "version": "2.72.1", - "resolved": "https://registry.npmjs.org/@gi-types/gobject2/-/gobject2-2.72.1.tgz", - "integrity": "sha512-1UUD2zzwRo7vJLu0J62L1cgB39wjYNs1+6qS0UBhdLhzkOWK+CnVII9CNh21Z4YBs0Oa2d5REeGUiZO4d7a6Zw==", + "node_modules/@babel/highlight/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": { - "@gi-types/glib2": "^2.72.1" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/@gi-types/graphene1": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@gi-types/graphene1/-/graphene1-1.0.1.tgz", - "integrity": "sha512-O5cJG/eIi912eF1zcaXrSur25LgMJDU+VhFDnYuO4Latj32eypFJf5Sw3KOZvN2EoctIBxjutbXLOxYYKMBhHA==", + "node_modules/@babel/highlight/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, - "dependencies": { - "@gi-types/gobject2": "^2.68.0" + "engines": { + "node": ">=0.8.0" } }, - "node_modules/@gi-types/gsk4": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@gi-types/gsk4/-/gsk4-4.0.1.tgz", - "integrity": "sha512-/OtGBQwwtyQw7vjkfC4/P2pQf9hrtB89sXhDyKQG5B2UJ/LTAQQJNK7vu4u2W0Y922WK/zqrzimBy38JUoPO5Q==", + "node_modules/@babel/parser": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.7.tgz", + "integrity": "sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw==", "dev": true, "dependencies": { - "@gi-types/cairo1": "^1.0.0", - "@gi-types/gdk4": "^4.0.1", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0", - "@gi-types/graphene1": "^1.0.1", - "@gi-types/pango1": "^1.0.0" + "@babel/types": "^7.25.7" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@gi-types/gtk4": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@gi-types/gtk4/-/gtk4-4.6.1.tgz", - "integrity": "sha512-WtdHV2S/xParqwJX9BJ/OsGTzoEorEhVAP0W2eJpUk5rqfSlzIXHnNvFvs9T5sT43fRZmefVd3Id1EbxsHKeLg==", + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.7.tgz", + "integrity": "sha512-AqVo+dguCgmpi/3mYBdu9lkngOBlQ2w2vnNpa6gfiCxQZLzV4ZbhsXitJ2Yblkoe1VQwtHSaNmIaGll/26YWRw==", "dev": true, "dependencies": { - "@gi-types/cairo1": "^1.0.0", - "@gi-types/gdk4": "^4.0.1", - "@gi-types/gdkpixbuf2": "^2.0.0", - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0", - "@gi-types/graphene1": "^1.0.1", - "@gi-types/gsk4": "^4.0.1", - "@gi-types/pango1": "^1.50.1" + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@gi-types/gtk4-types": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/gtk4-types/-/gtk4-types-1.0.0.tgz", - "integrity": "sha512-Y7SNMhAX9bUBK/HfJbidMePIjsa/7B6WroLR2nZF3afIzqjYgEugmbYWC85516z0+c1/3Z4eXC8V3j1CleXmGQ==", + "node_modules/@babel/template": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz", + "integrity": "sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==", "dev": true, "dependencies": { - "@gi-types/gdk4": "*", - "@gi-types/graphene1": "*", - "@gi-types/gsk4": "*", - "@gi-types/gtk4": "*" + "@babel/code-frame": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/types": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@gi-types/harfbuzz2": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@gi-types/harfbuzz2/-/harfbuzz2-4.4.2.tgz", - "integrity": "sha512-jsntc6SthoOdw4VSetTOKFI0BM1ccDISP1JQhnL5NETrVuYGnNAwRZ2oDIujuG0M70bHDv/MWKiZnmJxXNPrKw==", + "node_modules/@babel/traverse": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz", + "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==", "dev": true, "dependencies": { - "@gi-types/freetype22": "^2.0.1", - "@gi-types/glib2": "^2.72.1", - "@gi-types/gobject2": "^2.72.1" + "@babel/code-frame": "^7.25.7", + "@babel/generator": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/template": "^7.25.7", + "@babel/types": "^7.25.7", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@gi-types/ibus1": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@gi-types/ibus1/-/ibus1-1.5.0.tgz", - "integrity": "sha512-s8122Qp6jU1xgetUgFRaDto5hNKSFNwDITya+nXL9QWqw2Q4MGPHJlwNb+/QHbcc2rZ0dSu39jW+Z/zWpIlzbg==", + "node_modules/@babel/types": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.7.tgz", + "integrity": "sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ==", "dev": true, "dependencies": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "@babel/helper-string-parser": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@gi-types/json1": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@gi-types/json1/-/json1-1.6.0.tgz", - "integrity": "sha512-qqnqOb+lAkVs0BGAFolAd8SP2NBu0gnaSzECjzWxsjK5VLxd5uYDv6ChDjTW8bhgLWJ9vtG3HQAvsd0O6kU4XQ==", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, "dependencies": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@gi-types/malcontent0": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/malcontent0/-/malcontent0-0.0.0.tgz", - "integrity": "sha512-btlw8DK4rEbLwC47J6Q2NSom7UiSytPZy5JVPK4/faP45CFOCOQ1aJpi5lNaa9cN5AB+Br5EJFVCMDob6hUu8A==", + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "dependencies": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@gi-types/modemmanager1": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/@gi-types/modemmanager1/-/modemmanager1-1.16.0.tgz", - "integrity": "sha512-6pKXtRp+v/TuSS8fsdCTNLDTBp/+cYphmxPhs6UzPxJW56yvmoxbwv+Y5YbKhHxc+hKfBqzP7iNB/JBj+4pF8Q==", + "node_modules/@eslint-community/regexpp": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz", + "integrity": "sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==", "dev": true, - "dependencies": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@gi-types/nm1": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/@gi-types/nm1/-/nm1-1.32.0.tgz", - "integrity": "sha512-TPF9iVP2eZR+z0hw1vFvl7ae7hmPE04mpLaoEYfpH65wW/3ldZ8G72AryKu86zMQ99BEwGU7aplA3gCfPFGI0w==", + "node_modules/@eslint/eslintrc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", "dev": true, "dependencies": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.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" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@gi-types/notify0": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@gi-types/notify0/-/notify0-0.7.0.tgz", - "integrity": "sha512-trQXuPvPlQ6DHj45THn4tbPHjIZumG6CZkspcAzzjDBK2XLIcDVIbUee5YMQUISiAqNKgKzQWp4C63cRYsFazQ==", + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.21.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", + "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", "dev": true, "dependencies": { - "@gi-types/gdkpixbuf2": "^2.0.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@gi-types/pango1": { - "version": "1.50.1", - "resolved": "https://registry.npmjs.org/@gi-types/pango1/-/pango1-1.50.1.tgz", - "integrity": "sha512-SdpoZ5Fcz7Zo8Tal5Ap4Z/4SMqpo/PspORIadxmNZ3kafFOwK7TPvdWiUIBgua+i3uWiLnreKCGD/6rLJLbw3g==", + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "dependencies": { - "@gi-types/gio2": "^2.72.1", - "@gi-types/glib2": "^2.72.1", - "@gi-types/gobject2": "^2.72.1", - "@gi-types/harfbuzz2": "^4.4.2" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@gi-types/polkit1": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/polkit1/-/polkit1-1.0.0.tgz", - "integrity": "sha512-2yQ0btuZXU6ajMgUccIrEQSkE9SUNyL3EbbQ0FkpkJIGMl+c531iXlppVXbNVfovNw6lrVuOHQCaPMH7UJoBpA==", + "node_modules/@eslint/js": { + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.48.0.tgz", + "integrity": "sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==", "dev": true, - "dependencies": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@gi-types/polkitagent1": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/polkitagent1/-/polkitagent1-1.0.0.tgz", - "integrity": "sha512-7dT5BqG9cJk9SEuTnq7BKxa36U20RqFY7udA5OrLuPudrHxIG/fkRAY5+DgVKjVGtp+DO5T2IlYBGDqyQyk3Cg==", + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", "dev": true, "dependencies": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0", - "@gi-types/polkit1": "^1.0.0" + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@gi-types/rsvg2": { - "version": "2.50.0", - "resolved": "https://registry.npmjs.org/@gi-types/rsvg2/-/rsvg2-2.50.0.tgz", - "integrity": "sha512-KfODNokeIxse65cah4IVPdDmZ4A8NcKQuhUOldcx259vQZz8VzYbAJiCw9PZ3BKZFqqEMitX3YSnzlHPZ0xK1Q==", + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "dependencies": { - "@gi-types/cairo1": "^1.0.0", - "@gi-types/gdkpixbuf2": "^2.0.0", - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@gi-types/soup2": { - "version": "2.72.0", - "resolved": "https://registry.npmjs.org/@gi-types/soup2/-/soup2-2.72.0.tgz", - "integrity": "sha512-PGCUaj9IEfA9vIhZPbXNFamklWWCIqszV0OIdyzzQxcL6EcJTdW8mn0DTRGqJPXuC52l/V5smOSF9eelyhMKZA==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "dependencies": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@gi-types/telepathyglib0": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@gi-types/telepathyglib0/-/telepathyglib0-0.12.0.tgz", - "integrity": "sha512-mtuSOev0fP8J4mq+EkVpZpBGwqJhFFPp8yEpNm7LB72xqgHRBSI07hYjgMPO7Fm3EC+i/2aUCoRH/b26sGchBg==", + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", "dev": true, "dependencies": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "eslint-scope": "5.1.1" } }, - "node_modules/@gi-types/telepathylogger0": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@gi-types/telepathylogger0/-/telepathylogger0-0.2.0.tgz", - "integrity": "sha512-rIL+MbB204Gpc3pqbr0xKarFBCcS0gaV3f1u523MQZfAfuK6Hh7ci2tSHmTcXjLtT7+w6F5kcBrHXP7uwMgU9w==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "dependencies": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0", - "@gi-types/telepathyglib0": "^0.12.0" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/@gi-types/upowerglib1": { - "version": "0.99.0", - "resolved": "https://registry.npmjs.org/@gi-types/upowerglib1/-/upowerglib1-0.99.0.tgz", - "integrity": "sha512-MPqFnwKmW4RlV3ififdXiUgzs3+kRjUBmJiM8y+NQApLIbqLipBrpm3IxwkB5oRZV6i9KnHp47AguQvqfjoxtA==", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "dependencies": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/@gi-types/xlib2": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/xlib2/-/xlib2-2.0.0.tgz", - "integrity": "sha512-wFeKKC104EUj6h3HsAIBMUSCZYgphZgNARy4NUWfbjLF0Mx+N84PgzAcUgrWsbrxXKappsZ3mqZfPvdtea948A==", + "node_modules/@pkgr/utils": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", + "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", "dev": true, "dependencies": { - "@gi-types/gobject2": "^2.68.0" + "cross-spawn": "^7.0.3", + "fast-glob": "^3.3.0", + "is-glob": "^4.0.3", + "open": "^9.1.0", + "picocolors": "^1.0.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" } }, "node_modules/@rollup/plugin-commonjs": { @@ -558,90 +671,18 @@ "rollup": "^1.20.0||^2.0.0" } }, - "node_modules/@rometools/cli-darwin-arm64": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@rometools/cli-darwin-arm64/-/cli-darwin-arm64-12.1.1.tgz", - "integrity": "sha512-9ohLIjRnZtgvgBizhZPHzJ3hXR+cTI1v9TmBO7hgUyScnyMrmqr3G3INl4FVFdyjgOWf8y6IT9mvkbCOvHNncQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rometools/cli-darwin-x64": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@rometools/cli-darwin-x64/-/cli-darwin-x64-12.1.1.tgz", - "integrity": "sha512-5H7vWFofuU5qLxgzIaSCHVpc5mcXfs0HCluXhoX9yxeVVxnMEJkwFT6RrXzpud9j82BHiDOFaQmrNUeT1fc+KQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rometools/cli-linux-arm64": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@rometools/cli-linux-arm64/-/cli-linux-arm64-12.1.1.tgz", - "integrity": "sha512-jKJeT6SI1d9bkAlMOYl3dQtzvTi98dsJAzEM91SVXLl5Onjk55Z9QG9f1E4nbS76LK4eZaNMcKqs7F2hSyVedQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rometools/cli-linux-x64": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@rometools/cli-linux-x64/-/cli-linux-x64-12.1.1.tgz", - "integrity": "sha512-CsLjZYtLQdKoMcroXXKUmZdyFQfgVl7C8oIIDcJNzmHZKdVwRhI1M+nK/0vpiFtVjCt6j+Cw2gDYkoQSihTt0w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rometools/cli-win32-arm64": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@rometools/cli-win32-arm64/-/cli-win32-arm64-12.1.1.tgz", - "integrity": "sha512-HHaBZNTIup5xEZRwgAdH15oMBQVnVWG54BizqGJn4oR6zlXkf8S012MNOfgVdEIWW+KDhyfX6vxAH/SBf1Yp1w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rometools/cli-win32-x64": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@rometools/cli-win32-x64/-/cli-win32-x64-12.1.1.tgz", - "integrity": "sha512-yPQPEvaBp/uCulnwl5d5xOxWsb/DtccmBPGg5A8TOm0Lfcts4zSUgEaq3yZ9vwXw1KepMS5NHnZ+zuDjzdtV/Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, "node_modules/@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", "dev": true }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, "node_modules/@types/node": { "version": "17.0.14", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.14.tgz", @@ -657,1213 +698,5919 @@ "@types/node": "*" } }, - "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "node_modules/ansi-escapes": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", + "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", "dev": true, + "dependencies": { + "type-fest": "^1.0.2" + }, "engines": { - "node": ">=6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, "engines": { - "node": ">=0.8.x" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "node_modules/array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "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" }, "engines": { - "node": "*" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/array.prototype.findlastindex": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", + "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "node_modules/array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", "dev": true, "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/is-builtin-module": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz", - "integrity": "sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==", + "node_modules/array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", "dev": true, "dependencies": { - "builtin-modules": "^3.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", + "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-module": { + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "node_modules/is-reference": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", "dev": true, - "dependencies": { - "@types/estree": "*" + "engines": { + "node": ">=0.6" } }, - "node_modules/ltx": { - "version": "3.0.0", - "resolved": "git+ssh://git@github.com/xmppjs/ltx.git#093c7bdced57c22f7eccba3bccfc141150654395", - "integrity": "sha512-SxhGD3mTdPbrQ0qrsW8L3IHyuw1W4TW/g14vqt6mg1qsYtpbmYDQp8QUDtmFq+q/Ljhzcs++WJKoqmXLB2kE6w==", + "node_modules/bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", "dev": true, - "license": "MIT", + "dependencies": { + "big-integer": "^1.6.44" + }, "engines": { - "node": ">= 12.4.0" + "node": ">= 5.10.0" } }, - "node_modules/magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { - "sourcemap-codec": "^1.4.4" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "fill-range": "^7.1.1" }, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "node_modules/browserslist": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", + "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001663", + "electron-to-chromium": "^1.5.28", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + }, "bin": { - "nanoid": "bin/nanoid.cjs" + "browserslist": "cli.js" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true, - "dependencies": { - "wrappy": "1" + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "node_modules/bundle-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", + "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", "dev": true, + "dependencies": { + "run-applescript": "^5.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dev": true, - "engines": { - "node": ">=8.6" + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001666", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001666.tgz", + "integrity": "sha512-gD14ICmoV5ZZM1OdzPWmpx+q4GyefaK06zi8hmfHV5xe4/2nOQX3+Dw5o+fSqOws2xVwL9j+anOPFwHzdEdV4g==", "dev": true, "funding": [ { "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://opencollective.com/browserslist" }, { "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "dev": true, + "dependencies": { + "restore-cursor": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", + "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", + "dev": true, + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/commander": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", + "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "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/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", + "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", + "dev": true, + "dependencies": { + "bundle-name": "^3.0.0", + "default-browser-id": "^3.0.0", + "execa": "^7.1.1", + "titleize": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", + "dev": true, + "dependencies": { + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.5.31", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.31.tgz", + "integrity": "sha512-QcDoBbQeYt0+3CWcK/rEbuHvwpbT/8SV9T3OSgs6cX1FlcUAkgrkqbg9zLnDrMM/rLamzQwal4LYFCiWk861Tg==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/es-abstract": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", + "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.1", + "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.1", + "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.5.0", + "safe-array-concat": "^1.0.0", + "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-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.48.0.tgz", + "integrity": "sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.48.0", + "@humanwhocodes/config-array": "^0.11.10", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "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.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "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", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "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.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", + "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.28.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz", + "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.findlastindex": "^1.2.2", + "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.8.0", + "has": "^1.0.3", + "is-core-module": "^2.13.0", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.6", + "object.groupby": "^1.0.0", + "object.values": "^1.1.6", + "semver": "^6.3.1", + "tsconfig-paths": "^3.14.2" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", + "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.5" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.21.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", + "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "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" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", + "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", + "dev": true, + "dependencies": { + "flatted": "^3.2.7", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "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/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.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/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "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-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/husky": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", + "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", + "dev": true, + "bin": { + "husky": "lib/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-builtin-module": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz", + "integrity": "sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==", + "dev": true, + "dependencies": { + "builtin-modules": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-wsl/node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "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/keyv": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", + "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lint-staged": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-14.0.1.tgz", + "integrity": "sha512-Mw0cL6HXnHN1ag0mN/Dg4g6sr8uf8sn98w2Oc1ECtFto9tvRF7nkXGJRbx8gPlHyoR0pLyBr2lQHbWwmUHe1Sw==", + "dev": true, + "dependencies": { + "chalk": "5.3.0", + "commander": "11.0.0", + "debug": "4.3.4", + "execa": "7.2.0", + "lilconfig": "2.1.0", + "listr2": "6.6.1", + "micromatch": "4.0.5", + "pidtree": "0.6.0", + "string-argv": "0.3.2", + "yaml": "2.3.1" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/listr2": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-6.6.1.tgz", + "integrity": "sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==", + "dev": true, + "dependencies": { + "cli-truncate": "^3.1.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^5.0.1", + "rfdc": "^1.3.0", + "wrap-ansi": "^8.1.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/log-update": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-5.0.1.tgz", + "integrity": "sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==", + "dev": true, + "dependencies": { + "ansi-escapes": "^5.0.0", + "cli-cursor": "^4.0.0", + "slice-ansi": "^5.0.0", + "strip-ansi": "^7.0.1", + "wrap-ansi": "^8.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/ltx": { + "version": "3.1.2", + "resolved": "git+ssh://git@github.com/xmppjs/ltx.git#072690a43a51254ddd17b082131a8b9115586e8a", + "integrity": "sha512-AsQ9ifqUtYTZU79mjlgoeVYPfVxLfqrJHvKaDZwZPEA7bWey4uhMMxfI1NIIxfyX5A/KUOkXl3sbUqR4u6Y/zQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12.4.0" + } + }, + "node_modules/magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true + }, + "node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", + "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", + "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", + "dev": true, + "dependencies": { + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/postcss": { + "version": "8.4.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", + "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", + "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve": { + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.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/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/restore-cursor/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "2.76.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.76.0.tgz", + "integrity": "sha512-9jwRIEY1jOzKLj3nsY/yot41r19ITdQrhs+q3ggNWhr9TQgduHqANvPpS32RNpzGklJu3G1AJfvlZLi/6wFgWA==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-ignore": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/rollup-plugin-ignore/-/rollup-plugin-ignore-1.0.10.tgz", + "integrity": "sha512-VsbnfwwaTv2Dxl2onubetX/3RnSnplNnjdix0hvF8y2YpqdzlZrjIq6zkcuVJ08XysS8zqW3gt3ORBndFDgsrg==", + "dev": true + }, + "node_modules/rollup-plugin-inject": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz", + "integrity": "sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==", + "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject.", + "dev": true, + "dependencies": { + "estree-walker": "^0.6.1", + "magic-string": "^0.25.3", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/rollup-plugin-inject/node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "node_modules/rollup-plugin-node-polyfills": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-polyfills/-/rollup-plugin-node-polyfills-0.2.1.tgz", + "integrity": "sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==", + "dev": true, + "dependencies": { + "rollup-plugin-inject": "^3.0.0" + } + }, + "node_modules/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "dependencies": { + "estree-walker": "^0.6.1" + } + }, + "node_modules/rollup-pluginutils/node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "node_modules/run-applescript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", + "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/run-applescript/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/run-applescript/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/run-applescript/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/run-applescript/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", + "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "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==", + "dev": true + }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true, + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/synckit": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", + "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "dev": true, + "dependencies": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/titleize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", + "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "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" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "dev": true, + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": 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 + }, + "node_modules/yaml": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", + "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true + }, + "@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/code-frame": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz", + "integrity": "sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.25.7", + "picocolors": "^1.0.0" + } + }, + "@babel/compat-data": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.7.tgz", + "integrity": "sha512-9ickoLz+hcXCeh7jrcin+/SLWm+GkxE2kTvoYyp38p4WkdFXfQJxDFGWp/YHjiKLPx06z2A7W8XKuqbReXDzsw==", + "dev": true + }, + "@babel/core": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.7.tgz", + "integrity": "sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.25.7", + "@babel/generator": "^7.25.7", + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helpers": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/template": "^7.25.7", + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + } + }, + "@babel/eslint-parser": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.25.7.tgz", + "integrity": "sha512-B+BO9x86VYsQHimucBAL1fxTJKF4wyKY6ZVzee9QgzdZOUfs3BaR6AQrgoGrRI+7IFS1wUz/VyQ+SoBcSpdPbw==", + "dev": true, + "requires": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + } + }, + "@babel/generator": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.7.tgz", + "integrity": "sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==", + "dev": true, + "requires": { + "@babel/types": "^7.25.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz", + "integrity": "sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.25.7", + "@babel/helper-validator-option": "^7.25.7", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + } + }, + "@babel/helper-module-imports": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz", + "integrity": "sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==", + "dev": true, + "requires": { + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz", + "integrity": "sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.25.7", + "@babel/helper-simple-access": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", + "@babel/traverse": "^7.25.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz", + "integrity": "sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==", + "dev": true + }, + "@babel/helper-simple-access": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz", + "integrity": "sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==", + "dev": true, + "requires": { + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" + } + }, + "@babel/helper-string-parser": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz", + "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", + "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz", + "integrity": "sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==", + "dev": true + }, + "@babel/helpers": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.7.tgz", + "integrity": "sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==", + "dev": true, + "requires": { + "@babel/template": "^7.25.7", + "@babel/types": "^7.25.7" + } + }, + "@babel/highlight": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz", + "integrity": "sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.25.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^1.9.0" + } + }, + "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, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "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 + } + } + }, + "@babel/parser": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.7.tgz", + "integrity": "sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw==", + "dev": true, + "requires": { + "@babel/types": "^7.25.7" + } + }, + "@babel/plugin-syntax-import-attributes": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.7.tgz", + "integrity": "sha512-AqVo+dguCgmpi/3mYBdu9lkngOBlQ2w2vnNpa6gfiCxQZLzV4ZbhsXitJ2Yblkoe1VQwtHSaNmIaGll/26YWRw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.25.7" + } + }, + "@babel/template": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz", + "integrity": "sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/types": "^7.25.7" + } + }, + "@babel/traverse": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz", + "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.25.7", + "@babel/generator": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/template": "^7.25.7", + "@babel/types": "^7.25.7", + "debug": "^4.3.1", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.7.tgz", + "integrity": "sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", + "to-fast-properties": "^2.0.0" + } + }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + } + } + }, + "@eslint-community/regexpp": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz", + "integrity": "sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.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" + }, + "dependencies": { + "globals": { + "version": "13.21.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", + "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, + "@eslint/js": { + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.48.0.tgz", + "integrity": "sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==", + "dev": true + }, + "@humanwhocodes/config-array": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "dev": true, + "requires": { + "eslint-scope": "5.1.1" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@pkgr/utils": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", + "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "fast-glob": "^3.3.0", + "is-glob": "^4.0.3", + "open": "^9.1.0", + "picocolors": "^1.0.0", + "tslib": "^2.6.0" + } + }, + "@rollup/plugin-commonjs": { + "version": "22.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-22.0.1.tgz", + "integrity": "sha512-dGfEZvdjDHObBiP5IvwTKMVeq/tBZGMBHZFMdIV1ClMM/YoWS34xrHFGfag9SN2ZtMgNZRFruqvxZQEa70O6nQ==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "dependencies": { + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + } + } + }, + "@rollup/plugin-node-resolve": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz", + "integrity": "sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "deepmerge": "^4.2.2", + "is-builtin-module": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + } + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "@types/node": { + "version": "17.0.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.14.tgz", + "integrity": "sha512-SbjLmERksKOGzWzPNuW7fJM7fk3YXVTFiZWB/Hs99gwhk+/dnrQRPBQjPW9aO+fi1tAffi9PrwFvsmOKmDTyng==", + "dev": true + }, + "@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-escapes": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", + "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", + "dev": true, + "requires": { + "type-fest": "^1.0.2" + } + }, + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + } + }, + "array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "dev": true, + "requires": { + "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" + } + }, + "array.prototype.findlastindex": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", + "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + } + }, + "array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + } + }, + "arraybuffer.prototype.slice": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", + "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + } + }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "dev": true + }, + "bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "dev": true, + "requires": { + "big-integer": "^1.6.44" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "requires": { + "fill-range": "^7.1.1" + } + }, + "browserslist": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", + "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001663", + "electron-to-chromium": "^1.5.28", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + } + }, + "builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true + }, + "bundle-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", + "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", + "dev": true, + "requires": { + "run-applescript": "^5.0.0" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001666", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001666.tgz", + "integrity": "sha512-gD14ICmoV5ZZM1OdzPWmpx+q4GyefaK06zi8hmfHV5xe4/2nOQX3+Dw5o+fSqOws2xVwL9j+anOPFwHzdEdV4g==", + "dev": true + }, + "chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true + }, + "cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "dev": true, + "requires": { + "restore-cursor": "^4.0.0" + } + }, + "cli-truncate": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", + "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", + "dev": true, + "requires": { + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" + } + }, + "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, + "requires": { + "color-name": "1.1.3" + } + }, + "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 + }, + "colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "commander": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", + "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "default-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", + "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", + "dev": true, + "requires": { + "bundle-name": "^3.0.0", + "default-browser-id": "^3.0.0", + "execa": "^7.1.1", + "titleize": "^3.0.0" + } + }, + "default-browser-id": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", + "dev": true, + "requires": { + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" + } + }, + "define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true + }, + "define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.5.31", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.31.tgz", + "integrity": "sha512-QcDoBbQeYt0+3CWcK/rEbuHvwpbT/8SV9T3OSgs6cX1FlcUAkgrkqbg9zLnDrMM/rLamzQwal4LYFCiWk861Tg==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "es-abstract": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", + "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.1", + "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.1", + "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.5.0", + "safe-array-concat": "^1.0.0", + "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-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.10" + } + }, + "es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + } + }, + "es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.48.0.tgz", + "integrity": "sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.48.0", + "@humanwhocodes/config-array": "^0.11.10", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "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.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "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", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "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.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "globals": { + "version": "13.21.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", + "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" } }, - "node_modules/prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "eslint-config-prettier": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", + "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" + "requires": {} + }, + "eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } } }, - "node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", "dev": true, - "dependencies": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" + "requires": { + "debug": "^3.2.7" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } } }, - "node_modules/rollup": { - "version": "2.76.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.76.0.tgz", - "integrity": "sha512-9jwRIEY1jOzKLj3nsY/yot41r19ITdQrhs+q3ggNWhr9TQgduHqANvPpS32RNpzGklJu3G1AJfvlZLi/6wFgWA==", + "eslint-plugin-import": { + "version": "2.28.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz", + "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==", "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" + "requires": { + "array-includes": "^3.1.6", + "array.prototype.findlastindex": "^1.2.2", + "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.8.0", + "has": "^1.0.3", + "is-core-module": "^2.13.0", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.6", + "object.groupby": "^1.0.0", + "object.values": "^1.1.6", + "semver": "^6.3.1", + "tsconfig-paths": "^3.14.2" }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + } } }, - "node_modules/rollup-plugin-ignore": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/rollup-plugin-ignore/-/rollup-plugin-ignore-1.0.10.tgz", - "integrity": "sha512-VsbnfwwaTv2Dxl2onubetX/3RnSnplNnjdix0hvF8y2YpqdzlZrjIq6zkcuVJ08XysS8zqW3gt3ORBndFDgsrg==", - "dev": true + "eslint-plugin-prettier": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", + "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.5" + } }, - "node_modules/rollup-plugin-inject": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz", - "integrity": "sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==", - "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject.", + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, - "dependencies": { - "estree-walker": "^0.6.1", - "magic-string": "^0.25.3", - "rollup-pluginutils": "^2.8.1" + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" } }, - "node_modules/rollup-plugin-inject/node_modules/estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true }, - "node_modules/rollup-plugin-node-polyfills": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-polyfills/-/rollup-plugin-node-polyfills-0.2.1.tgz", - "integrity": "sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==", + "espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, + "requires": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, "dependencies": { - "rollup-plugin-inject": "^3.0.0" + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + } } }, - "node_modules/rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, "dependencies": { - "estree-walker": "^0.6.1" + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } } }, - "node_modules/rollup-pluginutils/node_modules/estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, - "node_modules/rome": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/rome/-/rome-12.1.1.tgz", - "integrity": "sha512-pUUAf8KHHzzxYCXja80wIlPNvHeU2TEFmxapKOXLfYr4C5XmAjGj3ial4cJOk1JzBGZmd8fgBU3y/mxP3XqiYA==", + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "hasInstallScript": true, - "bin": { - "rome": "bin/rome" - }, - "engines": { - "node": ">=14.*" + "requires": { + "estraverse": "^5.2.0" }, - "optionalDependencies": { - "@rometools/cli-darwin-arm64": "12.1.1", - "@rometools/cli-darwin-x64": "12.1.1", - "@rometools/cli-linux-arm64": "12.1.1", - "@rometools/cli-linux-x64": "12.1.1", - "@rometools/cli-win32-arm64": "12.1.1", - "@rometools/cli-win32-x64": "12.1.1" + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } } }, - "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" - } + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true }, - "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==", + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", "dev": true }, - "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==", + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", "dev": true - } - }, - "dependencies": { - "@gi-types/accountsservice1": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/accountsservice1/-/accountsservice1-1.0.0.tgz", - "integrity": "sha512-EbtQcheg/Xj5y4k4/HoYr6y2VX80zf93SO4lEN0f6lrdUWKwndEZ5h24bgsDlv2+PoVlrgD6U9OLuRnniKWfFw==", + }, + "fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, "requires": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "@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" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } } }, - "@gi-types/adw1": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@gi-types/adw1/-/adw1-1.1.1.tgz", - "integrity": "sha512-w+NxplCUf2AeVdSwkicbVrIOB5QJd9BQo1BI3Xq+2IZkgMRePIUG9/eGsrvmzxKU00EiH211KEwqGe/2UOmomQ==", + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, "requires": { - "@gi-types/gdk4": "^4.0.1", - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0", - "@gi-types/gsk4": "^4.0.1", - "@gi-types/gtk4": "^4.6.1" + "reusify": "^1.0.4" } }, - "@gi-types/atk1": { - "version": "2.36.0", - "resolved": "https://registry.npmjs.org/@gi-types/atk1/-/atk1-2.36.0.tgz", - "integrity": "sha512-lCuoaJwqFDV+V+sf4mOcciLCJitiUsGNg/W2Q5Y+21FycPZqlsjgXb0pimo7gLdq11d1lEfHffh3AkY80+7SHw==", + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "requires": { - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "flat-cache": "^3.0.4" } }, - "@gi-types/atspi2": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/atspi2/-/atspi2-2.0.0.tgz", - "integrity": "sha512-B6E6YUEi74ylX2XVRVOhK2jwZhXijcmd2UUp9XdOXg3Ja8Z9+NleOVugShsK7v6B55E3Qzj+W8PyW2ucBnAKVA==", + "fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "requires": { - "@gi-types/dbus1": "^1.0.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "to-regex-range": "^5.0.1" } }, - "@gi-types/base-types": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/base-types/-/base-types-1.0.0.tgz", - "integrity": "sha512-A+TMfI4f+RgBx5uM5la4tqRrraP8N9B3SDFFPvYyH3h9VMcy03/Fp4X0LVtHuYdAUHmdRR8Z4Got9lwVd975+g==", - "dev": true, - "requires": { - "@gi-types/accountsservice1": "^1.0.0", - "@gi-types/atk1": "*", - "@gi-types/atspi2": "*", - "@gi-types/cairo1": "*", - "@gi-types/dbus1": "*", - "@gi-types/gck1": "*", - "@gi-types/gcr3": "*", - "@gi-types/gdkpixbuf2": "*", - "@gi-types/gdm1": "*", - "@gi-types/geoclue2": "*", - "@gi-types/gio2": "*", - "@gi-types/girepository2": "^1.68.0", - "@gi-types/glib2": "*", - "@gi-types/gmodule2": "*", - "@gi-types/gobject2": "*", - "@gi-types/harfbuzz2": "*", - "@gi-types/ibus1": "*", - "@gi-types/json1": "*", - "@gi-types/malcontent0": "*", - "@gi-types/modemmanager1": "*", - "@gi-types/nm1": "*", - "@gi-types/notify0": "*", - "@gi-types/pango1": "*", - "@gi-types/polkit1": "*", - "@gi-types/polkitagent1": "*", - "@gi-types/rsvg2": "*", - "@gi-types/soup2": "*", - "@gi-types/telepathyglib0": "*", - "@gi-types/telepathylogger0": "*", - "@gi-types/upowerglib1": "*", - "@gi-types/xlib2": "*" - } - }, - "@gi-types/cairo1": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/cairo1/-/cairo1-1.0.0.tgz", - "integrity": "sha512-EURdj33wnPbspWDOyHc2yNmzqnUaDJ+ix6paIooffuPyOKLer+M/+eBFcou6X3j8o6CZvH4D/dguoi3gNzsTQw==", + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "requires": { - "@gi-types/gobject2": "^2.68.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" } }, - "@gi-types/dbus1": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/dbus1/-/dbus1-1.0.0.tgz", - "integrity": "sha512-MyT8RkHL6vySSpd5UWmDmojBZyC3W6zLtpJykABi0TV+pw+TVXQUghP7aYOiFGaXfiYzzRxBp8JoNq6PHHmw+A==", + "flat-cache": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", + "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", "dev": true, "requires": { - "@gi-types/gobject2": "^2.68.0" + "flatted": "^3.2.7", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" } }, - "@gi-types/freetype22": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@gi-types/freetype22/-/freetype22-2.0.1.tgz", - "integrity": "sha512-3p4XvTSn6o1UCGpla/1KhvMIwZkgIyBtGErbnXuAvGzULtlseQjX2IljY4fi2FKtFd9ngRtIIF71inRPUIj+1w==", + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, "requires": { - "@gi-types/gobject2": "^2.72.1" + "is-callable": "^1.1.3" } }, - "@gi-types/gck1": { + "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/gck1/-/gck1-1.0.0.tgz", - "integrity": "sha512-MZOJt+9AFiMCAcvi4aIwLCJxqpUrVQTjnLfncK5+52q6Tap6Pw5nMj5RVg5ks6BGL9F2I4BO4689m/TqYlJ8QA==", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "requires": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" - } + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, - "@gi-types/gcr3": { - "version": "3.40.0", - "resolved": "https://registry.npmjs.org/@gi-types/gcr3/-/gcr3-3.40.0.tgz", - "integrity": "sha512-bgEq++sDcq+8VHFcURCX983/8ifANy9T5LawOiXrN5VVgul7UtO9E+17D1ffiVgQvl2vk13yedN3oboouVG7lg==", + "function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, "requires": { - "@gi-types/gck1": "^1.0.0", - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" } }, - "@gi-types/gdk4": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@gi-types/gdk4/-/gdk4-4.0.1.tgz", - "integrity": "sha512-Msf4bWdw8A0qorTvbvWgCwMno8nUCGLiDcEhNI6iqh6o8IJKchID9a51j6KeqpHkwSPZAcaR2TKM+CVafa4pOw==", + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "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 + }, + "get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", "dev": true, "requires": { - "@gi-types/cairo1": "^1.0.0", - "@gi-types/gdkpixbuf2": "^2.0.0", - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0", - "@gi-types/pango1": "^1.0.0" + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" } }, - "@gi-types/gdkpixbuf2": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/gdkpixbuf2/-/gdkpixbuf2-2.0.0.tgz", - "integrity": "sha512-8oSX5p09U1JwoNvo8s+OPTsUn6n4K7lkKVa8LC12VxL1z9csI63zmQ4LVHmL54+PQDkVjZGM/zNnV0aHerO2Tw==", + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", "dev": true, "requires": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gmodule2": "^2.0.0", - "@gi-types/gobject2": "^2.68.0" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" } }, - "@gi-types/gdm1": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/gdm1/-/gdm1-1.0.0.tgz", - "integrity": "sha512-I3p/NPRFRgP2PFLkz64yGNlM5ZGH0ZtWWnivrhEL4Kx7YLfHpRULj1KW2x2W5xIsHMKLwgQmum1qb3dpbQk+Mw==", + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "requires": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, - "@gi-types/geoclue2": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/geoclue2/-/geoclue2-2.0.0.tgz", - "integrity": "sha512-fgtBPESIGkxmKFQ2TIWN2OTfJLj3PYgZUYDa/DPTL0GbLLOZuclLw+Bt+ON2gljf23Lr1CunZqz1f8IcwUzpLQ==", + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "requires": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "is-glob": "^4.0.3" } }, - "@gi-types/gio2": { - "version": "2.72.1", - "resolved": "https://registry.npmjs.org/@gi-types/gio2/-/gio2-2.72.1.tgz", - "integrity": "sha512-V3ASxEbq4xBdw/rcROEbNrTqtFtWfwFOcOsXO+48JPIEqZRTJZcf9LX/ATxi9hxaZXogpmOBMsxuyNsd5ZQXyA==", + "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 + }, + "globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "dev": true, "requires": { - "@gi-types/glib2": "^2.72.1", - "@gi-types/gobject2": "^2.72.1" + "define-properties": "^1.1.3" } }, - "@gi-types/girepository2": { - "version": "1.68.0", - "resolved": "https://registry.npmjs.org/@gi-types/girepository2/-/girepository2-1.68.0.tgz", - "integrity": "sha512-OYTsgMdQ1UWua6Bvx/rSL29qn9CCZ1rMpoBsfvDs5ol+9nNYsxUIl7AvRIojEk/IbWmYh/K9Kv3Mqi3ntB3aTA==", + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, "requires": { - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "get-intrinsic": "^1.1.3" } }, - "@gi-types/gjs-environment": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@gi-types/gjs-environment/-/gjs-environment-1.1.0.tgz", - "integrity": "sha512-WXQ1xwuLou5qobQ76LyYxU5bgZYNbkypm3ZLphNWZLuj8C9MbWmb9BJihdq2IAAyH6+HIrrN6ss1syu7IJZUaA==", + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "function-bind": "^1.1.1" } }, - "@gi-types/glib2": { - "version": "2.72.1", - "resolved": "https://registry.npmjs.org/@gi-types/glib2/-/glib2-2.72.1.tgz", - "integrity": "sha512-Mfhs1UGV1a0GOLolqA1xC2oVV5cILbJjGh/M9Db3irqWNIWGM0LUFkoG2nRMBpJ0enhIYbqY9CCpGlMpAnyxOw==", + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, + "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 + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", "dev": true, "requires": { - "@gi-types/gobject2": "^2.72.1" + "get-intrinsic": "^1.1.1" } }, - "@gi-types/gmodule2": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/gmodule2/-/gmodule2-2.0.0.tgz", - "integrity": "sha512-Wnn3CImVWdJbAU2dqeCa7ieFEtxhcCyZVR2d6QHOrFngKBZqDnUqw35mv9mUjp48D5B3kS1QuCszvUZ8VSeHcA==", + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dev": true, "requires": { - "@gi-types/gobject2": "^2.68.0" + "has-symbols": "^1.0.2" } }, - "@gi-types/gobject2": { - "version": "2.72.1", - "resolved": "https://registry.npmjs.org/@gi-types/gobject2/-/gobject2-2.72.1.tgz", - "integrity": "sha512-1UUD2zzwRo7vJLu0J62L1cgB39wjYNs1+6qS0UBhdLhzkOWK+CnVII9CNh21Z4YBs0Oa2d5REeGUiZO4d7a6Zw==", + "human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true + }, + "husky": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", + "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", + "dev": true + }, + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { - "@gi-types/glib2": "^2.72.1" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" } }, - "@gi-types/graphene1": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@gi-types/graphene1/-/graphene1-1.0.1.tgz", - "integrity": "sha512-O5cJG/eIi912eF1zcaXrSur25LgMJDU+VhFDnYuO4Latj32eypFJf5Sw3KOZvN2EoctIBxjutbXLOxYYKMBhHA==", + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "@gi-types/gobject2": "^2.68.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "@gi-types/gsk4": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@gi-types/gsk4/-/gsk4-4.0.1.tgz", - "integrity": "sha512-/OtGBQwwtyQw7vjkfC4/P2pQf9hrtB89sXhDyKQG5B2UJ/LTAQQJNK7vu4u2W0Y922WK/zqrzimBy38JUoPO5Q==", + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", "dev": true, "requires": { - "@gi-types/cairo1": "^1.0.0", - "@gi-types/gdk4": "^4.0.1", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0", - "@gi-types/graphene1": "^1.0.1", - "@gi-types/pango1": "^1.0.0" + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" } }, - "@gi-types/gtk4": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@gi-types/gtk4/-/gtk4-4.6.1.tgz", - "integrity": "sha512-WtdHV2S/xParqwJX9BJ/OsGTzoEorEhVAP0W2eJpUk5rqfSlzIXHnNvFvs9T5sT43fRZmefVd3Id1EbxsHKeLg==", + "is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", "dev": true, "requires": { - "@gi-types/cairo1": "^1.0.0", - "@gi-types/gdk4": "^4.0.1", - "@gi-types/gdkpixbuf2": "^2.0.0", - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0", - "@gi-types/graphene1": "^1.0.1", - "@gi-types/gsk4": "^4.0.1", - "@gi-types/pango1": "^1.50.1" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" } }, - "@gi-types/gtk4-types": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/gtk4-types/-/gtk4-types-1.0.0.tgz", - "integrity": "sha512-Y7SNMhAX9bUBK/HfJbidMePIjsa/7B6WroLR2nZF3afIzqjYgEugmbYWC85516z0+c1/3Z4eXC8V3j1CleXmGQ==", + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, "requires": { - "@gi-types/gdk4": "*", - "@gi-types/graphene1": "*", - "@gi-types/gsk4": "*", - "@gi-types/gtk4": "*" + "has-bigints": "^1.0.1" } }, - "@gi-types/harfbuzz2": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@gi-types/harfbuzz2/-/harfbuzz2-4.4.2.tgz", - "integrity": "sha512-jsntc6SthoOdw4VSetTOKFI0BM1ccDISP1JQhnL5NETrVuYGnNAwRZ2oDIujuG0M70bHDv/MWKiZnmJxXNPrKw==", + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, "requires": { - "@gi-types/freetype22": "^2.0.1", - "@gi-types/glib2": "^2.72.1", - "@gi-types/gobject2": "^2.72.1" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, - "@gi-types/ibus1": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@gi-types/ibus1/-/ibus1-1.5.0.tgz", - "integrity": "sha512-s8122Qp6jU1xgetUgFRaDto5hNKSFNwDITya+nXL9QWqw2Q4MGPHJlwNb+/QHbcc2rZ0dSu39jW+Z/zWpIlzbg==", + "is-builtin-module": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz", + "integrity": "sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==", "dev": true, "requires": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "builtin-modules": "^3.0.0" } }, - "@gi-types/json1": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@gi-types/json1/-/json1-1.6.0.tgz", - "integrity": "sha512-qqnqOb+lAkVs0BGAFolAd8SP2NBu0gnaSzECjzWxsjK5VLxd5uYDv6ChDjTW8bhgLWJ9vtG3HQAvsd0O6kU4XQ==", + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true + }, + "is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", "dev": true, "requires": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "has": "^1.0.3" } }, - "@gi-types/malcontent0": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/malcontent0/-/malcontent0-0.0.0.tgz", - "integrity": "sha512-btlw8DK4rEbLwC47J6Q2NSom7UiSytPZy5JVPK4/faP45CFOCOQ1aJpi5lNaa9cN5AB+Br5EJFVCMDob6hUu8A==", + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, "requires": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "has-tostringtag": "^1.0.0" } }, - "@gi-types/modemmanager1": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/@gi-types/modemmanager1/-/modemmanager1-1.16.0.tgz", - "integrity": "sha512-6pKXtRp+v/TuSS8fsdCTNLDTBp/+cYphmxPhs6UzPxJW56yvmoxbwv+Y5YbKhHxc+hKfBqzP7iNB/JBj+4pF8Q==", + "is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "is-extglob": "^2.1.1" } }, - "@gi-types/nm1": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/@gi-types/nm1/-/nm1-1.32.0.tgz", - "integrity": "sha512-TPF9iVP2eZR+z0hw1vFvl7ae7hmPE04mpLaoEYfpH65wW/3ldZ8G72AryKu86zMQ99BEwGU7aplA3gCfPFGI0w==", + "is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", "dev": true, "requires": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "is-docker": "^3.0.0" } }, - "@gi-types/notify0": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@gi-types/notify0/-/notify0-0.7.0.tgz", - "integrity": "sha512-trQXuPvPlQ6DHj45THn4tbPHjIZumG6CZkspcAzzjDBK2XLIcDVIbUee5YMQUISiAqNKgKzQWp4C63cRYsFazQ==", + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, "requires": { - "@gi-types/gdkpixbuf2": "^2.0.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "has-tostringtag": "^1.0.0" } }, - "@gi-types/pango1": { - "version": "1.50.1", - "resolved": "https://registry.npmjs.org/@gi-types/pango1/-/pango1-1.50.1.tgz", - "integrity": "sha512-SdpoZ5Fcz7Zo8Tal5Ap4Z/4SMqpo/PspORIadxmNZ3kafFOwK7TPvdWiUIBgua+i3uWiLnreKCGD/6rLJLbw3g==", + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, "requires": { - "@gi-types/gio2": "^2.72.1", - "@gi-types/glib2": "^2.72.1", - "@gi-types/gobject2": "^2.72.1", - "@gi-types/harfbuzz2": "^4.4.2" + "@types/estree": "*" } }, - "@gi-types/polkit1": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/polkit1/-/polkit1-1.0.0.tgz", - "integrity": "sha512-2yQ0btuZXU6ajMgUccIrEQSkE9SUNyL3EbbQ0FkpkJIGMl+c531iXlppVXbNVfovNw6lrVuOHQCaPMH7UJoBpA==", + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "requires": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, - "@gi-types/polkitagent1": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/polkitagent1/-/polkitagent1-1.0.0.tgz", - "integrity": "sha512-7dT5BqG9cJk9SEuTnq7BKxa36U20RqFY7udA5OrLuPudrHxIG/fkRAY5+DgVKjVGtp+DO5T2IlYBGDqyQyk3Cg==", + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dev": true, "requires": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0", - "@gi-types/polkit1": "^1.0.0" + "call-bind": "^1.0.2" } }, - "@gi-types/rsvg2": { - "version": "2.50.0", - "resolved": "https://registry.npmjs.org/@gi-types/rsvg2/-/rsvg2-2.50.0.tgz", - "integrity": "sha512-KfODNokeIxse65cah4IVPdDmZ4A8NcKQuhUOldcx259vQZz8VzYbAJiCw9PZ3BKZFqqEMitX3YSnzlHPZ0xK1Q==", + "is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, "requires": { - "@gi-types/cairo1": "^1.0.0", - "@gi-types/gdkpixbuf2": "^2.0.0", - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "has-tostringtag": "^1.0.0" } }, - "@gi-types/soup2": { - "version": "2.72.0", - "resolved": "https://registry.npmjs.org/@gi-types/soup2/-/soup2-2.72.0.tgz", - "integrity": "sha512-PGCUaj9IEfA9vIhZPbXNFamklWWCIqszV0OIdyzzQxcL6EcJTdW8mn0DTRGqJPXuC52l/V5smOSF9eelyhMKZA==", + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, "requires": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "has-symbols": "^1.0.2" } }, - "@gi-types/telepathyglib0": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@gi-types/telepathyglib0/-/telepathyglib0-0.12.0.tgz", - "integrity": "sha512-mtuSOev0fP8J4mq+EkVpZpBGwqJhFFPp8yEpNm7LB72xqgHRBSI07hYjgMPO7Fm3EC+i/2aUCoRH/b26sGchBg==", + "is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", "dev": true, "requires": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "which-typed-array": "^1.1.11" } }, - "@gi-types/telepathylogger0": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@gi-types/telepathylogger0/-/telepathylogger0-0.2.0.tgz", - "integrity": "sha512-rIL+MbB204Gpc3pqbr0xKarFBCcS0gaV3f1u523MQZfAfuK6Hh7ci2tSHmTcXjLtT7+w6F5kcBrHXP7uwMgU9w==", + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, "requires": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/glib2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0", - "@gi-types/telepathyglib0": "^0.12.0" + "call-bind": "^1.0.2" } }, - "@gi-types/upowerglib1": { - "version": "0.99.0", - "resolved": "https://registry.npmjs.org/@gi-types/upowerglib1/-/upowerglib1-0.99.0.tgz", - "integrity": "sha512-MPqFnwKmW4RlV3ififdXiUgzs3+kRjUBmJiM8y+NQApLIbqLipBrpm3IxwkB5oRZV6i9KnHp47AguQvqfjoxtA==", + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "requires": { - "@gi-types/gio2": "^2.68.0", - "@gi-types/gobject2": "^2.68.0" + "is-docker": "^2.0.0" + }, + "dependencies": { + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + } } }, - "@gi-types/xlib2": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@gi-types/xlib2/-/xlib2-2.0.0.tgz", - "integrity": "sha512-wFeKKC104EUj6h3HsAIBMUSCZYgphZgNARy4NUWfbjLF0Mx+N84PgzAcUgrWsbrxXKappsZ3mqZfPvdtea948A==", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { - "@gi-types/gobject2": "^2.68.0" + "argparse": "^2.0.1" } }, - "@rollup/plugin-commonjs": { - "version": "22.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-22.0.1.tgz", - "integrity": "sha512-dGfEZvdjDHObBiP5IvwTKMVeq/tBZGMBHZFMdIV1ClMM/YoWS34xrHFGfag9SN2ZtMgNZRFruqvxZQEa70O6nQ==", + "jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, + "keyv": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", + "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", "dev": true, "requires": { - "@rollup/pluginutils": "^3.1.0", - "commondir": "^1.0.1", - "estree-walker": "^2.0.1", - "glob": "^7.1.6", - "is-reference": "^1.2.1", - "magic-string": "^0.25.7", - "resolve": "^1.17.0" - }, - "dependencies": { - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - } + "json-buffer": "3.0.1" } }, - "@rollup/plugin-node-resolve": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz", - "integrity": "sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==", + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "requires": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "deepmerge": "^4.2.2", - "is-builtin-module": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.19.0" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" } }, - "@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true + }, + "lint-staged": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-14.0.1.tgz", + "integrity": "sha512-Mw0cL6HXnHN1ag0mN/Dg4g6sr8uf8sn98w2Oc1ECtFto9tvRF7nkXGJRbx8gPlHyoR0pLyBr2lQHbWwmUHe1Sw==", "dev": true, "requires": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" + "chalk": "5.3.0", + "commander": "11.0.0", + "debug": "4.3.4", + "execa": "7.2.0", + "lilconfig": "2.1.0", + "listr2": "6.6.1", + "micromatch": "4.0.5", + "pidtree": "0.6.0", + "string-argv": "0.3.2", + "yaml": "2.3.1" + } + }, + "listr2": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-6.6.1.tgz", + "integrity": "sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==", + "dev": true, + "requires": { + "cli-truncate": "^3.1.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^5.0.1", + "rfdc": "^1.3.0", + "wrap-ansi": "^8.1.0" } }, - "@rometools/cli-darwin-arm64": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@rometools/cli-darwin-arm64/-/cli-darwin-arm64-12.1.1.tgz", - "integrity": "sha512-9ohLIjRnZtgvgBizhZPHzJ3hXR+cTI1v9TmBO7hgUyScnyMrmqr3G3INl4FVFdyjgOWf8y6IT9mvkbCOvHNncQ==", + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "optional": true + "requires": { + "p-locate": "^5.0.0" + } }, - "@rometools/cli-darwin-x64": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@rometools/cli-darwin-x64/-/cli-darwin-x64-12.1.1.tgz", - "integrity": "sha512-5H7vWFofuU5qLxgzIaSCHVpc5mcXfs0HCluXhoX9yxeVVxnMEJkwFT6RrXzpud9j82BHiDOFaQmrNUeT1fc+KQ==", - "dev": true, - "optional": true + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true }, - "@rometools/cli-linux-arm64": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@rometools/cli-linux-arm64/-/cli-linux-arm64-12.1.1.tgz", - "integrity": "sha512-jKJeT6SI1d9bkAlMOYl3dQtzvTi98dsJAzEM91SVXLl5Onjk55Z9QG9f1E4nbS76LK4eZaNMcKqs7F2hSyVedQ==", + "log-update": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-5.0.1.tgz", + "integrity": "sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==", "dev": true, - "optional": true + "requires": { + "ansi-escapes": "^5.0.0", + "cli-cursor": "^4.0.0", + "slice-ansi": "^5.0.0", + "strip-ansi": "^7.0.1", + "wrap-ansi": "^8.0.1" + } }, - "@rometools/cli-linux-x64": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@rometools/cli-linux-x64/-/cli-linux-x64-12.1.1.tgz", - "integrity": "sha512-CsLjZYtLQdKoMcroXXKUmZdyFQfgVl7C8oIIDcJNzmHZKdVwRhI1M+nK/0vpiFtVjCt6j+Cw2gDYkoQSihTt0w==", + "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, - "optional": true + "requires": { + "yallist": "^3.0.2" + } }, - "@rometools/cli-win32-arm64": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@rometools/cli-win32-arm64/-/cli-win32-arm64-12.1.1.tgz", - "integrity": "sha512-HHaBZNTIup5xEZRwgAdH15oMBQVnVWG54BizqGJn4oR6zlXkf8S012MNOfgVdEIWW+KDhyfX6vxAH/SBf1Yp1w==", + "ltx": { + "version": "git+ssh://git@github.com/xmppjs/ltx.git#072690a43a51254ddd17b082131a8b9115586e8a", + "integrity": "sha512-AsQ9ifqUtYTZU79mjlgoeVYPfVxLfqrJHvKaDZwZPEA7bWey4uhMMxfI1NIIxfyX5A/KUOkXl3sbUqR4u6Y/zQ==", "dev": true, - "optional": true + "from": "ltx@git://github.com/xmppjs/ltx.git#072690a43a51254ddd17b082131a8b9115586e8a" }, - "@rometools/cli-win32-x64": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@rometools/cli-win32-x64/-/cli-win32-x64-12.1.1.tgz", - "integrity": "sha512-yPQPEvaBp/uCulnwl5d5xOxWsb/DtccmBPGg5A8TOm0Lfcts4zSUgEaq3yZ9vwXw1KepMS5NHnZ+zuDjzdtV/Q==", + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", "dev": true, - "optional": true + "requires": { + "sourcemap-codec": "^1.4.4" + } }, - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, - "@types/node": { - "version": "17.0.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.14.tgz", - "integrity": "sha512-SbjLmERksKOGzWzPNuW7fJM7fk3YXVTFiZWB/Hs99gwhk+/dnrQRPBQjPW9aO+fi1tAffi9PrwFvsmOKmDTyng==", + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true }, - "@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "@types/node": "*" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "brace-expansion": "^1.1.7" } }, - "builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "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 }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", "dev": true }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true + "npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "requires": { + "path-key": "^4.0.0" + }, + "dependencies": { + "path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true + } + } }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "dev": true }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { + "object-keys": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" } }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", "dev": true, "requires": { - "function-bind": "^1.1.1" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "object.groupby": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", + "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", "dev": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" } }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "is-builtin-module": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz", - "integrity": "sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==", + "object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", "dev": true, "requires": { - "builtin-modules": "^3.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, - "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "has": "^1.0.3" - } - }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true + "wrappy": "1" + } }, - "is-reference": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, "requires": { - "@types/estree": "*" + "mimic-fn": "^4.0.0" } }, - "ltx": { - "version": "git+ssh://git@github.com/xmppjs/ltx.git#093c7bdced57c22f7eccba3bccfc141150654395", - "integrity": "sha512-SxhGD3mTdPbrQ0qrsW8L3IHyuw1W4TW/g14vqt6mg1qsYtpbmYDQp8QUDtmFq+q/Ljhzcs++WJKoqmXLB2kE6w==", + "open": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", + "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", "dev": true, - "from": "ltx@git://github.com/xmppjs/ltx.git#093c7bdced57c22f7eccba3bccfc141150654395" + "requires": { + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" + } }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "requires": { - "sourcemap-codec": "^1.4.4" + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" } }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "yocto-queue": "^0.1.0" } }, - "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "requires": { - "wrappy": "1" + "callsites": "^3.0.0" } }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -1871,9 +6618,9 @@ "dev": true }, "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", "dev": true }, "picomatch": { @@ -1882,34 +6629,132 @@ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, + "pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true + }, "postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "version": "8.4.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", + "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", "dev": true, "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" } }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, "prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "dev": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, + "regexp.prototype.flags": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", + "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" + } + }, "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", "dev": true, "requires": { - "is-core-module": "^2.8.1", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "dependencies": { + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + } + } + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, "rollup": { "version": "2.76.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.76.0.tgz", @@ -1970,24 +6815,160 @@ } } }, - "rome": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/rome/-/rome-12.1.1.tgz", - "integrity": "sha512-pUUAf8KHHzzxYCXja80wIlPNvHeU2TEFmxapKOXLfYr4C5XmAjGj3ial4cJOk1JzBGZmd8fgBU3y/mxP3XqiYA==", + "run-applescript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", + "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", + "dev": true, + "requires": { + "execa": "^5.0.0" + }, + "dependencies": { + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + } + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-array-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", + "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + } + }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", "dev": true, "requires": { - "@rometools/cli-darwin-arm64": "12.1.1", - "@rometools/cli-darwin-x64": "12.1.1", - "@rometools/cli-linux-arm64": "12.1.1", - "@rometools/cli-linux-x64": "12.1.1", - "@rometools/cli-win32-arm64": "12.1.1", - "@rometools/cli-win32-x64": "12.1.1" + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" } }, "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==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "dev": true }, "sourcemap-codec": { @@ -1996,17 +6977,332 @@ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, + "string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + }, + "strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^3.0.0" + } + }, "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 }, + "synckit": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", + "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "dev": true, + "requires": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.5.0" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "titleize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", + "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", + "dev": true + }, + "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 + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true + }, + "typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + } + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "dev": true, + "requires": { + "escalade": "^3.2.0", + "picocolors": "^1.1.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "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" + } + }, + "which-typed-array": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "dev": true, + "requires": { + "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" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "yaml": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", + "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true } } } diff --git a/package.json b/package.json index f3dd66ebd..1c518669f 100644 --- a/package.json +++ b/package.json @@ -1,24 +1,36 @@ { "private": true, "devDependencies": { - "@gi-types/adw1": "^1.1.1", - "@gi-types/base-types": "^1.0.0", - "@gi-types/gjs-environment": "^1.1.0", - "@gi-types/gtk4": "^4.6.1", - "@gi-types/gtk4-types": "^1.0.0", + "@babel/core": "^7.25.7", + "@babel/eslint-parser": "^7.25.7", + "@babel/plugin-syntax-import-attributes": "^7.25.7", "@rollup/plugin-commonjs": "^22.0.1", "@rollup/plugin-node-resolve": "^13.3.0", + "eslint": "^8.48.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-prettier": "^5.0.0", "events": "^3.3.0", - "ltx": "git://github.com/xmppjs/ltx.git#093c7bdced57c22f7eccba3bccfc141150654395", + "husky": "^8.0.3", + "lint-staged": "^14.0.1", + "ltx": "git://github.com/xmppjs/ltx.git#072690a43a51254ddd17b082131a8b9115586e8a", "postcss": "^8.4.14", - "prettier": "^2.7.1", + "prettier": "3.0.3", "rollup": "^2.76.0", "rollup-plugin-ignore": "^1.0.10", - "rollup-plugin-node-polyfills": "^0.2.1", - "rome": "^12.1.1" + "rollup-plugin-node-polyfills": "^0.2.1" }, "type": "module", "scripts": { - "postinstall": "rollup -c rollup.config.js" + "prepare": "husky install" + }, + "lint-staged": { + "*.{json,md,yaml,yml}": "prettier --write", + "*.{js,cjs,mjs}": "eslint --fix", + "*.css": "./build-aux/fun workbench-cli format css", + "*.py": "./build-aux/fun workbench-cli format python", + "*.rs": "./build-aux/fun rustfmt --edition 2021", + "*.blp": "./build-aux/fun workbench-cli format blueprint", + "*.vala": "./build-aux/fun workbench-cli format vala" } } diff --git a/po/LINGUAS b/po/LINGUAS deleted file mode 100644 index 0cd02b368..000000000 --- a/po/LINGUAS +++ /dev/null @@ -1,19 +0,0 @@ -it -tr -fr -cs -de -fa -nb_NO -pt_BR -es -pl -nl -ja -ru -zh_Hans -he -id -ar -ca -vi diff --git a/po/POTFILES b/po/POTFILES deleted file mode 100644 index 9d5771ac1..000000000 --- a/po/POTFILES +++ /dev/null @@ -1,62 +0,0 @@ -data/app.desktop -data/app.gschema.xml -data/app.metainfo.xml - -# src/lib/ltx.js -# src/lib/prettier.js -# src/lib/prettier-babel.js -# src/lib/prettier-postcss.js -# src/lib/postcss.js - -src/log_handler.js -src/xml.js -src/lsp/LSP.js -src/util.js -troll/src/util.js -src/Document.js -src/lsp/LSPClient.js -src/WorkbenchHoverProvider.js -src/PanelUI.js -src/PanelCode.js -src/PanelStyle.js -src/TermConsole.js -src/Devtools.js -src/Library/Library.js -src/Previewer/Internal.js -src/Previewer/DBusPreviewer.js -src/Previewer/External.js -src/overrides.js -src/Previewer/utils.js -src/Previewer/Previewer.js -src/Compiler.js -src/window.js -src/about.js -src/shortcutsWindow.js -src/actions.js -src/application.js -src/main.js -src/window.blp -src/shortcutsWindow.blp -src/Library/Library.blp - -troll/src/widgets/ThemeSelector.blp -troll/src/widgets/ThemeSelector.js - -src/init.js -src/langs/xml/xml.js -src/langs/blueprint/blueprint.js -src/langs/vala/vala.js -src/langs/javascript/javascript.js -src/langs/vala/Compiler.js -src/widgets/Modal.blp -src/widgets/Modal.js -src/widgets/CodeView.blp -src/widgets/CodeView.js -src/IconLibrary/IconWidget.blp -src/IconLibrary/IconWidget.js -src/IconLibrary/main.blp -src/IconLibrary/main.js -src/sessions.js -src/DocumentationViewer.blp -src/DocumentationViewer.js -src/langs/css/css.js diff --git a/po/ar.po b/po/ar.po deleted file mode 100644 index 0a6c26bdb..000000000 --- a/po/ar.po +++ /dev/null @@ -1,752 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR Sonny Piers -# This file is distributed under the same license as the re.sonny.Workbench package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: re.sonny.Workbench\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-18 13:24+0100\n" -"PO-Revision-Date: 2022-07-20 12:17+0000\n" -"Last-Translator: Mouhanad Masri \n" -"Language-Team: Arabic \n" -"Language: ar\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " -"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" -"X-Generator: Weblate 4.14-dev\n" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:4 -msgid "Workbench" -msgstr "منضدة" - -#: data/app.desktop:5 data/app.metainfo.xml:10 -msgid "Learn and prototype with GNOME technologies" -msgstr "تعلن و اصنع النماذج مستعملا تقنيات GNOME" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:12 -msgid "CSS;JavaScript;GJS;Blueprint;builder;Vala;" -msgstr "CSS;JavaScript;GJS;Blueprint;builder;Vala;" - -#: data/app.metainfo.xml:13 -msgid "" -"Workbench goal is to let you experiment with GNOME technologies, no matter " -"if tinkering for the first time or building and testing a GTK user interface." -msgstr "" -"هدف Workbench هو تمكينك من بتجربة تقنيات GNOME، بغض النظر عما إذا كنت تقوم " -"بالعبث لأول مرة أو بناء واختبار واجهة مستخدم GTK." - -#: data/app.metainfo.xml:14 -msgid "Among other things, Workbench comes with" -msgstr "من بين أمور أخرى ، يأتي Workbench مع" - -#: data/app.metainfo.xml:16 -msgid "realtime GTK/CSS preview" -msgstr "عرض مسبق ل GTK / CSS في الوقت الحقيقي" - -#: data/app.metainfo.xml:17 -msgid "library of examples" -msgstr "مكتبة من الأمثلة" - -#: data/app.metainfo.xml:18 -msgid "1000+ icons" -msgstr "" - -#: data/app.metainfo.xml:19 -#, fuzzy -msgid "JavaScript and Vala support" -msgstr "يعمل JavaScript و Vala بدون أي إعداد" - -#: data/app.metainfo.xml:20 -msgid "XML and Blueprint for describing user interface" -msgstr "XML و Blueprints لصنع واجهة المستخدم" - -#: data/app.metainfo.xml:21 -msgid "syntax highlighting, undo/redo, autosave, session restore" -msgstr "" -"تمييز بناء الجملة ، تراجع / إعادة الخطوات ، الحفظ التلقائي ، استعادة الجلسة" - -#: data/app.metainfo.xml:22 -msgid "code formatter" -msgstr "منسق التعليمات البرمجية" - -#: data/app.metainfo.xml:23 -msgid "console logs" -msgstr "يسجل الاحداث في لوحة مراقبة" - -#: data/app.metainfo.xml:52 -msgid "Use Vala Language Server for diagnostics" -msgstr "" - -#: data/app.metainfo.xml:53 -#, fuzzy -msgid "Move Icon Browser to the main application menu" -msgstr "نقل الإشارات المرجعية إلى القائمة الرئيسية" - -#: data/app.metainfo.xml:54 -msgid "Reset window preview on close" -msgstr "" - -#: data/app.metainfo.xml:55 -msgid "Add a warning about Blueprint being experimental" -msgstr "" - -#: data/app.metainfo.xml:56 -msgid "Fix loading and running code with Blueprint UI" -msgstr "" - -#: data/app.metainfo.xml:57 -msgid "Fix crash when using abstract UI types" -msgstr "" - -#: data/app.metainfo.xml:58 -msgid "Fix \"No UI definition loaded yet.\" preview error when using Vala" -msgstr "" - -#: data/app.metainfo.xml:59 -msgid "Fix error message when hovering text with no diagnostic" -msgstr "" - -#: data/app.metainfo.xml:60 -msgid "VTE 0.70.1" -msgstr "" - -#: data/app.metainfo.xml:67 -msgid "GNOME 43" -msgstr "" - -#: data/app.metainfo.xml:68 -msgid "Display CSS errors inline" -msgstr "" - -#: data/app.metainfo.xml:69 -msgid "Fix responsiveness when working on large Blueprint files" -msgstr "" - -#: data/app.metainfo.xml:70 -msgid "Use AdwAboutWindow" -msgstr "" - -#: data/app.metainfo.xml:71 -#, fuzzy -msgid "Blueprint 0.4.0" -msgstr "Blueprint" - -#: data/app.metainfo.xml:72 -msgid "VTE 0.70.0" -msgstr "" - -#: data/app.metainfo.xml:73 -#, fuzzy -msgid "Various bug and crash fixes" -msgstr "إصلاحات مختلفة" - -#: data/app.metainfo.xml:80 -msgid "Show tooltip hints in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:81 -#, fuzzy -msgid "Improve XML formatter" -msgstr "منسق التعليمات البرمجية" - -#: data/app.metainfo.xml:82 -msgid "Add Ctrl+Shift+Return shortcut to format" -msgstr "" - -#: data/app.metainfo.xml:83 -msgid "Apply Style CSS to windowed preview" -msgstr "" - -#: data/app.metainfo.xml:84 data/app.metainfo.xml:129 -msgid "Improve application design" -msgstr "تحسين تصميم التطبيق" - -#: data/app.metainfo.xml:85 -msgid "Prevent crash for templates with GtkWidget parent" -msgstr "" - -#: data/app.metainfo.xml:86 -#, fuzzy -msgid "Update VTE and icon-development-kit" -msgstr "قم بتضمين جميع الأيقونات من مجموعة تطوير الأيقونات" - -#: data/app.metainfo.xml:93 -msgid "Underline errors in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:94 -msgid "Fix bugs and crashes" -msgstr "" - -#: data/app.metainfo.xml:102 -msgid "Add an Icon Browser to find the right icons for your prototypes" -msgstr "" - -#: data/app.metainfo.xml:103 -msgid "Add a Platform tools Library demo" -msgstr "" - -#: data/app.metainfo.xml:104 -msgid "Improve the style switcher" -msgstr "" - -#: data/app.metainfo.xml:105 -msgid "Replace confirmation dialogs with toasts and undo" -msgstr "" - -#: data/app.metainfo.xml:106 -msgid "Support updates on root objects" -msgstr "" - -#: data/app.metainfo.xml:107 -#, fuzzy -msgid "Support binding signal handlers from UI" -msgstr "إضافة دعم لمعاينة معالجات الإشارة" - -#: data/app.metainfo.xml:108 -msgid "Add APIs to allow using templates from Code" -msgstr "" - -#: data/app.metainfo.xml:109 -#, fuzzy -msgid "Add Center/Fill preview modes for templates" -msgstr "أضف دعمًا لمعاينة القوالب" - -#: data/app.metainfo.xml:111 -msgid "Open external preview with the dimensions of the internal preview" -msgstr "" - -#: data/app.metainfo.xml:112 -msgid "64 new icons available" -msgstr "" - -#: data/app.metainfo.xml:113 -msgid "Update Blueprint to 0.2.0" -msgstr "" - -#: data/app.metainfo.xml:114 -msgid "Fix empty preview on first load" -msgstr "" - -#: data/app.metainfo.xml:115 -msgid "Fix style scheme switch when system preference is light" -msgstr "" - -#: data/app.metainfo.xml:116 -msgid "Remove grid pattern on the source editors" -msgstr "" - -#: data/app.metainfo.xml:122 -msgid "Highlights" -msgstr "اهم الميزات" - -#: data/app.metainfo.xml:124 -msgid "Add Blueprint markup syntax for UI" -msgstr "أضف بنية ترميز Blueprint لواجهة المستخدم" - -#: data/app.metainfo.xml:125 -msgid "Add Vala programming language for Code" -msgstr "أضف لغة البرمجة Vala" - -#: data/app.metainfo.xml:126 -msgid "Add support for previewing templates" -msgstr "أضف دعمًا لمعاينة القوالب" - -#: data/app.metainfo.xml:127 -msgid "Add support for previewing signal handlers" -msgstr "إضافة دعم لمعاينة معالجات الإشارة" - -#: data/app.metainfo.xml:128 -msgid "Include all icons from icon-development-kit" -msgstr "قم بتضمين جميع الأيقونات من مجموعة تطوير الأيقونات" - -#: data/app.metainfo.xml:130 -msgid "Distribute Library examples under CC0-1.0" -msgstr "توزيع أمثلة المكتبة تحت CC0-1.0" - -#: data/app.metainfo.xml:131 -msgid "Respect system preference for color scheme" -msgstr "احترم تفضيل النظام لنظام الألوان" - -#: data/app.metainfo.xml:132 -msgid "Add proper light/dark color schemes for Console" -msgstr "أضف أنظمة ألوان فاتحة / داكنة مناسبة لوحدة التحكم" - -#: data/app.metainfo.xml:133 -#, fuzzy -msgid "Fix error when importing files" -msgstr "إصلاح الخطأ عند فتح الملف" - -#: data/app.metainfo.xml:135 -msgid "Other changes" -msgstr "تغييرات أخرى" - -#: data/app.metainfo.xml:137 -#, fuzzy -msgid "Silence platform tools" -msgstr "أدوات منصة الصمت" - -#: data/app.metainfo.xml:138 -msgid "Remove GTK Icon browser platform tool" -msgstr "" - -#: data/app.metainfo.xml:139 -msgid "Make Library examples only open relevant panels" -msgstr "اجعل أمثلة المكتبة تفتح اللوحات ذات الصلة فقط" - -#: data/app.metainfo.xml:140 -msgid "Always open the Console when opening a Library example" -msgstr "افتح لوحة التحكم دائمًا عند فتح مثال مكتبة" - -#: data/app.metainfo.xml:141 -msgid "Prevent running Code if the panel is not visible" -msgstr "منع تشغيل الكود إذا كانت اللوحة غير مرئية" - -#: data/app.metainfo.xml:142 -#, fuzzy -msgid "Add icons and mnemonics for all buttons" -msgstr "أضف أيقونات وذكريات لجميع الأزرار" - -#: data/app.metainfo.xml:143 -msgid "Move Bookmarks to the main menu" -msgstr "نقل الإشارات المرجعية إلى القائمة الرئيسية" - -#: data/app.metainfo.xml:144 -msgid "Enable scrollbar and kinetic scrolling on Console" -msgstr "تفعيل شريط التمرير والتمرير الحركي على وحدة التحكم" - -#: data/app.metainfo.xml:145 -msgid "Improve Library examples" -msgstr "تحسين أمثلة المكتبة" - -#: data/app.metainfo.xml:146 -msgid "Performance optimizations" -msgstr "تحسين الأداء" - -#: data/app.metainfo.xml:147 -msgid "Show a placeholder when all panels are invisible" -msgstr "إظهار عنصر نائب عندما تكون كل اللوحات غير مرئية" - -#: data/app.metainfo.xml:148 -msgid "Crash fixes" -msgstr "إصلاحات الأعطال" - -#: data/app.metainfo.xml:149 -msgid "Use org.gnome.Sdk runtime" -msgstr "استخدم وقت تشغيل org.gnome.Sdk" - -#: data/app.metainfo.xml:156 -msgid "Add a Library of examples" -msgstr "أضف مكتبة من الأمثلة" - -#: data/app.metainfo.xml:157 -msgid "Add an example of WebSocket client" -msgstr "أضف مثالاً لعميل WebSocket" - -#: data/app.metainfo.xml:158 -msgid "Add an example of toasts" -msgstr "" - -#: data/app.metainfo.xml:159 -msgid "Add an example of application window" -msgstr "أضف مثالاً لنافذة التطبيق" - -#: data/app.metainfo.xml:160 -msgid "Add an example of desktop notification" -msgstr "أضف مثالاً على تنبيه سطح المكتب" - -#: data/app.metainfo.xml:162 -msgid "Add Adwaita Demo, GTK Demo, GTK Widget Factory and GTK Icon Browser" -msgstr "اضف Adwaita Demo, GTK Demo, GTK Widget Factory و GTK Icon Browser" - -#: data/app.metainfo.xml:163 -msgid "The Console can be collapsed by resizing it" -msgstr "يمكن تصغير وحدة التحكم عن طريق تغيير حجمها" - -#: data/app.metainfo.xml:164 -msgid "Prevent system.exit from quitting Workbench" -msgstr "منع system.exit من الخروج من Workbench" - -#: data/app.metainfo.xml:165 -msgid "Allow calling GObject.registerClass multiple times" -msgstr "السماح باستدعاء GObject.registerClass عدة مرات" - -#: data/app.metainfo.xml:166 -msgid "Prevent crash caused by using non GtkBuildable objects" -msgstr "منع العطل الناتج عن استخدام اغراض غير GtkBuildable" - -#: data/app.metainfo.xml:167 -msgid "Allow using DBus and Gio.Application" -msgstr "السماح باستخدام DBus و Gio.Application" - -#: data/app.metainfo.xml:168 -msgid "Allow using network" -msgstr "السماح باستخدام الشبكة" - -#: data/app.metainfo.xml:169 -msgid "Enable GtkWindow objects preview" -msgstr "تفعيل معاينة اغراض GtkWindow" - -#: data/app.metainfo.xml:176 -msgid "Take a png screenshot of the preview" -msgstr "خذ لقطة شاشة بتنسيق png للعرض مسبق" - -#: data/app.metainfo.xml:177 -msgid "The console is now resizable" -msgstr "وحدة التحكم الآن يمكن تغيير حجمها" - -#: data/app.metainfo.xml:178 -msgid "Redesign the dark/light mode switcher" -msgstr "أعد تصميم مبدل الوضع الداكن / الفاتح" - -#: data/app.metainfo.xml:179 -msgid "Show platform and dependencies in about dialog" -msgstr "عرض النظام الأساسي والتبعيات في حول الحوار" - -#: data/app.metainfo.xml:180 -msgid "Update to GNOME platform 42" -msgstr "التحديث إلى منصة GNOME 42" - -#: data/app.metainfo.xml:181 -msgid "Various fixes" -msgstr "إصلاحات مختلفة" - -#: data/app.metainfo.xml:187 -msgid "This is the first release of Workbench. We hope you like it." -msgstr "هذا هو الإصدار الأول من Workbench. نأمل أن تنال إعجابكم." - -#: src/window.js:371 -msgid "The demo has been loaded" -msgstr "" - -#: src/window.js:372 src/window.js:453 src/shortcutsWindow.blp:46 -msgid "Undo" -msgstr "تراجع عن الإجراء" - -#: src/window.js:445 -msgid "This file cannot be loaded" -msgstr "" - -#: src/window.js:452 -msgid "The file has been loaded" -msgstr "" - -#. TRANSLATORS: eg. 'Translator Name ' or 'Translator Name https://website.example' -#: src/about.js:39 -msgid "translator-credits" -msgstr "إعتمادات المترجم" - -#: src/about.js:52 -msgid "Contributors" -msgstr "" - -#: src/actions.js:53 src/shortcutsWindow.blp:21 -msgid "Import File" -msgstr "استيراد ملف" - -#: src/actions.js:147 -msgid "All supported" -msgstr "كله الدعم" - -#: src/window.blp:15 -msgid "_Library" -msgstr "_مكتبة" - -#: src/window.blp:19 -msgid "Open Library of Demos and Examples (Ctrl+Shift+O)" -msgstr "افتح مكتبة العروض التوضيحية والأمثلة (Ctrl + Shift + O)" - -#: src/window.blp:37 -msgid "_Code" -msgstr "الكود" - -#: src/window.blp:54 -msgid "_Style" -msgstr "_أسلوب" - -#: src/window.blp:71 -msgid "_UI" -msgstr "_واجهة المستخدم" - -#: src/window.blp:88 -msgid "_Preview" -msgstr "_عرض مسبق" - -#: src/window.blp:130 -msgid "Code" -msgstr " كود " - -#: src/window.blp:146 -msgid "Switch document" -msgstr "تبديل الوثيقة" - -#: src/window.blp:154 -msgid "_Run" -msgstr "_يجري" - -#: src/window.blp:158 -msgid "Run (Ctrl+⏎)" -msgstr "تشغيل (Ctrl + ⏎)" - -#: src/window.blp:218 -msgid "Style CSS" -msgstr " نمط CSS " - -#: src/window.blp:257 -msgid "UI" -msgstr " واجهة المستخدم " - -#: src/window.blp:273 -msgid "Convert and switch syntax" -msgstr "" - -#: src/window.blp:277 -#, fuzzy -msgid "Informaton about Blueprint" -msgstr "قم بالتحويل إلى مخطط" - -#: src/window.blp:289 src/window.blp:291 -msgid "Convert to XML" -msgstr "تحويل إلى XML" - -#: src/window.blp:300 src/window.blp:302 -msgid "Convert to Blueprint" -msgstr "قم بالتحويل إلى مخطط" - -#: src/window.blp:366 -msgid "Preview" -msgstr " عرض مسبق " - -#: src/window.blp:376 -msgid "Fill" -msgstr "" - -#: src/window.blp:377 -msgid "Center" -msgstr "" - -#: src/window.blp:380 -#, fuzzy -msgid "Select Preview mode" -msgstr "أغلق نافذة العرض المسبق" - -#: src/window.blp:386 src/window.blp:388 -msgid "Take Screenshot of Preview" -msgstr "خذ لقطة شاشة للعرض المسبق" - -#: src/window.blp:420 src/window.blp:438 -msgid "Windowed Preview" -msgstr "عرض مسبق في وضعية اطار" - -#: src/window.blp:421 src/window.blp:439 -#, fuzzy -msgid "" -"This interface can only be previewed as a separate window.\n" -"We recommend using “Always on Top”." -msgstr "" -"لا يمكن معاينة هذه الواجهة إلا كنافذة منفصلة.\n" -"نوصي باستخدام \"دائمًا في المقدمة\"" - -#: src/window.blp:428 -msgid "Show Preview Window" -msgstr "إظهار نافذة العرض المسبق" - -#: src/window.blp:446 -msgid "Close Preview Window" -msgstr "أغلق نافذة العرض المسبق" - -#: src/window.blp:481 -msgid "C_onsole" -msgstr "وحدة التحكم" - -#: src/window.blp:485 -msgid "Show logs (Ctrl+Shift+K)" -msgstr "إظهار السجلات (Ctrl + Shift + K)" - -#: src/window.blp:491 -msgid "_Inspector" -msgstr "_مفتش" - -#: src/window.blp:494 -msgid "Open GTK Inspector (Ctrl+Shift+I)" -msgstr "افتح مفتشGTK باستخدام (Ctrl+Shift+I)" - -#: src/window.blp:505 -msgid "Cl_ear" -msgstr "تفريغ" - -#: src/window.blp:509 -msgid "Clear console (Ctrl+K)" -msgstr "مسح وحدة التحكم (Ctrl + K)" - -#: src/window.blp:536 -msgid "Future versions may have breaking syntax." -msgstr "" - -#: src/window.blp:537 -msgid "" -"Blueprint is\n" -"Experimental" -msgstr "" - -#: src/window.blp:541 -#, fuzzy -msgid "Documentation" -msgstr "وثائق المطور" - -#: src/window.blp:556 -msgid "Import File…" -msgstr "استيراد ملف…" - -#: src/window.blp:562 -msgid "Bookmarks" -msgstr "إشارات مرجعية" - -#: src/window.blp:564 -msgid "Learn" -msgstr "تعلم" - -#: src/window.blp:567 -msgid "Developer Documentation" -msgstr "وثائق المطور" - -#: src/window.blp:574 -msgid "Human Interface Guidelines" -msgstr "إرشادات الواجهة" - -#: src/window.blp:580 -msgid "JavaScript" -msgstr "JavaScript" - -#: src/window.blp:586 -msgid "Vala" -msgstr "Vala" - -#: src/window.blp:592 -msgid "Blueprint" -msgstr "Blueprint" - -#: src/window.blp:599 -msgid "Get help" -msgstr "احصل على مساعدة" - -#: src/window.blp:602 -msgid "Discourse" -msgstr "المناقشة" - -#: src/window.blp:608 -msgid "Matrix" -msgstr "مصفوفة" - -#: src/window.blp:616 -#, fuzzy -msgid "Icon Library" -msgstr "افتح المكتبة" - -#: src/window.blp:621 -msgid "Platform Tools" -msgstr "أدوات النظام الأساسي" - -#: src/window.blp:624 -msgid "Adwaita Demo" -msgstr "عرض Adwaita" - -#: src/window.blp:630 -msgid "GTK Demo" -msgstr "عرض GTK" - -#: src/window.blp:636 -msgid "GTK Widget Factory" -msgstr "مصنع قطع GTK" - -#: src/window.blp:644 src/shortcutsWindow.blp:54 -msgid "Keyboard Shortcuts" -msgstr "اختصارات لوحة المفاتيح" - -#: src/window.blp:649 -msgid "About Workbench" -msgstr "حول Workbench" - -#: src/shortcutsWindow.blp:11 -msgid "Run Code" -msgstr "قم بتشغيل الكود" - -#: src/shortcutsWindow.blp:16 -msgid "Format" -msgstr "" - -#: src/shortcutsWindow.blp:26 -msgid "Open Library" -msgstr "افتح المكتبة" - -#: src/shortcutsWindow.blp:31 -msgid "Toggle Console" -msgstr "تفعيل و ايقاف وحدة التحكم" - -#: src/shortcutsWindow.blp:36 -msgid "Clear Console" -msgstr "تفريغ وحدة التحكم" - -#: src/shortcutsWindow.blp:42 -#, fuzzy -msgid "Inspector" -msgstr "مفتش" - -#: src/shortcutsWindow.blp:50 -msgid "Redo" -msgstr "إعادة الاجراء" - -#: src/shortcutsWindow.blp:58 -msgid "Quit" -msgstr "توقف التطبيق" - -#: src/Library/Library.blp:7 -msgid "Library" -msgstr "مكتبة" - -#: troll/src/widgets/ThemeSelector.blp:22 -#: troll/src/widgets/ThemeSelector.blp:25 -msgid "Follow system style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:41 -#: troll/src/widgets/ThemeSelector.blp:44 -msgid "Light style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:60 -#: troll/src/widgets/ThemeSelector.blp:63 -msgid "Dark style" -msgstr "" - -#~ msgid "About My App" -#~ msgstr "حول تطبيقي" - -#~ msgid "" -#~ "Learn and prototype with\n" -#~ "GNOME technologies" -#~ msgstr "" -#~ "تعلم وعمل النموذج الأولي مع\n" -#~ "تقنيات GNOME" - -#~ msgid "sun-symbolic" -#~ msgstr "رمزية الشمس" - -#~ msgid "Use Light mode" -#~ msgstr "استخدم الوضع الفاتح" - -#~ msgid "workbench-moon-rounded-symbolic" -#~ msgstr "طاولة العمل رمزية تقريب القمر" - -#~ msgid "Use Dark mode" -#~ msgstr "استخدم الوضع الداكن" - -#~ msgid "Are you sure you want to discard your changes?" -#~ msgstr "هل أنت متأكد أنك تريد تجاهل تغييراتك؟" diff --git a/po/ca.po b/po/ca.po deleted file mode 100644 index 774119604..000000000 --- a/po/ca.po +++ /dev/null @@ -1,704 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR Sonny Piers -# This file is distributed under the same license as the re.sonny.Workbench package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: re.sonny.Workbench\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-18 13:24+0100\n" -"PO-Revision-Date: 2022-09-29 15:16+0000\n" -"Last-Translator: jolupa \n" -"Language-Team: Catalan \n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.14.1\n" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:4 -msgid "Workbench" -msgstr "Workbench" - -#: data/app.desktop:5 data/app.metainfo.xml:10 -msgid "Learn and prototype with GNOME technologies" -msgstr "" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:12 -msgid "CSS;JavaScript;GJS;Blueprint;builder;Vala;" -msgstr "" - -#: data/app.metainfo.xml:13 -msgid "" -"Workbench goal is to let you experiment with GNOME technologies, no matter " -"if tinkering for the first time or building and testing a GTK user interface." -msgstr "" - -#: data/app.metainfo.xml:14 -msgid "Among other things, Workbench comes with" -msgstr "" - -#: data/app.metainfo.xml:16 -msgid "realtime GTK/CSS preview" -msgstr "" - -#: data/app.metainfo.xml:17 -msgid "library of examples" -msgstr "" - -#: data/app.metainfo.xml:18 -msgid "1000+ icons" -msgstr "" - -#: data/app.metainfo.xml:19 -msgid "JavaScript and Vala support" -msgstr "" - -#: data/app.metainfo.xml:20 -msgid "XML and Blueprint for describing user interface" -msgstr "" - -#: data/app.metainfo.xml:21 -msgid "syntax highlighting, undo/redo, autosave, session restore" -msgstr "" - -#: data/app.metainfo.xml:22 -msgid "code formatter" -msgstr "" - -#: data/app.metainfo.xml:23 -msgid "console logs" -msgstr "" - -#: data/app.metainfo.xml:52 -msgid "Use Vala Language Server for diagnostics" -msgstr "" - -#: data/app.metainfo.xml:53 -msgid "Move Icon Browser to the main application menu" -msgstr "" - -#: data/app.metainfo.xml:54 -msgid "Reset window preview on close" -msgstr "" - -#: data/app.metainfo.xml:55 -msgid "Add a warning about Blueprint being experimental" -msgstr "" - -#: data/app.metainfo.xml:56 -msgid "Fix loading and running code with Blueprint UI" -msgstr "" - -#: data/app.metainfo.xml:57 -msgid "Fix crash when using abstract UI types" -msgstr "" - -#: data/app.metainfo.xml:58 -msgid "Fix \"No UI definition loaded yet.\" preview error when using Vala" -msgstr "" - -#: data/app.metainfo.xml:59 -msgid "Fix error message when hovering text with no diagnostic" -msgstr "" - -#: data/app.metainfo.xml:60 -msgid "VTE 0.70.1" -msgstr "" - -#: data/app.metainfo.xml:67 -msgid "GNOME 43" -msgstr "" - -#: data/app.metainfo.xml:68 -msgid "Display CSS errors inline" -msgstr "" - -#: data/app.metainfo.xml:69 -msgid "Fix responsiveness when working on large Blueprint files" -msgstr "" - -#: data/app.metainfo.xml:70 -msgid "Use AdwAboutWindow" -msgstr "" - -#: data/app.metainfo.xml:71 -msgid "Blueprint 0.4.0" -msgstr "" - -#: data/app.metainfo.xml:72 -msgid "VTE 0.70.0" -msgstr "" - -#: data/app.metainfo.xml:73 -msgid "Various bug and crash fixes" -msgstr "" - -#: data/app.metainfo.xml:80 -msgid "Show tooltip hints in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:81 -msgid "Improve XML formatter" -msgstr "" - -#: data/app.metainfo.xml:82 -msgid "Add Ctrl+Shift+Return shortcut to format" -msgstr "" - -#: data/app.metainfo.xml:83 -msgid "Apply Style CSS to windowed preview" -msgstr "" - -#: data/app.metainfo.xml:84 data/app.metainfo.xml:129 -msgid "Improve application design" -msgstr "" - -#: data/app.metainfo.xml:85 -msgid "Prevent crash for templates with GtkWidget parent" -msgstr "" - -#: data/app.metainfo.xml:86 -msgid "Update VTE and icon-development-kit" -msgstr "" - -#: data/app.metainfo.xml:93 -msgid "Underline errors in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:94 -msgid "Fix bugs and crashes" -msgstr "" - -#: data/app.metainfo.xml:102 -msgid "Add an Icon Browser to find the right icons for your prototypes" -msgstr "" - -#: data/app.metainfo.xml:103 -msgid "Add a Platform tools Library demo" -msgstr "" - -#: data/app.metainfo.xml:104 -msgid "Improve the style switcher" -msgstr "" - -#: data/app.metainfo.xml:105 -msgid "Replace confirmation dialogs with toasts and undo" -msgstr "" - -#: data/app.metainfo.xml:106 -msgid "Support updates on root objects" -msgstr "" - -#: data/app.metainfo.xml:107 -msgid "Support binding signal handlers from UI" -msgstr "" - -#: data/app.metainfo.xml:108 -msgid "Add APIs to allow using templates from Code" -msgstr "" - -#: data/app.metainfo.xml:109 -msgid "Add Center/Fill preview modes for templates" -msgstr "" - -#: data/app.metainfo.xml:111 -msgid "Open external preview with the dimensions of the internal preview" -msgstr "" - -#: data/app.metainfo.xml:112 -msgid "64 new icons available" -msgstr "" - -#: data/app.metainfo.xml:113 -msgid "Update Blueprint to 0.2.0" -msgstr "" - -#: data/app.metainfo.xml:114 -msgid "Fix empty preview on first load" -msgstr "" - -#: data/app.metainfo.xml:115 -msgid "Fix style scheme switch when system preference is light" -msgstr "" - -#: data/app.metainfo.xml:116 -msgid "Remove grid pattern on the source editors" -msgstr "" - -#: data/app.metainfo.xml:122 -msgid "Highlights" -msgstr "" - -#: data/app.metainfo.xml:124 -msgid "Add Blueprint markup syntax for UI" -msgstr "" - -#: data/app.metainfo.xml:125 -msgid "Add Vala programming language for Code" -msgstr "" - -#: data/app.metainfo.xml:126 -msgid "Add support for previewing templates" -msgstr "" - -#: data/app.metainfo.xml:127 -msgid "Add support for previewing signal handlers" -msgstr "" - -#: data/app.metainfo.xml:128 -msgid "Include all icons from icon-development-kit" -msgstr "" - -#: data/app.metainfo.xml:130 -msgid "Distribute Library examples under CC0-1.0" -msgstr "" - -#: data/app.metainfo.xml:131 -msgid "Respect system preference for color scheme" -msgstr "" - -#: data/app.metainfo.xml:132 -msgid "Add proper light/dark color schemes for Console" -msgstr "" - -#: data/app.metainfo.xml:133 -msgid "Fix error when importing files" -msgstr "" - -#: data/app.metainfo.xml:135 -msgid "Other changes" -msgstr "" - -#: data/app.metainfo.xml:137 -msgid "Silence platform tools" -msgstr "" - -#: data/app.metainfo.xml:138 -msgid "Remove GTK Icon browser platform tool" -msgstr "" - -#: data/app.metainfo.xml:139 -msgid "Make Library examples only open relevant panels" -msgstr "" - -#: data/app.metainfo.xml:140 -msgid "Always open the Console when opening a Library example" -msgstr "" - -#: data/app.metainfo.xml:141 -msgid "Prevent running Code if the panel is not visible" -msgstr "" - -#: data/app.metainfo.xml:142 -msgid "Add icons and mnemonics for all buttons" -msgstr "" - -#: data/app.metainfo.xml:143 -msgid "Move Bookmarks to the main menu" -msgstr "" - -#: data/app.metainfo.xml:144 -msgid "Enable scrollbar and kinetic scrolling on Console" -msgstr "" - -#: data/app.metainfo.xml:145 -msgid "Improve Library examples" -msgstr "" - -#: data/app.metainfo.xml:146 -msgid "Performance optimizations" -msgstr "" - -#: data/app.metainfo.xml:147 -msgid "Show a placeholder when all panels are invisible" -msgstr "" - -#: data/app.metainfo.xml:148 -msgid "Crash fixes" -msgstr "" - -#: data/app.metainfo.xml:149 -msgid "Use org.gnome.Sdk runtime" -msgstr "" - -#: data/app.metainfo.xml:156 -msgid "Add a Library of examples" -msgstr "" - -#: data/app.metainfo.xml:157 -msgid "Add an example of WebSocket client" -msgstr "" - -#: data/app.metainfo.xml:158 -msgid "Add an example of toasts" -msgstr "" - -#: data/app.metainfo.xml:159 -msgid "Add an example of application window" -msgstr "" - -#: data/app.metainfo.xml:160 -msgid "Add an example of desktop notification" -msgstr "" - -#: data/app.metainfo.xml:162 -msgid "Add Adwaita Demo, GTK Demo, GTK Widget Factory and GTK Icon Browser" -msgstr "" - -#: data/app.metainfo.xml:163 -msgid "The Console can be collapsed by resizing it" -msgstr "" - -#: data/app.metainfo.xml:164 -msgid "Prevent system.exit from quitting Workbench" -msgstr "" - -#: data/app.metainfo.xml:165 -msgid "Allow calling GObject.registerClass multiple times" -msgstr "" - -#: data/app.metainfo.xml:166 -msgid "Prevent crash caused by using non GtkBuildable objects" -msgstr "" - -#: data/app.metainfo.xml:167 -msgid "Allow using DBus and Gio.Application" -msgstr "" - -#: data/app.metainfo.xml:168 -msgid "Allow using network" -msgstr "" - -#: data/app.metainfo.xml:169 -msgid "Enable GtkWindow objects preview" -msgstr "" - -#: data/app.metainfo.xml:176 -msgid "Take a png screenshot of the preview" -msgstr "" - -#: data/app.metainfo.xml:177 -msgid "The console is now resizable" -msgstr "" - -#: data/app.metainfo.xml:178 -msgid "Redesign the dark/light mode switcher" -msgstr "" - -#: data/app.metainfo.xml:179 -msgid "Show platform and dependencies in about dialog" -msgstr "" - -#: data/app.metainfo.xml:180 -msgid "Update to GNOME platform 42" -msgstr "" - -#: data/app.metainfo.xml:181 -msgid "Various fixes" -msgstr "" - -#: data/app.metainfo.xml:187 -msgid "This is the first release of Workbench. We hope you like it." -msgstr "" - -#: src/window.js:371 -msgid "The demo has been loaded" -msgstr "" - -#: src/window.js:372 src/window.js:453 src/shortcutsWindow.blp:46 -msgid "Undo" -msgstr "" - -#: src/window.js:445 -msgid "This file cannot be loaded" -msgstr "" - -#: src/window.js:452 -msgid "The file has been loaded" -msgstr "" - -#. TRANSLATORS: eg. 'Translator Name ' or 'Translator Name https://website.example' -#: src/about.js:39 -msgid "translator-credits" -msgstr "" - -#: src/about.js:52 -msgid "Contributors" -msgstr "" - -#: src/actions.js:53 src/shortcutsWindow.blp:21 -msgid "Import File" -msgstr "" - -#: src/actions.js:147 -msgid "All supported" -msgstr "" - -#: src/window.blp:15 -msgid "_Library" -msgstr "" - -#: src/window.blp:19 -msgid "Open Library of Demos and Examples (Ctrl+Shift+O)" -msgstr "" - -#: src/window.blp:37 -msgid "_Code" -msgstr "" - -#: src/window.blp:54 -msgid "_Style" -msgstr "" - -#: src/window.blp:71 -msgid "_UI" -msgstr "" - -#: src/window.blp:88 -msgid "_Preview" -msgstr "" - -#: src/window.blp:130 -msgid "Code" -msgstr "" - -#: src/window.blp:146 -msgid "Switch document" -msgstr "" - -#: src/window.blp:154 -msgid "_Run" -msgstr "" - -#: src/window.blp:158 -msgid "Run (Ctrl+⏎)" -msgstr "" - -#: src/window.blp:218 -msgid "Style CSS" -msgstr "" - -#: src/window.blp:257 -msgid "UI" -msgstr "" - -#: src/window.blp:273 -msgid "Convert and switch syntax" -msgstr "" - -#: src/window.blp:277 -msgid "Informaton about Blueprint" -msgstr "" - -#: src/window.blp:289 src/window.blp:291 -msgid "Convert to XML" -msgstr "" - -#: src/window.blp:300 src/window.blp:302 -msgid "Convert to Blueprint" -msgstr "" - -#: src/window.blp:366 -msgid "Preview" -msgstr "" - -#: src/window.blp:376 -msgid "Fill" -msgstr "" - -#: src/window.blp:377 -msgid "Center" -msgstr "" - -#: src/window.blp:380 -msgid "Select Preview mode" -msgstr "" - -#: src/window.blp:386 src/window.blp:388 -msgid "Take Screenshot of Preview" -msgstr "" - -#: src/window.blp:420 src/window.blp:438 -msgid "Windowed Preview" -msgstr "" - -#: src/window.blp:421 src/window.blp:439 -msgid "" -"This interface can only be previewed as a separate window.\n" -"We recommend using “Always on Top”." -msgstr "" - -#: src/window.blp:428 -msgid "Show Preview Window" -msgstr "" - -#: src/window.blp:446 -msgid "Close Preview Window" -msgstr "" - -#: src/window.blp:481 -msgid "C_onsole" -msgstr "" - -#: src/window.blp:485 -msgid "Show logs (Ctrl+Shift+K)" -msgstr "" - -#: src/window.blp:491 -msgid "_Inspector" -msgstr "" - -#: src/window.blp:494 -msgid "Open GTK Inspector (Ctrl+Shift+I)" -msgstr "" - -#: src/window.blp:505 -msgid "Cl_ear" -msgstr "" - -#: src/window.blp:509 -msgid "Clear console (Ctrl+K)" -msgstr "" - -#: src/window.blp:536 -msgid "Future versions may have breaking syntax." -msgstr "" - -#: src/window.blp:537 -msgid "" -"Blueprint is\n" -"Experimental" -msgstr "" - -#: src/window.blp:541 -msgid "Documentation" -msgstr "" - -#: src/window.blp:556 -msgid "Import File…" -msgstr "" - -#: src/window.blp:562 -msgid "Bookmarks" -msgstr "" - -#: src/window.blp:564 -msgid "Learn" -msgstr "" - -#: src/window.blp:567 -msgid "Developer Documentation" -msgstr "" - -#: src/window.blp:574 -msgid "Human Interface Guidelines" -msgstr "" - -#: src/window.blp:580 -msgid "JavaScript" -msgstr "" - -#: src/window.blp:586 -msgid "Vala" -msgstr "" - -#: src/window.blp:592 -msgid "Blueprint" -msgstr "" - -#: src/window.blp:599 -msgid "Get help" -msgstr "" - -#: src/window.blp:602 -msgid "Discourse" -msgstr "" - -#: src/window.blp:608 -msgid "Matrix" -msgstr "" - -#: src/window.blp:616 -msgid "Icon Library" -msgstr "" - -#: src/window.blp:621 -msgid "Platform Tools" -msgstr "" - -#: src/window.blp:624 -msgid "Adwaita Demo" -msgstr "" - -#: src/window.blp:630 -msgid "GTK Demo" -msgstr "" - -#: src/window.blp:636 -msgid "GTK Widget Factory" -msgstr "" - -#: src/window.blp:644 src/shortcutsWindow.blp:54 -msgid "Keyboard Shortcuts" -msgstr "" - -#: src/window.blp:649 -msgid "About Workbench" -msgstr "" - -#: src/shortcutsWindow.blp:11 -msgid "Run Code" -msgstr "" - -#: src/shortcutsWindow.blp:16 -msgid "Format" -msgstr "" - -#: src/shortcutsWindow.blp:26 -msgid "Open Library" -msgstr "" - -#: src/shortcutsWindow.blp:31 -msgid "Toggle Console" -msgstr "" - -#: src/shortcutsWindow.blp:36 -msgid "Clear Console" -msgstr "" - -#: src/shortcutsWindow.blp:42 -msgid "Inspector" -msgstr "" - -#: src/shortcutsWindow.blp:50 -msgid "Redo" -msgstr "" - -#: src/shortcutsWindow.blp:58 -msgid "Quit" -msgstr "" - -#: src/Library/Library.blp:7 -msgid "Library" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:22 -#: troll/src/widgets/ThemeSelector.blp:25 -msgid "Follow system style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:41 -#: troll/src/widgets/ThemeSelector.blp:44 -msgid "Light style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:60 -#: troll/src/widgets/ThemeSelector.blp:63 -msgid "Dark style" -msgstr "" diff --git a/po/cs.po b/po/cs.po deleted file mode 100644 index f2ecac281..000000000 --- a/po/cs.po +++ /dev/null @@ -1,812 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the re.sonny.Workbench package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: re.sonny.Workbench\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-18 13:24+0100\n" -"PO-Revision-Date: 2022-08-23 19:15+0000\n" -"Last-Translator: Martin Velký \n" -"Language-Team: Czech \n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 4.14-dev\n" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:4 -msgid "Workbench" -msgstr "Workbench" - -#: data/app.desktop:5 data/app.metainfo.xml:10 -msgid "Learn and prototype with GNOME technologies" -msgstr "Učte se a prototypujte s technologiemi GNOME" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:12 -msgid "CSS;JavaScript;GJS;Blueprint;builder;Vala;" -msgstr "CSS;JavaScript;GJS;Blueprint;builder;Vala;" - -#: data/app.metainfo.xml:13 -msgid "" -"Workbench goal is to let you experiment with GNOME technologies, no matter " -"if tinkering for the first time or building and testing a GTK user interface." -msgstr "" -"Cíl aplikace Workbench je pomoci vám experimentovat s technologiemi GNOME, " -"aniž by záleželo na tom, zda se s nimi setkáváte poprvé, nebo zda vytváříte " -"a testujete uživatelské rozhraní GTK." - -#: data/app.metainfo.xml:14 -msgid "Among other things, Workbench comes with" -msgstr "Mimo jiné Workbench nabízí" - -#: data/app.metainfo.xml:16 -msgid "realtime GTK/CSS preview" -msgstr "náhled GTK/CSS v reálném čase" - -#: data/app.metainfo.xml:17 -msgid "library of examples" -msgstr "knihovna příkladů" - -#: data/app.metainfo.xml:18 -msgid "1000+ icons" -msgstr "" - -#: data/app.metainfo.xml:19 -#, fuzzy -msgid "JavaScript and Vala support" -msgstr "JavaScript a Vala fungují bez jakéhokoli nastavení" - -#: data/app.metainfo.xml:20 -msgid "XML and Blueprint for describing user interface" -msgstr "XML a Blueprint pro popis uživatelského rozhraní" - -#: data/app.metainfo.xml:21 -msgid "syntax highlighting, undo/redo, autosave, session restore" -msgstr "" -"Zvýrazňování syntaxe, funkce zpět/znovu, automatické ukládání, obnovení " -"předchozího stavu" - -#: data/app.metainfo.xml:22 -msgid "code formatter" -msgstr "formátování kódu" - -#: data/app.metainfo.xml:23 -msgid "console logs" -msgstr "vypisování do konzole" - -#: data/app.metainfo.xml:52 -msgid "Use Vala Language Server for diagnostics" -msgstr "" - -#: data/app.metainfo.xml:53 -msgid "Move Icon Browser to the main application menu" -msgstr "" - -#: data/app.metainfo.xml:54 -msgid "Reset window preview on close" -msgstr "" - -#: data/app.metainfo.xml:55 -msgid "Add a warning about Blueprint being experimental" -msgstr "" - -#: data/app.metainfo.xml:56 -msgid "Fix loading and running code with Blueprint UI" -msgstr "" - -#: data/app.metainfo.xml:57 -msgid "Fix crash when using abstract UI types" -msgstr "" - -#: data/app.metainfo.xml:58 -msgid "Fix \"No UI definition loaded yet.\" preview error when using Vala" -msgstr "" - -#: data/app.metainfo.xml:59 -msgid "Fix error message when hovering text with no diagnostic" -msgstr "" - -#: data/app.metainfo.xml:60 -msgid "VTE 0.70.1" -msgstr "" - -#: data/app.metainfo.xml:67 -msgid "GNOME 43" -msgstr "" - -#: data/app.metainfo.xml:68 -msgid "Display CSS errors inline" -msgstr "" - -#: data/app.metainfo.xml:69 -msgid "Fix responsiveness when working on large Blueprint files" -msgstr "" - -#: data/app.metainfo.xml:70 -msgid "Use AdwAboutWindow" -msgstr "" - -#: data/app.metainfo.xml:71 -msgid "Blueprint 0.4.0" -msgstr "" - -#: data/app.metainfo.xml:72 -msgid "VTE 0.70.0" -msgstr "" - -#: data/app.metainfo.xml:73 -#, fuzzy -msgid "Various bug and crash fixes" -msgstr "Různé opravy" - -#: data/app.metainfo.xml:80 -msgid "Show tooltip hints in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:81 -#, fuzzy -msgid "Improve XML formatter" -msgstr "formátování kódu" - -#: data/app.metainfo.xml:82 -msgid "Add Ctrl+Shift+Return shortcut to format" -msgstr "" - -#: data/app.metainfo.xml:83 -msgid "Apply Style CSS to windowed preview" -msgstr "" - -#: data/app.metainfo.xml:84 data/app.metainfo.xml:129 -msgid "Improve application design" -msgstr "Vylepšen design aplikace" - -#: data/app.metainfo.xml:85 -msgid "Prevent crash for templates with GtkWidget parent" -msgstr "" - -#: data/app.metainfo.xml:86 -#, fuzzy -msgid "Update VTE and icon-development-kit" -msgstr "Zahrnuty všechny ikony z icon-development-kit" - -#: data/app.metainfo.xml:93 -msgid "Underline errors in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:94 -msgid "Fix bugs and crashes" -msgstr "" - -#: data/app.metainfo.xml:102 -msgid "Add an Icon Browser to find the right icons for your prototypes" -msgstr "" - -#: data/app.metainfo.xml:103 -msgid "Add a Platform tools Library demo" -msgstr "" - -#: data/app.metainfo.xml:104 -msgid "Improve the style switcher" -msgstr "" - -#: data/app.metainfo.xml:105 -msgid "Replace confirmation dialogs with toasts and undo" -msgstr "" - -#: data/app.metainfo.xml:106 -msgid "Support updates on root objects" -msgstr "" - -#: data/app.metainfo.xml:107 -#, fuzzy -msgid "Support binding signal handlers from UI" -msgstr "Přidána podpora pro obsluhy signálů" - -#: data/app.metainfo.xml:108 -msgid "Add APIs to allow using templates from Code" -msgstr "" - -#: data/app.metainfo.xml:109 -#, fuzzy -msgid "Add Center/Fill preview modes for templates" -msgstr "Přidána podpora pro náhledy šablon" - -#: data/app.metainfo.xml:111 -msgid "Open external preview with the dimensions of the internal preview" -msgstr "" - -#: data/app.metainfo.xml:112 -msgid "64 new icons available" -msgstr "" - -#: data/app.metainfo.xml:113 -msgid "Update Blueprint to 0.2.0" -msgstr "" - -#: data/app.metainfo.xml:114 -msgid "Fix empty preview on first load" -msgstr "" - -#: data/app.metainfo.xml:115 -msgid "Fix style scheme switch when system preference is light" -msgstr "" - -#: data/app.metainfo.xml:116 -msgid "Remove grid pattern on the source editors" -msgstr "" - -#: data/app.metainfo.xml:122 -msgid "Highlights" -msgstr "Zvýrazňování" - -#: data/app.metainfo.xml:124 -msgid "Add Blueprint markup syntax for UI" -msgstr "Přidána podpora syntaxe Blueprintu pro UI" - -#: data/app.metainfo.xml:125 -msgid "Add Vala programming language for Code" -msgstr "Přidána podpora pro jazyk Vala" - -#: data/app.metainfo.xml:126 -msgid "Add support for previewing templates" -msgstr "Přidána podpora pro náhledy šablon" - -#: data/app.metainfo.xml:127 -msgid "Add support for previewing signal handlers" -msgstr "Přidána podpora pro obsluhy signálů" - -#: data/app.metainfo.xml:128 -msgid "Include all icons from icon-development-kit" -msgstr "Zahrnuty všechny ikony z icon-development-kit" - -#: data/app.metainfo.xml:130 -msgid "Distribute Library examples under CC0-1.0" -msgstr "Knihovna příkladů je nyní pod licencí CC0-1.0" - -#: data/app.metainfo.xml:131 -msgid "Respect system preference for color scheme" -msgstr "Barevné schéma podle systému" - -#: data/app.metainfo.xml:132 -msgid "Add proper light/dark color schemes for Console" -msgstr "Přidána světlá a tmavá barevná schémata pro konzoli" - -#: data/app.metainfo.xml:133 -#, fuzzy -msgid "Fix error when importing files" -msgstr "Opravena chyba při otevírání souboru" - -#: data/app.metainfo.xml:135 -msgid "Other changes" -msgstr "Další změny" - -#: data/app.metainfo.xml:137 -msgid "Silence platform tools" -msgstr "Ztišit nástroje platformy" - -#: data/app.metainfo.xml:138 -msgid "Remove GTK Icon browser platform tool" -msgstr "" - -#: data/app.metainfo.xml:139 -msgid "Make Library examples only open relevant panels" -msgstr "Nechat nástroje knihovny otevírat pouze relevantní panely" - -#: data/app.metainfo.xml:140 -msgid "Always open the Console when opening a Library example" -msgstr "" - -#: data/app.metainfo.xml:141 -msgid "Prevent running Code if the panel is not visible" -msgstr "" - -#: data/app.metainfo.xml:142 -msgid "Add icons and mnemonics for all buttons" -msgstr "" - -#: data/app.metainfo.xml:143 -msgid "Move Bookmarks to the main menu" -msgstr "" - -#: data/app.metainfo.xml:144 -msgid "Enable scrollbar and kinetic scrolling on Console" -msgstr "" - -#: data/app.metainfo.xml:145 -#, fuzzy -msgid "Improve Library examples" -msgstr "knihovna příkladů" - -#: data/app.metainfo.xml:146 -msgid "Performance optimizations" -msgstr "" - -#: data/app.metainfo.xml:147 -msgid "Show a placeholder when all panels are invisible" -msgstr "" - -#: data/app.metainfo.xml:148 -#, fuzzy -msgid "Crash fixes" -msgstr "Různé opravy" - -#: data/app.metainfo.xml:149 -msgid "Use org.gnome.Sdk runtime" -msgstr "" - -#: data/app.metainfo.xml:156 -msgid "Add a Library of examples" -msgstr "Přidána knihovna příkladů" - -#: data/app.metainfo.xml:157 -msgid "Add an example of WebSocket client" -msgstr "Přidán příklad WebSocketového klienta" - -#: data/app.metainfo.xml:158 -msgid "Add an example of toasts" -msgstr "Přidán příklad toast zpráv" - -#: data/app.metainfo.xml:159 -msgid "Add an example of application window" -msgstr "Přidán příklad okna aplikace" - -#: data/app.metainfo.xml:160 -msgid "Add an example of desktop notification" -msgstr "Přidán příklad oznámení na ploše" - -#: data/app.metainfo.xml:162 -msgid "Add Adwaita Demo, GTK Demo, GTK Widget Factory and GTK Icon Browser" -msgstr "Přidáno demo Adwaity a GTK, GTK Widget Factory a prohlížeč ikon GTK" - -#: data/app.metainfo.xml:163 -msgid "The Console can be collapsed by resizing it" -msgstr "Konzoli lze zavřít změnou její velikosti" - -#: data/app.metainfo.xml:164 -msgid "Prevent system.exit from quitting Workbench" -msgstr "Zabráněno system.exit při ukončování Workbench" - -#: data/app.metainfo.xml:165 -msgid "Allow calling GObject.registerClass multiple times" -msgstr "Povoleno volání GObject.registerClass vícekrát" - -#: data/app.metainfo.xml:166 -msgid "Prevent crash caused by using non GtkBuildable objects" -msgstr "Zabráněno pádům kvůli objektům, které nejsou GtkBuildable" - -#: data/app.metainfo.xml:167 -msgid "Allow using DBus and Gio.Application" -msgstr "Povoleno použití DBus a Gio.Application" - -#: data/app.metainfo.xml:168 -msgid "Allow using network" -msgstr "Povoleno použití sítě" - -#: data/app.metainfo.xml:169 -msgid "Enable GtkWindow objects preview" -msgstr "Povolen náhled pro objekty GtkWindow" - -#: data/app.metainfo.xml:176 -msgid "Take a png screenshot of the preview" -msgstr "Možnost pořídit png snímek náhledu" - -#: data/app.metainfo.xml:177 -msgid "The console is now resizable" -msgstr "Velikost konzole lze nyní upravit" - -#: data/app.metainfo.xml:178 -msgid "Redesign the dark/light mode switcher" -msgstr "Nový design přepínače tmavého/světlého režimu" - -#: data/app.metainfo.xml:179 -msgid "Show platform and dependencies in about dialog" -msgstr "Zobrazení platformy a závislostí v dialogu o aplikaci" - -#: data/app.metainfo.xml:180 -msgid "Update to GNOME platform 42" -msgstr "Aktualizováno na platformu GNOME 42" - -#: data/app.metainfo.xml:181 -msgid "Various fixes" -msgstr "Různé opravy" - -#: data/app.metainfo.xml:187 -msgid "This is the first release of Workbench. We hope you like it." -msgstr "Toto je první vydání aplikace Workbench. Doufáme, že se vám líbí." - -#: src/window.js:371 -msgid "The demo has been loaded" -msgstr "" - -#: src/window.js:372 src/window.js:453 src/shortcutsWindow.blp:46 -msgid "Undo" -msgstr "" - -#: src/window.js:445 -msgid "This file cannot be loaded" -msgstr "" - -#: src/window.js:452 -msgid "The file has been loaded" -msgstr "" - -#. TRANSLATORS: eg. 'Translator Name ' or 'Translator Name https://website.example' -#: src/about.js:39 -msgid "translator-credits" -msgstr "Vojtěch Perník " - -#: src/about.js:52 -msgid "Contributors" -msgstr "" - -#: src/actions.js:53 src/shortcutsWindow.blp:21 -msgid "Import File" -msgstr "" - -#: src/actions.js:147 -msgid "All supported" -msgstr "" - -#: src/window.blp:15 -#, fuzzy -msgid "_Library" -msgstr "Knihovna" - -#: src/window.blp:19 -msgid "Open Library of Demos and Examples (Ctrl+Shift+O)" -msgstr "Otevřít knihovnu ukázek a příkladů (Ctrl+Shift+O)" - -#: src/window.blp:37 -#, fuzzy -msgid "_Code" -msgstr "Kód" - -#: src/window.blp:54 -#, fuzzy -msgid "_Style" -msgstr "Styl" - -#: src/window.blp:71 -#, fuzzy -msgid "_UI" -msgstr "UI" - -#: src/window.blp:88 -#, fuzzy -msgid "_Preview" -msgstr "Náhled" - -#: src/window.blp:130 -msgid "Code" -msgstr "" - -#: src/window.blp:146 -msgid "Switch document" -msgstr "" - -#: src/window.blp:154 -msgid "_Run" -msgstr "" - -#: src/window.blp:158 -msgid "Run (Ctrl+⏎)" -msgstr "Spustit (Ctrl+⏎)" - -#: src/window.blp:218 -#, fuzzy -msgid "Style CSS" -msgstr "Styl CSS" - -#: src/window.blp:257 -msgid "UI" -msgstr "" - -#: src/window.blp:273 -msgid "Convert and switch syntax" -msgstr "" - -#: src/window.blp:277 -msgid "Informaton about Blueprint" -msgstr "" - -#: src/window.blp:289 src/window.blp:291 -msgid "Convert to XML" -msgstr "" - -#: src/window.blp:300 src/window.blp:302 -msgid "Convert to Blueprint" -msgstr "" - -#: src/window.blp:366 -msgid "Preview" -msgstr "Náhled" - -#: src/window.blp:376 -msgid "Fill" -msgstr "" - -#: src/window.blp:377 -msgid "Center" -msgstr "" - -#: src/window.blp:380 -msgid "Select Preview mode" -msgstr "" - -#: src/window.blp:386 src/window.blp:388 -msgid "Take Screenshot of Preview" -msgstr "Pořídit snímek náhledu" - -#: src/window.blp:420 src/window.blp:438 -msgid "Windowed Preview" -msgstr "Náhled v okně" - -#: src/window.blp:421 src/window.blp:439 -#, fuzzy -msgid "" -"This interface can only be previewed as a separate window.\n" -"We recommend using “Always on Top”." -msgstr "" -"Tomuto rozhraní může být vytvořen náhled pouze v samostatném okně.\n" -"Doporučujeme použít „Vždy nahoře“" - -#: src/window.blp:428 -msgid "Show Preview Window" -msgstr "" - -#: src/window.blp:446 -msgid "Close Preview Window" -msgstr "" - -#: src/window.blp:481 -#, fuzzy -msgid "C_onsole" -msgstr "Konzole" - -#: src/window.blp:485 -msgid "Show logs (Ctrl+Shift+K)" -msgstr "Zobrazit logy (Ctrl+Shift+K)" - -#: src/window.blp:491 -#, fuzzy -msgid "_Inspector" -msgstr "Inspektor" - -#: src/window.blp:494 -msgid "Open GTK Inspector (Ctrl+Shift+I)" -msgstr "Otevřít Inspektor GTK (Ctrl+Shift+I)" - -#: src/window.blp:505 -msgid "Cl_ear" -msgstr "" - -#: src/window.blp:509 -msgid "Clear console (Ctrl+K)" -msgstr "Vyčistit konzoli (Ctrl+K)" - -#: src/window.blp:536 -msgid "Future versions may have breaking syntax." -msgstr "" - -#: src/window.blp:537 -msgid "" -"Blueprint is\n" -"Experimental" -msgstr "" - -#: src/window.blp:541 -msgid "Documentation" -msgstr "" - -#: src/window.blp:556 -#, fuzzy -msgid "Import File…" -msgstr "Otevřít soubor…" - -#: src/window.blp:562 -msgid "Bookmarks" -msgstr "Záložky" - -#: src/window.blp:564 -msgid "Learn" -msgstr "Učit se" - -#: src/window.blp:567 -msgid "Developer Documentation" -msgstr "" - -#: src/window.blp:574 -#, fuzzy -msgid "Human Interface Guidelines" -msgstr "Pokyny pro lidské rozhraní (HIG)" - -#: src/window.blp:580 -msgid "JavaScript" -msgstr "JavaScript" - -#: src/window.blp:586 -msgid "Vala" -msgstr "" - -#: src/window.blp:592 -msgid "Blueprint" -msgstr "" - -#: src/window.blp:599 -msgid "Get help" -msgstr "Získat pomoc" - -#: src/window.blp:602 -msgid "Discourse" -msgstr "Discourse" - -#: src/window.blp:608 -msgid "Matrix" -msgstr "Matrix" - -#: src/window.blp:616 -#, fuzzy -msgid "Icon Library" -msgstr "Knihovna" - -#: src/window.blp:621 -msgid "Platform Tools" -msgstr "Nástroje platformy" - -#: src/window.blp:624 -msgid "Adwaita Demo" -msgstr "Ukázka Adwaity" - -#: src/window.blp:630 -msgid "GTK Demo" -msgstr "Ukázka GTK" - -#: src/window.blp:636 -msgid "GTK Widget Factory" -msgstr "GTK Widget Factory" - -#: src/window.blp:644 src/shortcutsWindow.blp:54 -msgid "Keyboard Shortcuts" -msgstr "Klávesové zkratky" - -#: src/window.blp:649 -msgid "About Workbench" -msgstr "O aplikaci Workbench" - -#: src/shortcutsWindow.blp:11 -#, fuzzy -msgid "Run Code" -msgstr "Kód" - -#: src/shortcutsWindow.blp:16 -msgid "Format" -msgstr "" - -#: src/shortcutsWindow.blp:26 -#, fuzzy -msgid "Open Library" -msgstr "Knihovna" - -#: src/shortcutsWindow.blp:31 -#, fuzzy -msgid "Toggle Console" -msgstr "Vyčistit konzoli" - -#: src/shortcutsWindow.blp:36 -msgid "Clear Console" -msgstr "Vyčistit konzoli" - -#: src/shortcutsWindow.blp:42 -msgid "Inspector" -msgstr "Inspektor" - -#: src/shortcutsWindow.blp:50 -msgid "Redo" -msgstr "" - -#: src/shortcutsWindow.blp:58 -msgid "Quit" -msgstr "Ukončit" - -#: src/Library/Library.blp:7 -msgid "Library" -msgstr "Knihovna" - -#: troll/src/widgets/ThemeSelector.blp:22 -#: troll/src/widgets/ThemeSelector.blp:25 -msgid "Follow system style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:41 -#: troll/src/widgets/ThemeSelector.blp:44 -msgid "Light style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:60 -#: troll/src/widgets/ThemeSelector.blp:63 -msgid "Dark style" -msgstr "" - -#~ msgid "" -#~ "Learn and prototype with\n" -#~ "GNOME technologies" -#~ msgstr "" -#~ "Učte se a prototypujte\n" -#~ "s technologiemi GNOME" - -#~ msgid "sun-symbolic" -#~ msgstr "sun-symbolic" - -#~ msgid "Use Light mode" -#~ msgstr "Použít světlý režim" - -#, fuzzy -#~| msgid "moon-rounded-symbolic" -#~ msgid "workbench-moon-rounded-symbolic" -#~ msgstr "moon-rounded-symbolic" - -#~ msgid "Use Dark mode" -#~ msgstr "Použít tmavý režim" - -#~ msgid "Are you sure you want to discard your changes?" -#~ msgstr "Vážně chcete zahodit změny?" - -#~ msgid "" -#~ "Side by side editors with live preview on the right and console in the " -#~ "bottom" -#~ msgstr "Vedle sebe umístěné editory s živým náhledem vpravo a konzolí dole" - -#~ msgid "JavaScript for quick and easy scripting" -#~ msgstr "JavaScript pro rychlé a jednoduché psaní scriptů" - -#~ msgid "Run" -#~ msgstr "Spustit" - -#~ msgid "Open Console" -#~ msgstr "Otevřít konzoli" - -#~ msgid "Code - JavaScript" -#~ msgstr "Kód - JavaScript" - -#~ msgid "UI - XML" -#~ msgstr "UI - XML" - -#~ msgid "Clear" -#~ msgstr "Vyčistit" - -#~ msgid "Examples to start from or get inspired by" -#~ msgstr "Příklady, se kterými můžete začít, nebo se jen nechat inspirovat" - -#~ msgid "GTK Icon Browser" -#~ msgstr "Prohlížeč ikon GTK" - -#~ msgid "GNOME JavaScript (GJS)" -#~ msgstr "GNOME JavaScript (GJS)" - -#~ msgid "UI components" -#~ msgstr "Komponenty UI" - -#~ msgid "Platform components" -#~ msgstr "Komponenty platformy" - -#~ msgid "Reference" -#~ msgstr "Reference" - -#~ msgid "GJS" -#~ msgstr "GJS" - -#~ msgid "Gtk" -#~ msgstr "GTK" - -#~ msgid "Adwaita" -#~ msgstr "Adwaita" - -#~ msgid "Stack Overflow" -#~ msgstr "Stack Overflow" diff --git a/po/de.po b/po/de.po deleted file mode 100644 index 527fc80be..000000000 --- a/po/de.po +++ /dev/null @@ -1,820 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the re.sonny.Workbench package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: re.sonny.Workbench\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-18 13:24+0100\n" -"PO-Revision-Date: 2022-09-05 17:21+0000\n" -"Last-Translator: Konstantin \n" -"Language-Team: German \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.14.1-dev\n" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:4 -msgid "Workbench" -msgstr "Workbench" - -#: data/app.desktop:5 data/app.metainfo.xml:10 -msgid "Learn and prototype with GNOME technologies" -msgstr "Lerne und baue Prototypen mit GNOME-Technologien" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:12 -msgid "CSS;JavaScript;GJS;Blueprint;builder;Vala;" -msgstr "CSS;JavaScript;GJS;Blueprint;builder;Vala;" - -#: data/app.metainfo.xml:13 -msgid "" -"Workbench goal is to let you experiment with GNOME technologies, no matter " -"if tinkering for the first time or building and testing a GTK user interface." -msgstr "" -"Workbenchs Ziel ist es, dir das Experimentieren mit GNOME Technologien zu " -"ermöglichen, egal ob du damit das erste mal herumbastelst oder dein eigenes " -"GTK-Widget erstellst und testest." - -#: data/app.metainfo.xml:14 -msgid "Among other things, Workbench comes with" -msgstr "Unter anderem kommt Workbench mit" - -#: data/app.metainfo.xml:16 -msgid "realtime GTK/CSS preview" -msgstr "GTK/CSS Vorschau in Echtzeit" - -#: data/app.metainfo.xml:17 -msgid "library of examples" -msgstr "Bibliothek an Beispielen" - -#: data/app.metainfo.xml:18 -msgid "1000+ icons" -msgstr "" - -#: data/app.metainfo.xml:19 -#, fuzzy -msgid "JavaScript and Vala support" -msgstr "JavaScript und Vala können ohne Einrichtung genutzt werden" - -#: data/app.metainfo.xml:20 -msgid "XML and Blueprint for describing user interface" -msgstr "XML und Blueprint, um Benutzeroberflächen zu beschreiben" - -#: data/app.metainfo.xml:21 -msgid "syntax highlighting, undo/redo, autosave, session restore" -msgstr "" -"Syntaxhervorhebung, Rückgängig machen / Wiederherstellen, automatischem " -"Speichern, Sitzungswiederherstellung" - -#: data/app.metainfo.xml:22 -msgid "code formatter" -msgstr "Code Formattierer" - -#: data/app.metainfo.xml:23 -msgid "console logs" -msgstr "Konsolenprotokolle" - -#: data/app.metainfo.xml:52 -msgid "Use Vala Language Server for diagnostics" -msgstr "" - -#: data/app.metainfo.xml:53 -msgid "Move Icon Browser to the main application menu" -msgstr "" - -#: data/app.metainfo.xml:54 -msgid "Reset window preview on close" -msgstr "" - -#: data/app.metainfo.xml:55 -msgid "Add a warning about Blueprint being experimental" -msgstr "" - -#: data/app.metainfo.xml:56 -msgid "Fix loading and running code with Blueprint UI" -msgstr "" - -#: data/app.metainfo.xml:57 -msgid "Fix crash when using abstract UI types" -msgstr "" - -#: data/app.metainfo.xml:58 -msgid "Fix \"No UI definition loaded yet.\" preview error when using Vala" -msgstr "" - -#: data/app.metainfo.xml:59 -msgid "Fix error message when hovering text with no diagnostic" -msgstr "" - -#: data/app.metainfo.xml:60 -msgid "VTE 0.70.1" -msgstr "" - -#: data/app.metainfo.xml:67 -msgid "GNOME 43" -msgstr "" - -#: data/app.metainfo.xml:68 -msgid "Display CSS errors inline" -msgstr "" - -#: data/app.metainfo.xml:69 -msgid "Fix responsiveness when working on large Blueprint files" -msgstr "" - -#: data/app.metainfo.xml:70 -msgid "Use AdwAboutWindow" -msgstr "" - -#: data/app.metainfo.xml:71 -msgid "Blueprint 0.4.0" -msgstr "" - -#: data/app.metainfo.xml:72 -msgid "VTE 0.70.0" -msgstr "" - -#: data/app.metainfo.xml:73 -#, fuzzy -msgid "Various bug and crash fixes" -msgstr "Verschiedene Korrekturen" - -#: data/app.metainfo.xml:80 -msgid "Show tooltip hints in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:81 -#, fuzzy -msgid "Improve XML formatter" -msgstr "Code Formattierer" - -#: data/app.metainfo.xml:82 -msgid "Add Ctrl+Shift+Return shortcut to format" -msgstr "" - -#: data/app.metainfo.xml:83 -msgid "Apply Style CSS to windowed preview" -msgstr "" - -#: data/app.metainfo.xml:84 data/app.metainfo.xml:129 -msgid "Improve application design" -msgstr "Anwendungsdesign verbessert" - -#: data/app.metainfo.xml:85 -msgid "Prevent crash for templates with GtkWidget parent" -msgstr "" - -#: data/app.metainfo.xml:86 -#, fuzzy -msgid "Update VTE and icon-development-kit" -msgstr "Schließe alle Icons vom icon-development-kit ein" - -#: data/app.metainfo.xml:93 -msgid "Underline errors in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:94 -msgid "Fix bugs and crashes" -msgstr "" - -#: data/app.metainfo.xml:102 -msgid "Add an Icon Browser to find the right icons for your prototypes" -msgstr "" - -#: data/app.metainfo.xml:103 -msgid "Add a Platform tools Library demo" -msgstr "" - -#: data/app.metainfo.xml:104 -msgid "Improve the style switcher" -msgstr "" - -#: data/app.metainfo.xml:105 -msgid "Replace confirmation dialogs with toasts and undo" -msgstr "" - -#: data/app.metainfo.xml:106 -msgid "Support updates on root objects" -msgstr "" - -#: data/app.metainfo.xml:107 -#, fuzzy -msgid "Support binding signal handlers from UI" -msgstr "Unterstützung für die Vorschau für Signalbearbeiter hinzugefügt" - -#: data/app.metainfo.xml:108 -msgid "Add APIs to allow using templates from Code" -msgstr "" - -#: data/app.metainfo.xml:109 -#, fuzzy -msgid "Add Center/Fill preview modes for templates" -msgstr "Unterstützung für die Vorschau von Vorlagen hinzugefügt" - -#: data/app.metainfo.xml:111 -msgid "Open external preview with the dimensions of the internal preview" -msgstr "" - -#: data/app.metainfo.xml:112 -msgid "64 new icons available" -msgstr "" - -#: data/app.metainfo.xml:113 -msgid "Update Blueprint to 0.2.0" -msgstr "" - -#: data/app.metainfo.xml:114 -msgid "Fix empty preview on first load" -msgstr "" - -#: data/app.metainfo.xml:115 -msgid "Fix style scheme switch when system preference is light" -msgstr "" - -#: data/app.metainfo.xml:116 -msgid "Remove grid pattern on the source editors" -msgstr "" - -#: data/app.metainfo.xml:122 -msgid "Highlights" -msgstr "Markierungen" - -#: data/app.metainfo.xml:124 -msgid "Add Blueprint markup syntax for UI" -msgstr "Blueprint Markup Syntax für die Benutzeroberfläche hinzugefügt" - -#: data/app.metainfo.xml:125 -msgid "Add Vala programming language for Code" -msgstr "Vala Programmiersprache fürs Code schreiben hinzugefügt" - -#: data/app.metainfo.xml:126 -msgid "Add support for previewing templates" -msgstr "Unterstützung für die Vorschau von Vorlagen hinzugefügt" - -#: data/app.metainfo.xml:127 -msgid "Add support for previewing signal handlers" -msgstr "Unterstützung für die Vorschau für Signalbearbeiter hinzugefügt" - -#: data/app.metainfo.xml:128 -msgid "Include all icons from icon-development-kit" -msgstr "Schließe alle Icons vom icon-development-kit ein" - -#: data/app.metainfo.xml:130 -msgid "Distribute Library examples under CC0-1.0" -msgstr "Vertreibe Bibliothekenbeispiele unter CC0-1.0" - -#: data/app.metainfo.xml:131 -msgid "Respect system preference for color scheme" -msgstr "Respektiere Systempreferenzen für Farbschemen" - -#: data/app.metainfo.xml:132 -msgid "Add proper light/dark color schemes for Console" -msgstr "" - -#: data/app.metainfo.xml:133 -msgid "Fix error when importing files" -msgstr "" - -#: data/app.metainfo.xml:135 -msgid "Other changes" -msgstr "Andere änderungen" - -#: data/app.metainfo.xml:137 -#, fuzzy -msgid "Silence platform tools" -msgstr "Plattform Tools" - -#: data/app.metainfo.xml:138 -msgid "Remove GTK Icon browser platform tool" -msgstr "" - -#: data/app.metainfo.xml:139 -msgid "Make Library examples only open relevant panels" -msgstr "" - -#: data/app.metainfo.xml:140 -msgid "Always open the Console when opening a Library example" -msgstr "" - -#: data/app.metainfo.xml:141 -msgid "Prevent running Code if the panel is not visible" -msgstr "" - -#: data/app.metainfo.xml:142 -msgid "Add icons and mnemonics for all buttons" -msgstr "" - -#: data/app.metainfo.xml:143 -msgid "Move Bookmarks to the main menu" -msgstr "" - -#: data/app.metainfo.xml:144 -msgid "Enable scrollbar and kinetic scrolling on Console" -msgstr "" - -#: data/app.metainfo.xml:145 -#, fuzzy -msgid "Improve Library examples" -msgstr "Bibliothek an Beispielen" - -#: data/app.metainfo.xml:146 -msgid "Performance optimizations" -msgstr "" - -#: data/app.metainfo.xml:147 -msgid "Show a placeholder when all panels are invisible" -msgstr "" - -#: data/app.metainfo.xml:148 -#, fuzzy -msgid "Crash fixes" -msgstr "Verschiedene Korrekturen" - -#: data/app.metainfo.xml:149 -msgid "Use org.gnome.Sdk runtime" -msgstr "" - -#: data/app.metainfo.xml:156 -msgid "Add a Library of examples" -msgstr "Eine Beispiel-Bibliothek hinzufügen" - -#: data/app.metainfo.xml:157 -msgid "Add an example of WebSocket client" -msgstr "Ein Beispiel eines WebSocket Clients hinzufügen" - -#: data/app.metainfo.xml:158 -msgid "Add an example of toasts" -msgstr "Ein Beispiel für eine Benachrichtigung hinzufügen" - -#: data/app.metainfo.xml:159 -msgid "Add an example of application window" -msgstr "Ein Beispiel für ein Anwendungsfenster hinzufügen" - -#: data/app.metainfo.xml:160 -msgid "Add an example of desktop notification" -msgstr "Ein Beispiel für eine Desktop-Benachrichtigung hinzufügen" - -#: data/app.metainfo.xml:162 -msgid "Add Adwaita Demo, GTK Demo, GTK Widget Factory and GTK Icon Browser" -msgstr "" -"Eine Adwaita Demo, GTK Demo, GTK Widget Factory und einen GTK Icon Browser " -"hinzufügen" - -#: data/app.metainfo.xml:163 -msgid "The Console can be collapsed by resizing it" -msgstr "Die Konsole kann durch Ändern ihrer Größe eingeklappt werden" - -#: data/app.metainfo.xml:164 -msgid "Prevent system.exit from quitting Workbench" -msgstr "Verhindern, dass system.exit Workbench beendet" - -#: data/app.metainfo.xml:165 -msgid "Allow calling GObject.registerClass multiple times" -msgstr "Mehrfachen Aufruf von GObject.registerClass zulassen" - -#: data/app.metainfo.xml:166 -msgid "Prevent crash caused by using non GtkBuildable objects" -msgstr "" -"Verhindern eines Absturzes, der durch die Verwendung von nicht GtkBuildable-" -"Objekten verursacht wird" - -#: data/app.metainfo.xml:167 -msgid "Allow using DBus and Gio.Application" -msgstr "Erlaubt die Verwendung von DBus und Gio.Application" - -#: data/app.metainfo.xml:168 -msgid "Allow using network" -msgstr "Nutzung des Netzwerks zulassen" - -#: data/app.metainfo.xml:169 -msgid "Enable GtkWindow objects preview" -msgstr "Vorschau für GtkWindow-Objekte aktivieren" - -#: data/app.metainfo.xml:176 -msgid "Take a png screenshot of the preview" -msgstr "Einen png Screenshot der Vorschau machen" - -#: data/app.metainfo.xml:177 -msgid "The console is now resizable" -msgstr "Die Größe der Konsole kann jetzt geändert werden" - -#: data/app.metainfo.xml:178 -msgid "Redesign the dark/light mode switcher" -msgstr "Überarbeitung des Dunkel-/Hell-Modus Schalters" - -#: data/app.metainfo.xml:179 -msgid "Show platform and dependencies in about dialog" -msgstr "Plattform und Abhängigkeiten im Info-Dialog anzeigen" - -#: data/app.metainfo.xml:180 -msgid "Update to GNOME platform 42" -msgstr "Aktualisierung auf GNOME-Plattform 42" - -#: data/app.metainfo.xml:181 -msgid "Various fixes" -msgstr "Verschiedene Korrekturen" - -#: data/app.metainfo.xml:187 -msgid "This is the first release of Workbench. We hope you like it." -msgstr "Dies ist die erste Version von Workbench. Wir hoffen, es gefällt euch." - -#: src/window.js:371 -msgid "The demo has been loaded" -msgstr "" - -#: src/window.js:372 src/window.js:453 src/shortcutsWindow.blp:46 -msgid "Undo" -msgstr "" - -#: src/window.js:445 -msgid "This file cannot be loaded" -msgstr "" - -#: src/window.js:452 -msgid "The file has been loaded" -msgstr "" - -#. TRANSLATORS: eg. 'Translator Name ' or 'Translator Name https://website.example' -#: src/about.js:39 -msgid "translator-credits" -msgstr "Jonas Loos https://github.com/JonasLoos" - -#: src/about.js:52 -msgid "Contributors" -msgstr "" - -#: src/actions.js:53 src/shortcutsWindow.blp:21 -msgid "Import File" -msgstr "" - -#: src/actions.js:147 -msgid "All supported" -msgstr "" - -#: src/window.blp:15 -#, fuzzy -msgid "_Library" -msgstr "Bibliothek" - -#: src/window.blp:19 -msgid "Open Library of Demos and Examples (Ctrl+Shift+O)" -msgstr "Bibliothek mit Demos und Beispielen öffnen (Strg+Umschalt+O)" - -#: src/window.blp:37 -#, fuzzy -msgid "_Code" -msgstr "Code" - -#: src/window.blp:54 -#, fuzzy -msgid "_Style" -msgstr "Stil" - -#: src/window.blp:71 -#, fuzzy -msgid "_UI" -msgstr "UI" - -#: src/window.blp:88 -#, fuzzy -msgid "_Preview" -msgstr "Vorschau" - -#: src/window.blp:130 -msgid "Code" -msgstr "" - -#: src/window.blp:146 -msgid "Switch document" -msgstr "" - -#: src/window.blp:154 -msgid "_Run" -msgstr "" - -#: src/window.blp:158 -msgid "Run (Ctrl+⏎)" -msgstr "Ausführen (Strg+⏎)" - -#: src/window.blp:218 -#, fuzzy -msgid "Style CSS" -msgstr "CSS-Stil" - -#: src/window.blp:257 -msgid "UI" -msgstr "" - -#: src/window.blp:273 -msgid "Convert and switch syntax" -msgstr "" - -#: src/window.blp:277 -msgid "Informaton about Blueprint" -msgstr "" - -#: src/window.blp:289 src/window.blp:291 -msgid "Convert to XML" -msgstr "" - -#: src/window.blp:300 src/window.blp:302 -msgid "Convert to Blueprint" -msgstr "" - -#: src/window.blp:366 -msgid "Preview" -msgstr "Vorschau" - -#: src/window.blp:376 -msgid "Fill" -msgstr "" - -#: src/window.blp:377 -msgid "Center" -msgstr "" - -#: src/window.blp:380 -msgid "Select Preview mode" -msgstr "" - -#: src/window.blp:386 src/window.blp:388 -msgid "Take Screenshot of Preview" -msgstr "Screenshot der Vorschau machen" - -#: src/window.blp:420 src/window.blp:438 -msgid "Windowed Preview" -msgstr "Vorschau in separatem Fenster" - -#: src/window.blp:421 src/window.blp:439 -#, fuzzy -msgid "" -"This interface can only be previewed as a separate window.\n" -"We recommend using “Always on Top”." -msgstr "" -"Diese Vorschau der Oberfläche kann nur als separates Fenster angezeigt " -"werden.\n" -"Wir empfehlen die Verwendung von „Always on Top“" - -#: src/window.blp:428 -msgid "Show Preview Window" -msgstr "" - -#: src/window.blp:446 -msgid "Close Preview Window" -msgstr "" - -#: src/window.blp:481 -#, fuzzy -msgid "C_onsole" -msgstr "Konsole" - -#: src/window.blp:485 -msgid "Show logs (Ctrl+Shift+K)" -msgstr "Protokolle anzeigen (Strg+Umschalt+K)" - -#: src/window.blp:491 -#, fuzzy -msgid "_Inspector" -msgstr "Inspektor" - -#: src/window.blp:494 -msgid "Open GTK Inspector (Ctrl+Shift+I)" -msgstr "GTK-Inspektor öffnen (Strg+Umschalt+I)" - -#: src/window.blp:505 -msgid "Cl_ear" -msgstr "" - -#: src/window.blp:509 -msgid "Clear console (Ctrl+K)" -msgstr "Konsole leeren (Strg+K)" - -#: src/window.blp:536 -msgid "Future versions may have breaking syntax." -msgstr "" - -#: src/window.blp:537 -msgid "" -"Blueprint is\n" -"Experimental" -msgstr "" - -#: src/window.blp:541 -msgid "Documentation" -msgstr "" - -#: src/window.blp:556 -#, fuzzy -msgid "Import File…" -msgstr "Datei öffnen…" - -#: src/window.blp:562 -msgid "Bookmarks" -msgstr "Lesezeichen" - -#: src/window.blp:564 -msgid "Learn" -msgstr "Lernen" - -#: src/window.blp:567 -msgid "Developer Documentation" -msgstr "" - -#: src/window.blp:574 -#, fuzzy -msgid "Human Interface Guidelines" -msgstr "Human Interface Guidelines (HIG)" - -#: src/window.blp:580 -msgid "JavaScript" -msgstr "JavaScript" - -#: src/window.blp:586 -msgid "Vala" -msgstr "" - -#: src/window.blp:592 -msgid "Blueprint" -msgstr "" - -#: src/window.blp:599 -msgid "Get help" -msgstr "Hilfe erhalten" - -#: src/window.blp:602 -#, fuzzy -msgid "Discourse" -msgstr "Diskurs" - -#: src/window.blp:608 -msgid "Matrix" -msgstr "Matrix" - -#: src/window.blp:616 -#, fuzzy -msgid "Icon Library" -msgstr "Bibliothek" - -#: src/window.blp:621 -msgid "Platform Tools" -msgstr "Plattform Tools" - -#: src/window.blp:624 -msgid "Adwaita Demo" -msgstr "Adwaita Demo" - -#: src/window.blp:630 -msgid "GTK Demo" -msgstr "GTK Demo" - -#: src/window.blp:636 -msgid "GTK Widget Factory" -msgstr "GTK Widget Factory" - -#: src/window.blp:644 src/shortcutsWindow.blp:54 -msgid "Keyboard Shortcuts" -msgstr "Tastenkombinationen" - -#: src/window.blp:649 -msgid "About Workbench" -msgstr "Über Workbench" - -#: src/shortcutsWindow.blp:11 -#, fuzzy -msgid "Run Code" -msgstr "Code" - -#: src/shortcutsWindow.blp:16 -msgid "Format" -msgstr "" - -#: src/shortcutsWindow.blp:26 -#, fuzzy -msgid "Open Library" -msgstr "Bibliothek" - -#: src/shortcutsWindow.blp:31 -#, fuzzy -msgid "Toggle Console" -msgstr "Konsole leeren" - -#: src/shortcutsWindow.blp:36 -msgid "Clear Console" -msgstr "Konsole leeren" - -#: src/shortcutsWindow.blp:42 -msgid "Inspector" -msgstr "Inspektor" - -#: src/shortcutsWindow.blp:50 -msgid "Redo" -msgstr "" - -#: src/shortcutsWindow.blp:58 -msgid "Quit" -msgstr "Beenden" - -#: src/Library/Library.blp:7 -msgid "Library" -msgstr "Bibliothek" - -#: troll/src/widgets/ThemeSelector.blp:22 -#: troll/src/widgets/ThemeSelector.blp:25 -msgid "Follow system style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:41 -#: troll/src/widgets/ThemeSelector.blp:44 -msgid "Light style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:60 -#: troll/src/widgets/ThemeSelector.blp:63 -msgid "Dark style" -msgstr "" - -#~ msgid "" -#~ "Learn and prototype with\n" -#~ "GNOME technologies" -#~ msgstr "" -#~ "Lernen und Prototyping mit\n" -#~ "GNOME-Technologien" - -#, fuzzy -#~ msgid "sun-symbolic" -#~ msgstr "sun-symbolic" - -#~ msgid "Use Light mode" -#~ msgstr "Hellen Modus nutzen" - -#, fuzzy -#~ msgid "workbench-moon-rounded-symbolic" -#~ msgstr "moon-rounded-symbolic" - -#~ msgid "Use Dark mode" -#~ msgstr "Dunklen Modus nutzen" - -#~ msgid "Are you sure you want to discard your changes?" -#~ msgstr "Bist du sicher, dass du deine Änderungen verwerfen willst?" - -#~ msgid "" -#~ "Side by side editors with live preview on the right and console in the " -#~ "bottom" -#~ msgstr "" -#~ "Nebeneinander liegende Editor-Panele mit Echtzeitvorschau auf der rechten " -#~ "Seite und einer Konsole unten" - -#~ msgid "JavaScript for quick and easy scripting" -#~ msgstr "JavaScript für schnelles und einfaches Skripten" - -#~ msgid "Run" -#~ msgstr "Ausführen" - -#~ msgid "Open Console" -#~ msgstr "Konsole öffnen" - -#~ msgid "Code - JavaScript" -#~ msgstr "Code - JavaScript" - -#~ msgid "UI - XML" -#~ msgstr "UI - XML" - -#~ msgid "Clear" -#~ msgstr "Leeren" - -#~ msgid "Examples to start from or get inspired by" -#~ msgstr "Beispiele, von denen du starten oder dich inspirieren lassen kannst" - -#~ msgid "GTK Icon Browser" -#~ msgstr "GTK Icon Browser" - -#~ msgid "GNOME JavaScript (GJS)" -#~ msgstr "GNOME JavaScript (GJS)" - -#~ msgid "UI components" -#~ msgstr "UI Komponenten" - -#~ msgid "Platform components" -#~ msgstr "Plattformkomponenten" - -#~ msgid "Reference" -#~ msgstr "Referenz" - -#~ msgid "GJS" -#~ msgstr "GJS" - -#~ msgid "Gtk" -#~ msgstr "Gtk" - -#~ msgid "Adwaita" -#~ msgstr "Adwaita" - -#~ msgid "Stack Overflow" -#~ msgstr "Stack Overflow" diff --git a/po/es.po b/po/es.po deleted file mode 100644 index da9ba393f..000000000 --- a/po/es.po +++ /dev/null @@ -1,775 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the re.sonny.Workbench package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: re.sonny.Workbench\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-18 13:24+0100\n" -"PO-Revision-Date: 2022-06-05 09:01+0000\n" -"Last-Translator: Óscar Fernández Díaz \n" -"Language-Team: Spanish \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.13-dev\n" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:4 -msgid "Workbench" -msgstr "Workbench" - -#: data/app.desktop:5 data/app.metainfo.xml:10 -msgid "Learn and prototype with GNOME technologies" -msgstr "Aprende y crea proptipos con las tecnologías de GNOME" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:12 -msgid "CSS;JavaScript;GJS;Blueprint;builder;Vala;" -msgstr "CSS;JavaScript;GJS;Blueprint;builder;Vala;" - -#: data/app.metainfo.xml:13 -msgid "" -"Workbench goal is to let you experiment with GNOME technologies, no matter " -"if tinkering for the first time or building and testing a GTK user interface." -msgstr "" -"El objetivo de WorkBench es que puedas experimentar con las tecnologías de " -"GNOME, no importa si es tu primera vez haciendo retoques, o construyendo y " -"probando una interfaz de usuario GTK." - -#: data/app.metainfo.xml:14 -msgid "Among other things, Workbench comes with" -msgstr "Entre otras cosas, Workbench incluye" - -#: data/app.metainfo.xml:16 -msgid "realtime GTK/CSS preview" -msgstr "previsualización GTK/CSS en tiempo real" - -#: data/app.metainfo.xml:17 -msgid "library of examples" -msgstr "librería de ejemplos" - -#: data/app.metainfo.xml:18 -msgid "1000+ icons" -msgstr "" - -#: data/app.metainfo.xml:19 -#, fuzzy -msgid "JavaScript and Vala support" -msgstr "JavaScript y Vala funcionan sin necesidad de configurar nada" - -#: data/app.metainfo.xml:20 -msgid "XML and Blueprint for describing user interface" -msgstr "XML y Blueprint para describir la interfaz de usuario" - -#: data/app.metainfo.xml:21 -msgid "syntax highlighting, undo/redo, autosave, session restore" -msgstr "" -"Resaltado de sintaxis, deshacer/rehacer, guardado automático, restauración " -"de la sesión" - -#: data/app.metainfo.xml:22 -msgid "code formatter" -msgstr "formateador de código" - -#: data/app.metainfo.xml:23 -msgid "console logs" -msgstr "logs en consola" - -#: data/app.metainfo.xml:52 -msgid "Use Vala Language Server for diagnostics" -msgstr "" - -#: data/app.metainfo.xml:53 -#, fuzzy -msgid "Move Icon Browser to the main application menu" -msgstr "Mover Marcadores al menú principal" - -#: data/app.metainfo.xml:54 -msgid "Reset window preview on close" -msgstr "" - -#: data/app.metainfo.xml:55 -msgid "Add a warning about Blueprint being experimental" -msgstr "" - -#: data/app.metainfo.xml:56 -msgid "Fix loading and running code with Blueprint UI" -msgstr "" - -#: data/app.metainfo.xml:57 -msgid "Fix crash when using abstract UI types" -msgstr "" - -#: data/app.metainfo.xml:58 -msgid "Fix \"No UI definition loaded yet.\" preview error when using Vala" -msgstr "" - -#: data/app.metainfo.xml:59 -msgid "Fix error message when hovering text with no diagnostic" -msgstr "" - -#: data/app.metainfo.xml:60 -msgid "VTE 0.70.1" -msgstr "" - -#: data/app.metainfo.xml:67 -msgid "GNOME 43" -msgstr "" - -#: data/app.metainfo.xml:68 -msgid "Display CSS errors inline" -msgstr "" - -#: data/app.metainfo.xml:69 -msgid "Fix responsiveness when working on large Blueprint files" -msgstr "" - -#: data/app.metainfo.xml:70 -msgid "Use AdwAboutWindow" -msgstr "" - -#: data/app.metainfo.xml:71 -#, fuzzy -msgid "Blueprint 0.4.0" -msgstr "Blueprint" - -#: data/app.metainfo.xml:72 -msgid "VTE 0.70.0" -msgstr "" - -#: data/app.metainfo.xml:73 -#, fuzzy -msgid "Various bug and crash fixes" -msgstr "Arreglos varios" - -#: data/app.metainfo.xml:80 -msgid "Show tooltip hints in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:81 -#, fuzzy -msgid "Improve XML formatter" -msgstr "formateador de código" - -#: data/app.metainfo.xml:82 -msgid "Add Ctrl+Shift+Return shortcut to format" -msgstr "" - -#: data/app.metainfo.xml:83 -msgid "Apply Style CSS to windowed preview" -msgstr "" - -#: data/app.metainfo.xml:84 data/app.metainfo.xml:129 -msgid "Improve application design" -msgstr "Mejorar el diseño de la aplicación" - -#: data/app.metainfo.xml:85 -msgid "Prevent crash for templates with GtkWidget parent" -msgstr "" - -#: data/app.metainfo.xml:86 -#, fuzzy -msgid "Update VTE and icon-development-kit" -msgstr "Incluir todos los íconos de icon-development-kit" - -#: data/app.metainfo.xml:93 -msgid "Underline errors in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:94 -msgid "Fix bugs and crashes" -msgstr "" - -#: data/app.metainfo.xml:102 -msgid "Add an Icon Browser to find the right icons for your prototypes" -msgstr "" - -#: data/app.metainfo.xml:103 -msgid "Add a Platform tools Library demo" -msgstr "" - -#: data/app.metainfo.xml:104 -msgid "Improve the style switcher" -msgstr "" - -#: data/app.metainfo.xml:105 -msgid "Replace confirmation dialogs with toasts and undo" -msgstr "" - -#: data/app.metainfo.xml:106 -msgid "Support updates on root objects" -msgstr "" - -#: data/app.metainfo.xml:107 -#, fuzzy -msgid "Support binding signal handlers from UI" -msgstr "Añadir soporte para previsualización de manejadores de señales" - -#: data/app.metainfo.xml:108 -msgid "Add APIs to allow using templates from Code" -msgstr "" - -#: data/app.metainfo.xml:109 -#, fuzzy -msgid "Add Center/Fill preview modes for templates" -msgstr "Añadir soporte para previsualización de plantilas" - -#: data/app.metainfo.xml:111 -msgid "Open external preview with the dimensions of the internal preview" -msgstr "" - -#: data/app.metainfo.xml:112 -msgid "64 new icons available" -msgstr "" - -#: data/app.metainfo.xml:113 -msgid "Update Blueprint to 0.2.0" -msgstr "" - -#: data/app.metainfo.xml:114 -msgid "Fix empty preview on first load" -msgstr "" - -#: data/app.metainfo.xml:115 -msgid "Fix style scheme switch when system preference is light" -msgstr "" - -#: data/app.metainfo.xml:116 -msgid "Remove grid pattern on the source editors" -msgstr "" - -#: data/app.metainfo.xml:122 -msgid "Highlights" -msgstr "Resaltados" - -#: data/app.metainfo.xml:124 -msgid "Add Blueprint markup syntax for UI" -msgstr "Añadir la sintaxis de marcado de Blueprint para la IU" - -#: data/app.metainfo.xml:125 -msgid "Add Vala programming language for Code" -msgstr "Añadir lenguaje de programación Vala" - -#: data/app.metainfo.xml:126 -msgid "Add support for previewing templates" -msgstr "Añadir soporte para previsualización de plantilas" - -#: data/app.metainfo.xml:127 -msgid "Add support for previewing signal handlers" -msgstr "Añadir soporte para previsualización de manejadores de señales" - -#: data/app.metainfo.xml:128 -msgid "Include all icons from icon-development-kit" -msgstr "Incluir todos los íconos de icon-development-kit" - -#: data/app.metainfo.xml:130 -msgid "Distribute Library examples under CC0-1.0" -msgstr "Distribuir Librerías de ejemplo bajo CC0-1.0" - -#: data/app.metainfo.xml:131 -msgid "Respect system preference for color scheme" -msgstr "Respetar la preferencia del esquema de color del sistema" - -#: data/app.metainfo.xml:132 -msgid "Add proper light/dark color schemes for Console" -msgstr "Añadir esquemas de color claro/oscuro apropiados para Console" - -#: data/app.metainfo.xml:133 -#, fuzzy -msgid "Fix error when importing files" -msgstr "Arreglar error cuando se abre un archivo" - -#: data/app.metainfo.xml:135 -msgid "Other changes" -msgstr "Otros cambios" - -#: data/app.metainfo.xml:137 -msgid "Silence platform tools" -msgstr "Herramientas de plataforma de silencio" - -#: data/app.metainfo.xml:138 -msgid "Remove GTK Icon browser platform tool" -msgstr "" - -#: data/app.metainfo.xml:139 -msgid "Make Library examples only open relevant panels" -msgstr "Hacer que las Librerías de ejemplo solo abran paneles relevantes" - -#: data/app.metainfo.xml:140 -msgid "Always open the Console when opening a Library example" -msgstr "Siempre abrir la Consola cuando se abra una Librería de ejemplo" - -#: data/app.metainfo.xml:141 -msgid "Prevent running Code if the panel is not visible" -msgstr "Prevenir correr el Código si el panel no está visible" - -#: data/app.metainfo.xml:142 -msgid "Add icons and mnemonics for all buttons" -msgstr "Añadir íconos y mnemotecnias para todos los botones" - -#: data/app.metainfo.xml:143 -msgid "Move Bookmarks to the main menu" -msgstr "Mover Marcadores al menú principal" - -#: data/app.metainfo.xml:144 -msgid "Enable scrollbar and kinetic scrolling on Console" -msgstr "Habilitar barra de desplazamiento en la Consola" - -#: data/app.metainfo.xml:145 -msgid "Improve Library examples" -msgstr "Mejorar Librería de ejemplos" - -#: data/app.metainfo.xml:146 -msgid "Performance optimizations" -msgstr "Optimizaciones de rendimiento" - -#: data/app.metainfo.xml:147 -msgid "Show a placeholder when all panels are invisible" -msgstr "Mostrar un placeholder cuando todo los paneles son invisibles" - -#: data/app.metainfo.xml:148 -msgid "Crash fixes" -msgstr "Corrección de fallas" - -#: data/app.metainfo.xml:149 -msgid "Use org.gnome.Sdk runtime" -msgstr "Usar org.gnome.Sdk" - -#: data/app.metainfo.xml:156 -msgid "Add a Library of examples" -msgstr "Agregar una librería de ejemplos" - -#: data/app.metainfo.xml:157 -msgid "Add an example of WebSocket client" -msgstr "Agregar un ejemplo de cliente WebSocket" - -#: data/app.metainfo.xml:158 -msgid "Add an example of toasts" -msgstr "Agregar un ejemplo de avisos" - -#: data/app.metainfo.xml:159 -msgid "Add an example of application window" -msgstr "Agregar un ejemplo de ventana de aplicación" - -#: data/app.metainfo.xml:160 -msgid "Add an example of desktop notification" -msgstr "Agregar un ejemplo de notificación de escritorio" - -#: data/app.metainfo.xml:162 -msgid "Add Adwaita Demo, GTK Demo, GTK Widget Factory and GTK Icon Browser" -msgstr "Agregar Adwaita Demo, GTK Demo, GTK Widget Factory y GTK Icon Browser" - -#: data/app.metainfo.xml:163 -msgid "The Console can be collapsed by resizing it" -msgstr "La consola puede ser colapsada redimensionándola" - -#: data/app.metainfo.xml:164 -msgid "Prevent system.exit from quitting Workbench" -msgstr "Prevenir system.exit cuando salgas de Workbench" - -#: data/app.metainfo.xml:165 -msgid "Allow calling GObject.registerClass multiple times" -msgstr "Permitir llamados a GObject.registerClass múltiples veces" - -#: data/app.metainfo.xml:166 -msgid "Prevent crash caused by using non GtkBuildable objects" -msgstr "Prevenir cierres causados al utilizar objetos no GTKBuildable" - -#: data/app.metainfo.xml:167 -msgid "Allow using DBus and Gio.Application" -msgstr "Permitir el uso de DBus y Gio.Application" - -#: data/app.metainfo.xml:168 -msgid "Allow using network" -msgstr "Permitir el uso de la red" - -#: data/app.metainfo.xml:169 -msgid "Enable GtkWindow objects preview" -msgstr "Permitir la previsualización de objetos GtkWindow" - -#: data/app.metainfo.xml:176 -msgid "Take a png screenshot of the preview" -msgstr "Tomar una captura png de la previsualización" - -#: data/app.metainfo.xml:177 -msgid "The console is now resizable" -msgstr "La consola ahora es redimensionable" - -#: data/app.metainfo.xml:178 -msgid "Redesign the dark/light mode switcher" -msgstr "Rediseñar el conmutador de modo oscuro/claro" - -#: data/app.metainfo.xml:179 -msgid "Show platform and dependencies in about dialog" -msgstr "Mostrar la plataforma y dependencias en el diálogo acerca de" - -#: data/app.metainfo.xml:180 -msgid "Update to GNOME platform 42" -msgstr "Actualizar a la plataforma GNOME 42" - -#: data/app.metainfo.xml:181 -msgid "Various fixes" -msgstr "Arreglos varios" - -#: data/app.metainfo.xml:187 -msgid "This is the first release of Workbench. We hope you like it." -msgstr "Este es el primer lanzamiento de Workbench. Esperamos que te guste." - -#: src/window.js:371 -msgid "The demo has been loaded" -msgstr "" - -#: src/window.js:372 src/window.js:453 src/shortcutsWindow.blp:46 -msgid "Undo" -msgstr "Deshacer" - -#: src/window.js:445 -msgid "This file cannot be loaded" -msgstr "" - -#: src/window.js:452 -msgid "The file has been loaded" -msgstr "" - -#. TRANSLATORS: eg. 'Translator Name ' or 'Translator Name https://website.example' -#: src/about.js:39 -msgid "translator-credits" -msgstr "Mateo Estrada Ramirez mateoestradaramirez@outlook.com" - -#: src/about.js:52 -msgid "Contributors" -msgstr "" - -#: src/actions.js:53 src/shortcutsWindow.blp:21 -msgid "Import File" -msgstr "Importar Archivo" - -#: src/actions.js:147 -msgid "All supported" -msgstr "Todos los soportados" - -#: src/window.blp:15 -msgid "_Library" -msgstr "_Librería" - -#: src/window.blp:19 -msgid "Open Library of Demos and Examples (Ctrl+Shift+O)" -msgstr "Abrir Librería de Demos y Ejemplos (Ctrl+Shift+O)" - -#: src/window.blp:37 -msgid "_Code" -msgstr "_Código" - -#: src/window.blp:54 -msgid "_Style" -msgstr "_Estilo" - -#: src/window.blp:71 -msgid "_UI" -msgstr "_IU" - -#: src/window.blp:88 -msgid "_Preview" -msgstr "_Previsualizar" - -#: src/window.blp:130 -msgid "Code" -msgstr "Código" - -#: src/window.blp:146 -msgid "Switch document" -msgstr "Cambiar documento" - -#: src/window.blp:154 -msgid "_Run" -msgstr "_Correr" - -#: src/window.blp:158 -msgid "Run (Ctrl+⏎)" -msgstr "Ejecutar (Ctrl+⏎)" - -#: src/window.blp:218 -msgid "Style CSS" -msgstr "Estilo - CSS" - -#: src/window.blp:257 -msgid "UI" -msgstr "IU" - -#: src/window.blp:273 -msgid "Convert and switch syntax" -msgstr "" - -#: src/window.blp:277 -#, fuzzy -msgid "Informaton about Blueprint" -msgstr "Convertir a Blueprint" - -#: src/window.blp:289 src/window.blp:291 -msgid "Convert to XML" -msgstr "Convertir a XML" - -#: src/window.blp:300 src/window.blp:302 -msgid "Convert to Blueprint" -msgstr "Convertir a Blueprint" - -#: src/window.blp:366 -msgid "Preview" -msgstr "Previsualizar" - -#: src/window.blp:376 -msgid "Fill" -msgstr "" - -#: src/window.blp:377 -msgid "Center" -msgstr "" - -#: src/window.blp:380 -#, fuzzy -msgid "Select Preview mode" -msgstr "Cerrar Ventana de Previsualización" - -#: src/window.blp:386 src/window.blp:388 -msgid "Take Screenshot of Preview" -msgstr "Tomar una Captura de la Previsualización" - -#: src/window.blp:420 src/window.blp:438 -msgid "Windowed Preview" -msgstr "Previsualización en Ventana" - -#: src/window.blp:421 src/window.blp:439 -#, fuzzy -msgid "" -"This interface can only be previewed as a separate window.\n" -"We recommend using “Always on Top”." -msgstr "" -"La interfaz sólo puede ser previsualizada como una ventana separada.\n" -"Recomendamos utilizar \"Siempre Encima\"" - -#: src/window.blp:428 -msgid "Show Preview Window" -msgstr "Mostrar Ventana de Previsualización" - -#: src/window.blp:446 -msgid "Close Preview Window" -msgstr "Cerrar Ventana de Previsualización" - -#: src/window.blp:481 -msgid "C_onsole" -msgstr "C_onsola" - -#: src/window.blp:485 -msgid "Show logs (Ctrl+Shift+K)" -msgstr "Mostrar logs (Ctrl+Shift+K)" - -#: src/window.blp:491 -msgid "_Inspector" -msgstr "_Inspector" - -#: src/window.blp:494 -msgid "Open GTK Inspector (Ctrl+Shift+I)" -msgstr "Abrir inspector GTK (Ctrl+Shift+I)" - -#: src/window.blp:505 -msgid "Cl_ear" -msgstr "L_impiar" - -#: src/window.blp:509 -msgid "Clear console (Ctrl+K)" -msgstr "Limpiar consola (Ctrl+K)" - -#: src/window.blp:536 -msgid "Future versions may have breaking syntax." -msgstr "" - -#: src/window.blp:537 -msgid "" -"Blueprint is\n" -"Experimental" -msgstr "" - -#: src/window.blp:541 -#, fuzzy -msgid "Documentation" -msgstr "Documentación de desarrorollador" - -#: src/window.blp:556 -msgid "Import File…" -msgstr "Importar Archivo…" - -#: src/window.blp:562 -msgid "Bookmarks" -msgstr "Marcadores" - -#: src/window.blp:564 -msgid "Learn" -msgstr "Aprende" - -#: src/window.blp:567 -msgid "Developer Documentation" -msgstr "Documentación de desarrorollador" - -#: src/window.blp:574 -msgid "Human Interface Guidelines" -msgstr "Pautas de Interfaz Humana" - -#: src/window.blp:580 -msgid "JavaScript" -msgstr "JavaScript" - -#: src/window.blp:586 -msgid "Vala" -msgstr "Vala" - -#: src/window.blp:592 -msgid "Blueprint" -msgstr "Blueprint" - -#: src/window.blp:599 -msgid "Get help" -msgstr "Obtener ayuda" - -#: src/window.blp:602 -msgid "Discourse" -msgstr "Discourse" - -#: src/window.blp:608 -msgid "Matrix" -msgstr "Matrix" - -#: src/window.blp:616 -#, fuzzy -msgid "Icon Library" -msgstr "Abrir Librería" - -#: src/window.blp:621 -msgid "Platform Tools" -msgstr "Herramientas de Plataforma" - -#: src/window.blp:624 -msgid "Adwaita Demo" -msgstr "Demo Adwaita" - -#: src/window.blp:630 -msgid "GTK Demo" -msgstr "Demo GTK" - -#: src/window.blp:636 -msgid "GTK Widget Factory" -msgstr "GTK Widget Factory" - -#: src/window.blp:644 src/shortcutsWindow.blp:54 -msgid "Keyboard Shortcuts" -msgstr "Atajos de Teclado" - -#: src/window.blp:649 -msgid "About Workbench" -msgstr "Acerca de Workbench" - -#: src/shortcutsWindow.blp:11 -msgid "Run Code" -msgstr "Correr Código" - -#: src/shortcutsWindow.blp:16 -msgid "Format" -msgstr "" - -#: src/shortcutsWindow.blp:26 -msgid "Open Library" -msgstr "Abrir Librería" - -#: src/shortcutsWindow.blp:31 -msgid "Toggle Console" -msgstr "Alternar Consola" - -#: src/shortcutsWindow.blp:36 -msgid "Clear Console" -msgstr "Limpiar Consola" - -#: src/shortcutsWindow.blp:42 -msgid "Inspector" -msgstr "Inspector" - -#: src/shortcutsWindow.blp:50 -msgid "Redo" -msgstr "Rehacer" - -#: src/shortcutsWindow.blp:58 -msgid "Quit" -msgstr "Salir" - -#: src/Library/Library.blp:7 -msgid "Library" -msgstr "Librería" - -#: troll/src/widgets/ThemeSelector.blp:22 -#: troll/src/widgets/ThemeSelector.blp:25 -msgid "Follow system style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:41 -#: troll/src/widgets/ThemeSelector.blp:44 -msgid "Light style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:60 -#: troll/src/widgets/ThemeSelector.blp:63 -msgid "Dark style" -msgstr "" - -#~ msgid "About My App" -#~ msgstr "Acerca de My App" - -#~ msgid "" -#~ "Learn and prototype with\n" -#~ "GNOME technologies" -#~ msgstr "" -#~ "Aprende y crea prototipos con\n" -#~ "las tecnologías GNOME" - -#~ msgid "sun-symbolic" -#~ msgstr "sun-symbolic" - -#~ msgid "Use Light mode" -#~ msgstr "Usar modo claro" - -#~ msgid "workbench-moon-rounded-symbolic" -#~ msgstr "workbench-moon-rounded-symbolic" - -#~ msgid "Use Dark mode" -#~ msgstr "Usar modo oscuro" - -#~ msgid "Are you sure you want to discard your changes?" -#~ msgstr "¿Estás seguro de que deseas descartar tus cambios?" - -#~ msgid "" -#~ "Side by side editors with live preview on the right and console in the " -#~ "bottom" -#~ msgstr "" -#~ "Editores lado a lado con previsualización en tiempo real a la derecha y " -#~ "una consola en la parte inferior" - -#~ msgid "JavaScript for quick and easy scripting" -#~ msgstr "JavaScript para crear scripts de manera rápida y sencilla" - -#~ msgid "Run" -#~ msgstr "Ejecutar" - -#~ msgid "Open Console" -#~ msgstr "Abrir Consola" - -#~ msgid "Code - JavaScript" -#~ msgstr "Código - JavaScript" - -#~ msgid "Clear" -#~ msgstr "Limpiar" - -#~ msgid "Examples to start from or get inspired by" -#~ msgstr "Ejemplos para comenzar u obtener inspiración" diff --git a/po/fa.po b/po/fa.po deleted file mode 100644 index ea9a457c2..000000000 --- a/po/fa.po +++ /dev/null @@ -1,748 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the re.sonny.Workbench package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: re.sonny.Workbench\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-18 13:24+0100\n" -"PO-Revision-Date: 2022-07-16 05:15+0000\n" -"Last-Translator: Chapdast dev \n" -"Language-Team: Persian \n" -"Language: fa\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.14-dev\n" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:4 -msgid "Workbench" -msgstr "میزکار" - -#: data/app.desktop:5 data/app.metainfo.xml:10 -msgid "Learn and prototype with GNOME technologies" -msgstr "فناوری های GNOME بیآموز و نمونه‌سازی کن" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:12 -msgid "CSS;JavaScript;GJS;Blueprint;builder;Vala;" -msgstr "" - -#: data/app.metainfo.xml:13 -msgid "" -"Workbench goal is to let you experiment with GNOME technologies, no matter " -"if tinkering for the first time or building and testing a GTK user interface." -msgstr "" -"میزکار، هدفش دادن امکان آزمایش با فناوری‌های GNOME است، هرچند که برای سرگرمی " -"یا قسمت از یک نمای‌کاربری با GTK را توسعه می‌دهید." - -#: data/app.metainfo.xml:14 -msgid "Among other things, Workbench comes with" -msgstr "همراه با موارد دیگر، میزکار همراه است با" - -#: data/app.metainfo.xml:16 -msgid "realtime GTK/CSS preview" -msgstr "پیش‌نمایش لحظه‌ای GTK/CSS" - -#: data/app.metainfo.xml:17 -msgid "library of examples" -msgstr "کتابخانه نمونه ها" - -#: data/app.metainfo.xml:18 -msgid "1000+ icons" -msgstr "" - -#: data/app.metainfo.xml:19 -#, fuzzy -msgid "JavaScript and Vala support" -msgstr "JavaScript و Vala بدون هیج پیکربندی قابل استفاده است" - -#: data/app.metainfo.xml:20 -msgid "XML and Blueprint for describing user interface" -msgstr "XML و Blueprint برای شرح نمای‌کاربری" - -#: data/app.metainfo.xml:21 -msgid "syntax highlighting, undo/redo, autosave, session restore" -msgstr "نمایش سینتکس، ذخیره خودکار، بازگردانی نشست و undo/redo" - -#: data/app.metainfo.xml:22 -msgid "code formatter" -msgstr "مرتب کننده کد" - -#: data/app.metainfo.xml:23 -msgid "console logs" -msgstr "لاگ‌های کنسول" - -#: data/app.metainfo.xml:52 -msgid "Use Vala Language Server for diagnostics" -msgstr "" - -#: data/app.metainfo.xml:53 -#, fuzzy -msgid "Move Icon Browser to the main application menu" -msgstr "نشانه‌گذاری‌ها، را به منو اصلی انتقال بده" - -#: data/app.metainfo.xml:54 -msgid "Reset window preview on close" -msgstr "" - -#: data/app.metainfo.xml:55 -msgid "Add a warning about Blueprint being experimental" -msgstr "" - -#: data/app.metainfo.xml:56 -msgid "Fix loading and running code with Blueprint UI" -msgstr "" - -#: data/app.metainfo.xml:57 -msgid "Fix crash when using abstract UI types" -msgstr "" - -#: data/app.metainfo.xml:58 -msgid "Fix \"No UI definition loaded yet.\" preview error when using Vala" -msgstr "" - -#: data/app.metainfo.xml:59 -msgid "Fix error message when hovering text with no diagnostic" -msgstr "" - -#: data/app.metainfo.xml:60 -msgid "VTE 0.70.1" -msgstr "" - -#: data/app.metainfo.xml:67 -msgid "GNOME 43" -msgstr "" - -#: data/app.metainfo.xml:68 -msgid "Display CSS errors inline" -msgstr "" - -#: data/app.metainfo.xml:69 -msgid "Fix responsiveness when working on large Blueprint files" -msgstr "" - -#: data/app.metainfo.xml:70 -msgid "Use AdwAboutWindow" -msgstr "" - -#: data/app.metainfo.xml:71 -msgid "Blueprint 0.4.0" -msgstr "" - -#: data/app.metainfo.xml:72 -msgid "VTE 0.70.0" -msgstr "" - -#: data/app.metainfo.xml:73 -#, fuzzy -msgid "Various bug and crash fixes" -msgstr "رفع مشکلات مختلف" - -#: data/app.metainfo.xml:80 -msgid "Show tooltip hints in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:81 -#, fuzzy -msgid "Improve XML formatter" -msgstr "مرتب کننده کد" - -#: data/app.metainfo.xml:82 -msgid "Add Ctrl+Shift+Return shortcut to format" -msgstr "" - -#: data/app.metainfo.xml:83 -msgid "Apply Style CSS to windowed preview" -msgstr "" - -#: data/app.metainfo.xml:84 data/app.metainfo.xml:129 -msgid "Improve application design" -msgstr "بهبود طراحی بصری" - -#: data/app.metainfo.xml:85 -msgid "Prevent crash for templates with GtkWidget parent" -msgstr "" - -#: data/app.metainfo.xml:86 -#, fuzzy -msgid "Update VTE and icon-development-kit" -msgstr "همراه داشتن تمام نشانه‌های icon-development-kit" - -#: data/app.metainfo.xml:93 -msgid "Underline errors in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:94 -msgid "Fix bugs and crashes" -msgstr "" - -#: data/app.metainfo.xml:102 -msgid "Add an Icon Browser to find the right icons for your prototypes" -msgstr "" - -#: data/app.metainfo.xml:103 -msgid "Add a Platform tools Library demo" -msgstr "" - -#: data/app.metainfo.xml:104 -msgid "Improve the style switcher" -msgstr "" - -#: data/app.metainfo.xml:105 -msgid "Replace confirmation dialogs with toasts and undo" -msgstr "" - -#: data/app.metainfo.xml:106 -msgid "Support updates on root objects" -msgstr "" - -#: data/app.metainfo.xml:107 -#, fuzzy -msgid "Support binding signal handlers from UI" -msgstr "اضافه شدن امکان پیش‌نمایش هندلر‌های سیگنال" - -#: data/app.metainfo.xml:108 -msgid "Add APIs to allow using templates from Code" -msgstr "" - -#: data/app.metainfo.xml:109 -#, fuzzy -msgid "Add Center/Fill preview modes for templates" -msgstr "اضافه شده امکان نمایش قالب‌های آماده" - -#: data/app.metainfo.xml:111 -msgid "Open external preview with the dimensions of the internal preview" -msgstr "" - -#: data/app.metainfo.xml:112 -msgid "64 new icons available" -msgstr "" - -#: data/app.metainfo.xml:113 -msgid "Update Blueprint to 0.2.0" -msgstr "" - -#: data/app.metainfo.xml:114 -msgid "Fix empty preview on first load" -msgstr "" - -#: data/app.metainfo.xml:115 -msgid "Fix style scheme switch when system preference is light" -msgstr "" - -#: data/app.metainfo.xml:116 -msgid "Remove grid pattern on the source editors" -msgstr "" - -#: data/app.metainfo.xml:122 -msgid "Highlights" -msgstr "برجسته‌ها" - -#: data/app.metainfo.xml:124 -msgid "Add Blueprint markup syntax for UI" -msgstr "اضافه شده مارک‌آپ Blueprint برای UI" - -#: data/app.metainfo.xml:125 -msgid "Add Vala programming language for Code" -msgstr "اضافه شدن زبان Vala برای Code" - -#: data/app.metainfo.xml:126 -msgid "Add support for previewing templates" -msgstr "اضافه شده امکان نمایش قالب‌های آماده" - -#: data/app.metainfo.xml:127 -msgid "Add support for previewing signal handlers" -msgstr "اضافه شدن امکان پیش‌نمایش هندلر‌های سیگنال" - -#: data/app.metainfo.xml:128 -msgid "Include all icons from icon-development-kit" -msgstr "همراه داشتن تمام نشانه‌های icon-development-kit" - -#: data/app.metainfo.xml:130 -msgid "Distribute Library examples under CC0-1.0" -msgstr "مثال کتابخانه‌گسترده تحت CC0-1.0" - -#: data/app.metainfo.xml:131 -msgid "Respect system preference for color scheme" -msgstr "نمایه‌ رنگ بر اساس تنظیمات رنگ سیستم" - -#: data/app.metainfo.xml:132 -msgid "Add proper light/dark color schemes for Console" -msgstr "اضافه شده نمایه‌های رنگی روشن/تاریک مناسب برای کنسول" - -#: data/app.metainfo.xml:133 -#, fuzzy -msgid "Fix error when importing files" -msgstr "رفع خطا در زمان باز کردن پرونده" - -#: data/app.metainfo.xml:135 -msgid "Other changes" -msgstr "و تغییرات دیگر" - -#: data/app.metainfo.xml:137 -msgid "Silence platform tools" -msgstr "ابزار های پلتفرم Silence" - -#: data/app.metainfo.xml:138 -msgid "Remove GTK Icon browser platform tool" -msgstr "" - -#: data/app.metainfo.xml:139 -msgid "Make Library examples only open relevant panels" -msgstr "مثال‌های کتابخانه فقط پنل‌های لازم را باز کند" - -#: data/app.metainfo.xml:140 -msgid "Always open the Console when opening a Library example" -msgstr "همیشه کنسول، هنگام باز کردن مثال‌های کتابخانه، باز شود" - -#: data/app.metainfo.xml:141 -msgid "Prevent running Code if the panel is not visible" -msgstr "اگر پنل بسته یا ناپیداست، اجرا کد را متوقف شود" - -#: data/app.metainfo.xml:142 -msgid "Add icons and mnemonics for all buttons" -msgstr "برای تمام دکمه‌ها، نشانه یا نمایه اضافه شود" - -#: data/app.metainfo.xml:143 -msgid "Move Bookmarks to the main menu" -msgstr "نشانه‌گذاری‌ها، را به منو اصلی انتقال بده" - -#: data/app.metainfo.xml:144 -msgid "Enable scrollbar and kinetic scrolling on Console" -msgstr "در کنسول، اسکرول‌بار را فعال کن" - -#: data/app.metainfo.xml:145 -msgid "Improve Library examples" -msgstr "نمونه‌های کتابخانه" - -#: data/app.metainfo.xml:146 -msgid "Performance optimizations" -msgstr "بهبود بازدهی" - -#: data/app.metainfo.xml:147 -msgid "Show a placeholder when all panels are invisible" -msgstr "در هنگامی که تمام پنل‌ها ناپیداست، مکان‌نگهدار نمایش بده" - -#: data/app.metainfo.xml:148 -msgid "Crash fixes" -msgstr "رفع Crash" - -#: data/app.metainfo.xml:149 -msgid "Use org.gnome.Sdk runtime" -msgstr "از محیط اجرای org.gnome.Sdk استفاده کن" - -#: data/app.metainfo.xml:156 -msgid "Add a Library of examples" -msgstr "افزودن یک کتابخانه از نمونه‌ها" - -#: data/app.metainfo.xml:157 -msgid "Add an example of WebSocket client" -msgstr "افزودن یک مثال کلاینت WebSocket" - -#: data/app.metainfo.xml:158 -msgid "Add an example of toasts" -msgstr "افزودن یک نمونه از اعلان toast" - -#: data/app.metainfo.xml:159 -msgid "Add an example of application window" -msgstr "افزودن یک نمونه از پنجره اپلیکیشن" - -#: data/app.metainfo.xml:160 -msgid "Add an example of desktop notification" -msgstr "افزودن یک نمونه از اعلان میزکار" - -#: data/app.metainfo.xml:162 -msgid "Add Adwaita Demo, GTK Demo, GTK Widget Factory and GTK Icon Browser" -msgstr "افزودن دمو Adwaita، GTK، GTK Widget Factory و مرورگر نشانه GTK" - -#: data/app.metainfo.xml:163 -msgid "The Console can be collapsed by resizing it" -msgstr "کنسول با تغییر دادن اندازه آن، میتوانید ببندید" - -#: data/app.metainfo.xml:164 -msgid "Prevent system.exit from quitting Workbench" -msgstr "میزکار با فرمان system.exit خارج نشود" - -#: data/app.metainfo.xml:165 -msgid "Allow calling GObject.registerClass multiple times" -msgstr "" - -#: data/app.metainfo.xml:166 -msgid "Prevent crash caused by using non GtkBuildable objects" -msgstr "" - -#: data/app.metainfo.xml:167 -msgid "Allow using DBus and Gio.Application" -msgstr "" - -#: data/app.metainfo.xml:168 -msgid "Allow using network" -msgstr "اجازه استفاده از شبکه" - -#: data/app.metainfo.xml:169 -msgid "Enable GtkWindow objects preview" -msgstr "" - -#: data/app.metainfo.xml:176 -msgid "Take a png screenshot of the preview" -msgstr "" - -#: data/app.metainfo.xml:177 -msgid "The console is now resizable" -msgstr "" - -#: data/app.metainfo.xml:178 -msgid "Redesign the dark/light mode switcher" -msgstr "" - -#: data/app.metainfo.xml:179 -msgid "Show platform and dependencies in about dialog" -msgstr "" - -#: data/app.metainfo.xml:180 -msgid "Update to GNOME platform 42" -msgstr "بروزرسانی به پلتفرم گنوم ۴۲" - -#: data/app.metainfo.xml:181 -msgid "Various fixes" -msgstr "رفع مشکلات مختلف" - -#: data/app.metainfo.xml:187 -msgid "This is the first release of Workbench. We hope you like it." -msgstr "" - -#: src/window.js:371 -msgid "The demo has been loaded" -msgstr "" - -#: src/window.js:372 src/window.js:453 src/shortcutsWindow.blp:46 -msgid "Undo" -msgstr "" - -#: src/window.js:445 -msgid "This file cannot be loaded" -msgstr "" - -#: src/window.js:452 -msgid "The file has been loaded" -msgstr "" - -#. TRANSLATORS: eg. 'Translator Name ' or 'Translator Name https://website.example' -#: src/about.js:39 -msgid "translator-credits" -msgstr "" - -#: src/about.js:52 -msgid "Contributors" -msgstr "" - -#: src/actions.js:53 src/shortcutsWindow.blp:21 -msgid "Import File" -msgstr "" - -#: src/actions.js:147 -msgid "All supported" -msgstr "" - -#: src/window.blp:15 -#, fuzzy -msgid "_Library" -msgstr "کتابخانه" - -#: src/window.blp:19 -msgid "Open Library of Demos and Examples (Ctrl+Shift+O)" -msgstr "" - -#: src/window.blp:37 -#, fuzzy -msgid "_Code" -msgstr "کد" - -#: src/window.blp:54 -#, fuzzy -msgid "_Style" -msgstr "استایل" - -#: src/window.blp:71 -#, fuzzy -msgid "_UI" -msgstr "رابط کاربری" - -#: src/window.blp:88 -#, fuzzy -msgid "_Preview" -msgstr "پیش نمایش" - -#: src/window.blp:130 -msgid "Code" -msgstr "" - -#: src/window.blp:146 -msgid "Switch document" -msgstr "" - -#: src/window.blp:154 -msgid "_Run" -msgstr "" - -#: src/window.blp:158 -msgid "Run (Ctrl+⏎)" -msgstr "اجرا (Ctrl+⏎)" - -#: src/window.blp:218 -#, fuzzy -msgid "Style CSS" -msgstr "استایل - CSS" - -#: src/window.blp:257 -msgid "UI" -msgstr "" - -#: src/window.blp:273 -msgid "Convert and switch syntax" -msgstr "" - -#: src/window.blp:277 -msgid "Informaton about Blueprint" -msgstr "" - -#: src/window.blp:289 src/window.blp:291 -msgid "Convert to XML" -msgstr "" - -#: src/window.blp:300 src/window.blp:302 -msgid "Convert to Blueprint" -msgstr "" - -#: src/window.blp:366 -#, fuzzy -msgid "Preview" -msgstr "پیش نمایش" - -#: src/window.blp:376 -msgid "Fill" -msgstr "" - -#: src/window.blp:377 -msgid "Center" -msgstr "" - -#: src/window.blp:380 -msgid "Select Preview mode" -msgstr "" - -#: src/window.blp:386 src/window.blp:388 -msgid "Take Screenshot of Preview" -msgstr "گرفتن اسکرین شات از پیش نمایش" - -#: src/window.blp:420 src/window.blp:438 -msgid "Windowed Preview" -msgstr "" - -#: src/window.blp:421 src/window.blp:439 -msgid "" -"This interface can only be previewed as a separate window.\n" -"We recommend using “Always on Top”." -msgstr "" - -#: src/window.blp:428 -msgid "Show Preview Window" -msgstr "" - -#: src/window.blp:446 -msgid "Close Preview Window" -msgstr "" - -#: src/window.blp:481 -#, fuzzy -msgid "C_onsole" -msgstr "کنسول" - -#: src/window.blp:485 -msgid "Show logs (Ctrl+Shift+K)" -msgstr "" - -#: src/window.blp:491 -msgid "_Inspector" -msgstr "" - -#: src/window.blp:494 -msgid "Open GTK Inspector (Ctrl+Shift+I)" -msgstr "" - -#: src/window.blp:505 -msgid "Cl_ear" -msgstr "" - -#: src/window.blp:509 -msgid "Clear console (Ctrl+K)" -msgstr "پاک کردن کنسول (Ctrl+K)" - -#: src/window.blp:536 -msgid "Future versions may have breaking syntax." -msgstr "" - -#: src/window.blp:537 -msgid "" -"Blueprint is\n" -"Experimental" -msgstr "" - -#: src/window.blp:541 -msgid "Documentation" -msgstr "" - -#: src/window.blp:556 -#, fuzzy -msgid "Import File…" -msgstr "باز کردن فایل…" - -#: src/window.blp:562 -msgid "Bookmarks" -msgstr "" - -#: src/window.blp:564 -msgid "Learn" -msgstr "" - -#: src/window.blp:567 -msgid "Developer Documentation" -msgstr "" - -#: src/window.blp:574 -msgid "Human Interface Guidelines" -msgstr "" - -#: src/window.blp:580 -msgid "JavaScript" -msgstr "جاوا اسکریپت" - -#: src/window.blp:586 -msgid "Vala" -msgstr "" - -#: src/window.blp:592 -msgid "Blueprint" -msgstr "" - -#: src/window.blp:599 -msgid "Get help" -msgstr "کمک گرفتن" - -#: src/window.blp:602 -msgid "Discourse" -msgstr "" - -#: src/window.blp:608 -msgid "Matrix" -msgstr "" - -#: src/window.blp:616 -#, fuzzy -msgid "Icon Library" -msgstr "کتابخانه" - -#: src/window.blp:621 -msgid "Platform Tools" -msgstr "ابزار های پلتفرم" - -#: src/window.blp:624 -msgid "Adwaita Demo" -msgstr "دمو Adwaita" - -#: src/window.blp:630 -msgid "GTK Demo" -msgstr "دمو GTK" - -#: src/window.blp:636 -msgid "GTK Widget Factory" -msgstr "" - -#: src/window.blp:644 src/shortcutsWindow.blp:54 -msgid "Keyboard Shortcuts" -msgstr "میانبر های صفحه کلید" - -#: src/window.blp:649 -msgid "About Workbench" -msgstr "" - -#: src/shortcutsWindow.blp:11 -#, fuzzy -msgid "Run Code" -msgstr "کد" - -#: src/shortcutsWindow.blp:16 -msgid "Format" -msgstr "" - -#: src/shortcutsWindow.blp:26 -#, fuzzy -msgid "Open Library" -msgstr "کتابخانه" - -#: src/shortcutsWindow.blp:31 -#, fuzzy -msgid "Toggle Console" -msgstr "پاک کردن کنسول" - -#: src/shortcutsWindow.blp:36 -msgid "Clear Console" -msgstr "پاک کردن کنسول" - -#: src/shortcutsWindow.blp:42 -msgid "Inspector" -msgstr "" - -#: src/shortcutsWindow.blp:50 -msgid "Redo" -msgstr "" - -#: src/shortcutsWindow.blp:58 -msgid "Quit" -msgstr "ترک" - -#: src/Library/Library.blp:7 -msgid "Library" -msgstr "کتابخانه" - -#: troll/src/widgets/ThemeSelector.blp:22 -#: troll/src/widgets/ThemeSelector.blp:25 -msgid "Follow system style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:41 -#: troll/src/widgets/ThemeSelector.blp:44 -msgid "Light style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:60 -#: troll/src/widgets/ThemeSelector.blp:63 -msgid "Dark style" -msgstr "" - -#~ msgid "Use Light mode" -#~ msgstr "استفاده از حالت روشن" - -#~ msgid "Use Dark mode" -#~ msgstr "استفاده از حالت تاریک" - -#~ msgid "Run" -#~ msgstr "اجرا" - -#~ msgid "Open Console" -#~ msgstr "باز کردن کنسول" - -#~ msgid "Code - JavaScript" -#~ msgstr "کد - جاوا اسکریپت" - -#~ msgid "UI - XML" -#~ msgstr "رابط کاربری - XML" - -#~ msgid "Clear" -#~ msgstr "پاک کردن" diff --git a/po/fr.po b/po/fr.po deleted file mode 100644 index dd5c8aa28..000000000 --- a/po/fr.po +++ /dev/null @@ -1,808 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the re.sonny.Workbench package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: re.sonny.Workbench\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-18 13:24+0100\n" -"PO-Revision-Date: 2022-09-12 15:18+0000\n" -"Last-Translator: Sonny Piers \n" -"Language-Team: French \n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.14.1-dev\n" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:4 -msgid "Workbench" -msgstr "Workbench" - -#: data/app.desktop:5 data/app.metainfo.xml:10 -msgid "Learn and prototype with GNOME technologies" -msgstr "Apprendre et construire avec les technologies GNOME" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:12 -msgid "CSS;JavaScript;GJS;Blueprint;builder;Vala;" -msgstr "CSS;JavaScript;GJS;Blueprint;builder;Vala;" - -#: data/app.metainfo.xml:13 -msgid "" -"Workbench goal is to let you experiment with GNOME technologies, no matter " -"if tinkering for the first time or building and testing a GTK user interface." -msgstr "" -"Le but de Workbench est de vous laisser expérimenter les technologies GNOME, " -"que ce soit pour bidouiller pour la première fois ou pour construire et " -"tester une interface GTK personnalisé." - -#: data/app.metainfo.xml:14 -msgid "Among other things, Workbench comes with" -msgstr "Workbench comporte entre autres" - -#: data/app.metainfo.xml:16 -msgid "realtime GTK/CSS preview" -msgstr "prévisualisation GTK / CSS en temps réel" - -#: data/app.metainfo.xml:17 -msgid "library of examples" -msgstr "bibliothèque d'exemples" - -#: data/app.metainfo.xml:18 -msgid "1000+ icons" -msgstr "" - -#: data/app.metainfo.xml:19 -#, fuzzy -msgid "JavaScript and Vala support" -msgstr "JavaScript et Vala fonctionnnent sans aucune installation" - -#: data/app.metainfo.xml:20 -msgid "XML and Blueprint for describing user interface" -msgstr "XML et Blueprint pour décrire l'interface utilisateur" - -#: data/app.metainfo.xml:21 -msgid "syntax highlighting, undo/redo, autosave, session restore" -msgstr "" -"surlignage syntaxique, fonctions annuler / refaire, sauvegarde automatique, " -"restaurer la session" - -#: data/app.metainfo.xml:22 -msgid "code formatter" -msgstr "formateur de code" - -#: data/app.metainfo.xml:23 -msgid "console logs" -msgstr "Journaux de console" - -#: data/app.metainfo.xml:52 -msgid "Use Vala Language Server for diagnostics" -msgstr "" - -#: data/app.metainfo.xml:53 -#, fuzzy -msgid "Move Icon Browser to the main application menu" -msgstr "Déplacer les marque-pages dans le menu principal" - -#: data/app.metainfo.xml:54 -msgid "Reset window preview on close" -msgstr "" - -#: data/app.metainfo.xml:55 -msgid "Add a warning about Blueprint being experimental" -msgstr "" - -#: data/app.metainfo.xml:56 -msgid "Fix loading and running code with Blueprint UI" -msgstr "" - -#: data/app.metainfo.xml:57 -msgid "Fix crash when using abstract UI types" -msgstr "" - -#: data/app.metainfo.xml:58 -msgid "Fix \"No UI definition loaded yet.\" preview error when using Vala" -msgstr "" - -#: data/app.metainfo.xml:59 -msgid "Fix error message when hovering text with no diagnostic" -msgstr "" - -#: data/app.metainfo.xml:60 -msgid "VTE 0.70.1" -msgstr "" - -#: data/app.metainfo.xml:67 -msgid "GNOME 43" -msgstr "" - -#: data/app.metainfo.xml:68 -msgid "Display CSS errors inline" -msgstr "" - -#: data/app.metainfo.xml:69 -msgid "Fix responsiveness when working on large Blueprint files" -msgstr "" - -#: data/app.metainfo.xml:70 -msgid "Use AdwAboutWindow" -msgstr "" - -#: data/app.metainfo.xml:71 -#, fuzzy -msgid "Blueprint 0.4.0" -msgstr "Blueprint" - -#: data/app.metainfo.xml:72 -msgid "VTE 0.70.0" -msgstr "" - -#: data/app.metainfo.xml:73 -#, fuzzy -msgid "Various bug and crash fixes" -msgstr "Diverses corrections" - -#: data/app.metainfo.xml:80 -msgid "Show tooltip hints in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:81 -#, fuzzy -msgid "Improve XML formatter" -msgstr "formateur de code" - -#: data/app.metainfo.xml:82 -msgid "Add Ctrl+Shift+Return shortcut to format" -msgstr "" - -#: data/app.metainfo.xml:83 -msgid "Apply Style CSS to windowed preview" -msgstr "" - -#: data/app.metainfo.xml:84 data/app.metainfo.xml:129 -msgid "Improve application design" -msgstr "Amélioration de la conception des applications" - -#: data/app.metainfo.xml:85 -msgid "Prevent crash for templates with GtkWidget parent" -msgstr "" - -#: data/app.metainfo.xml:86 -#, fuzzy -msgid "Update VTE and icon-development-kit" -msgstr "Inclusion de toutes les icônes de icon-development-kit" - -#: data/app.metainfo.xml:93 -msgid "Underline errors in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:94 -msgid "Fix bugs and crashes" -msgstr "" - -#: data/app.metainfo.xml:102 -msgid "Add an Icon Browser to find the right icons for your prototypes" -msgstr "" - -#: data/app.metainfo.xml:103 -msgid "Add a Platform tools Library demo" -msgstr "" - -#: data/app.metainfo.xml:104 -msgid "Improve the style switcher" -msgstr "" - -#: data/app.metainfo.xml:105 -msgid "Replace confirmation dialogs with toasts and undo" -msgstr "" - -#: data/app.metainfo.xml:106 -msgid "Support updates on root objects" -msgstr "" - -#: data/app.metainfo.xml:107 -#, fuzzy -msgid "Support binding signal handlers from UI" -msgstr "Ajout du support pour prévisualiser les gestionnaires de signaux" - -#: data/app.metainfo.xml:108 -msgid "Add APIs to allow using templates from Code" -msgstr "" - -#: data/app.metainfo.xml:109 -#, fuzzy -msgid "Add Center/Fill preview modes for templates" -msgstr "Ajout du support pour prévisualiser les templates" - -#: data/app.metainfo.xml:111 -msgid "Open external preview with the dimensions of the internal preview" -msgstr "" - -#: data/app.metainfo.xml:112 -msgid "64 new icons available" -msgstr "" - -#: data/app.metainfo.xml:113 -msgid "Update Blueprint to 0.2.0" -msgstr "" - -#: data/app.metainfo.xml:114 -msgid "Fix empty preview on first load" -msgstr "" - -#: data/app.metainfo.xml:115 -msgid "Fix style scheme switch when system preference is light" -msgstr "" - -#: data/app.metainfo.xml:116 -msgid "Remove grid pattern on the source editors" -msgstr "" - -#: data/app.metainfo.xml:122 -msgid "Highlights" -msgstr "Points clés" - -#: data/app.metainfo.xml:124 -msgid "Add Blueprint markup syntax for UI" -msgstr "Ajout de la syntaxe de balisage Blueprint pour l'interface utilisateur" - -#: data/app.metainfo.xml:125 -msgid "Add Vala programming language for Code" -msgstr "Ajout du langage de programmation Vala pour le code" - -#: data/app.metainfo.xml:126 -msgid "Add support for previewing templates" -msgstr "Ajout du support pour prévisualiser les templates" - -#: data/app.metainfo.xml:127 -msgid "Add support for previewing signal handlers" -msgstr "Ajout du support pour prévisualiser les gestionnaires de signaux" - -#: data/app.metainfo.xml:128 -msgid "Include all icons from icon-development-kit" -msgstr "Inclusion de toutes les icônes de icon-development-kit" - -#: data/app.metainfo.xml:130 -msgid "Distribute Library examples under CC0-1.0" -msgstr "Distribution de la bibliothèque d'exemple sous la license CC0-1.0" - -#: data/app.metainfo.xml:131 -msgid "Respect system preference for color scheme" -msgstr "Respect de la préférence système pour les couleurs de l'application" - -#: data/app.metainfo.xml:132 -msgid "Add proper light/dark color schemes for Console" -msgstr "Ajout des couleurs claires/sombres approriées pour la Console" - -#: data/app.metainfo.xml:133 -#, fuzzy -msgid "Fix error when importing files" -msgstr "Correction d'une erreur lors de l'ouverture de fichier" - -#: data/app.metainfo.xml:135 -msgid "Other changes" -msgstr "Autres changements" - -#: data/app.metainfo.xml:137 -msgid "Silence platform tools" -msgstr "Taire l'outil de la plateforme" - -#: data/app.metainfo.xml:138 -msgid "Remove GTK Icon browser platform tool" -msgstr "" - -#: data/app.metainfo.xml:139 -msgid "Make Library examples only open relevant panels" -msgstr "Fait n'ouvrir que les panneaux importants à la bibliothèque d'exemples" - -#: data/app.metainfo.xml:140 -msgid "Always open the Console when opening a Library example" -msgstr "Toujours ouvrir la console à l'ouverture d'une bibliothèque d'exemple" - -#: data/app.metainfo.xml:141 -msgid "Prevent running Code if the panel is not visible" -msgstr "Ne pas lancer le code si le panneau n'est pas visible" - -#: data/app.metainfo.xml:142 -msgid "Add icons and mnemonics for all buttons" -msgstr "Ajouter des icônes et des mnémotechniques pour tous les boutons" - -#: data/app.metainfo.xml:143 -msgid "Move Bookmarks to the main menu" -msgstr "Déplacer les marque-pages dans le menu principal" - -#: data/app.metainfo.xml:144 -msgid "Enable scrollbar and kinetic scrolling on Console" -msgstr "" -"Activer la barre de défilement et le défilement cinétique sur la console" - -#: data/app.metainfo.xml:145 -msgid "Improve Library examples" -msgstr "Améliorer les bibliothèques d'exemple" - -#: data/app.metainfo.xml:146 -msgid "Performance optimizations" -msgstr "Optimisations de performance" - -#: data/app.metainfo.xml:147 -msgid "Show a placeholder when all panels are invisible" -msgstr "Afficher un placeholder quand tous les panneaux sont invisibles" - -#: data/app.metainfo.xml:148 -msgid "Crash fixes" -msgstr "Diverses corrections" - -#: data/app.metainfo.xml:149 -msgid "Use org.gnome.Sdk runtime" -msgstr "Utiliser org.gnome.Sdk" - -#: data/app.metainfo.xml:156 -msgid "Add a Library of examples" -msgstr "Ajouter une bibliothèque d'exemples" - -#: data/app.metainfo.xml:157 -msgid "Add an example of WebSocket client" -msgstr "Ajouter un exemple de client WebSocket" - -#: data/app.metainfo.xml:158 -msgid "Add an example of toasts" -msgstr "Ajouter un exemple d'avis" - -#: data/app.metainfo.xml:159 -msgid "Add an example of application window" -msgstr "Ajouter un exemple de fenêtre d'application" - -#: data/app.metainfo.xml:160 -msgid "Add an example of desktop notification" -msgstr "Ajouter un exemple de notification de bureau" - -#: data/app.metainfo.xml:162 -msgid "Add Adwaita Demo, GTK Demo, GTK Widget Factory and GTK Icon Browser" -msgstr "Ajouter Adwaita Demo, GTK Demo, GTK Widget Factory et GTK Icon Browser" - -#: data/app.metainfo.xml:163 -msgid "The Console can be collapsed by resizing it" -msgstr "La console peut être réduite en la redimensionnant" - -#: data/app.metainfo.xml:164 -msgid "Prevent system.exit from quitting Workbench" -msgstr "Empêcher system.exit de quitter Workbench" - -#: data/app.metainfo.xml:165 -msgid "Allow calling GObject.registerClass multiple times" -msgstr "Autoriser l'appel à GObject.registerClass plusieurs fois" - -#: data/app.metainfo.xml:166 -msgid "Prevent crash caused by using non GtkBuildable objects" -msgstr "Empêcher le crash causé par l'utilisation d'objets non GtkBuildable" - -#: data/app.metainfo.xml:167 -msgid "Allow using DBus and Gio.Application" -msgstr "Autoriser l'utilisation de DBus et Gio.Application" - -#: data/app.metainfo.xml:168 -msgid "Allow using network" -msgstr "Autoriser l'utilisation du réseau" - -#: data/app.metainfo.xml:169 -msgid "Enable GtkWindow objects preview" -msgstr "Activer la prévisualisation des objets GtkWindow" - -#: data/app.metainfo.xml:176 -msgid "Take a png screenshot of the preview" -msgstr "Prendre une capture d'écran PNG de la prévisualisation" - -#: data/app.metainfo.xml:177 -msgid "The console is now resizable" -msgstr "La console est désormais redimensionnable" - -#: data/app.metainfo.xml:178 -msgid "Redesign the dark/light mode switcher" -msgstr "Refonte du bouton mode sombre / mode clair" - -#: data/app.metainfo.xml:179 -msgid "Show platform and dependencies in about dialog" -msgstr "Affiche la plateforme et les dépendances dans le dialogue \"À propos\"" - -#: data/app.metainfo.xml:180 -msgid "Update to GNOME platform 42" -msgstr "Mise à jour vers la plateforme GNOME 42" - -#: data/app.metainfo.xml:181 -msgid "Various fixes" -msgstr "Diverses corrections" - -#: data/app.metainfo.xml:187 -msgid "This is the first release of Workbench. We hope you like it." -msgstr "" -"Ceci est la première version de Workbench. Nous espérons que vous " -"l'apprécierez." - -#: src/window.js:371 -msgid "The demo has been loaded" -msgstr "" - -#: src/window.js:372 src/window.js:453 src/shortcutsWindow.blp:46 -msgid "Undo" -msgstr "Annuler" - -#: src/window.js:445 -msgid "This file cannot be loaded" -msgstr "" - -#: src/window.js:452 -msgid "The file has been loaded" -msgstr "" - -#. TRANSLATORS: eg. 'Translator Name ' or 'Translator Name https://website.example' -#: src/about.js:39 -msgid "translator-credits" -msgstr "Irénée THIRION" - -#: src/about.js:52 -msgid "Contributors" -msgstr "" - -#: src/actions.js:53 src/shortcutsWindow.blp:21 -msgid "Import File" -msgstr "Importer un fichier" - -#: src/actions.js:147 -msgid "All supported" -msgstr "Tous supportés" - -#: src/window.blp:15 -msgid "_Library" -msgstr "_Bibliothèque" - -#: src/window.blp:19 -msgid "Open Library of Demos and Examples (Ctrl+Shift+O)" -msgstr "Ouvrir la Bibliothèque des Démonstrations et Exemples (Ctrl+Maj+O)" - -#: src/window.blp:37 -msgid "_Code" -msgstr "_Code" - -#: src/window.blp:54 -msgid "_Style" -msgstr "_Style" - -#: src/window.blp:71 -msgid "_UI" -msgstr "_UI" - -#: src/window.blp:88 -msgid "_Preview" -msgstr "_Prévisualisation" - -#: src/window.blp:130 -msgid "Code" -msgstr "Code" - -#: src/window.blp:146 -msgid "Switch document" -msgstr "Ouvrir/fermer le document" - -#: src/window.blp:154 -msgid "_Run" -msgstr "_Exécuter" - -#: src/window.blp:158 -msgid "Run (Ctrl+⏎)" -msgstr "Exécuter (Ctrl+⏎)" - -#: src/window.blp:218 -msgid "Style CSS" -msgstr "Style CSS" - -#: src/window.blp:257 -msgid "UI" -msgstr "UI" - -#: src/window.blp:273 -msgid "Convert and switch syntax" -msgstr "" - -#: src/window.blp:277 -#, fuzzy -msgid "Informaton about Blueprint" -msgstr "Convertir en Blueprint" - -#: src/window.blp:289 src/window.blp:291 -msgid "Convert to XML" -msgstr "Convertir en XML" - -#: src/window.blp:300 src/window.blp:302 -msgid "Convert to Blueprint" -msgstr "Convertir en Blueprint" - -#: src/window.blp:366 -msgid "Preview" -msgstr "Prévisualisation" - -#: src/window.blp:376 -msgid "Fill" -msgstr "" - -#: src/window.blp:377 -msgid "Center" -msgstr "" - -#: src/window.blp:380 -#, fuzzy -msgid "Select Preview mode" -msgstr "Fermer la fenêtre de prévisualisation" - -#: src/window.blp:386 src/window.blp:388 -msgid "Take Screenshot of Preview" -msgstr "Prendre une capture d'écran de la Prévisualisation" - -#: src/window.blp:420 src/window.blp:438 -msgid "Windowed Preview" -msgstr "Prévisualisation fenêtrée" - -#: src/window.blp:421 src/window.blp:439 -#, fuzzy -msgid "" -"This interface can only be previewed as a separate window.\n" -"We recommend using “Always on Top”." -msgstr "" -"Cette interface peut seulement être prévisualisée comme une fenêtre à part.\n" -"Nous recommandons d'utiliser “Toujours au-dessus”" - -#: src/window.blp:428 -msgid "Show Preview Window" -msgstr "Afficher la fenêtre de prévisualisation" - -#: src/window.blp:446 -msgid "Close Preview Window" -msgstr "Fermer la fenêtre de prévisualisation" - -#: src/window.blp:481 -msgid "C_onsole" -msgstr "C_onsole" - -#: src/window.blp:485 -msgid "Show logs (Ctrl+Shift+K)" -msgstr "Afficher les journaux (Ctrl+Maj+K)" - -#: src/window.blp:491 -msgid "_Inspector" -msgstr "_Inspecteur" - -#: src/window.blp:494 -msgid "Open GTK Inspector (Ctrl+Shift+I)" -msgstr "Ouvrir l'Inspecteur GTK (Ctrl+Maj+I)" - -#: src/window.blp:505 -msgid "Cl_ear" -msgstr "_Effacer" - -#: src/window.blp:509 -msgid "Clear console (Ctrl+K)" -msgstr "Effacer la console (Ctrl+K)" - -#: src/window.blp:536 -msgid "Future versions may have breaking syntax." -msgstr "" - -#: src/window.blp:537 -msgid "" -"Blueprint is\n" -"Experimental" -msgstr "" - -#: src/window.blp:541 -#, fuzzy -msgid "Documentation" -msgstr "Documentation Développeur" - -#: src/window.blp:556 -msgid "Import File…" -msgstr "Importer un fichier…" - -#: src/window.blp:562 -msgid "Bookmarks" -msgstr "Signets" - -#: src/window.blp:564 -msgid "Learn" -msgstr "Apprendre" - -#: src/window.blp:567 -msgid "Developer Documentation" -msgstr "Documentation Développeur" - -#: src/window.blp:574 -msgid "Human Interface Guidelines" -msgstr "Directives d'Interface Humaine" - -#: src/window.blp:580 -msgid "JavaScript" -msgstr "JavaScript" - -#: src/window.blp:586 -msgid "Vala" -msgstr "Vala" - -#: src/window.blp:592 -msgid "Blueprint" -msgstr "Blueprint" - -#: src/window.blp:599 -msgid "Get help" -msgstr "Obtenir de l'aide" - -#: src/window.blp:602 -msgid "Discourse" -msgstr "Discourse" - -#: src/window.blp:608 -msgid "Matrix" -msgstr "Matrix" - -#: src/window.blp:616 -#, fuzzy -msgid "Icon Library" -msgstr "Ouvrir la Bibliothèque" - -#: src/window.blp:621 -msgid "Platform Tools" -msgstr "Outils de la plateforme" - -#: src/window.blp:624 -msgid "Adwaita Demo" -msgstr "Démonstration Adwaita" - -#: src/window.blp:630 -msgid "GTK Demo" -msgstr "Démonstration GTK" - -#: src/window.blp:636 -msgid "GTK Widget Factory" -msgstr "GTK Widget Factory" - -#: src/window.blp:644 src/shortcutsWindow.blp:54 -msgid "Keyboard Shortcuts" -msgstr "Raccourcis Clavier" - -#: src/window.blp:649 -msgid "About Workbench" -msgstr "À propos de Workbench" - -#: src/shortcutsWindow.blp:11 -msgid "Run Code" -msgstr "Exécuter le Code" - -#: src/shortcutsWindow.blp:16 -msgid "Format" -msgstr "" - -#: src/shortcutsWindow.blp:26 -msgid "Open Library" -msgstr "Ouvrir la Bibliothèque" - -#: src/shortcutsWindow.blp:31 -msgid "Toggle Console" -msgstr "Ouvrir/fermer la Console" - -#: src/shortcutsWindow.blp:36 -msgid "Clear Console" -msgstr "Effacer la Console" - -#: src/shortcutsWindow.blp:42 -msgid "Inspector" -msgstr "Inspecteur" - -#: src/shortcutsWindow.blp:50 -msgid "Redo" -msgstr "Refaire" - -#: src/shortcutsWindow.blp:58 -msgid "Quit" -msgstr "Quitter" - -#: src/Library/Library.blp:7 -msgid "Library" -msgstr "Bibliothèque" - -#: troll/src/widgets/ThemeSelector.blp:22 -#: troll/src/widgets/ThemeSelector.blp:25 -msgid "Follow system style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:41 -#: troll/src/widgets/ThemeSelector.blp:44 -msgid "Light style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:60 -#: troll/src/widgets/ThemeSelector.blp:63 -msgid "Dark style" -msgstr "" - -#~ msgid "About My App" -#~ msgstr "A propos de mon application" - -#~ msgid "" -#~ "Learn and prototype with\n" -#~ "GNOME technologies" -#~ msgstr "" -#~ "Apprendre et tester du code avec\n" -#~ "les technologies GNOME" - -#~ msgid "sun-symbolic" -#~ msgstr "sun-symbolic" - -#~ msgid "Use Light mode" -#~ msgstr "Utiliser le mode Clair" - -#~ msgid "workbench-moon-rounded-symbolic" -#~ msgstr "workbench-moon-rounded-symbolic" - -#~ msgid "Use Dark mode" -#~ msgstr "Utiliser le mode Sombre" - -#~ msgid "Are you sure you want to discard your changes?" -#~ msgstr "Êtes-vous sûr de vouloir abandonner vos modifications ?" - -#~ msgid "" -#~ "Side by side editors with live preview on the right and console in the " -#~ "bottom" -#~ msgstr "" -#~ "Éditeurs côte à côte avec prévisualisation en direct à droite et console " -#~ "en bas" - -#~ msgid "JavaScript for quick and easy scripting" -#~ msgstr "Javascript pour écrire des scripts facilement et rapidement" - -#~ msgid "Run" -#~ msgstr "Exécuter" - -#~ msgid "Open Console" -#~ msgstr "Ouvrir la Console" - -#~ msgid "Code - JavaScript" -#~ msgstr "Code - JavaScript" - -#~ msgid "UI - XML" -#~ msgstr "UI - XML" - -#~ msgid "Clear" -#~ msgstr "Effacer" - -#~ msgid "GTK Icon Browser" -#~ msgstr "Navigateur d'icônes GTK" - -#~ msgid "GNOME JavaScript (GJS)" -#~ msgstr "GNOME JavaScript (GJS)" - -#~ msgid "UI components" -#~ msgstr "Composants d'interface" - -#~ msgid "Platform components" -#~ msgstr "Composants de plateforme" - -#~ msgid "Reference" -#~ msgstr "Référence" - -#~ msgid "GJS" -#~ msgstr "GJS" - -#~ msgid "Gtk" -#~ msgstr "Gtk" - -#~ msgid "Adwaita" -#~ msgstr "Adwaita" - -#~ msgid "Stack Overflow" -#~ msgstr "Stack Overflow" - -#~ msgid "Reset to Demo" -#~ msgstr "Réinitialiser à la Démo" diff --git a/po/he.po b/po/he.po deleted file mode 100644 index 1d028cbe1..000000000 --- a/po/he.po +++ /dev/null @@ -1,701 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR Sonny Piers -# This file is distributed under the same license as the re.sonny.Workbench package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: re.sonny.Workbench\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-18 13:24+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: he\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:4 -msgid "Workbench" -msgstr "" - -#: data/app.desktop:5 data/app.metainfo.xml:10 -msgid "Learn and prototype with GNOME technologies" -msgstr "" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:12 -msgid "CSS;JavaScript;GJS;Blueprint;builder;Vala;" -msgstr "" - -#: data/app.metainfo.xml:13 -msgid "" -"Workbench goal is to let you experiment with GNOME technologies, no matter " -"if tinkering for the first time or building and testing a GTK user interface." -msgstr "" - -#: data/app.metainfo.xml:14 -msgid "Among other things, Workbench comes with" -msgstr "" - -#: data/app.metainfo.xml:16 -msgid "realtime GTK/CSS preview" -msgstr "" - -#: data/app.metainfo.xml:17 -msgid "library of examples" -msgstr "" - -#: data/app.metainfo.xml:18 -msgid "1000+ icons" -msgstr "" - -#: data/app.metainfo.xml:19 -msgid "JavaScript and Vala support" -msgstr "" - -#: data/app.metainfo.xml:20 -msgid "XML and Blueprint for describing user interface" -msgstr "" - -#: data/app.metainfo.xml:21 -msgid "syntax highlighting, undo/redo, autosave, session restore" -msgstr "" - -#: data/app.metainfo.xml:22 -msgid "code formatter" -msgstr "" - -#: data/app.metainfo.xml:23 -msgid "console logs" -msgstr "" - -#: data/app.metainfo.xml:52 -msgid "Use Vala Language Server for diagnostics" -msgstr "" - -#: data/app.metainfo.xml:53 -msgid "Move Icon Browser to the main application menu" -msgstr "" - -#: data/app.metainfo.xml:54 -msgid "Reset window preview on close" -msgstr "" - -#: data/app.metainfo.xml:55 -msgid "Add a warning about Blueprint being experimental" -msgstr "" - -#: data/app.metainfo.xml:56 -msgid "Fix loading and running code with Blueprint UI" -msgstr "" - -#: data/app.metainfo.xml:57 -msgid "Fix crash when using abstract UI types" -msgstr "" - -#: data/app.metainfo.xml:58 -msgid "Fix \"No UI definition loaded yet.\" preview error when using Vala" -msgstr "" - -#: data/app.metainfo.xml:59 -msgid "Fix error message when hovering text with no diagnostic" -msgstr "" - -#: data/app.metainfo.xml:60 -msgid "VTE 0.70.1" -msgstr "" - -#: data/app.metainfo.xml:67 -msgid "GNOME 43" -msgstr "" - -#: data/app.metainfo.xml:68 -msgid "Display CSS errors inline" -msgstr "" - -#: data/app.metainfo.xml:69 -msgid "Fix responsiveness when working on large Blueprint files" -msgstr "" - -#: data/app.metainfo.xml:70 -msgid "Use AdwAboutWindow" -msgstr "" - -#: data/app.metainfo.xml:71 -msgid "Blueprint 0.4.0" -msgstr "" - -#: data/app.metainfo.xml:72 -msgid "VTE 0.70.0" -msgstr "" - -#: data/app.metainfo.xml:73 -msgid "Various bug and crash fixes" -msgstr "" - -#: data/app.metainfo.xml:80 -msgid "Show tooltip hints in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:81 -msgid "Improve XML formatter" -msgstr "" - -#: data/app.metainfo.xml:82 -msgid "Add Ctrl+Shift+Return shortcut to format" -msgstr "" - -#: data/app.metainfo.xml:83 -msgid "Apply Style CSS to windowed preview" -msgstr "" - -#: data/app.metainfo.xml:84 data/app.metainfo.xml:129 -msgid "Improve application design" -msgstr "" - -#: data/app.metainfo.xml:85 -msgid "Prevent crash for templates with GtkWidget parent" -msgstr "" - -#: data/app.metainfo.xml:86 -msgid "Update VTE and icon-development-kit" -msgstr "" - -#: data/app.metainfo.xml:93 -msgid "Underline errors in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:94 -msgid "Fix bugs and crashes" -msgstr "" - -#: data/app.metainfo.xml:102 -msgid "Add an Icon Browser to find the right icons for your prototypes" -msgstr "" - -#: data/app.metainfo.xml:103 -msgid "Add a Platform tools Library demo" -msgstr "" - -#: data/app.metainfo.xml:104 -msgid "Improve the style switcher" -msgstr "" - -#: data/app.metainfo.xml:105 -msgid "Replace confirmation dialogs with toasts and undo" -msgstr "" - -#: data/app.metainfo.xml:106 -msgid "Support updates on root objects" -msgstr "" - -#: data/app.metainfo.xml:107 -msgid "Support binding signal handlers from UI" -msgstr "" - -#: data/app.metainfo.xml:108 -msgid "Add APIs to allow using templates from Code" -msgstr "" - -#: data/app.metainfo.xml:109 -msgid "Add Center/Fill preview modes for templates" -msgstr "" - -#: data/app.metainfo.xml:111 -msgid "Open external preview with the dimensions of the internal preview" -msgstr "" - -#: data/app.metainfo.xml:112 -msgid "64 new icons available" -msgstr "" - -#: data/app.metainfo.xml:113 -msgid "Update Blueprint to 0.2.0" -msgstr "" - -#: data/app.metainfo.xml:114 -msgid "Fix empty preview on first load" -msgstr "" - -#: data/app.metainfo.xml:115 -msgid "Fix style scheme switch when system preference is light" -msgstr "" - -#: data/app.metainfo.xml:116 -msgid "Remove grid pattern on the source editors" -msgstr "" - -#: data/app.metainfo.xml:122 -msgid "Highlights" -msgstr "" - -#: data/app.metainfo.xml:124 -msgid "Add Blueprint markup syntax for UI" -msgstr "" - -#: data/app.metainfo.xml:125 -msgid "Add Vala programming language for Code" -msgstr "" - -#: data/app.metainfo.xml:126 -msgid "Add support for previewing templates" -msgstr "" - -#: data/app.metainfo.xml:127 -msgid "Add support for previewing signal handlers" -msgstr "" - -#: data/app.metainfo.xml:128 -msgid "Include all icons from icon-development-kit" -msgstr "" - -#: data/app.metainfo.xml:130 -msgid "Distribute Library examples under CC0-1.0" -msgstr "" - -#: data/app.metainfo.xml:131 -msgid "Respect system preference for color scheme" -msgstr "" - -#: data/app.metainfo.xml:132 -msgid "Add proper light/dark color schemes for Console" -msgstr "" - -#: data/app.metainfo.xml:133 -msgid "Fix error when importing files" -msgstr "" - -#: data/app.metainfo.xml:135 -msgid "Other changes" -msgstr "" - -#: data/app.metainfo.xml:137 -msgid "Silence platform tools" -msgstr "" - -#: data/app.metainfo.xml:138 -msgid "Remove GTK Icon browser platform tool" -msgstr "" - -#: data/app.metainfo.xml:139 -msgid "Make Library examples only open relevant panels" -msgstr "" - -#: data/app.metainfo.xml:140 -msgid "Always open the Console when opening a Library example" -msgstr "" - -#: data/app.metainfo.xml:141 -msgid "Prevent running Code if the panel is not visible" -msgstr "" - -#: data/app.metainfo.xml:142 -msgid "Add icons and mnemonics for all buttons" -msgstr "" - -#: data/app.metainfo.xml:143 -msgid "Move Bookmarks to the main menu" -msgstr "" - -#: data/app.metainfo.xml:144 -msgid "Enable scrollbar and kinetic scrolling on Console" -msgstr "" - -#: data/app.metainfo.xml:145 -msgid "Improve Library examples" -msgstr "" - -#: data/app.metainfo.xml:146 -msgid "Performance optimizations" -msgstr "" - -#: data/app.metainfo.xml:147 -msgid "Show a placeholder when all panels are invisible" -msgstr "" - -#: data/app.metainfo.xml:148 -msgid "Crash fixes" -msgstr "" - -#: data/app.metainfo.xml:149 -msgid "Use org.gnome.Sdk runtime" -msgstr "" - -#: data/app.metainfo.xml:156 -msgid "Add a Library of examples" -msgstr "" - -#: data/app.metainfo.xml:157 -msgid "Add an example of WebSocket client" -msgstr "" - -#: data/app.metainfo.xml:158 -msgid "Add an example of toasts" -msgstr "" - -#: data/app.metainfo.xml:159 -msgid "Add an example of application window" -msgstr "" - -#: data/app.metainfo.xml:160 -msgid "Add an example of desktop notification" -msgstr "" - -#: data/app.metainfo.xml:162 -msgid "Add Adwaita Demo, GTK Demo, GTK Widget Factory and GTK Icon Browser" -msgstr "" - -#: data/app.metainfo.xml:163 -msgid "The Console can be collapsed by resizing it" -msgstr "" - -#: data/app.metainfo.xml:164 -msgid "Prevent system.exit from quitting Workbench" -msgstr "" - -#: data/app.metainfo.xml:165 -msgid "Allow calling GObject.registerClass multiple times" -msgstr "" - -#: data/app.metainfo.xml:166 -msgid "Prevent crash caused by using non GtkBuildable objects" -msgstr "" - -#: data/app.metainfo.xml:167 -msgid "Allow using DBus and Gio.Application" -msgstr "" - -#: data/app.metainfo.xml:168 -msgid "Allow using network" -msgstr "" - -#: data/app.metainfo.xml:169 -msgid "Enable GtkWindow objects preview" -msgstr "" - -#: data/app.metainfo.xml:176 -msgid "Take a png screenshot of the preview" -msgstr "" - -#: data/app.metainfo.xml:177 -msgid "The console is now resizable" -msgstr "" - -#: data/app.metainfo.xml:178 -msgid "Redesign the dark/light mode switcher" -msgstr "" - -#: data/app.metainfo.xml:179 -msgid "Show platform and dependencies in about dialog" -msgstr "" - -#: data/app.metainfo.xml:180 -msgid "Update to GNOME platform 42" -msgstr "" - -#: data/app.metainfo.xml:181 -msgid "Various fixes" -msgstr "" - -#: data/app.metainfo.xml:187 -msgid "This is the first release of Workbench. We hope you like it." -msgstr "" - -#: src/window.js:371 -msgid "The demo has been loaded" -msgstr "" - -#: src/window.js:372 src/window.js:453 src/shortcutsWindow.blp:46 -msgid "Undo" -msgstr "" - -#: src/window.js:445 -msgid "This file cannot be loaded" -msgstr "" - -#: src/window.js:452 -msgid "The file has been loaded" -msgstr "" - -#. TRANSLATORS: eg. 'Translator Name ' or 'Translator Name https://website.example' -#: src/about.js:39 -msgid "translator-credits" -msgstr "" - -#: src/about.js:52 -msgid "Contributors" -msgstr "" - -#: src/actions.js:53 src/shortcutsWindow.blp:21 -msgid "Import File" -msgstr "" - -#: src/actions.js:147 -msgid "All supported" -msgstr "" - -#: src/window.blp:15 -msgid "_Library" -msgstr "" - -#: src/window.blp:19 -msgid "Open Library of Demos and Examples (Ctrl+Shift+O)" -msgstr "" - -#: src/window.blp:37 -msgid "_Code" -msgstr "" - -#: src/window.blp:54 -msgid "_Style" -msgstr "" - -#: src/window.blp:71 -msgid "_UI" -msgstr "" - -#: src/window.blp:88 -msgid "_Preview" -msgstr "" - -#: src/window.blp:130 -msgid "Code" -msgstr "" - -#: src/window.blp:146 -msgid "Switch document" -msgstr "" - -#: src/window.blp:154 -msgid "_Run" -msgstr "" - -#: src/window.blp:158 -msgid "Run (Ctrl+⏎)" -msgstr "" - -#: src/window.blp:218 -msgid "Style CSS" -msgstr "" - -#: src/window.blp:257 -msgid "UI" -msgstr "" - -#: src/window.blp:273 -msgid "Convert and switch syntax" -msgstr "" - -#: src/window.blp:277 -msgid "Informaton about Blueprint" -msgstr "" - -#: src/window.blp:289 src/window.blp:291 -msgid "Convert to XML" -msgstr "" - -#: src/window.blp:300 src/window.blp:302 -msgid "Convert to Blueprint" -msgstr "" - -#: src/window.blp:366 -msgid "Preview" -msgstr "" - -#: src/window.blp:376 -msgid "Fill" -msgstr "" - -#: src/window.blp:377 -msgid "Center" -msgstr "" - -#: src/window.blp:380 -msgid "Select Preview mode" -msgstr "" - -#: src/window.blp:386 src/window.blp:388 -msgid "Take Screenshot of Preview" -msgstr "" - -#: src/window.blp:420 src/window.blp:438 -msgid "Windowed Preview" -msgstr "" - -#: src/window.blp:421 src/window.blp:439 -msgid "" -"This interface can only be previewed as a separate window.\n" -"We recommend using “Always on Top”." -msgstr "" - -#: src/window.blp:428 -msgid "Show Preview Window" -msgstr "" - -#: src/window.blp:446 -msgid "Close Preview Window" -msgstr "" - -#: src/window.blp:481 -msgid "C_onsole" -msgstr "" - -#: src/window.blp:485 -msgid "Show logs (Ctrl+Shift+K)" -msgstr "" - -#: src/window.blp:491 -msgid "_Inspector" -msgstr "" - -#: src/window.blp:494 -msgid "Open GTK Inspector (Ctrl+Shift+I)" -msgstr "" - -#: src/window.blp:505 -msgid "Cl_ear" -msgstr "" - -#: src/window.blp:509 -msgid "Clear console (Ctrl+K)" -msgstr "" - -#: src/window.blp:536 -msgid "Future versions may have breaking syntax." -msgstr "" - -#: src/window.blp:537 -msgid "" -"Blueprint is\n" -"Experimental" -msgstr "" - -#: src/window.blp:541 -msgid "Documentation" -msgstr "" - -#: src/window.blp:556 -msgid "Import File…" -msgstr "" - -#: src/window.blp:562 -msgid "Bookmarks" -msgstr "" - -#: src/window.blp:564 -msgid "Learn" -msgstr "" - -#: src/window.blp:567 -msgid "Developer Documentation" -msgstr "" - -#: src/window.blp:574 -msgid "Human Interface Guidelines" -msgstr "" - -#: src/window.blp:580 -msgid "JavaScript" -msgstr "" - -#: src/window.blp:586 -msgid "Vala" -msgstr "" - -#: src/window.blp:592 -msgid "Blueprint" -msgstr "" - -#: src/window.blp:599 -msgid "Get help" -msgstr "" - -#: src/window.blp:602 -msgid "Discourse" -msgstr "" - -#: src/window.blp:608 -msgid "Matrix" -msgstr "" - -#: src/window.blp:616 -msgid "Icon Library" -msgstr "" - -#: src/window.blp:621 -msgid "Platform Tools" -msgstr "" - -#: src/window.blp:624 -msgid "Adwaita Demo" -msgstr "" - -#: src/window.blp:630 -msgid "GTK Demo" -msgstr "" - -#: src/window.blp:636 -msgid "GTK Widget Factory" -msgstr "" - -#: src/window.blp:644 src/shortcutsWindow.blp:54 -msgid "Keyboard Shortcuts" -msgstr "" - -#: src/window.blp:649 -msgid "About Workbench" -msgstr "" - -#: src/shortcutsWindow.blp:11 -msgid "Run Code" -msgstr "" - -#: src/shortcutsWindow.blp:16 -msgid "Format" -msgstr "" - -#: src/shortcutsWindow.blp:26 -msgid "Open Library" -msgstr "" - -#: src/shortcutsWindow.blp:31 -msgid "Toggle Console" -msgstr "" - -#: src/shortcutsWindow.blp:36 -msgid "Clear Console" -msgstr "" - -#: src/shortcutsWindow.blp:42 -msgid "Inspector" -msgstr "" - -#: src/shortcutsWindow.blp:50 -msgid "Redo" -msgstr "" - -#: src/shortcutsWindow.blp:58 -msgid "Quit" -msgstr "" - -#: src/Library/Library.blp:7 -msgid "Library" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:22 -#: troll/src/widgets/ThemeSelector.blp:25 -msgid "Follow system style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:41 -#: troll/src/widgets/ThemeSelector.blp:44 -msgid "Light style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:60 -#: troll/src/widgets/ThemeSelector.blp:63 -msgid "Dark style" -msgstr "" diff --git a/po/id.po b/po/id.po deleted file mode 100644 index 5e195bb42..000000000 --- a/po/id.po +++ /dev/null @@ -1,725 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR Sonny Piers -# This file is distributed under the same license as the re.sonny.Workbench package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: re.sonny.Workbench\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-18 13:24+0100\n" -"PO-Revision-Date: 2022-07-12 02:16+0000\n" -"Last-Translator: liimee \n" -"Language-Team: Indonesian \n" -"Language: id\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.14-dev\n" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:4 -msgid "Workbench" -msgstr "Workbench" - -#: data/app.desktop:5 data/app.metainfo.xml:10 -msgid "Learn and prototype with GNOME technologies" -msgstr "" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:12 -msgid "CSS;JavaScript;GJS;Blueprint;builder;Vala;" -msgstr "CSS;JavaScript;GJS;Blueprint;builder;Vala;" - -#: data/app.metainfo.xml:13 -msgid "" -"Workbench goal is to let you experiment with GNOME technologies, no matter " -"if tinkering for the first time or building and testing a GTK user interface." -msgstr "" -"Tujuan Workbench adalah memungkinkan Anda untuk bereksperimen dengan " -"teknologi GNOME, baik mencoba pertama kali atau membangun dan menguji sebuah " -"antarmuka pengguna GTK." - -#: data/app.metainfo.xml:14 -msgid "Among other things, Workbench comes with" -msgstr "Antara lain, Workbench dilengkapi dengan" - -#: data/app.metainfo.xml:16 -msgid "realtime GTK/CSS preview" -msgstr "pratinjau GTK/CSS waktu nyata" - -#: data/app.metainfo.xml:17 -msgid "library of examples" -msgstr "pustaka contoh" - -#: data/app.metainfo.xml:18 -msgid "1000+ icons" -msgstr "" - -#: data/app.metainfo.xml:19 -#, fuzzy -msgid "JavaScript and Vala support" -msgstr "JavaScript dan Vala berjalan tanpa penyiapan apapun" - -#: data/app.metainfo.xml:20 -msgid "XML and Blueprint for describing user interface" -msgstr "XML dan Blueprint untuk menjelaskan antarmuka pengguna" - -#: data/app.metainfo.xml:21 -msgid "syntax highlighting, undo/redo, autosave, session restore" -msgstr "" - -#: data/app.metainfo.xml:22 -msgid "code formatter" -msgstr "" - -#: data/app.metainfo.xml:23 -msgid "console logs" -msgstr "" - -#: data/app.metainfo.xml:52 -msgid "Use Vala Language Server for diagnostics" -msgstr "" - -#: data/app.metainfo.xml:53 -msgid "Move Icon Browser to the main application menu" -msgstr "" - -#: data/app.metainfo.xml:54 -msgid "Reset window preview on close" -msgstr "" - -#: data/app.metainfo.xml:55 -msgid "Add a warning about Blueprint being experimental" -msgstr "" - -#: data/app.metainfo.xml:56 -msgid "Fix loading and running code with Blueprint UI" -msgstr "" - -#: data/app.metainfo.xml:57 -msgid "Fix crash when using abstract UI types" -msgstr "" - -#: data/app.metainfo.xml:58 -msgid "Fix \"No UI definition loaded yet.\" preview error when using Vala" -msgstr "" - -#: data/app.metainfo.xml:59 -msgid "Fix error message when hovering text with no diagnostic" -msgstr "" - -#: data/app.metainfo.xml:60 -msgid "VTE 0.70.1" -msgstr "" - -#: data/app.metainfo.xml:67 -msgid "GNOME 43" -msgstr "" - -#: data/app.metainfo.xml:68 -msgid "Display CSS errors inline" -msgstr "" - -#: data/app.metainfo.xml:69 -msgid "Fix responsiveness when working on large Blueprint files" -msgstr "" - -#: data/app.metainfo.xml:70 -msgid "Use AdwAboutWindow" -msgstr "" - -#: data/app.metainfo.xml:71 -#, fuzzy -msgid "Blueprint 0.4.0" -msgstr "Blueprint" - -#: data/app.metainfo.xml:72 -msgid "VTE 0.70.0" -msgstr "" - -#: data/app.metainfo.xml:73 -msgid "Various bug and crash fixes" -msgstr "" - -#: data/app.metainfo.xml:80 -msgid "Show tooltip hints in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:81 -msgid "Improve XML formatter" -msgstr "" - -#: data/app.metainfo.xml:82 -msgid "Add Ctrl+Shift+Return shortcut to format" -msgstr "" - -#: data/app.metainfo.xml:83 -msgid "Apply Style CSS to windowed preview" -msgstr "" - -#: data/app.metainfo.xml:84 data/app.metainfo.xml:129 -msgid "Improve application design" -msgstr "Meningkatkan desain aplikasi" - -#: data/app.metainfo.xml:85 -msgid "Prevent crash for templates with GtkWidget parent" -msgstr "" - -#: data/app.metainfo.xml:86 -msgid "Update VTE and icon-development-kit" -msgstr "" - -#: data/app.metainfo.xml:93 -msgid "Underline errors in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:94 -msgid "Fix bugs and crashes" -msgstr "" - -#: data/app.metainfo.xml:102 -msgid "Add an Icon Browser to find the right icons for your prototypes" -msgstr "" - -#: data/app.metainfo.xml:103 -msgid "Add a Platform tools Library demo" -msgstr "" - -#: data/app.metainfo.xml:104 -msgid "Improve the style switcher" -msgstr "" - -#: data/app.metainfo.xml:105 -msgid "Replace confirmation dialogs with toasts and undo" -msgstr "" - -#: data/app.metainfo.xml:106 -msgid "Support updates on root objects" -msgstr "" - -#: data/app.metainfo.xml:107 -msgid "Support binding signal handlers from UI" -msgstr "" - -#: data/app.metainfo.xml:108 -msgid "Add APIs to allow using templates from Code" -msgstr "" - -#: data/app.metainfo.xml:109 -msgid "Add Center/Fill preview modes for templates" -msgstr "" - -#: data/app.metainfo.xml:111 -msgid "Open external preview with the dimensions of the internal preview" -msgstr "" - -#: data/app.metainfo.xml:112 -msgid "64 new icons available" -msgstr "" - -#: data/app.metainfo.xml:113 -msgid "Update Blueprint to 0.2.0" -msgstr "" - -#: data/app.metainfo.xml:114 -msgid "Fix empty preview on first load" -msgstr "" - -#: data/app.metainfo.xml:115 -msgid "Fix style scheme switch when system preference is light" -msgstr "" - -#: data/app.metainfo.xml:116 -msgid "Remove grid pattern on the source editors" -msgstr "" - -#: data/app.metainfo.xml:122 -msgid "Highlights" -msgstr "Sorotan" - -#: data/app.metainfo.xml:124 -msgid "Add Blueprint markup syntax for UI" -msgstr "" - -#: data/app.metainfo.xml:125 -msgid "Add Vala programming language for Code" -msgstr "Menambahkan bahasa pemrograman Vala untuk Pemrograman" - -#: data/app.metainfo.xml:126 -msgid "Add support for previewing templates" -msgstr "" - -#: data/app.metainfo.xml:127 -msgid "Add support for previewing signal handlers" -msgstr "" - -#: data/app.metainfo.xml:128 -msgid "Include all icons from icon-development-kit" -msgstr "" - -#: data/app.metainfo.xml:130 -msgid "Distribute Library examples under CC0-1.0" -msgstr "" - -#: data/app.metainfo.xml:131 -msgid "Respect system preference for color scheme" -msgstr "" - -#: data/app.metainfo.xml:132 -msgid "Add proper light/dark color schemes for Console" -msgstr "" - -#: data/app.metainfo.xml:133 -msgid "Fix error when importing files" -msgstr "" - -#: data/app.metainfo.xml:135 -msgid "Other changes" -msgstr "" - -#: data/app.metainfo.xml:137 -msgid "Silence platform tools" -msgstr "" - -#: data/app.metainfo.xml:138 -msgid "Remove GTK Icon browser platform tool" -msgstr "" - -#: data/app.metainfo.xml:139 -msgid "Make Library examples only open relevant panels" -msgstr "" - -#: data/app.metainfo.xml:140 -msgid "Always open the Console when opening a Library example" -msgstr "" - -#: data/app.metainfo.xml:141 -msgid "Prevent running Code if the panel is not visible" -msgstr "" - -#: data/app.metainfo.xml:142 -msgid "Add icons and mnemonics for all buttons" -msgstr "" - -#: data/app.metainfo.xml:143 -msgid "Move Bookmarks to the main menu" -msgstr "" - -#: data/app.metainfo.xml:144 -msgid "Enable scrollbar and kinetic scrolling on Console" -msgstr "" - -#: data/app.metainfo.xml:145 -msgid "Improve Library examples" -msgstr "" - -#: data/app.metainfo.xml:146 -msgid "Performance optimizations" -msgstr "" - -#: data/app.metainfo.xml:147 -msgid "Show a placeholder when all panels are invisible" -msgstr "" - -#: data/app.metainfo.xml:148 -msgid "Crash fixes" -msgstr "" - -#: data/app.metainfo.xml:149 -msgid "Use org.gnome.Sdk runtime" -msgstr "" - -#: data/app.metainfo.xml:156 -msgid "Add a Library of examples" -msgstr "" - -#: data/app.metainfo.xml:157 -msgid "Add an example of WebSocket client" -msgstr "" - -#: data/app.metainfo.xml:158 -msgid "Add an example of toasts" -msgstr "" - -#: data/app.metainfo.xml:159 -msgid "Add an example of application window" -msgstr "" - -#: data/app.metainfo.xml:160 -msgid "Add an example of desktop notification" -msgstr "" - -#: data/app.metainfo.xml:162 -msgid "Add Adwaita Demo, GTK Demo, GTK Widget Factory and GTK Icon Browser" -msgstr "" - -#: data/app.metainfo.xml:163 -msgid "The Console can be collapsed by resizing it" -msgstr "" - -#: data/app.metainfo.xml:164 -msgid "Prevent system.exit from quitting Workbench" -msgstr "" - -#: data/app.metainfo.xml:165 -msgid "Allow calling GObject.registerClass multiple times" -msgstr "" - -#: data/app.metainfo.xml:166 -msgid "Prevent crash caused by using non GtkBuildable objects" -msgstr "" - -#: data/app.metainfo.xml:167 -msgid "Allow using DBus and Gio.Application" -msgstr "Mengizinkan penggunaan DBus dan Gio.Application" - -#: data/app.metainfo.xml:168 -msgid "Allow using network" -msgstr "Mengizinkan penggunaan jaringan" - -#: data/app.metainfo.xml:169 -msgid "Enable GtkWindow objects preview" -msgstr "" - -#: data/app.metainfo.xml:176 -msgid "Take a png screenshot of the preview" -msgstr "" - -#: data/app.metainfo.xml:177 -msgid "The console is now resizable" -msgstr "" - -#: data/app.metainfo.xml:178 -msgid "Redesign the dark/light mode switcher" -msgstr "" - -#: data/app.metainfo.xml:179 -msgid "Show platform and dependencies in about dialog" -msgstr "" - -#: data/app.metainfo.xml:180 -msgid "Update to GNOME platform 42" -msgstr "" - -#: data/app.metainfo.xml:181 -msgid "Various fixes" -msgstr "" - -#: data/app.metainfo.xml:187 -msgid "This is the first release of Workbench. We hope you like it." -msgstr "" - -#: src/window.js:371 -msgid "The demo has been loaded" -msgstr "" - -#: src/window.js:372 src/window.js:453 src/shortcutsWindow.blp:46 -msgid "Undo" -msgstr "" - -#: src/window.js:445 -msgid "This file cannot be loaded" -msgstr "" - -#: src/window.js:452 -msgid "The file has been loaded" -msgstr "" - -#. TRANSLATORS: eg. 'Translator Name ' or 'Translator Name https://website.example' -#: src/about.js:39 -msgid "translator-credits" -msgstr "@liimee" - -#: src/about.js:52 -msgid "Contributors" -msgstr "" - -#: src/actions.js:53 src/shortcutsWindow.blp:21 -msgid "Import File" -msgstr "Impor Berkas" - -#: src/actions.js:147 -msgid "All supported" -msgstr "" - -#: src/window.blp:15 -msgid "_Library" -msgstr "" - -#: src/window.blp:19 -msgid "Open Library of Demos and Examples (Ctrl+Shift+O)" -msgstr "" - -#: src/window.blp:37 -msgid "_Code" -msgstr "" - -#: src/window.blp:54 -msgid "_Style" -msgstr "" - -#: src/window.blp:71 -msgid "_UI" -msgstr "" - -#: src/window.blp:88 -msgid "_Preview" -msgstr "" - -#: src/window.blp:130 -msgid "Code" -msgstr "Kode" - -#: src/window.blp:146 -msgid "Switch document" -msgstr "" - -#: src/window.blp:154 -msgid "_Run" -msgstr "" - -#: src/window.blp:158 -msgid "Run (Ctrl+⏎)" -msgstr "Jalankan (Ctrl+⏎)" - -#: src/window.blp:218 -msgid "Style CSS" -msgstr "CSS Gaya" - -#: src/window.blp:257 -msgid "UI" -msgstr "UI" - -#: src/window.blp:273 -msgid "Convert and switch syntax" -msgstr "" - -#: src/window.blp:277 -#, fuzzy -msgid "Informaton about Blueprint" -msgstr "Konversikan ke Blueprint" - -#: src/window.blp:289 src/window.blp:291 -msgid "Convert to XML" -msgstr "Konversikan ke XML" - -#: src/window.blp:300 src/window.blp:302 -msgid "Convert to Blueprint" -msgstr "Konversikan ke Blueprint" - -#: src/window.blp:366 -msgid "Preview" -msgstr "Pratinjau" - -#: src/window.blp:376 -msgid "Fill" -msgstr "" - -#: src/window.blp:377 -msgid "Center" -msgstr "" - -#: src/window.blp:380 -#, fuzzy -msgid "Select Preview mode" -msgstr "Tutup Jendela Pratinjau" - -#: src/window.blp:386 src/window.blp:388 -msgid "Take Screenshot of Preview" -msgstr "Ambil Tangkapan Layar Pratinjau" - -#: src/window.blp:420 src/window.blp:438 -msgid "Windowed Preview" -msgstr "" - -#: src/window.blp:421 src/window.blp:439 -msgid "" -"This interface can only be previewed as a separate window.\n" -"We recommend using “Always on Top”." -msgstr "" - -#: src/window.blp:428 -msgid "Show Preview Window" -msgstr "Tampilkan Jendela Pratinjau" - -#: src/window.blp:446 -msgid "Close Preview Window" -msgstr "Tutup Jendela Pratinjau" - -#: src/window.blp:481 -msgid "C_onsole" -msgstr "" - -#: src/window.blp:485 -msgid "Show logs (Ctrl+Shift+K)" -msgstr "" - -#: src/window.blp:491 -msgid "_Inspector" -msgstr "" - -#: src/window.blp:494 -msgid "Open GTK Inspector (Ctrl+Shift+I)" -msgstr "" - -#: src/window.blp:505 -msgid "Cl_ear" -msgstr "" - -#: src/window.blp:509 -msgid "Clear console (Ctrl+K)" -msgstr "" - -#: src/window.blp:536 -msgid "Future versions may have breaking syntax." -msgstr "" - -#: src/window.blp:537 -msgid "" -"Blueprint is\n" -"Experimental" -msgstr "" - -#: src/window.blp:541 -#, fuzzy -msgid "Documentation" -msgstr "Dokumentasi Pengembang" - -#: src/window.blp:556 -msgid "Import File…" -msgstr "Impor berkas…" - -#: src/window.blp:562 -msgid "Bookmarks" -msgstr "" - -#: src/window.blp:564 -msgid "Learn" -msgstr "Pelajari" - -#: src/window.blp:567 -msgid "Developer Documentation" -msgstr "Dokumentasi Pengembang" - -#: src/window.blp:574 -msgid "Human Interface Guidelines" -msgstr "" - -#: src/window.blp:580 -msgid "JavaScript" -msgstr "JavaScript" - -#: src/window.blp:586 -msgid "Vala" -msgstr "Vala" - -#: src/window.blp:592 -msgid "Blueprint" -msgstr "Blueprint" - -#: src/window.blp:599 -msgid "Get help" -msgstr "Dapatkan bantuan" - -#: src/window.blp:602 -msgid "Discourse" -msgstr "Discourse" - -#: src/window.blp:608 -msgid "Matrix" -msgstr "Matrix" - -#: src/window.blp:616 -#, fuzzy -msgid "Icon Library" -msgstr "Pustaka" - -#: src/window.blp:621 -msgid "Platform Tools" -msgstr "" - -#: src/window.blp:624 -msgid "Adwaita Demo" -msgstr "Demo Adwaita" - -#: src/window.blp:630 -msgid "GTK Demo" -msgstr "Demo GTK" - -#: src/window.blp:636 -msgid "GTK Widget Factory" -msgstr "" - -#: src/window.blp:644 src/shortcutsWindow.blp:54 -msgid "Keyboard Shortcuts" -msgstr "Pintasan Papan Ketik" - -#: src/window.blp:649 -msgid "About Workbench" -msgstr "Tentang Workbench" - -#: src/shortcutsWindow.blp:11 -msgid "Run Code" -msgstr "Jalankan Kode" - -#: src/shortcutsWindow.blp:16 -msgid "Format" -msgstr "" - -#: src/shortcutsWindow.blp:26 -msgid "Open Library" -msgstr "" - -#: src/shortcutsWindow.blp:31 -msgid "Toggle Console" -msgstr "" - -#: src/shortcutsWindow.blp:36 -msgid "Clear Console" -msgstr "" - -#: src/shortcutsWindow.blp:42 -msgid "Inspector" -msgstr "" - -#: src/shortcutsWindow.blp:50 -msgid "Redo" -msgstr "" - -#: src/shortcutsWindow.blp:58 -msgid "Quit" -msgstr "Keluar" - -#: src/Library/Library.blp:7 -msgid "Library" -msgstr "Pustaka" - -#: troll/src/widgets/ThemeSelector.blp:22 -#: troll/src/widgets/ThemeSelector.blp:25 -msgid "Follow system style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:41 -#: troll/src/widgets/ThemeSelector.blp:44 -msgid "Light style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:60 -#: troll/src/widgets/ThemeSelector.blp:63 -msgid "Dark style" -msgstr "" - -#~ msgid "About My App" -#~ msgstr "Tentang Aplikasi Saya" - -#~ msgid "Use Light mode" -#~ msgstr "Gunakan Mode cerah" - -#~ msgid "Use Dark mode" -#~ msgstr "Gunakan Mode gelap" - -#~ msgid "Are you sure you want to discard your changes?" -#~ msgstr "Apa Anda yakin ingin menghapus perubahan yang Anda buat?" diff --git a/po/it.po b/po/it.po deleted file mode 100644 index e03d5da83..000000000 --- a/po/it.po +++ /dev/null @@ -1,715 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the re.sonny.Workbench package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: re.sonny.Workbench\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-18 13:24+0100\n" -"PO-Revision-Date: 2022-07-17 19:20+0000\n" -"Last-Translator: lupantano \n" -"Language-Team: Italian \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.14-dev\n" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:4 -msgid "Workbench" -msgstr "Workbench" - -#: data/app.desktop:5 data/app.metainfo.xml:10 -msgid "Learn and prototype with GNOME technologies" -msgstr "Impara e crea prototipi con le tecnologie di GNOME" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:12 -msgid "CSS;JavaScript;GJS;Blueprint;builder;Vala;" -msgstr "CSS;JavaScript;GJS;Blueprint;builder;Vala;" - -#: data/app.metainfo.xml:13 -msgid "" -"Workbench goal is to let you experiment with GNOME technologies, no matter " -"if tinkering for the first time or building and testing a GTK user interface." -msgstr "" -"L'obiettivo di Workbench è quello di permettere di sperimentare con le " -"tecnologie di GNOME, sia che si tratti della prima volta che di costruire e " -"testare un'interfaccia utente GTK." - -#: data/app.metainfo.xml:14 -msgid "Among other things, Workbench comes with" -msgstr "Tra le altre cose, Workbench è dotato di" - -#: data/app.metainfo.xml:16 -msgid "realtime GTK/CSS preview" -msgstr "anteprima GTK/CSS in tempo reale" - -#: data/app.metainfo.xml:17 -msgid "library of examples" -msgstr "libreria degli esempi" - -#: data/app.metainfo.xml:18 -msgid "1000+ icons" -msgstr "" - -#: data/app.metainfo.xml:19 -#, fuzzy -msgid "JavaScript and Vala support" -msgstr "JavaScript e Vala funzionano senza alcuna impostazione" - -#: data/app.metainfo.xml:20 -msgid "XML and Blueprint for describing user interface" -msgstr "XML e Blueprint per la descrizione dell'interfaccia utente" - -#: data/app.metainfo.xml:21 -msgid "syntax highlighting, undo/redo, autosave, session restore" -msgstr "" -"evidenziazione della sintassi, annulla/ripristina, salvataggio automatico, " -"ripristino della sessione" - -#: data/app.metainfo.xml:22 -msgid "code formatter" -msgstr "formattazione del codice" - -#: data/app.metainfo.xml:23 -msgid "console logs" -msgstr "console logs" - -#: data/app.metainfo.xml:52 -msgid "Use Vala Language Server for diagnostics" -msgstr "" - -#: data/app.metainfo.xml:53 -msgid "Move Icon Browser to the main application menu" -msgstr "" - -#: data/app.metainfo.xml:54 -msgid "Reset window preview on close" -msgstr "" - -#: data/app.metainfo.xml:55 -msgid "Add a warning about Blueprint being experimental" -msgstr "" - -#: data/app.metainfo.xml:56 -msgid "Fix loading and running code with Blueprint UI" -msgstr "" - -#: data/app.metainfo.xml:57 -msgid "Fix crash when using abstract UI types" -msgstr "" - -#: data/app.metainfo.xml:58 -msgid "Fix \"No UI definition loaded yet.\" preview error when using Vala" -msgstr "" - -#: data/app.metainfo.xml:59 -msgid "Fix error message when hovering text with no diagnostic" -msgstr "" - -#: data/app.metainfo.xml:60 -msgid "VTE 0.70.1" -msgstr "" - -#: data/app.metainfo.xml:67 -msgid "GNOME 43" -msgstr "" - -#: data/app.metainfo.xml:68 -msgid "Display CSS errors inline" -msgstr "" - -#: data/app.metainfo.xml:69 -msgid "Fix responsiveness when working on large Blueprint files" -msgstr "" - -#: data/app.metainfo.xml:70 -msgid "Use AdwAboutWindow" -msgstr "" - -#: data/app.metainfo.xml:71 -msgid "Blueprint 0.4.0" -msgstr "" - -#: data/app.metainfo.xml:72 -msgid "VTE 0.70.0" -msgstr "" - -#: data/app.metainfo.xml:73 -msgid "Various bug and crash fixes" -msgstr "" - -#: data/app.metainfo.xml:80 -msgid "Show tooltip hints in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:81 -#, fuzzy -msgid "Improve XML formatter" -msgstr "formattazione del codice" - -#: data/app.metainfo.xml:82 -msgid "Add Ctrl+Shift+Return shortcut to format" -msgstr "" - -#: data/app.metainfo.xml:83 -msgid "Apply Style CSS to windowed preview" -msgstr "" - -#: data/app.metainfo.xml:84 data/app.metainfo.xml:129 -msgid "Improve application design" -msgstr "Migliorare la progettazione dell'applicazione" - -#: data/app.metainfo.xml:85 -msgid "Prevent crash for templates with GtkWidget parent" -msgstr "" - -#: data/app.metainfo.xml:86 -#, fuzzy -msgid "Update VTE and icon-development-kit" -msgstr "Includere tutte le icone del icon-development-kit" - -#: data/app.metainfo.xml:93 -msgid "Underline errors in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:94 -msgid "Fix bugs and crashes" -msgstr "" - -#: data/app.metainfo.xml:102 -msgid "Add an Icon Browser to find the right icons for your prototypes" -msgstr "" - -#: data/app.metainfo.xml:103 -msgid "Add a Platform tools Library demo" -msgstr "" - -#: data/app.metainfo.xml:104 -msgid "Improve the style switcher" -msgstr "" - -#: data/app.metainfo.xml:105 -msgid "Replace confirmation dialogs with toasts and undo" -msgstr "" - -#: data/app.metainfo.xml:106 -msgid "Support updates on root objects" -msgstr "" - -#: data/app.metainfo.xml:107 -#, fuzzy -msgid "Support binding signal handlers from UI" -msgstr "Aggiungere il supporto per l'anteprima dei gestori di segnali" - -#: data/app.metainfo.xml:108 -msgid "Add APIs to allow using templates from Code" -msgstr "" - -#: data/app.metainfo.xml:109 -#, fuzzy -msgid "Add Center/Fill preview modes for templates" -msgstr "Aggiungere il supporto per l'anteprima dei modelli" - -#: data/app.metainfo.xml:111 -msgid "Open external preview with the dimensions of the internal preview" -msgstr "" - -#: data/app.metainfo.xml:112 -msgid "64 new icons available" -msgstr "" - -#: data/app.metainfo.xml:113 -msgid "Update Blueprint to 0.2.0" -msgstr "" - -#: data/app.metainfo.xml:114 -msgid "Fix empty preview on first load" -msgstr "" - -#: data/app.metainfo.xml:115 -msgid "Fix style scheme switch when system preference is light" -msgstr "" - -#: data/app.metainfo.xml:116 -msgid "Remove grid pattern on the source editors" -msgstr "" - -#: data/app.metainfo.xml:122 -msgid "Highlights" -msgstr "" - -#: data/app.metainfo.xml:124 -msgid "Add Blueprint markup syntax for UI" -msgstr "Aggiunta della sintassi di markup Blueprint per l'interfaccia utente" - -#: data/app.metainfo.xml:125 -msgid "Add Vala programming language for Code" -msgstr "Aggiungi il linguaggio di programmazione Vala per Code" - -#: data/app.metainfo.xml:126 -msgid "Add support for previewing templates" -msgstr "Aggiungere il supporto per l'anteprima dei modelli" - -#: data/app.metainfo.xml:127 -msgid "Add support for previewing signal handlers" -msgstr "Aggiungere il supporto per l'anteprima dei gestori di segnali" - -#: data/app.metainfo.xml:128 -msgid "Include all icons from icon-development-kit" -msgstr "Includere tutte le icone del icon-development-kit" - -#: data/app.metainfo.xml:130 -msgid "Distribute Library examples under CC0-1.0" -msgstr "" - -#: data/app.metainfo.xml:131 -msgid "Respect system preference for color scheme" -msgstr "Rispettare le preferenze del sistema per la combinazione di colori" - -#: data/app.metainfo.xml:132 -msgid "Add proper light/dark color schemes for Console" -msgstr "Aggiungi schema di colore chiaro/scuro adeguato per la console" - -#: data/app.metainfo.xml:133 -#, fuzzy -msgid "Fix error when importing files" -msgstr "Correggere l'errore all'apertura del file" - -#: data/app.metainfo.xml:135 -msgid "Other changes" -msgstr "Altre modifiche" - -#: data/app.metainfo.xml:137 -msgid "Silence platform tools" -msgstr "" - -#: data/app.metainfo.xml:138 -msgid "Remove GTK Icon browser platform tool" -msgstr "" - -#: data/app.metainfo.xml:139 -msgid "Make Library examples only open relevant panels" -msgstr "Gli esempi della Libreria aprono solo i pannelli pertinenti" - -#: data/app.metainfo.xml:140 -msgid "Always open the Console when opening a Library example" -msgstr "Aprire sempre la console quando si apre un esempio di libreria" - -#: data/app.metainfo.xml:141 -msgid "Prevent running Code if the panel is not visible" -msgstr "" - -#: data/app.metainfo.xml:142 -msgid "Add icons and mnemonics for all buttons" -msgstr "" - -#: data/app.metainfo.xml:143 -msgid "Move Bookmarks to the main menu" -msgstr "" - -#: data/app.metainfo.xml:144 -msgid "Enable scrollbar and kinetic scrolling on Console" -msgstr "" - -#: data/app.metainfo.xml:145 -msgid "Improve Library examples" -msgstr "" - -#: data/app.metainfo.xml:146 -msgid "Performance optimizations" -msgstr "" - -#: data/app.metainfo.xml:147 -msgid "Show a placeholder when all panels are invisible" -msgstr "" - -#: data/app.metainfo.xml:148 -msgid "Crash fixes" -msgstr "" - -#: data/app.metainfo.xml:149 -msgid "Use org.gnome.Sdk runtime" -msgstr "" - -#: data/app.metainfo.xml:156 -msgid "Add a Library of examples" -msgstr "" - -#: data/app.metainfo.xml:157 -msgid "Add an example of WebSocket client" -msgstr "" - -#: data/app.metainfo.xml:158 -msgid "Add an example of toasts" -msgstr "" - -#: data/app.metainfo.xml:159 -msgid "Add an example of application window" -msgstr "" - -#: data/app.metainfo.xml:160 -msgid "Add an example of desktop notification" -msgstr "" - -#: data/app.metainfo.xml:162 -msgid "Add Adwaita Demo, GTK Demo, GTK Widget Factory and GTK Icon Browser" -msgstr "" - -#: data/app.metainfo.xml:163 -msgid "The Console can be collapsed by resizing it" -msgstr "" - -#: data/app.metainfo.xml:164 -msgid "Prevent system.exit from quitting Workbench" -msgstr "" - -#: data/app.metainfo.xml:165 -msgid "Allow calling GObject.registerClass multiple times" -msgstr "" - -#: data/app.metainfo.xml:166 -msgid "Prevent crash caused by using non GtkBuildable objects" -msgstr "" - -#: data/app.metainfo.xml:167 -msgid "Allow using DBus and Gio.Application" -msgstr "" - -#: data/app.metainfo.xml:168 -msgid "Allow using network" -msgstr "" - -#: data/app.metainfo.xml:169 -msgid "Enable GtkWindow objects preview" -msgstr "" - -#: data/app.metainfo.xml:176 -msgid "Take a png screenshot of the preview" -msgstr "" - -#: data/app.metainfo.xml:177 -msgid "The console is now resizable" -msgstr "" - -#: data/app.metainfo.xml:178 -msgid "Redesign the dark/light mode switcher" -msgstr "" - -#: data/app.metainfo.xml:179 -msgid "Show platform and dependencies in about dialog" -msgstr "" - -#: data/app.metainfo.xml:180 -msgid "Update to GNOME platform 42" -msgstr "" - -#: data/app.metainfo.xml:181 -msgid "Various fixes" -msgstr "" - -#: data/app.metainfo.xml:187 -msgid "This is the first release of Workbench. We hope you like it." -msgstr "" - -#: src/window.js:371 -msgid "The demo has been loaded" -msgstr "" - -#: src/window.js:372 src/window.js:453 src/shortcutsWindow.blp:46 -msgid "Undo" -msgstr "" - -#: src/window.js:445 -msgid "This file cannot be loaded" -msgstr "" - -#: src/window.js:452 -msgid "The file has been loaded" -msgstr "" - -#. TRANSLATORS: eg. 'Translator Name ' or 'Translator Name https://website.example' -#: src/about.js:39 -msgid "translator-credits" -msgstr "" - -#: src/about.js:52 -msgid "Contributors" -msgstr "" - -#: src/actions.js:53 src/shortcutsWindow.blp:21 -msgid "Import File" -msgstr "" - -#: src/actions.js:147 -msgid "All supported" -msgstr "" - -#: src/window.blp:15 -msgid "_Library" -msgstr "" - -#: src/window.blp:19 -msgid "Open Library of Demos and Examples (Ctrl+Shift+O)" -msgstr "" - -#: src/window.blp:37 -msgid "_Code" -msgstr "" - -#: src/window.blp:54 -msgid "_Style" -msgstr "" - -#: src/window.blp:71 -msgid "_UI" -msgstr "" - -#: src/window.blp:88 -msgid "_Preview" -msgstr "" - -#: src/window.blp:130 -msgid "Code" -msgstr "" - -#: src/window.blp:146 -msgid "Switch document" -msgstr "" - -#: src/window.blp:154 -msgid "_Run" -msgstr "" - -#: src/window.blp:158 -msgid "Run (Ctrl+⏎)" -msgstr "" - -#: src/window.blp:218 -msgid "Style CSS" -msgstr "" - -#: src/window.blp:257 -msgid "UI" -msgstr "" - -#: src/window.blp:273 -msgid "Convert and switch syntax" -msgstr "" - -#: src/window.blp:277 -msgid "Informaton about Blueprint" -msgstr "" - -#: src/window.blp:289 src/window.blp:291 -msgid "Convert to XML" -msgstr "" - -#: src/window.blp:300 src/window.blp:302 -msgid "Convert to Blueprint" -msgstr "" - -#: src/window.blp:366 -msgid "Preview" -msgstr "" - -#: src/window.blp:376 -msgid "Fill" -msgstr "" - -#: src/window.blp:377 -msgid "Center" -msgstr "" - -#: src/window.blp:380 -msgid "Select Preview mode" -msgstr "" - -#: src/window.blp:386 src/window.blp:388 -msgid "Take Screenshot of Preview" -msgstr "" - -#: src/window.blp:420 src/window.blp:438 -msgid "Windowed Preview" -msgstr "" - -#: src/window.blp:421 src/window.blp:439 -msgid "" -"This interface can only be previewed as a separate window.\n" -"We recommend using “Always on Top”." -msgstr "" - -#: src/window.blp:428 -msgid "Show Preview Window" -msgstr "" - -#: src/window.blp:446 -msgid "Close Preview Window" -msgstr "" - -#: src/window.blp:481 -msgid "C_onsole" -msgstr "" - -#: src/window.blp:485 -msgid "Show logs (Ctrl+Shift+K)" -msgstr "" - -#: src/window.blp:491 -msgid "_Inspector" -msgstr "" - -#: src/window.blp:494 -msgid "Open GTK Inspector (Ctrl+Shift+I)" -msgstr "" - -#: src/window.blp:505 -msgid "Cl_ear" -msgstr "" - -#: src/window.blp:509 -msgid "Clear console (Ctrl+K)" -msgstr "" - -#: src/window.blp:536 -msgid "Future versions may have breaking syntax." -msgstr "" - -#: src/window.blp:537 -msgid "" -"Blueprint is\n" -"Experimental" -msgstr "" - -#: src/window.blp:541 -msgid "Documentation" -msgstr "" - -#: src/window.blp:556 -msgid "Import File…" -msgstr "" - -#: src/window.blp:562 -msgid "Bookmarks" -msgstr "" - -#: src/window.blp:564 -msgid "Learn" -msgstr "" - -#: src/window.blp:567 -msgid "Developer Documentation" -msgstr "" - -#: src/window.blp:574 -msgid "Human Interface Guidelines" -msgstr "" - -#: src/window.blp:580 -msgid "JavaScript" -msgstr "" - -#: src/window.blp:586 -msgid "Vala" -msgstr "" - -#: src/window.blp:592 -msgid "Blueprint" -msgstr "" - -#: src/window.blp:599 -msgid "Get help" -msgstr "" - -#: src/window.blp:602 -msgid "Discourse" -msgstr "" - -#: src/window.blp:608 -msgid "Matrix" -msgstr "" - -#: src/window.blp:616 -msgid "Icon Library" -msgstr "" - -#: src/window.blp:621 -msgid "Platform Tools" -msgstr "" - -#: src/window.blp:624 -msgid "Adwaita Demo" -msgstr "" - -#: src/window.blp:630 -msgid "GTK Demo" -msgstr "" - -#: src/window.blp:636 -msgid "GTK Widget Factory" -msgstr "" - -#: src/window.blp:644 src/shortcutsWindow.blp:54 -msgid "Keyboard Shortcuts" -msgstr "" - -#: src/window.blp:649 -msgid "About Workbench" -msgstr "" - -#: src/shortcutsWindow.blp:11 -msgid "Run Code" -msgstr "" - -#: src/shortcutsWindow.blp:16 -msgid "Format" -msgstr "" - -#: src/shortcutsWindow.blp:26 -msgid "Open Library" -msgstr "" - -#: src/shortcutsWindow.blp:31 -msgid "Toggle Console" -msgstr "" - -#: src/shortcutsWindow.blp:36 -msgid "Clear Console" -msgstr "" - -#: src/shortcutsWindow.blp:42 -msgid "Inspector" -msgstr "" - -#: src/shortcutsWindow.blp:50 -msgid "Redo" -msgstr "" - -#: src/shortcutsWindow.blp:58 -msgid "Quit" -msgstr "" - -#: src/Library/Library.blp:7 -msgid "Library" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:22 -#: troll/src/widgets/ThemeSelector.blp:25 -msgid "Follow system style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:41 -#: troll/src/widgets/ThemeSelector.blp:44 -msgid "Light style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:60 -#: troll/src/widgets/ThemeSelector.blp:63 -msgid "Dark style" -msgstr "" diff --git a/po/ja.po b/po/ja.po deleted file mode 100644 index d976c389b..000000000 --- a/po/ja.po +++ /dev/null @@ -1,701 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR Sonny Piers -# This file is distributed under the same license as the re.sonny.Workbench package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: re.sonny.Workbench\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-18 13:24+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: ja\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:4 -msgid "Workbench" -msgstr "" - -#: data/app.desktop:5 data/app.metainfo.xml:10 -msgid "Learn and prototype with GNOME technologies" -msgstr "" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:12 -msgid "CSS;JavaScript;GJS;Blueprint;builder;Vala;" -msgstr "" - -#: data/app.metainfo.xml:13 -msgid "" -"Workbench goal is to let you experiment with GNOME technologies, no matter " -"if tinkering for the first time or building and testing a GTK user interface." -msgstr "" - -#: data/app.metainfo.xml:14 -msgid "Among other things, Workbench comes with" -msgstr "" - -#: data/app.metainfo.xml:16 -msgid "realtime GTK/CSS preview" -msgstr "" - -#: data/app.metainfo.xml:17 -msgid "library of examples" -msgstr "" - -#: data/app.metainfo.xml:18 -msgid "1000+ icons" -msgstr "" - -#: data/app.metainfo.xml:19 -msgid "JavaScript and Vala support" -msgstr "" - -#: data/app.metainfo.xml:20 -msgid "XML and Blueprint for describing user interface" -msgstr "" - -#: data/app.metainfo.xml:21 -msgid "syntax highlighting, undo/redo, autosave, session restore" -msgstr "" - -#: data/app.metainfo.xml:22 -msgid "code formatter" -msgstr "" - -#: data/app.metainfo.xml:23 -msgid "console logs" -msgstr "" - -#: data/app.metainfo.xml:52 -msgid "Use Vala Language Server for diagnostics" -msgstr "" - -#: data/app.metainfo.xml:53 -msgid "Move Icon Browser to the main application menu" -msgstr "" - -#: data/app.metainfo.xml:54 -msgid "Reset window preview on close" -msgstr "" - -#: data/app.metainfo.xml:55 -msgid "Add a warning about Blueprint being experimental" -msgstr "" - -#: data/app.metainfo.xml:56 -msgid "Fix loading and running code with Blueprint UI" -msgstr "" - -#: data/app.metainfo.xml:57 -msgid "Fix crash when using abstract UI types" -msgstr "" - -#: data/app.metainfo.xml:58 -msgid "Fix \"No UI definition loaded yet.\" preview error when using Vala" -msgstr "" - -#: data/app.metainfo.xml:59 -msgid "Fix error message when hovering text with no diagnostic" -msgstr "" - -#: data/app.metainfo.xml:60 -msgid "VTE 0.70.1" -msgstr "" - -#: data/app.metainfo.xml:67 -msgid "GNOME 43" -msgstr "" - -#: data/app.metainfo.xml:68 -msgid "Display CSS errors inline" -msgstr "" - -#: data/app.metainfo.xml:69 -msgid "Fix responsiveness when working on large Blueprint files" -msgstr "" - -#: data/app.metainfo.xml:70 -msgid "Use AdwAboutWindow" -msgstr "" - -#: data/app.metainfo.xml:71 -msgid "Blueprint 0.4.0" -msgstr "" - -#: data/app.metainfo.xml:72 -msgid "VTE 0.70.0" -msgstr "" - -#: data/app.metainfo.xml:73 -msgid "Various bug and crash fixes" -msgstr "" - -#: data/app.metainfo.xml:80 -msgid "Show tooltip hints in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:81 -msgid "Improve XML formatter" -msgstr "" - -#: data/app.metainfo.xml:82 -msgid "Add Ctrl+Shift+Return shortcut to format" -msgstr "" - -#: data/app.metainfo.xml:83 -msgid "Apply Style CSS to windowed preview" -msgstr "" - -#: data/app.metainfo.xml:84 data/app.metainfo.xml:129 -msgid "Improve application design" -msgstr "" - -#: data/app.metainfo.xml:85 -msgid "Prevent crash for templates with GtkWidget parent" -msgstr "" - -#: data/app.metainfo.xml:86 -msgid "Update VTE and icon-development-kit" -msgstr "" - -#: data/app.metainfo.xml:93 -msgid "Underline errors in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:94 -msgid "Fix bugs and crashes" -msgstr "" - -#: data/app.metainfo.xml:102 -msgid "Add an Icon Browser to find the right icons for your prototypes" -msgstr "" - -#: data/app.metainfo.xml:103 -msgid "Add a Platform tools Library demo" -msgstr "" - -#: data/app.metainfo.xml:104 -msgid "Improve the style switcher" -msgstr "" - -#: data/app.metainfo.xml:105 -msgid "Replace confirmation dialogs with toasts and undo" -msgstr "" - -#: data/app.metainfo.xml:106 -msgid "Support updates on root objects" -msgstr "" - -#: data/app.metainfo.xml:107 -msgid "Support binding signal handlers from UI" -msgstr "" - -#: data/app.metainfo.xml:108 -msgid "Add APIs to allow using templates from Code" -msgstr "" - -#: data/app.metainfo.xml:109 -msgid "Add Center/Fill preview modes for templates" -msgstr "" - -#: data/app.metainfo.xml:111 -msgid "Open external preview with the dimensions of the internal preview" -msgstr "" - -#: data/app.metainfo.xml:112 -msgid "64 new icons available" -msgstr "" - -#: data/app.metainfo.xml:113 -msgid "Update Blueprint to 0.2.0" -msgstr "" - -#: data/app.metainfo.xml:114 -msgid "Fix empty preview on first load" -msgstr "" - -#: data/app.metainfo.xml:115 -msgid "Fix style scheme switch when system preference is light" -msgstr "" - -#: data/app.metainfo.xml:116 -msgid "Remove grid pattern on the source editors" -msgstr "" - -#: data/app.metainfo.xml:122 -msgid "Highlights" -msgstr "" - -#: data/app.metainfo.xml:124 -msgid "Add Blueprint markup syntax for UI" -msgstr "" - -#: data/app.metainfo.xml:125 -msgid "Add Vala programming language for Code" -msgstr "" - -#: data/app.metainfo.xml:126 -msgid "Add support for previewing templates" -msgstr "" - -#: data/app.metainfo.xml:127 -msgid "Add support for previewing signal handlers" -msgstr "" - -#: data/app.metainfo.xml:128 -msgid "Include all icons from icon-development-kit" -msgstr "" - -#: data/app.metainfo.xml:130 -msgid "Distribute Library examples under CC0-1.0" -msgstr "" - -#: data/app.metainfo.xml:131 -msgid "Respect system preference for color scheme" -msgstr "" - -#: data/app.metainfo.xml:132 -msgid "Add proper light/dark color schemes for Console" -msgstr "" - -#: data/app.metainfo.xml:133 -msgid "Fix error when importing files" -msgstr "" - -#: data/app.metainfo.xml:135 -msgid "Other changes" -msgstr "" - -#: data/app.metainfo.xml:137 -msgid "Silence platform tools" -msgstr "" - -#: data/app.metainfo.xml:138 -msgid "Remove GTK Icon browser platform tool" -msgstr "" - -#: data/app.metainfo.xml:139 -msgid "Make Library examples only open relevant panels" -msgstr "" - -#: data/app.metainfo.xml:140 -msgid "Always open the Console when opening a Library example" -msgstr "" - -#: data/app.metainfo.xml:141 -msgid "Prevent running Code if the panel is not visible" -msgstr "" - -#: data/app.metainfo.xml:142 -msgid "Add icons and mnemonics for all buttons" -msgstr "" - -#: data/app.metainfo.xml:143 -msgid "Move Bookmarks to the main menu" -msgstr "" - -#: data/app.metainfo.xml:144 -msgid "Enable scrollbar and kinetic scrolling on Console" -msgstr "" - -#: data/app.metainfo.xml:145 -msgid "Improve Library examples" -msgstr "" - -#: data/app.metainfo.xml:146 -msgid "Performance optimizations" -msgstr "" - -#: data/app.metainfo.xml:147 -msgid "Show a placeholder when all panels are invisible" -msgstr "" - -#: data/app.metainfo.xml:148 -msgid "Crash fixes" -msgstr "" - -#: data/app.metainfo.xml:149 -msgid "Use org.gnome.Sdk runtime" -msgstr "" - -#: data/app.metainfo.xml:156 -msgid "Add a Library of examples" -msgstr "" - -#: data/app.metainfo.xml:157 -msgid "Add an example of WebSocket client" -msgstr "" - -#: data/app.metainfo.xml:158 -msgid "Add an example of toasts" -msgstr "" - -#: data/app.metainfo.xml:159 -msgid "Add an example of application window" -msgstr "" - -#: data/app.metainfo.xml:160 -msgid "Add an example of desktop notification" -msgstr "" - -#: data/app.metainfo.xml:162 -msgid "Add Adwaita Demo, GTK Demo, GTK Widget Factory and GTK Icon Browser" -msgstr "" - -#: data/app.metainfo.xml:163 -msgid "The Console can be collapsed by resizing it" -msgstr "" - -#: data/app.metainfo.xml:164 -msgid "Prevent system.exit from quitting Workbench" -msgstr "" - -#: data/app.metainfo.xml:165 -msgid "Allow calling GObject.registerClass multiple times" -msgstr "" - -#: data/app.metainfo.xml:166 -msgid "Prevent crash caused by using non GtkBuildable objects" -msgstr "" - -#: data/app.metainfo.xml:167 -msgid "Allow using DBus and Gio.Application" -msgstr "" - -#: data/app.metainfo.xml:168 -msgid "Allow using network" -msgstr "" - -#: data/app.metainfo.xml:169 -msgid "Enable GtkWindow objects preview" -msgstr "" - -#: data/app.metainfo.xml:176 -msgid "Take a png screenshot of the preview" -msgstr "" - -#: data/app.metainfo.xml:177 -msgid "The console is now resizable" -msgstr "" - -#: data/app.metainfo.xml:178 -msgid "Redesign the dark/light mode switcher" -msgstr "" - -#: data/app.metainfo.xml:179 -msgid "Show platform and dependencies in about dialog" -msgstr "" - -#: data/app.metainfo.xml:180 -msgid "Update to GNOME platform 42" -msgstr "" - -#: data/app.metainfo.xml:181 -msgid "Various fixes" -msgstr "" - -#: data/app.metainfo.xml:187 -msgid "This is the first release of Workbench. We hope you like it." -msgstr "" - -#: src/window.js:371 -msgid "The demo has been loaded" -msgstr "" - -#: src/window.js:372 src/window.js:453 src/shortcutsWindow.blp:46 -msgid "Undo" -msgstr "" - -#: src/window.js:445 -msgid "This file cannot be loaded" -msgstr "" - -#: src/window.js:452 -msgid "The file has been loaded" -msgstr "" - -#. TRANSLATORS: eg. 'Translator Name ' or 'Translator Name https://website.example' -#: src/about.js:39 -msgid "translator-credits" -msgstr "" - -#: src/about.js:52 -msgid "Contributors" -msgstr "" - -#: src/actions.js:53 src/shortcutsWindow.blp:21 -msgid "Import File" -msgstr "" - -#: src/actions.js:147 -msgid "All supported" -msgstr "" - -#: src/window.blp:15 -msgid "_Library" -msgstr "" - -#: src/window.blp:19 -msgid "Open Library of Demos and Examples (Ctrl+Shift+O)" -msgstr "" - -#: src/window.blp:37 -msgid "_Code" -msgstr "" - -#: src/window.blp:54 -msgid "_Style" -msgstr "" - -#: src/window.blp:71 -msgid "_UI" -msgstr "" - -#: src/window.blp:88 -msgid "_Preview" -msgstr "" - -#: src/window.blp:130 -msgid "Code" -msgstr "" - -#: src/window.blp:146 -msgid "Switch document" -msgstr "" - -#: src/window.blp:154 -msgid "_Run" -msgstr "" - -#: src/window.blp:158 -msgid "Run (Ctrl+⏎)" -msgstr "" - -#: src/window.blp:218 -msgid "Style CSS" -msgstr "" - -#: src/window.blp:257 -msgid "UI" -msgstr "" - -#: src/window.blp:273 -msgid "Convert and switch syntax" -msgstr "" - -#: src/window.blp:277 -msgid "Informaton about Blueprint" -msgstr "" - -#: src/window.blp:289 src/window.blp:291 -msgid "Convert to XML" -msgstr "" - -#: src/window.blp:300 src/window.blp:302 -msgid "Convert to Blueprint" -msgstr "" - -#: src/window.blp:366 -msgid "Preview" -msgstr "" - -#: src/window.blp:376 -msgid "Fill" -msgstr "" - -#: src/window.blp:377 -msgid "Center" -msgstr "" - -#: src/window.blp:380 -msgid "Select Preview mode" -msgstr "" - -#: src/window.blp:386 src/window.blp:388 -msgid "Take Screenshot of Preview" -msgstr "" - -#: src/window.blp:420 src/window.blp:438 -msgid "Windowed Preview" -msgstr "" - -#: src/window.blp:421 src/window.blp:439 -msgid "" -"This interface can only be previewed as a separate window.\n" -"We recommend using “Always on Top”." -msgstr "" - -#: src/window.blp:428 -msgid "Show Preview Window" -msgstr "" - -#: src/window.blp:446 -msgid "Close Preview Window" -msgstr "" - -#: src/window.blp:481 -msgid "C_onsole" -msgstr "" - -#: src/window.blp:485 -msgid "Show logs (Ctrl+Shift+K)" -msgstr "" - -#: src/window.blp:491 -msgid "_Inspector" -msgstr "" - -#: src/window.blp:494 -msgid "Open GTK Inspector (Ctrl+Shift+I)" -msgstr "" - -#: src/window.blp:505 -msgid "Cl_ear" -msgstr "" - -#: src/window.blp:509 -msgid "Clear console (Ctrl+K)" -msgstr "" - -#: src/window.blp:536 -msgid "Future versions may have breaking syntax." -msgstr "" - -#: src/window.blp:537 -msgid "" -"Blueprint is\n" -"Experimental" -msgstr "" - -#: src/window.blp:541 -msgid "Documentation" -msgstr "" - -#: src/window.blp:556 -msgid "Import File…" -msgstr "" - -#: src/window.blp:562 -msgid "Bookmarks" -msgstr "" - -#: src/window.blp:564 -msgid "Learn" -msgstr "" - -#: src/window.blp:567 -msgid "Developer Documentation" -msgstr "" - -#: src/window.blp:574 -msgid "Human Interface Guidelines" -msgstr "" - -#: src/window.blp:580 -msgid "JavaScript" -msgstr "" - -#: src/window.blp:586 -msgid "Vala" -msgstr "" - -#: src/window.blp:592 -msgid "Blueprint" -msgstr "" - -#: src/window.blp:599 -msgid "Get help" -msgstr "" - -#: src/window.blp:602 -msgid "Discourse" -msgstr "" - -#: src/window.blp:608 -msgid "Matrix" -msgstr "" - -#: src/window.blp:616 -msgid "Icon Library" -msgstr "" - -#: src/window.blp:621 -msgid "Platform Tools" -msgstr "" - -#: src/window.blp:624 -msgid "Adwaita Demo" -msgstr "" - -#: src/window.blp:630 -msgid "GTK Demo" -msgstr "" - -#: src/window.blp:636 -msgid "GTK Widget Factory" -msgstr "" - -#: src/window.blp:644 src/shortcutsWindow.blp:54 -msgid "Keyboard Shortcuts" -msgstr "" - -#: src/window.blp:649 -msgid "About Workbench" -msgstr "" - -#: src/shortcutsWindow.blp:11 -msgid "Run Code" -msgstr "" - -#: src/shortcutsWindow.blp:16 -msgid "Format" -msgstr "" - -#: src/shortcutsWindow.blp:26 -msgid "Open Library" -msgstr "" - -#: src/shortcutsWindow.blp:31 -msgid "Toggle Console" -msgstr "" - -#: src/shortcutsWindow.blp:36 -msgid "Clear Console" -msgstr "" - -#: src/shortcutsWindow.blp:42 -msgid "Inspector" -msgstr "" - -#: src/shortcutsWindow.blp:50 -msgid "Redo" -msgstr "" - -#: src/shortcutsWindow.blp:58 -msgid "Quit" -msgstr "" - -#: src/Library/Library.blp:7 -msgid "Library" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:22 -#: troll/src/widgets/ThemeSelector.blp:25 -msgid "Follow system style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:41 -#: troll/src/widgets/ThemeSelector.blp:44 -msgid "Light style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:60 -#: troll/src/widgets/ThemeSelector.blp:63 -msgid "Dark style" -msgstr "" diff --git a/po/meson.build b/po/meson.build deleted file mode 100644 index a70c44934..000000000 --- a/po/meson.build +++ /dev/null @@ -1 +0,0 @@ -i18n.gettext('re.sonny.Workbench', preset: 'glib', args: ['--no-wrap']) diff --git a/po/nb_NO.po b/po/nb_NO.po deleted file mode 100644 index 7c6f5c6bd..000000000 --- a/po/nb_NO.po +++ /dev/null @@ -1,777 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the re.sonny.Workbench package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: re.sonny.Workbench\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-18 13:24+0100\n" -"PO-Revision-Date: 2022-06-01 08:17+0000\n" -"Last-Translator: Allan Nordhøy \n" -"Language-Team: Norwegian Bokmål \n" -"Language: nb_NO\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.13-dev\n" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:4 -msgid "Workbench" -msgstr "Workbench" - -#: data/app.desktop:5 data/app.metainfo.xml:10 -msgid "Learn and prototype with GNOME technologies" -msgstr "Lær deg og lag prototyper med GNOME-teknologi" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:12 -msgid "CSS;JavaScript;GJS;Blueprint;builder;Vala;" -msgstr "CSS;JavaS" - -#: data/app.metainfo.xml:13 -msgid "" -"Workbench goal is to let you experiment with GNOME technologies, no matter " -"if tinkering for the first time or building and testing a GTK user interface." -msgstr "" -"Målet med Workbench er å la deg eksperimentere med GNOME-teknologi, om så " -"det er første gang du bygger noe eller tester et GTK-brukergrensesnitt." - -#: data/app.metainfo.xml:14 -msgid "Among other things, Workbench comes with" -msgstr "Blandt annet kommer Workbench med" - -#: data/app.metainfo.xml:16 -msgid "realtime GTK/CSS preview" -msgstr "GTK/CSS-forhåndsvisning i sanntid" - -#: data/app.metainfo.xml:17 -msgid "library of examples" -msgstr "et eksempelbibliotek" - -#: data/app.metainfo.xml:18 -msgid "1000+ icons" -msgstr "" - -#: data/app.metainfo.xml:19 -#, fuzzy -msgid "JavaScript and Vala support" -msgstr "JavaScript og Vala kjører uten oppsett" - -#: data/app.metainfo.xml:20 -msgid "XML and Blueprint for describing user interface" -msgstr "CML og Blueprint for beskrivelse av brukergrensesnitt" - -#: data/app.metainfo.xml:21 -msgid "syntax highlighting, undo/redo, autosave, session restore" -msgstr "" -"syntaksframheving, angre/gjenta, automatisk lagring, øktgjenopprettelse" - -#: data/app.metainfo.xml:22 -msgid "code formatter" -msgstr "kode-formaterer" - -#: data/app.metainfo.xml:23 -msgid "console logs" -msgstr "konsoll-logger" - -#: data/app.metainfo.xml:52 -msgid "Use Vala Language Server for diagnostics" -msgstr "" - -#: data/app.metainfo.xml:53 -#, fuzzy -msgid "Move Icon Browser to the main application menu" -msgstr "Bokmerker flyttet til hovedmenyen" - -#: data/app.metainfo.xml:54 -msgid "Reset window preview on close" -msgstr "" - -#: data/app.metainfo.xml:55 -msgid "Add a warning about Blueprint being experimental" -msgstr "" - -#: data/app.metainfo.xml:56 -msgid "Fix loading and running code with Blueprint UI" -msgstr "" - -#: data/app.metainfo.xml:57 -msgid "Fix crash when using abstract UI types" -msgstr "" - -#: data/app.metainfo.xml:58 -msgid "Fix \"No UI definition loaded yet.\" preview error when using Vala" -msgstr "" - -#: data/app.metainfo.xml:59 -msgid "Fix error message when hovering text with no diagnostic" -msgstr "" - -#: data/app.metainfo.xml:60 -msgid "VTE 0.70.1" -msgstr "" - -#: data/app.metainfo.xml:67 -msgid "GNOME 43" -msgstr "" - -#: data/app.metainfo.xml:68 -msgid "Display CSS errors inline" -msgstr "" - -#: data/app.metainfo.xml:69 -msgid "Fix responsiveness when working on large Blueprint files" -msgstr "" - -#: data/app.metainfo.xml:70 -msgid "Use AdwAboutWindow" -msgstr "" - -#: data/app.metainfo.xml:71 -#, fuzzy -msgid "Blueprint 0.4.0" -msgstr "Blueprint" - -#: data/app.metainfo.xml:72 -msgid "VTE 0.70.0" -msgstr "" - -#: data/app.metainfo.xml:73 -#, fuzzy -msgid "Various bug and crash fixes" -msgstr "Forskjellige feilfikser" - -#: data/app.metainfo.xml:80 -msgid "Show tooltip hints in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:81 -#, fuzzy -msgid "Improve XML formatter" -msgstr "kode-formaterer" - -#: data/app.metainfo.xml:82 -msgid "Add Ctrl+Shift+Return shortcut to format" -msgstr "" - -#: data/app.metainfo.xml:83 -msgid "Apply Style CSS to windowed preview" -msgstr "" - -#: data/app.metainfo.xml:84 data/app.metainfo.xml:129 -msgid "Improve application design" -msgstr "Forbedret programdesign" - -#: data/app.metainfo.xml:85 -msgid "Prevent crash for templates with GtkWidget parent" -msgstr "" - -#: data/app.metainfo.xml:86 -#, fuzzy -msgid "Update VTE and icon-development-kit" -msgstr "Alle ikoner fra icon-development-kit inkludert" - -#: data/app.metainfo.xml:93 -msgid "Underline errors in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:94 -msgid "Fix bugs and crashes" -msgstr "" - -#: data/app.metainfo.xml:102 -msgid "Add an Icon Browser to find the right icons for your prototypes" -msgstr "" - -#: data/app.metainfo.xml:103 -msgid "Add a Platform tools Library demo" -msgstr "" - -#: data/app.metainfo.xml:104 -msgid "Improve the style switcher" -msgstr "" - -#: data/app.metainfo.xml:105 -msgid "Replace confirmation dialogs with toasts and undo" -msgstr "" - -#: data/app.metainfo.xml:106 -msgid "Support updates on root objects" -msgstr "" - -#: data/app.metainfo.xml:107 -#, fuzzy -msgid "Support binding signal handlers from UI" -msgstr "Tillagt støtte for forhåndsvisning av signalhåndterere" - -#: data/app.metainfo.xml:108 -msgid "Add APIs to allow using templates from Code" -msgstr "" - -#: data/app.metainfo.xml:109 -#, fuzzy -msgid "Add Center/Fill preview modes for templates" -msgstr "Støtte for forhåndsvisning av maler" - -#: data/app.metainfo.xml:111 -msgid "Open external preview with the dimensions of the internal preview" -msgstr "" - -#: data/app.metainfo.xml:112 -msgid "64 new icons available" -msgstr "" - -#: data/app.metainfo.xml:113 -msgid "Update Blueprint to 0.2.0" -msgstr "" - -#: data/app.metainfo.xml:114 -msgid "Fix empty preview on first load" -msgstr "" - -#: data/app.metainfo.xml:115 -msgid "Fix style scheme switch when system preference is light" -msgstr "" - -#: data/app.metainfo.xml:116 -msgid "Remove grid pattern on the source editors" -msgstr "" - -#: data/app.metainfo.xml:122 -msgid "Highlights" -msgstr "Framheving" - -#: data/app.metainfo.xml:124 -msgid "Add Blueprint markup syntax for UI" -msgstr "Blueprint-oppmerkningssyntaks lagt til for grensesnittet" - -#: data/app.metainfo.xml:125 -msgid "Add Vala programming language for Code" -msgstr "Vala-protrammeringsspråk lagt til for Kode" - -#: data/app.metainfo.xml:126 -msgid "Add support for previewing templates" -msgstr "Støtte for forhåndsvisning av maler" - -#: data/app.metainfo.xml:127 -msgid "Add support for previewing signal handlers" -msgstr "Tillagt støtte for forhåndsvisning av signalhåndterere" - -#: data/app.metainfo.xml:128 -msgid "Include all icons from icon-development-kit" -msgstr "Alle ikoner fra icon-development-kit inkludert" - -#: data/app.metainfo.xml:130 -msgid "Distribute Library examples under CC0-1.0" -msgstr "Bibliotekseksempler distribuert som CC0-1.0" - -#: data/app.metainfo.xml:131 -msgid "Respect system preference for color scheme" -msgstr "Systeminnstilling for fargedrakt respektert" - -#: data/app.metainfo.xml:132 -#, fuzzy -msgid "Add proper light/dark color schemes for Console" -msgstr "Lys/mørke fargedrakter lagt til for Konsoll" - -#: data/app.metainfo.xml:133 -#, fuzzy -msgid "Fix error when importing files" -msgstr "Fikset feil ved åpning av fil" - -#: data/app.metainfo.xml:135 -msgid "Other changes" -msgstr "Andre endringer" - -#: data/app.metainfo.xml:137 -msgid "Silence platform tools" -msgstr "Forstumming av plattformsverktøy" - -#: data/app.metainfo.xml:138 -msgid "Remove GTK Icon browser platform tool" -msgstr "" - -#: data/app.metainfo.xml:139 -msgid "Make Library examples only open relevant panels" -msgstr "Bibliotekseksmpler åpner nå kun relevante paneler" - -#: data/app.metainfo.xml:140 -#, fuzzy -msgid "Always open the Console when opening a Library example" -msgstr "Konsoll alltid åpnet ved åpning av bibliotekseksempel" - -#: data/app.metainfo.xml:141 -msgid "Prevent running Code if the panel is not visible" -msgstr "Kode forhindres fra å kjøre hvis panelet ikke er synlig" - -#: data/app.metainfo.xml:142 -#, fuzzy -msgid "Add icons and mnemonics for all buttons" -msgstr "Ikoner og huskebokstaver for alle knapper" - -#: data/app.metainfo.xml:143 -msgid "Move Bookmarks to the main menu" -msgstr "Bokmerker flyttet til hovedmenyen" - -#: data/app.metainfo.xml:144 -#, fuzzy -msgid "Enable scrollbar and kinetic scrolling on Console" -msgstr "Konsoll fikk rullefelt og kinetisk rulling" - -#: data/app.metainfo.xml:145 -msgid "Improve Library examples" -msgstr "Bibliotekseksempeler forbedret" - -#: data/app.metainfo.xml:146 -msgid "Performance optimizations" -msgstr "Ytelsesoptimaliseringer" - -#: data/app.metainfo.xml:147 -msgid "Show a placeholder when all panels are invisible" -msgstr "Plassholder vist når alle panelene er synlige" - -#: data/app.metainfo.xml:148 -msgid "Crash fixes" -msgstr "Krasjfikser" - -#: data/app.metainfo.xml:149 -msgid "Use org.gnome.Sdk runtime" -msgstr "Bruk av org.gnome.Sdk-kjøretidsrutine" - -#: data/app.metainfo.xml:156 -msgid "Add a Library of examples" -msgstr "Eksempelbibliotek tillagt" - -#: data/app.metainfo.xml:157 -msgid "Add an example of WebSocket client" -msgstr "Eksempel på WebSocket-klient lagt til" - -#: data/app.metainfo.xml:158 -msgid "Add an example of toasts" -msgstr "Eksempel på oppsprettsmerknad lagt til" - -#: data/app.metainfo.xml:159 -msgid "Add an example of application window" -msgstr "Eksempel på programvindu lagt til" - -#: data/app.metainfo.xml:160 -msgid "Add an example of desktop notification" -msgstr "Eksempel på skrivebordsmerknad lagt til" - -#: data/app.metainfo.xml:162 -msgid "Add Adwaita Demo, GTK Demo, GTK Widget Factory and GTK Icon Browser" -msgstr "" -"Adwaita-demo, GTK-demo, GTK-miniprogramsfabrikk, og GTK-ikonutforsker lagt " -"til" - -#: data/app.metainfo.xml:163 -msgid "The Console can be collapsed by resizing it" -msgstr "Konsollen kan nå sammenfoldes ved å endre dens størrelse" - -#: data/app.metainfo.xml:164 -msgid "Prevent system.exit from quitting Workbench" -msgstr "Forhindring av at system.exit avslutter Workbench" - -#: data/app.metainfo.xml:165 -msgid "Allow calling GObject.registerClass multiple times" -msgstr "Påkalling av GObject.registerClass flere ganger tillatt" - -#: data/app.metainfo.xml:166 -msgid "Prevent crash caused by using non GtkBuildable objects" -msgstr "Forhindring av krasj forårsaket av objekter som ikke er «GtkBuildable»" - -#: data/app.metainfo.xml:167 -msgid "Allow using DBus and Gio.Application" -msgstr "Bruk av DBus og Gio.Application tillatt" - -#: data/app.metainfo.xml:168 -msgid "Allow using network" -msgstr "Bruk av nettverk tillatt" - -#: data/app.metainfo.xml:169 -msgid "Enable GtkWindow objects preview" -msgstr "Forhåndsvising av GtkWindow-objekter" - -#: data/app.metainfo.xml:176 -#, fuzzy -msgid "Take a png screenshot of the preview" -msgstr "Mulighet til å lage PNG-skjermavbildning av forhåndsvisningen" - -#: data/app.metainfo.xml:177 -msgid "The console is now resizable" -msgstr "Det er nå mulig å endre størrelsen på konsollen" - -#: data/app.metainfo.xml:178 -msgid "Redesign the dark/light mode switcher" -msgstr "Bytting til lys/mørk drakt redesignet" - -#: data/app.metainfo.xml:179 -msgid "Show platform and dependencies in about dialog" -msgstr "Plattform og avhengigheter vis i «Om»" - -#: data/app.metainfo.xml:180 -msgid "Update to GNOME platform 42" -msgstr "Oppgradering til GNOME-plattform 42" - -#: data/app.metainfo.xml:181 -msgid "Various fixes" -msgstr "Forskjellige feilfikser" - -#: data/app.metainfo.xml:187 -msgid "This is the first release of Workbench. We hope you like it." -msgstr "Første utgave av Workbench. Håper du liker det." - -#: src/window.js:371 -msgid "The demo has been loaded" -msgstr "" - -#: src/window.js:372 src/window.js:453 src/shortcutsWindow.blp:46 -msgid "Undo" -msgstr "Angre" - -#: src/window.js:445 -msgid "This file cannot be loaded" -msgstr "" - -#: src/window.js:452 -msgid "The file has been loaded" -msgstr "" - -#. TRANSLATORS: eg. 'Translator Name ' or 'Translator Name https://website.example' -#: src/about.js:39 -msgid "translator-credits" -msgstr "Allan Nordhøy " - -#: src/about.js:52 -msgid "Contributors" -msgstr "" - -#: src/actions.js:53 src/shortcutsWindow.blp:21 -msgid "Import File" -msgstr "Importer fil" - -#: src/actions.js:147 -#, fuzzy -msgid "All supported" -msgstr "Alle støttes" - -#: src/window.blp:15 -#, fuzzy -msgid "_Library" -msgstr "Bibliotek" - -#: src/window.blp:19 -#, fuzzy -msgid "Open Library of Demos and Examples (Ctrl+Shift+O)" -msgstr "Åpne bibliotek med demoer og eksempler (Ctrl+Shift+O)" - -#: src/window.blp:37 -#, fuzzy -msgid "_Code" -msgstr "Kode" - -#: src/window.blp:54 -#, fuzzy -msgid "_Style" -msgstr "Stil" - -#: src/window.blp:71 -#, fuzzy -msgid "_UI" -msgstr "Grensesnitt" - -#: src/window.blp:88 -#, fuzzy -msgid "_Preview" -msgstr "Forhåndsvis" - -#: src/window.blp:130 -msgid "Code" -msgstr "Kode" - -#: src/window.blp:146 -msgid "Switch document" -msgstr "Bytt dokument" - -#: src/window.blp:154 -msgid "_Run" -msgstr "_Kjør" - -#: src/window.blp:158 -msgid "Run (Ctrl+⏎)" -msgstr "Kjør (Ctrl+⏎)" - -#: src/window.blp:218 -msgid "Style CSS" -msgstr "CSS-stil" - -#: src/window.blp:257 -msgid "UI" -msgstr "Grensesnitt" - -#: src/window.blp:273 -msgid "Convert and switch syntax" -msgstr "" - -#: src/window.blp:277 -#, fuzzy -msgid "Informaton about Blueprint" -msgstr "Konverter til Blueprint" - -#: src/window.blp:289 src/window.blp:291 -msgid "Convert to XML" -msgstr "Konverter til XML" - -#: src/window.blp:300 src/window.blp:302 -msgid "Convert to Blueprint" -msgstr "Konverter til Blueprint" - -#: src/window.blp:366 -msgid "Preview" -msgstr "Forhåndsvis" - -#: src/window.blp:376 -msgid "Fill" -msgstr "" - -#: src/window.blp:377 -msgid "Center" -msgstr "" - -#: src/window.blp:380 -#, fuzzy -msgid "Select Preview mode" -msgstr "Lukk forhåndsvisningsvindu" - -#: src/window.blp:386 src/window.blp:388 -msgid "Take Screenshot of Preview" -msgstr "Utfør skjermavbildning av forhåndsvisning" - -#: src/window.blp:420 src/window.blp:438 -msgid "Windowed Preview" -msgstr "Vindusbasert forhåndsvisning" - -#: src/window.blp:421 src/window.blp:439 -#, fuzzy -msgid "" -"This interface can only be previewed as a separate window.\n" -"We recommend using “Always on Top”." -msgstr "" -"Dette grensesnittet kan kun forhåndsvises som eget vindu.\n" -"«Alltid øverst» anbefales." - -#: src/window.blp:428 -msgid "Show Preview Window" -msgstr "Vis forhåndsvisningsvindu" - -#: src/window.blp:446 -msgid "Close Preview Window" -msgstr "Lukk forhåndsvisningsvindu" - -#: src/window.blp:481 -#, fuzzy -msgid "C_onsole" -msgstr "Konsoll" - -#: src/window.blp:485 -msgid "Show logs (Ctrl+Shift+K)" -msgstr "Vis loggføring (Ctrl+Shift+K)" - -#: src/window.blp:491 -msgid "_Inspector" -msgstr "_Inspektør" - -#: src/window.blp:494 -msgid "Open GTK Inspector (Ctrl+Shift+I)" -msgstr "Åpne GTK-inspektør (Ctrl+Shift+I)" - -#: src/window.blp:505 -msgid "Cl_ear" -msgstr "T_øm" - -#: src/window.blp:509 -msgid "Clear console (Ctrl+K)" -msgstr "Tøm konsoll (Ctrl+K)" - -#: src/window.blp:536 -msgid "Future versions may have breaking syntax." -msgstr "" - -#: src/window.blp:537 -msgid "" -"Blueprint is\n" -"Experimental" -msgstr "" - -#: src/window.blp:541 -#, fuzzy -msgid "Documentation" -msgstr "Utviklerdokumentasjon" - -#: src/window.blp:556 -msgid "Import File…" -msgstr "Importer fil …" - -#: src/window.blp:562 -msgid "Bookmarks" -msgstr "Bokmerker" - -#: src/window.blp:564 -msgid "Learn" -msgstr "Lær mer" - -#: src/window.blp:567 -msgid "Developer Documentation" -msgstr "Utviklerdokumentasjon" - -#: src/window.blp:574 -msgid "Human Interface Guidelines" -msgstr "Retningslinjer for menneskelige grensesnitt" - -#: src/window.blp:580 -msgid "JavaScript" -msgstr "JavaScript" - -#: src/window.blp:586 -msgid "Vala" -msgstr "Vala" - -#: src/window.blp:592 -msgid "Blueprint" -msgstr "Blueprint" - -#: src/window.blp:599 -msgid "Get help" -msgstr "Få hjelp" - -#: src/window.blp:602 -msgid "Discourse" -msgstr "Discourse" - -#: src/window.blp:608 -msgid "Matrix" -msgstr "Matrix" - -#: src/window.blp:616 -#, fuzzy -msgid "Icon Library" -msgstr "Bibliotek" - -#: src/window.blp:621 -msgid "Platform Tools" -msgstr "Plattformsverktøy" - -#: src/window.blp:624 -msgid "Adwaita Demo" -msgstr "Adwaita-demo" - -#: src/window.blp:630 -msgid "GTK Demo" -msgstr "GTK-demo" - -#: src/window.blp:636 -msgid "GTK Widget Factory" -msgstr "GTK-miniprogramsfabrikk" - -#: src/window.blp:644 src/shortcutsWindow.blp:54 -msgid "Keyboard Shortcuts" -msgstr "Tastatursnarveier" - -#: src/window.blp:649 -msgid "About Workbench" -msgstr "Om Workbench" - -#: src/shortcutsWindow.blp:11 -#, fuzzy -msgid "Run Code" -msgstr "Kode" - -#: src/shortcutsWindow.blp:16 -msgid "Format" -msgstr "" - -#: src/shortcutsWindow.blp:26 -#, fuzzy -msgid "Open Library" -msgstr "Bibliotek" - -#: src/shortcutsWindow.blp:31 -#, fuzzy -msgid "Toggle Console" -msgstr "Konsoll" - -#: src/shortcutsWindow.blp:36 -msgid "Clear Console" -msgstr "Tøm konsoll" - -#: src/shortcutsWindow.blp:42 -msgid "Inspector" -msgstr "Inspektør" - -#: src/shortcutsWindow.blp:50 -msgid "Redo" -msgstr "Gjenta" - -#: src/shortcutsWindow.blp:58 -msgid "Quit" -msgstr "Avslutt" - -#: src/Library/Library.blp:7 -msgid "Library" -msgstr "Bibliotek" - -#: troll/src/widgets/ThemeSelector.blp:22 -#: troll/src/widgets/ThemeSelector.blp:25 -msgid "Follow system style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:41 -#: troll/src/widgets/ThemeSelector.blp:44 -msgid "Light style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:60 -#: troll/src/widgets/ThemeSelector.blp:63 -msgid "Dark style" -msgstr "" - -#~ msgid "About My App" -#~ msgstr "Om programmet" - -#~ msgid "" -#~ "Learn and prototype with\n" -#~ "GNOME technologies" -#~ msgstr "" -#~ "Lær om og lag prototyper av\n" -#~ "GNOME-teknologi" - -#~ msgid "sun-symbolic" -#~ msgstr "sun-symbolic" - -#~ msgid "Use Light mode" -#~ msgstr "Ifør lys drakt" - -#~ msgid "workbench-moon-rounded-symbolic" -#~ msgstr "workbench-moon-rounded-symbolic" - -#~ msgid "Use Dark mode" -#~ msgstr "Ifør mørk drakt" - -#, fuzzy -#~ msgid "Are you sure you want to discard your changes?" -#~ msgstr "Forkast endringene dine?" - -#~ msgid "" -#~ "Side by side editors with live preview on the right and console in the " -#~ "bottom" -#~ msgstr "" -#~ "Redigering side-ved-side, med sanntidsforhåndsvising på høyresiden og " -#~ "konsoll på bunnen" - -#~ msgid "Clear" -#~ msgstr "Tøm" diff --git a/po/nl.po b/po/nl.po deleted file mode 100644 index 1131134a8..000000000 --- a/po/nl.po +++ /dev/null @@ -1,754 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR Sonny Piers -# This file is distributed under the same license as the re.sonny.Workbench package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: re.sonny.Workbench\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-18 13:24+0100\n" -"PO-Revision-Date: 2022-06-10 11:14+0000\n" -"Last-Translator: Philip Goto \n" -"Language-Team: Dutch \n" -"Language: nl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.13-dev\n" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:4 -msgid "Workbench" -msgstr "Workbench" - -#: data/app.desktop:5 data/app.metainfo.xml:10 -msgid "Learn and prototype with GNOME technologies" -msgstr "Leer en experimenteer met Gnome-technologieën" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:12 -msgid "CSS;JavaScript;GJS;Blueprint;builder;Vala;" -msgstr "CSS;JavaScript;GJS;Blueprint;builder;Vala;" - -#: data/app.metainfo.xml:13 -msgid "" -"Workbench goal is to let you experiment with GNOME technologies, no matter " -"if tinkering for the first time or building and testing a GTK user interface." -msgstr "" -"Het doel van Workbench is om u te laten experimenteren met Gnome-" -"technologieën, of u nu voor de eerste keer sleutelt, of een GTK-interface " -"bouwt en test." - -#: data/app.metainfo.xml:14 -msgid "Among other things, Workbench comes with" -msgstr "Workbench bevat onder andere de volgende functies:" - -#: data/app.metainfo.xml:16 -msgid "realtime GTK/CSS preview" -msgstr "Realtime GTK-/CSS-voorvertoning" - -#: data/app.metainfo.xml:17 -msgid "library of examples" -msgstr "Een bibliotheek met voorbeelden" - -#: data/app.metainfo.xml:18 -msgid "1000+ icons" -msgstr "" - -#: data/app.metainfo.xml:19 -#, fuzzy -msgid "JavaScript and Vala support" -msgstr "JavaScript en Vala werken zonder extra configuratie" - -#: data/app.metainfo.xml:20 -msgid "XML and Blueprint for describing user interface" -msgstr "XML en Blueprint voor het beschrijven van de gebruikersinterface" - -#: data/app.metainfo.xml:21 -msgid "syntax highlighting, undo/redo, autosave, session restore" -msgstr "" -"Syntaxis-accentuering, ongedaan maken/opnieuw, automatisch opslaan, sessie " -"herstellen" - -#: data/app.metainfo.xml:22 -msgid "code formatter" -msgstr "Code-formateerder" - -#: data/app.metainfo.xml:23 -msgid "console logs" -msgstr "Console-logboeken" - -#: data/app.metainfo.xml:52 -msgid "Use Vala Language Server for diagnostics" -msgstr "" - -#: data/app.metainfo.xml:53 -#, fuzzy -msgid "Move Icon Browser to the main application menu" -msgstr "Bladwijzers naar het hoofdmenu verplaatst" - -#: data/app.metainfo.xml:54 -msgid "Reset window preview on close" -msgstr "" - -#: data/app.metainfo.xml:55 -msgid "Add a warning about Blueprint being experimental" -msgstr "" - -#: data/app.metainfo.xml:56 -msgid "Fix loading and running code with Blueprint UI" -msgstr "" - -#: data/app.metainfo.xml:57 -msgid "Fix crash when using abstract UI types" -msgstr "" - -#: data/app.metainfo.xml:58 -msgid "Fix \"No UI definition loaded yet.\" preview error when using Vala" -msgstr "" - -#: data/app.metainfo.xml:59 -msgid "Fix error message when hovering text with no diagnostic" -msgstr "" - -#: data/app.metainfo.xml:60 -msgid "VTE 0.70.1" -msgstr "" - -#: data/app.metainfo.xml:67 -msgid "GNOME 43" -msgstr "" - -#: data/app.metainfo.xml:68 -msgid "Display CSS errors inline" -msgstr "" - -#: data/app.metainfo.xml:69 -msgid "Fix responsiveness when working on large Blueprint files" -msgstr "" - -#: data/app.metainfo.xml:70 -msgid "Use AdwAboutWindow" -msgstr "" - -#: data/app.metainfo.xml:71 -#, fuzzy -msgid "Blueprint 0.4.0" -msgstr "Blueprint" - -#: data/app.metainfo.xml:72 -msgid "VTE 0.70.0" -msgstr "" - -#: data/app.metainfo.xml:73 -#, fuzzy -msgid "Various bug and crash fixes" -msgstr "Verscheidene foutoplossingen" - -#: data/app.metainfo.xml:80 -msgid "Show tooltip hints in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:81 -#, fuzzy -msgid "Improve XML formatter" -msgstr "Code-formateerder" - -#: data/app.metainfo.xml:82 -msgid "Add Ctrl+Shift+Return shortcut to format" -msgstr "" - -#: data/app.metainfo.xml:83 -msgid "Apply Style CSS to windowed preview" -msgstr "" - -#: data/app.metainfo.xml:84 data/app.metainfo.xml:129 -msgid "Improve application design" -msgstr "Toepassingsontwerp verbeterd" - -#: data/app.metainfo.xml:85 -msgid "Prevent crash for templates with GtkWidget parent" -msgstr "" - -#: data/app.metainfo.xml:86 -#, fuzzy -msgid "Update VTE and icon-development-kit" -msgstr "Alle pictogrammen van icon-development-kit bijgevoegd" - -#: data/app.metainfo.xml:93 -msgid "Underline errors in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:94 -msgid "Fix bugs and crashes" -msgstr "" - -#: data/app.metainfo.xml:102 -msgid "Add an Icon Browser to find the right icons for your prototypes" -msgstr "" - -#: data/app.metainfo.xml:103 -msgid "Add a Platform tools Library demo" -msgstr "" - -#: data/app.metainfo.xml:104 -msgid "Improve the style switcher" -msgstr "" - -#: data/app.metainfo.xml:105 -msgid "Replace confirmation dialogs with toasts and undo" -msgstr "" - -#: data/app.metainfo.xml:106 -msgid "Support updates on root objects" -msgstr "" - -#: data/app.metainfo.xml:107 -#, fuzzy -msgid "Support binding signal handlers from UI" -msgstr "Ondersteuning toegevoegd voor het voorvertonen van signaalafhandelaars" - -#: data/app.metainfo.xml:108 -msgid "Add APIs to allow using templates from Code" -msgstr "" - -#: data/app.metainfo.xml:109 -#, fuzzy -msgid "Add Center/Fill preview modes for templates" -msgstr "Ondersteuning toegevoegd voor het voorvertonen van sjablonen" - -#: data/app.metainfo.xml:111 -msgid "Open external preview with the dimensions of the internal preview" -msgstr "" - -#: data/app.metainfo.xml:112 -msgid "64 new icons available" -msgstr "" - -#: data/app.metainfo.xml:113 -msgid "Update Blueprint to 0.2.0" -msgstr "" - -#: data/app.metainfo.xml:114 -msgid "Fix empty preview on first load" -msgstr "" - -#: data/app.metainfo.xml:115 -msgid "Fix style scheme switch when system preference is light" -msgstr "" - -#: data/app.metainfo.xml:116 -msgid "Remove grid pattern on the source editors" -msgstr "" - -#: data/app.metainfo.xml:122 -msgid "Highlights" -msgstr "Hoogtepunten" - -#: data/app.metainfo.xml:124 -msgid "Add Blueprint markup syntax for UI" -msgstr "Blueprint-opmaaksyntaxis toegevoegd voor interfaces" - -#: data/app.metainfo.xml:125 -msgid "Add Vala programming language for Code" -msgstr "Vala-programmeertaal toegevoegd voor code" - -#: data/app.metainfo.xml:126 -msgid "Add support for previewing templates" -msgstr "Ondersteuning toegevoegd voor het voorvertonen van sjablonen" - -#: data/app.metainfo.xml:127 -msgid "Add support for previewing signal handlers" -msgstr "Ondersteuning toegevoegd voor het voorvertonen van signaalafhandelaars" - -#: data/app.metainfo.xml:128 -msgid "Include all icons from icon-development-kit" -msgstr "Alle pictogrammen van icon-development-kit bijgevoegd" - -#: data/app.metainfo.xml:130 -msgid "Distribute Library examples under CC0-1.0" -msgstr "Bibliotheekvoorbeelden uitgebracht onder CC0-1.0" - -#: data/app.metainfo.xml:131 -msgid "Respect system preference for color scheme" -msgstr "Systeemvoorkeur voor kleurenschema wordt respecteerd" - -#: data/app.metainfo.xml:132 -msgid "Add proper light/dark color schemes for Console" -msgstr "Degelijke lichte en donkere kleurenschema's voor console toegevoegd" - -#: data/app.metainfo.xml:133 -#, fuzzy -msgid "Fix error when importing files" -msgstr "Fout bij openen bestand opgelost" - -#: data/app.metainfo.xml:135 -msgid "Other changes" -msgstr "Andere wijzigingen" - -#: data/app.metainfo.xml:137 -msgid "Silence platform tools" -msgstr "Platformgereedschap gedempt" - -#: data/app.metainfo.xml:138 -msgid "Remove GTK Icon browser platform tool" -msgstr "" - -#: data/app.metainfo.xml:139 -msgid "Make Library examples only open relevant panels" -msgstr "" -"Ervoor gezorgd dat bibliotheekvoorbeelden alleen relevante panelen openen" - -#: data/app.metainfo.xml:140 -msgid "Always open the Console when opening a Library example" -msgstr "" -"Console wordt altijd geopend wanneer een bibliotheekvoorbeeld wordt geopend" - -#: data/app.metainfo.xml:141 -msgid "Prevent running Code if the panel is not visible" -msgstr "Code wordt weerhouden van uitvoeren als het paneel niet zichtbaar is" - -#: data/app.metainfo.xml:142 -msgid "Add icons and mnemonics for all buttons" -msgstr "Pictogrammen en toetsaanwijzingen voor alle knoppen toegevoegd" - -#: data/app.metainfo.xml:143 -msgid "Move Bookmarks to the main menu" -msgstr "Bladwijzers naar het hoofdmenu verplaatst" - -#: data/app.metainfo.xml:144 -msgid "Enable scrollbar and kinetic scrolling on Console" -msgstr "Scrollbalk en kinetisch scrollen toegevoegd aan console" - -#: data/app.metainfo.xml:145 -msgid "Improve Library examples" -msgstr "Bibliotheekvoorbeelden verbeterd" - -#: data/app.metainfo.xml:146 -msgid "Performance optimizations" -msgstr "Prestatieverbeteringen" - -#: data/app.metainfo.xml:147 -msgid "Show a placeholder when all panels are invisible" -msgstr "Een placeholder wordt getoond wanneer alle panelen onzichtbaar zijn" - -#: data/app.metainfo.xml:148 -msgid "Crash fixes" -msgstr "Crashoplossingen" - -#: data/app.metainfo.xml:149 -msgid "Use org.gnome.Sdk runtime" -msgstr "De runtime org.gnome.Sdk gebruikt" - -#: data/app.metainfo.xml:156 -msgid "Add a Library of examples" -msgstr "Bibliotheek met voorbeelden toegevoegd" - -#: data/app.metainfo.xml:157 -msgid "Add an example of WebSocket client" -msgstr "Voorbeeld van WebSocket-cliënt toegevoegd" - -#: data/app.metainfo.xml:158 -msgid "Add an example of toasts" -msgstr "Toasts-voorbeeld toegevoegd" - -#: data/app.metainfo.xml:159 -msgid "Add an example of application window" -msgstr "Voorbeeld van toepassingsvenster toegevoegd" - -#: data/app.metainfo.xml:160 -msgid "Add an example of desktop notification" -msgstr "Voorbeeld van bureaubladnotificatie toegevoegd" - -#: data/app.metainfo.xml:162 -msgid "Add Adwaita Demo, GTK Demo, GTK Widget Factory and GTK Icon Browser" -msgstr "" -"Adwaita-demo, GTK-demo, GTK-widgetfabriek en GTK-pictogrambrowser toegevoegd" - -#: data/app.metainfo.xml:163 -msgid "The Console can be collapsed by resizing it" -msgstr "De console kan worden ingevouwen door de grootte aan te passen" - -#: data/app.metainfo.xml:164 -msgid "Prevent system.exit from quitting Workbench" -msgstr "Voorkomen dat system.exit Workbench sluit" - -#: data/app.metainfo.xml:165 -msgid "Allow calling GObject.registerClass multiple times" -msgstr "GObject.registerClass meerdere keren aanroepen wordt toegestaan" - -#: data/app.metainfo.xml:166 -msgid "Prevent crash caused by using non GtkBuildable objects" -msgstr "Crash voorkomen door het gebruik van niet-GtkBuildable-objecten" - -#: data/app.metainfo.xml:167 -msgid "Allow using DBus and Gio.Application" -msgstr "Gebruik van DBus en Gio.Application toegestaan" - -#: data/app.metainfo.xml:168 -msgid "Allow using network" -msgstr "Gebruik van netwerk toegestaan" - -#: data/app.metainfo.xml:169 -msgid "Enable GtkWindow objects preview" -msgstr "GtkWindow-objectvoorvertoning toegestaan" - -#: data/app.metainfo.xml:176 -msgid "Take a png screenshot of the preview" -msgstr "Een png-schermafdruk van het voorbeeld nemen toegestaan" - -#: data/app.metainfo.xml:177 -msgid "The console is now resizable" -msgstr "Het mogelijk gemaakt de grootte van de console te veranderen" - -#: data/app.metainfo.xml:178 -msgid "Redesign the dark/light mode switcher" -msgstr "De schakelaar voor donkere/lichte modus herontworpen" - -#: data/app.metainfo.xml:179 -msgid "Show platform and dependencies in about dialog" -msgstr "Platform en afhankelijkheden aan over-dialoog toegevoegd" - -#: data/app.metainfo.xml:180 -msgid "Update to GNOME platform 42" -msgstr "Geüpdate naar Gnome-platform 42" - -#: data/app.metainfo.xml:181 -msgid "Various fixes" -msgstr "Verscheidene foutoplossingen" - -#: data/app.metainfo.xml:187 -msgid "This is the first release of Workbench. We hope you like it." -msgstr "" -"Dit is de eerste uitgave van Workbench. We hopen dat u er tevreden mee bent." - -#: src/window.js:371 -msgid "The demo has been loaded" -msgstr "" - -#: src/window.js:372 src/window.js:453 src/shortcutsWindow.blp:46 -msgid "Undo" -msgstr "Ongedaan maken" - -#: src/window.js:445 -msgid "This file cannot be loaded" -msgstr "" - -#: src/window.js:452 -msgid "The file has been loaded" -msgstr "" - -#. TRANSLATORS: eg. 'Translator Name ' or 'Translator Name https://website.example' -#: src/about.js:39 -msgid "translator-credits" -msgstr "Philip Goto" - -#: src/about.js:52 -msgid "Contributors" -msgstr "" - -#: src/actions.js:53 src/shortcutsWindow.blp:21 -msgid "Import File" -msgstr "Bestand importeren" - -#: src/actions.js:147 -msgid "All supported" -msgstr "Alle ondersteunde" - -#: src/window.blp:15 -msgid "_Library" -msgstr "_Bibliotheek" - -#: src/window.blp:19 -msgid "Open Library of Demos and Examples (Ctrl+Shift+O)" -msgstr "Bibliotheek met demo's en voorbeelden openen (Ctrl+Shift+O)" - -#: src/window.blp:37 -msgid "_Code" -msgstr "_Code" - -#: src/window.blp:54 -msgid "_Style" -msgstr "_Stijl" - -#: src/window.blp:71 -msgid "_UI" -msgstr "_Interface" - -#: src/window.blp:88 -msgid "_Preview" -msgstr "_Voorbeeld" - -#: src/window.blp:130 -msgid "Code" -msgstr "Code" - -#: src/window.blp:146 -msgid "Switch document" -msgstr "Van document wisselen" - -#: src/window.blp:154 -msgid "_Run" -msgstr "_Uitvoeren" - -#: src/window.blp:158 -msgid "Run (Ctrl+⏎)" -msgstr "Uitvoeren (Ctrl+⏎)" - -#: src/window.blp:218 -msgid "Style CSS" -msgstr "Stijl-CSS" - -#: src/window.blp:257 -msgid "UI" -msgstr "Interface" - -#: src/window.blp:273 -msgid "Convert and switch syntax" -msgstr "" - -#: src/window.blp:277 -#, fuzzy -msgid "Informaton about Blueprint" -msgstr "Naar Blueprint converteren" - -#: src/window.blp:289 src/window.blp:291 -msgid "Convert to XML" -msgstr "Naar XML converteren" - -#: src/window.blp:300 src/window.blp:302 -msgid "Convert to Blueprint" -msgstr "Naar Blueprint converteren" - -#: src/window.blp:366 -msgid "Preview" -msgstr "Voorbeeld" - -#: src/window.blp:376 -msgid "Fill" -msgstr "" - -#: src/window.blp:377 -msgid "Center" -msgstr "" - -#: src/window.blp:380 -#, fuzzy -msgid "Select Preview mode" -msgstr "Voorbeeldvenster sluiten" - -#: src/window.blp:386 src/window.blp:388 -msgid "Take Screenshot of Preview" -msgstr "Schermafdruk van voorbeeld nemen" - -#: src/window.blp:420 src/window.blp:438 -msgid "Windowed Preview" -msgstr "Voorbeeld in venster" - -#: src/window.blp:421 src/window.blp:439 -#, fuzzy -msgid "" -"This interface can only be previewed as a separate window.\n" -"We recommend using “Always on Top”." -msgstr "" -"Deze interface kan alleen worden voorvertoond als apart venster.\n" -"We bevelen aan “Altijd voorop” te gebruiken." - -#: src/window.blp:428 -msgid "Show Preview Window" -msgstr "Voorbeeldvenster tonen" - -#: src/window.blp:446 -msgid "Close Preview Window" -msgstr "Voorbeeldvenster sluiten" - -#: src/window.blp:481 -msgid "C_onsole" -msgstr "_Console" - -#: src/window.blp:485 -msgid "Show logs (Ctrl+Shift+K)" -msgstr "Logboeken tonen (Ctrl+Shift+K)" - -#: src/window.blp:491 -msgid "_Inspector" -msgstr "_Inspector" - -#: src/window.blp:494 -msgid "Open GTK Inspector (Ctrl+Shift+I)" -msgstr "GTK-Inspector openen (Ctrl+Shift+I)" - -#: src/window.blp:505 -msgid "Cl_ear" -msgstr "_Wissen" - -#: src/window.blp:509 -msgid "Clear console (Ctrl+K)" -msgstr "Console wissen (Ctrl+K)" - -#: src/window.blp:536 -msgid "Future versions may have breaking syntax." -msgstr "" - -#: src/window.blp:537 -msgid "" -"Blueprint is\n" -"Experimental" -msgstr "" - -#: src/window.blp:541 -#, fuzzy -msgid "Documentation" -msgstr "Ontwikkelaarsdocumentatie" - -#: src/window.blp:556 -msgid "Import File…" -msgstr "Bestand importeren…" - -#: src/window.blp:562 -msgid "Bookmarks" -msgstr "Bladwijzers" - -#: src/window.blp:564 -msgid "Learn" -msgstr "Leren" - -#: src/window.blp:567 -msgid "Developer Documentation" -msgstr "Ontwikkelaarsdocumentatie" - -#: src/window.blp:574 -msgid "Human Interface Guidelines" -msgstr "Human Interface Guidelines" - -#: src/window.blp:580 -msgid "JavaScript" -msgstr "JavaScript" - -#: src/window.blp:586 -msgid "Vala" -msgstr "Vala" - -#: src/window.blp:592 -msgid "Blueprint" -msgstr "Blueprint" - -#: src/window.blp:599 -msgid "Get help" -msgstr "Hulp verkrijgen" - -#: src/window.blp:602 -msgid "Discourse" -msgstr "Discourse" - -#: src/window.blp:608 -msgid "Matrix" -msgstr "Matrix" - -#: src/window.blp:616 -#, fuzzy -msgid "Icon Library" -msgstr "Bibliotheek openen" - -#: src/window.blp:621 -msgid "Platform Tools" -msgstr "Platformgereedschap" - -#: src/window.blp:624 -msgid "Adwaita Demo" -msgstr "Adwaita-demo" - -#: src/window.blp:630 -msgid "GTK Demo" -msgstr "GTK-demo" - -#: src/window.blp:636 -msgid "GTK Widget Factory" -msgstr "GTK-widgetfabriek" - -#: src/window.blp:644 src/shortcutsWindow.blp:54 -msgid "Keyboard Shortcuts" -msgstr "Sneltoetsen" - -#: src/window.blp:649 -msgid "About Workbench" -msgstr "Over Workbench" - -#: src/shortcutsWindow.blp:11 -msgid "Run Code" -msgstr "Code uitvoeren" - -#: src/shortcutsWindow.blp:16 -msgid "Format" -msgstr "" - -#: src/shortcutsWindow.blp:26 -msgid "Open Library" -msgstr "Bibliotheek openen" - -#: src/shortcutsWindow.blp:31 -msgid "Toggle Console" -msgstr "Console omschakelen" - -#: src/shortcutsWindow.blp:36 -msgid "Clear Console" -msgstr "Console wissen" - -#: src/shortcutsWindow.blp:42 -msgid "Inspector" -msgstr "Inspector" - -#: src/shortcutsWindow.blp:50 -msgid "Redo" -msgstr "Opnieuw" - -#: src/shortcutsWindow.blp:58 -msgid "Quit" -msgstr "Sluiten" - -#: src/Library/Library.blp:7 -msgid "Library" -msgstr "Bibliotheek" - -#: troll/src/widgets/ThemeSelector.blp:22 -#: troll/src/widgets/ThemeSelector.blp:25 -msgid "Follow system style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:41 -#: troll/src/widgets/ThemeSelector.blp:44 -msgid "Light style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:60 -#: troll/src/widgets/ThemeSelector.blp:63 -msgid "Dark style" -msgstr "" - -#~ msgid "About My App" -#~ msgstr "Over mijn app" - -#~ msgid "" -#~ "Learn and prototype with\n" -#~ "GNOME technologies" -#~ msgstr "" -#~ "Leer en experimenteer met\n" -#~ "Gnome-technologieën" - -#~ msgid "sun-symbolic" -#~ msgstr "sun-symbolic" - -#~ msgid "Use Light mode" -#~ msgstr "Lichte modus gebruiken" - -#~ msgid "workbench-moon-rounded-symbolic" -#~ msgstr "workbench-moon-rounded-symbolic" - -#~ msgid "Use Dark mode" -#~ msgstr "Donkere modus gebruiken" - -#~ msgid "Are you sure you want to discard your changes?" -#~ msgstr "Weet u zeker dat u de wijzigingen wilt verwerpen?" diff --git a/po/pl.po b/po/pl.po deleted file mode 100644 index 85f45e3ca..000000000 --- a/po/pl.po +++ /dev/null @@ -1,709 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the re.sonny.Workbench package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: re.sonny.Workbench\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-18 13:24+0100\n" -"PO-Revision-Date: 2022-09-19 11:22+0000\n" -"Last-Translator: MicroPanda123 \n" -"Language-Team: Polish \n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.14.1\n" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:4 -msgid "Workbench" -msgstr "" - -#: data/app.desktop:5 data/app.metainfo.xml:10 -msgid "Learn and prototype with GNOME technologies" -msgstr "Ucz się i prototypuj z technologiami GNOME" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:12 -msgid "CSS;JavaScript;GJS;Blueprint;builder;Vala;" -msgstr "" - -#: data/app.metainfo.xml:13 -msgid "" -"Workbench goal is to let you experiment with GNOME technologies, no matter " -"if tinkering for the first time or building and testing a GTK user interface." -msgstr "" -"Celem Workbench jest pozwolenie ci na eksperymentowanie z technologiami " -"GNOME, nie ważne czy majsterkujesz czy budujesz i testujesz interfejs GTK." - -#: data/app.metainfo.xml:14 -msgid "Among other things, Workbench comes with" -msgstr "Między innymi, Workbench jest dostarczane z" - -#: data/app.metainfo.xml:16 -msgid "realtime GTK/CSS preview" -msgstr "podgląd GTK/CSS w czasie rzeczywistym" - -#: data/app.metainfo.xml:17 -msgid "library of examples" -msgstr "biblioteką przykładów" - -#: data/app.metainfo.xml:18 -msgid "1000+ icons" -msgstr "" - -#: data/app.metainfo.xml:19 -#, fuzzy -msgid "JavaScript and Vala support" -msgstr "JavaScript i Vala działają bez potrzeby konfiguracji" - -#: data/app.metainfo.xml:20 -msgid "XML and Blueprint for describing user interface" -msgstr "XML i Blueprint do definiowania interfejsu użytkownika" - -#: data/app.metainfo.xml:21 -msgid "syntax highlighting, undo/redo, autosave, session restore" -msgstr "" - -#: data/app.metainfo.xml:22 -msgid "code formatter" -msgstr "" - -#: data/app.metainfo.xml:23 -msgid "console logs" -msgstr "" - -#: data/app.metainfo.xml:52 -msgid "Use Vala Language Server for diagnostics" -msgstr "" - -#: data/app.metainfo.xml:53 -msgid "Move Icon Browser to the main application menu" -msgstr "" - -#: data/app.metainfo.xml:54 -msgid "Reset window preview on close" -msgstr "" - -#: data/app.metainfo.xml:55 -msgid "Add a warning about Blueprint being experimental" -msgstr "" - -#: data/app.metainfo.xml:56 -msgid "Fix loading and running code with Blueprint UI" -msgstr "" - -#: data/app.metainfo.xml:57 -msgid "Fix crash when using abstract UI types" -msgstr "" - -#: data/app.metainfo.xml:58 -msgid "Fix \"No UI definition loaded yet.\" preview error when using Vala" -msgstr "" - -#: data/app.metainfo.xml:59 -msgid "Fix error message when hovering text with no diagnostic" -msgstr "" - -#: data/app.metainfo.xml:60 -msgid "VTE 0.70.1" -msgstr "" - -#: data/app.metainfo.xml:67 -msgid "GNOME 43" -msgstr "" - -#: data/app.metainfo.xml:68 -msgid "Display CSS errors inline" -msgstr "" - -#: data/app.metainfo.xml:69 -msgid "Fix responsiveness when working on large Blueprint files" -msgstr "" - -#: data/app.metainfo.xml:70 -msgid "Use AdwAboutWindow" -msgstr "" - -#: data/app.metainfo.xml:71 -msgid "Blueprint 0.4.0" -msgstr "" - -#: data/app.metainfo.xml:72 -msgid "VTE 0.70.0" -msgstr "" - -#: data/app.metainfo.xml:73 -msgid "Various bug and crash fixes" -msgstr "" - -#: data/app.metainfo.xml:80 -msgid "Show tooltip hints in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:81 -msgid "Improve XML formatter" -msgstr "" - -#: data/app.metainfo.xml:82 -msgid "Add Ctrl+Shift+Return shortcut to format" -msgstr "" - -#: data/app.metainfo.xml:83 -msgid "Apply Style CSS to windowed preview" -msgstr "" - -#: data/app.metainfo.xml:84 data/app.metainfo.xml:129 -msgid "Improve application design" -msgstr "Polepsz design aplikacji" - -#: data/app.metainfo.xml:85 -msgid "Prevent crash for templates with GtkWidget parent" -msgstr "" - -#: data/app.metainfo.xml:86 -#, fuzzy -msgid "Update VTE and icon-development-kit" -msgstr "Dodaj wszystkie ikony z icon-development-kit" - -#: data/app.metainfo.xml:93 -msgid "Underline errors in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:94 -msgid "Fix bugs and crashes" -msgstr "" - -#: data/app.metainfo.xml:102 -msgid "Add an Icon Browser to find the right icons for your prototypes" -msgstr "" - -#: data/app.metainfo.xml:103 -msgid "Add a Platform tools Library demo" -msgstr "" - -#: data/app.metainfo.xml:104 -msgid "Improve the style switcher" -msgstr "" - -#: data/app.metainfo.xml:105 -msgid "Replace confirmation dialogs with toasts and undo" -msgstr "" - -#: data/app.metainfo.xml:106 -msgid "Support updates on root objects" -msgstr "" - -#: data/app.metainfo.xml:107 -msgid "Support binding signal handlers from UI" -msgstr "" - -#: data/app.metainfo.xml:108 -msgid "Add APIs to allow using templates from Code" -msgstr "" - -#: data/app.metainfo.xml:109 -msgid "Add Center/Fill preview modes for templates" -msgstr "" - -#: data/app.metainfo.xml:111 -msgid "Open external preview with the dimensions of the internal preview" -msgstr "" - -#: data/app.metainfo.xml:112 -msgid "64 new icons available" -msgstr "" - -#: data/app.metainfo.xml:113 -msgid "Update Blueprint to 0.2.0" -msgstr "" - -#: data/app.metainfo.xml:114 -msgid "Fix empty preview on first load" -msgstr "" - -#: data/app.metainfo.xml:115 -msgid "Fix style scheme switch when system preference is light" -msgstr "" - -#: data/app.metainfo.xml:116 -msgid "Remove grid pattern on the source editors" -msgstr "" - -#: data/app.metainfo.xml:122 -msgid "Highlights" -msgstr "" - -#: data/app.metainfo.xml:124 -msgid "Add Blueprint markup syntax for UI" -msgstr "" - -#: data/app.metainfo.xml:125 -msgid "Add Vala programming language for Code" -msgstr "" - -#: data/app.metainfo.xml:126 -msgid "Add support for previewing templates" -msgstr "" - -#: data/app.metainfo.xml:127 -msgid "Add support for previewing signal handlers" -msgstr "" - -#: data/app.metainfo.xml:128 -msgid "Include all icons from icon-development-kit" -msgstr "Dodaj wszystkie ikony z icon-development-kit" - -#: data/app.metainfo.xml:130 -msgid "Distribute Library examples under CC0-1.0" -msgstr "" - -#: data/app.metainfo.xml:131 -msgid "Respect system preference for color scheme" -msgstr "Respektuj preferencje systemowe wobec kolorystyki" - -#: data/app.metainfo.xml:132 -msgid "Add proper light/dark color schemes for Console" -msgstr "" - -#: data/app.metainfo.xml:133 -msgid "Fix error when importing files" -msgstr "" - -#: data/app.metainfo.xml:135 -msgid "Other changes" -msgstr "" - -#: data/app.metainfo.xml:137 -msgid "Silence platform tools" -msgstr "" - -#: data/app.metainfo.xml:138 -msgid "Remove GTK Icon browser platform tool" -msgstr "" - -#: data/app.metainfo.xml:139 -msgid "Make Library examples only open relevant panels" -msgstr "" - -#: data/app.metainfo.xml:140 -msgid "Always open the Console when opening a Library example" -msgstr "" - -#: data/app.metainfo.xml:141 -msgid "Prevent running Code if the panel is not visible" -msgstr "" - -#: data/app.metainfo.xml:142 -msgid "Add icons and mnemonics for all buttons" -msgstr "" - -#: data/app.metainfo.xml:143 -msgid "Move Bookmarks to the main menu" -msgstr "" - -#: data/app.metainfo.xml:144 -msgid "Enable scrollbar and kinetic scrolling on Console" -msgstr "" - -#: data/app.metainfo.xml:145 -msgid "Improve Library examples" -msgstr "" - -#: data/app.metainfo.xml:146 -msgid "Performance optimizations" -msgstr "" - -#: data/app.metainfo.xml:147 -msgid "Show a placeholder when all panels are invisible" -msgstr "" - -#: data/app.metainfo.xml:148 -msgid "Crash fixes" -msgstr "" - -#: data/app.metainfo.xml:149 -msgid "Use org.gnome.Sdk runtime" -msgstr "" - -#: data/app.metainfo.xml:156 -msgid "Add a Library of examples" -msgstr "" - -#: data/app.metainfo.xml:157 -msgid "Add an example of WebSocket client" -msgstr "" - -#: data/app.metainfo.xml:158 -msgid "Add an example of toasts" -msgstr "" - -#: data/app.metainfo.xml:159 -msgid "Add an example of application window" -msgstr "" - -#: data/app.metainfo.xml:160 -msgid "Add an example of desktop notification" -msgstr "" - -#: data/app.metainfo.xml:162 -msgid "Add Adwaita Demo, GTK Demo, GTK Widget Factory and GTK Icon Browser" -msgstr "" - -#: data/app.metainfo.xml:163 -msgid "The Console can be collapsed by resizing it" -msgstr "" - -#: data/app.metainfo.xml:164 -msgid "Prevent system.exit from quitting Workbench" -msgstr "" - -#: data/app.metainfo.xml:165 -msgid "Allow calling GObject.registerClass multiple times" -msgstr "" - -#: data/app.metainfo.xml:166 -msgid "Prevent crash caused by using non GtkBuildable objects" -msgstr "" - -#: data/app.metainfo.xml:167 -msgid "Allow using DBus and Gio.Application" -msgstr "" - -#: data/app.metainfo.xml:168 -msgid "Allow using network" -msgstr "" - -#: data/app.metainfo.xml:169 -msgid "Enable GtkWindow objects preview" -msgstr "" - -#: data/app.metainfo.xml:176 -msgid "Take a png screenshot of the preview" -msgstr "" - -#: data/app.metainfo.xml:177 -msgid "The console is now resizable" -msgstr "" - -#: data/app.metainfo.xml:178 -msgid "Redesign the dark/light mode switcher" -msgstr "" - -#: data/app.metainfo.xml:179 -msgid "Show platform and dependencies in about dialog" -msgstr "" - -#: data/app.metainfo.xml:180 -msgid "Update to GNOME platform 42" -msgstr "" - -#: data/app.metainfo.xml:181 -msgid "Various fixes" -msgstr "" - -#: data/app.metainfo.xml:187 -msgid "This is the first release of Workbench. We hope you like it." -msgstr "" - -#: src/window.js:371 -msgid "The demo has been loaded" -msgstr "" - -#: src/window.js:372 src/window.js:453 src/shortcutsWindow.blp:46 -msgid "Undo" -msgstr "" - -#: src/window.js:445 -msgid "This file cannot be loaded" -msgstr "" - -#: src/window.js:452 -msgid "The file has been loaded" -msgstr "" - -#. TRANSLATORS: eg. 'Translator Name ' or 'Translator Name https://website.example' -#: src/about.js:39 -msgid "translator-credits" -msgstr "" - -#: src/about.js:52 -msgid "Contributors" -msgstr "" - -#: src/actions.js:53 src/shortcutsWindow.blp:21 -msgid "Import File" -msgstr "" - -#: src/actions.js:147 -msgid "All supported" -msgstr "" - -#: src/window.blp:15 -msgid "_Library" -msgstr "" - -#: src/window.blp:19 -msgid "Open Library of Demos and Examples (Ctrl+Shift+O)" -msgstr "" - -#: src/window.blp:37 -msgid "_Code" -msgstr "" - -#: src/window.blp:54 -msgid "_Style" -msgstr "" - -#: src/window.blp:71 -msgid "_UI" -msgstr "" - -#: src/window.blp:88 -msgid "_Preview" -msgstr "" - -#: src/window.blp:130 -msgid "Code" -msgstr "" - -#: src/window.blp:146 -msgid "Switch document" -msgstr "" - -#: src/window.blp:154 -msgid "_Run" -msgstr "" - -#: src/window.blp:158 -msgid "Run (Ctrl+⏎)" -msgstr "" - -#: src/window.blp:218 -msgid "Style CSS" -msgstr "" - -#: src/window.blp:257 -msgid "UI" -msgstr "" - -#: src/window.blp:273 -msgid "Convert and switch syntax" -msgstr "" - -#: src/window.blp:277 -msgid "Informaton about Blueprint" -msgstr "" - -#: src/window.blp:289 src/window.blp:291 -msgid "Convert to XML" -msgstr "" - -#: src/window.blp:300 src/window.blp:302 -msgid "Convert to Blueprint" -msgstr "" - -#: src/window.blp:366 -msgid "Preview" -msgstr "" - -#: src/window.blp:376 -msgid "Fill" -msgstr "" - -#: src/window.blp:377 -msgid "Center" -msgstr "" - -#: src/window.blp:380 -msgid "Select Preview mode" -msgstr "" - -#: src/window.blp:386 src/window.blp:388 -msgid "Take Screenshot of Preview" -msgstr "" - -#: src/window.blp:420 src/window.blp:438 -msgid "Windowed Preview" -msgstr "" - -#: src/window.blp:421 src/window.blp:439 -msgid "" -"This interface can only be previewed as a separate window.\n" -"We recommend using “Always on Top”." -msgstr "" - -#: src/window.blp:428 -msgid "Show Preview Window" -msgstr "" - -#: src/window.blp:446 -msgid "Close Preview Window" -msgstr "" - -#: src/window.blp:481 -msgid "C_onsole" -msgstr "" - -#: src/window.blp:485 -msgid "Show logs (Ctrl+Shift+K)" -msgstr "" - -#: src/window.blp:491 -msgid "_Inspector" -msgstr "" - -#: src/window.blp:494 -msgid "Open GTK Inspector (Ctrl+Shift+I)" -msgstr "" - -#: src/window.blp:505 -msgid "Cl_ear" -msgstr "" - -#: src/window.blp:509 -msgid "Clear console (Ctrl+K)" -msgstr "" - -#: src/window.blp:536 -msgid "Future versions may have breaking syntax." -msgstr "" - -#: src/window.blp:537 -msgid "" -"Blueprint is\n" -"Experimental" -msgstr "" - -#: src/window.blp:541 -msgid "Documentation" -msgstr "" - -#: src/window.blp:556 -msgid "Import File…" -msgstr "" - -#: src/window.blp:562 -msgid "Bookmarks" -msgstr "" - -#: src/window.blp:564 -msgid "Learn" -msgstr "" - -#: src/window.blp:567 -msgid "Developer Documentation" -msgstr "" - -#: src/window.blp:574 -msgid "Human Interface Guidelines" -msgstr "" - -#: src/window.blp:580 -msgid "JavaScript" -msgstr "" - -#: src/window.blp:586 -msgid "Vala" -msgstr "" - -#: src/window.blp:592 -msgid "Blueprint" -msgstr "" - -#: src/window.blp:599 -msgid "Get help" -msgstr "" - -#: src/window.blp:602 -msgid "Discourse" -msgstr "" - -#: src/window.blp:608 -msgid "Matrix" -msgstr "" - -#: src/window.blp:616 -msgid "Icon Library" -msgstr "" - -#: src/window.blp:621 -msgid "Platform Tools" -msgstr "" - -#: src/window.blp:624 -msgid "Adwaita Demo" -msgstr "" - -#: src/window.blp:630 -msgid "GTK Demo" -msgstr "" - -#: src/window.blp:636 -msgid "GTK Widget Factory" -msgstr "" - -#: src/window.blp:644 src/shortcutsWindow.blp:54 -msgid "Keyboard Shortcuts" -msgstr "" - -#: src/window.blp:649 -msgid "About Workbench" -msgstr "" - -#: src/shortcutsWindow.blp:11 -msgid "Run Code" -msgstr "" - -#: src/shortcutsWindow.blp:16 -msgid "Format" -msgstr "" - -#: src/shortcutsWindow.blp:26 -msgid "Open Library" -msgstr "" - -#: src/shortcutsWindow.blp:31 -msgid "Toggle Console" -msgstr "" - -#: src/shortcutsWindow.blp:36 -msgid "Clear Console" -msgstr "" - -#: src/shortcutsWindow.blp:42 -msgid "Inspector" -msgstr "" - -#: src/shortcutsWindow.blp:50 -msgid "Redo" -msgstr "" - -#: src/shortcutsWindow.blp:58 -msgid "Quit" -msgstr "" - -#: src/Library/Library.blp:7 -msgid "Library" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:22 -#: troll/src/widgets/ThemeSelector.blp:25 -msgid "Follow system style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:41 -#: troll/src/widgets/ThemeSelector.blp:44 -msgid "Light style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:60 -#: troll/src/widgets/ThemeSelector.blp:63 -msgid "Dark style" -msgstr "" diff --git a/po/pt_BR.po b/po/pt_BR.po deleted file mode 100644 index acd827793..000000000 --- a/po/pt_BR.po +++ /dev/null @@ -1,804 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the re.sonny.Workbench package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: re.sonny.Workbench\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-18 13:24+0100\n" -"PO-Revision-Date: 2022-07-05 17:16+0000\n" -"Last-Translator: SWYK \n" -"Language-Team: Portuguese (Brazil) \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.13.1-dev\n" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:4 -msgid "Workbench" -msgstr "Workbench" - -#: data/app.desktop:5 data/app.metainfo.xml:10 -msgid "Learn and prototype with GNOME technologies" -msgstr "Aprenda e prototipe com tecnologias GNOME" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:12 -msgid "CSS;JavaScript;GJS;Blueprint;builder;Vala;" -msgstr "CSS;JavaScript;GJS;Blueprint;builder;Vala;" - -#: data/app.metainfo.xml:13 -msgid "" -"Workbench goal is to let you experiment with GNOME technologies, no matter " -"if tinkering for the first time or building and testing a GTK user interface." -msgstr "" -"O objetivo do Workbench é permitir que você experimente as tecnologias " -"GNOME, não importando se é um novato ou se já mantem e testa um widget GTK " -"personalizado." - -#: data/app.metainfo.xml:14 -msgid "Among other things, Workbench comes with" -msgstr "Entre outras coisas, Workbench vem com" - -#: data/app.metainfo.xml:16 -msgid "realtime GTK/CSS preview" -msgstr "visualização de GTK/CSS em tempo real" - -#: data/app.metainfo.xml:17 -msgid "library of examples" -msgstr "Biblioteca de exemplos" - -#: data/app.metainfo.xml:18 -msgid "1000+ icons" -msgstr "" - -#: data/app.metainfo.xml:19 -#, fuzzy -msgid "JavaScript and Vala support" -msgstr "JavaScript e Vala são executados sem configuração prévia" - -#: data/app.metainfo.xml:20 -msgid "XML and Blueprint for describing user interface" -msgstr "XML e Blueprint para descrever a interface do usuário" - -#: data/app.metainfo.xml:21 -msgid "syntax highlighting, undo/redo, autosave, session restore" -msgstr "" -"Realce de sintaxe, desfazer/refazer, salvamento automático, restauração da " -"sessão" - -#: data/app.metainfo.xml:22 -msgid "code formatter" -msgstr "Formatador de código" - -#: data/app.metainfo.xml:23 -msgid "console logs" -msgstr "logs do console" - -#: data/app.metainfo.xml:52 -msgid "Use Vala Language Server for diagnostics" -msgstr "" - -#: data/app.metainfo.xml:53 -#, fuzzy -msgid "Move Icon Browser to the main application menu" -msgstr "Mover Favoritos para o menu principal" - -#: data/app.metainfo.xml:54 -msgid "Reset window preview on close" -msgstr "" - -#: data/app.metainfo.xml:55 -msgid "Add a warning about Blueprint being experimental" -msgstr "" - -#: data/app.metainfo.xml:56 -msgid "Fix loading and running code with Blueprint UI" -msgstr "" - -#: data/app.metainfo.xml:57 -msgid "Fix crash when using abstract UI types" -msgstr "" - -#: data/app.metainfo.xml:58 -msgid "Fix \"No UI definition loaded yet.\" preview error when using Vala" -msgstr "" - -#: data/app.metainfo.xml:59 -msgid "Fix error message when hovering text with no diagnostic" -msgstr "" - -#: data/app.metainfo.xml:60 -msgid "VTE 0.70.1" -msgstr "" - -#: data/app.metainfo.xml:67 -msgid "GNOME 43" -msgstr "" - -#: data/app.metainfo.xml:68 -msgid "Display CSS errors inline" -msgstr "" - -#: data/app.metainfo.xml:69 -msgid "Fix responsiveness when working on large Blueprint files" -msgstr "" - -#: data/app.metainfo.xml:70 -msgid "Use AdwAboutWindow" -msgstr "" - -#: data/app.metainfo.xml:71 -#, fuzzy -msgid "Blueprint 0.4.0" -msgstr "Blueprint" - -#: data/app.metainfo.xml:72 -msgid "VTE 0.70.0" -msgstr "" - -#: data/app.metainfo.xml:73 -#, fuzzy -msgid "Various bug and crash fixes" -msgstr "Várias correções" - -#: data/app.metainfo.xml:80 -msgid "Show tooltip hints in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:81 -#, fuzzy -msgid "Improve XML formatter" -msgstr "Formatador de código" - -#: data/app.metainfo.xml:82 -msgid "Add Ctrl+Shift+Return shortcut to format" -msgstr "" - -#: data/app.metainfo.xml:83 -msgid "Apply Style CSS to windowed preview" -msgstr "" - -#: data/app.metainfo.xml:84 data/app.metainfo.xml:129 -msgid "Improve application design" -msgstr "Melhorar o design do aplicativo" - -#: data/app.metainfo.xml:85 -msgid "Prevent crash for templates with GtkWidget parent" -msgstr "" - -#: data/app.metainfo.xml:86 -#, fuzzy -msgid "Update VTE and icon-development-kit" -msgstr "Incluir todos os ícones do kit de desenvolvimento de ícones" - -#: data/app.metainfo.xml:93 -msgid "Underline errors in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:94 -msgid "Fix bugs and crashes" -msgstr "" - -#: data/app.metainfo.xml:102 -msgid "Add an Icon Browser to find the right icons for your prototypes" -msgstr "" - -#: data/app.metainfo.xml:103 -msgid "Add a Platform tools Library demo" -msgstr "" - -#: data/app.metainfo.xml:104 -msgid "Improve the style switcher" -msgstr "" - -#: data/app.metainfo.xml:105 -msgid "Replace confirmation dialogs with toasts and undo" -msgstr "" - -#: data/app.metainfo.xml:106 -msgid "Support updates on root objects" -msgstr "" - -#: data/app.metainfo.xml:107 -#, fuzzy -msgid "Support binding signal handlers from UI" -msgstr "Adicionar suporte para pre-visualizar gerenciadores de sinais" - -#: data/app.metainfo.xml:108 -msgid "Add APIs to allow using templates from Code" -msgstr "" - -#: data/app.metainfo.xml:109 -#, fuzzy -msgid "Add Center/Fill preview modes for templates" -msgstr "Adicionar suporte para modelos de pré-visualização" - -#: data/app.metainfo.xml:111 -msgid "Open external preview with the dimensions of the internal preview" -msgstr "" - -#: data/app.metainfo.xml:112 -msgid "64 new icons available" -msgstr "" - -#: data/app.metainfo.xml:113 -msgid "Update Blueprint to 0.2.0" -msgstr "" - -#: data/app.metainfo.xml:114 -msgid "Fix empty preview on first load" -msgstr "" - -#: data/app.metainfo.xml:115 -msgid "Fix style scheme switch when system preference is light" -msgstr "" - -#: data/app.metainfo.xml:116 -msgid "Remove grid pattern on the source editors" -msgstr "" - -#: data/app.metainfo.xml:122 -msgid "Highlights" -msgstr "Destaques" - -#: data/app.metainfo.xml:124 -msgid "Add Blueprint markup syntax for UI" -msgstr "Adicionar marcação Blueprint para a interface do usuário" - -#: data/app.metainfo.xml:125 -msgid "Add Vala programming language for Code" -msgstr "Adicionar a linguagem de programação Vala ao código" - -#: data/app.metainfo.xml:126 -msgid "Add support for previewing templates" -msgstr "Adicionar suporte para modelos de pré-visualização" - -#: data/app.metainfo.xml:127 -msgid "Add support for previewing signal handlers" -msgstr "Adicionar suporte para pre-visualizar gerenciadores de sinais" - -#: data/app.metainfo.xml:128 -msgid "Include all icons from icon-development-kit" -msgstr "Incluir todos os ícones do kit de desenvolvimento de ícones" - -#: data/app.metainfo.xml:130 -msgid "Distribute Library examples under CC0-1.0" -msgstr "Distribuir Bibliotecas de exemplos pela licença CC0-1.0" - -#: data/app.metainfo.xml:131 -msgid "Respect system preference for color scheme" -msgstr "Respeitar a preferência do sistema para o esquema de cores" - -#: data/app.metainfo.xml:132 -msgid "Add proper light/dark color schemes for Console" -msgstr "Adicionar esquemas de cores claro/escuro próprios para o Console" - -#: data/app.metainfo.xml:133 -#, fuzzy -msgid "Fix error when importing files" -msgstr "Corrigir erro ao abrir arquivo" - -#: data/app.metainfo.xml:135 -msgid "Other changes" -msgstr "Outras mudanças" - -#: data/app.metainfo.xml:137 -msgid "Silence platform tools" -msgstr "Ferramentas da plataforma de silêncio" - -#: data/app.metainfo.xml:138 -msgid "Remove GTK Icon browser platform tool" -msgstr "" - -#: data/app.metainfo.xml:139 -msgid "Make Library examples only open relevant panels" -msgstr "Fazer que os exemplos de biblioteca apenas abram painéis relevantes" - -#: data/app.metainfo.xml:140 -msgid "Always open the Console when opening a Library example" -msgstr "Sempre abrir o Console ao abrir uma biblioteca-exemplo" - -#: data/app.metainfo.xml:141 -msgid "Prevent running Code if the panel is not visible" -msgstr "Impedir a execução do código se o painel não estiver visível" - -#: data/app.metainfo.xml:142 -msgid "Add icons and mnemonics for all buttons" -msgstr "Adicionar ícones e mnemônicos para todos os botões" - -#: data/app.metainfo.xml:143 -msgid "Move Bookmarks to the main menu" -msgstr "Mover Favoritos para o menu principal" - -#: data/app.metainfo.xml:144 -msgid "Enable scrollbar and kinetic scrolling on Console" -msgstr "Habilitar barra de rolagem no Console" - -#: data/app.metainfo.xml:145 -msgid "Improve Library examples" -msgstr "Melhorar os Exemplos da Biblioteca" - -#: data/app.metainfo.xml:146 -msgid "Performance optimizations" -msgstr "Otimizações de desempenho" - -#: data/app.metainfo.xml:147 -msgid "Show a placeholder when all panels are invisible" -msgstr "Mostrar um marcador de posição para os painéis visíveis" - -#: data/app.metainfo.xml:148 -msgid "Crash fixes" -msgstr "Correções de falhas" - -#: data/app.metainfo.xml:149 -msgid "Use org.gnome.Sdk runtime" -msgstr "Usar org.gnome.Sdk" - -#: data/app.metainfo.xml:156 -msgid "Add a Library of examples" -msgstr "Adicionar biblioteca de exemplos" - -#: data/app.metainfo.xml:157 -msgid "Add an example of WebSocket client" -msgstr "Adicionar um exemplo de cliente WebSocket" - -#: data/app.metainfo.xml:158 -msgid "Add an example of toasts" -msgstr "Adicionar um exemplo de avisos" - -#: data/app.metainfo.xml:159 -msgid "Add an example of application window" -msgstr "Adicionar um exemplo de janela de aplicação" - -#: data/app.metainfo.xml:160 -msgid "Add an example of desktop notification" -msgstr "Adicionar umexemplo de notificação de área de trabalho" - -#: data/app.metainfo.xml:162 -msgid "Add Adwaita Demo, GTK Demo, GTK Widget Factory and GTK Icon Browser" -msgstr "" -"Adicionar Adwaita Demo, GTK Demo, GTK Widget Factory e GTK Icon Browser" - -#: data/app.metainfo.xml:163 -msgid "The Console can be collapsed by resizing it" -msgstr "O Console pode ser recolhido quando redimensionado" - -#: data/app.metainfo.xml:164 -msgid "Prevent system.exit from quitting Workbench" -msgstr "Impedir que system.exit saia do Workbench" - -#: data/app.metainfo.xml:165 -msgid "Allow calling GObject.registerClass multiple times" -msgstr "Permitir chamar GObject.registerClass várias vezes" - -#: data/app.metainfo.xml:166 -msgid "Prevent crash caused by using non GtkBuildable objects" -msgstr "Prevenir travamentos causados pelo uso de objetos não GtkBuildable" - -#: data/app.metainfo.xml:167 -msgid "Allow using DBus and Gio.Application" -msgstr "Permitir uso do DBus e Gio.Applicaton" - -#: data/app.metainfo.xml:168 -msgid "Allow using network" -msgstr "Permitir o uso da rede" - -#: data/app.metainfo.xml:169 -msgid "Enable GtkWindow objects preview" -msgstr "Ativar visualização de objetos GtkWindow" - -#: data/app.metainfo.xml:176 -msgid "Take a png screenshot of the preview" -msgstr "Fazer uma captura PNG da tela de pré-visualização" - -#: data/app.metainfo.xml:177 -msgid "The console is now resizable" -msgstr "O console agora é redimensionável" - -#: data/app.metainfo.xml:178 -msgid "Redesign the dark/light mode switcher" -msgstr "Redesenhar o comutador de modo escuro/claro" - -#: data/app.metainfo.xml:179 -msgid "Show platform and dependencies in about dialog" -msgstr "Mostrar a plataforma e dependências no diálogo \"Sobre\"" - -#: data/app.metainfo.xml:180 -msgid "Update to GNOME platform 42" -msgstr "Atualizar para a plataforma GNOME 42" - -#: data/app.metainfo.xml:181 -msgid "Various fixes" -msgstr "Várias correções" - -#: data/app.metainfo.xml:187 -msgid "This is the first release of Workbench. We hope you like it." -msgstr "Esta é a primeira versão do Workbench. Esperamos que você goste." - -#: src/window.js:371 -msgid "The demo has been loaded" -msgstr "" - -#: src/window.js:372 src/window.js:453 src/shortcutsWindow.blp:46 -msgid "Undo" -msgstr "Desfazer" - -#: src/window.js:445 -msgid "This file cannot be loaded" -msgstr "" - -#: src/window.js:452 -msgid "The file has been loaded" -msgstr "" - -#. TRANSLATORS: eg. 'Translator Name ' or 'Translator Name https://website.example' -#: src/about.js:39 -msgid "translator-credits" -msgstr "Gustavo Costa " - -#: src/about.js:52 -msgid "Contributors" -msgstr "" - -#: src/actions.js:53 src/shortcutsWindow.blp:21 -msgid "Import File" -msgstr "Importar arquivo" - -#: src/actions.js:147 -msgid "All supported" -msgstr "Todos os suportados" - -#: src/window.blp:15 -msgid "_Library" -msgstr "_Biblioteca" - -#: src/window.blp:19 -msgid "Open Library of Demos and Examples (Ctrl+Shift+O)" -msgstr "Abrir a biblioteca de demonstrações e exemplos (Ctrl+Shift+O)" - -#: src/window.blp:37 -msgid "_Code" -msgstr "_Código" - -#: src/window.blp:54 -msgid "_Style" -msgstr "E_stilo" - -#: src/window.blp:71 -msgid "_UI" -msgstr "_IU" - -#: src/window.blp:88 -msgid "_Preview" -msgstr "_Pré-visualizar" - -#: src/window.blp:130 -msgid "Code" -msgstr "Código" - -#: src/window.blp:146 -msgid "Switch document" -msgstr "Alternar documento" - -#: src/window.blp:154 -msgid "_Run" -msgstr "_Executar" - -#: src/window.blp:158 -msgid "Run (Ctrl+⏎)" -msgstr "Executar (Ctrl+⏎)" - -#: src/window.blp:218 -msgid "Style CSS" -msgstr "Estilo - CSS" - -#: src/window.blp:257 -msgid "UI" -msgstr "IU" - -#: src/window.blp:273 -msgid "Convert and switch syntax" -msgstr "" - -#: src/window.blp:277 -#, fuzzy -msgid "Informaton about Blueprint" -msgstr "Converter em Blueprint" - -#: src/window.blp:289 src/window.blp:291 -msgid "Convert to XML" -msgstr "Converter para XML" - -#: src/window.blp:300 src/window.blp:302 -msgid "Convert to Blueprint" -msgstr "Converter em Blueprint" - -#: src/window.blp:366 -msgid "Preview" -msgstr "Visualizar" - -#: src/window.blp:376 -msgid "Fill" -msgstr "" - -#: src/window.blp:377 -msgid "Center" -msgstr "" - -#: src/window.blp:380 -#, fuzzy -msgid "Select Preview mode" -msgstr "Fechar janela de visualização" - -#: src/window.blp:386 src/window.blp:388 -msgid "Take Screenshot of Preview" -msgstr "Fazer captura de tela da visualização" - -#: src/window.blp:420 src/window.blp:438 -msgid "Windowed Preview" -msgstr "Visualização em janela" - -#: src/window.blp:421 src/window.blp:439 -#, fuzzy -msgid "" -"This interface can only be previewed as a separate window.\n" -"We recommend using “Always on Top”." -msgstr "" -"Esta interface só pode ser visualizada como uma janela separada.\n" -"Recomendamos usar “Sempre no topo”" - -#: src/window.blp:428 -msgid "Show Preview Window" -msgstr "Mostrar Janela de Visualização" - -#: src/window.blp:446 -msgid "Close Preview Window" -msgstr "Fechar janela de visualização" - -#: src/window.blp:481 -msgid "C_onsole" -msgstr "C_onsole" - -#: src/window.blp:485 -msgid "Show logs (Ctrl+Shift+K)" -msgstr "Exibir logs (Ctrl+Shift+K)" - -#: src/window.blp:491 -msgid "_Inspector" -msgstr "_Inspetor" - -#: src/window.blp:494 -msgid "Open GTK Inspector (Ctrl+Shift+I)" -msgstr "Abrir o inspetor de GTK (Ctrl+Shift+I)" - -#: src/window.blp:505 -msgid "Cl_ear" -msgstr "L_impar" - -#: src/window.blp:509 -msgid "Clear console (Ctrl+K)" -msgstr "Limpar console (Ctrl+K)" - -#: src/window.blp:536 -msgid "Future versions may have breaking syntax." -msgstr "" - -#: src/window.blp:537 -msgid "" -"Blueprint is\n" -"Experimental" -msgstr "" - -#: src/window.blp:541 -#, fuzzy -msgid "Documentation" -msgstr "Documentação do desenvolvedor" - -#: src/window.blp:556 -msgid "Import File…" -msgstr "Importar arquivo…" - -#: src/window.blp:562 -msgid "Bookmarks" -msgstr "Favoritos" - -#: src/window.blp:564 -msgid "Learn" -msgstr "Aprenda" - -#: src/window.blp:567 -msgid "Developer Documentation" -msgstr "Documentação do desenvolvedor" - -#: src/window.blp:574 -msgid "Human Interface Guidelines" -msgstr "Diretivas de Interface Humana (HIG)" - -#: src/window.blp:580 -msgid "JavaScript" -msgstr "JavaScript" - -#: src/window.blp:586 -msgid "Vala" -msgstr "Vala" - -#: src/window.blp:592 -msgid "Blueprint" -msgstr "Blueprint" - -#: src/window.blp:599 -msgid "Get help" -msgstr "Obter ajuda" - -#: src/window.blp:602 -msgid "Discourse" -msgstr "Discourse" - -#: src/window.blp:608 -msgid "Matrix" -msgstr "Matrix" - -#: src/window.blp:616 -#, fuzzy -msgid "Icon Library" -msgstr "Abrir a Biblioteca" - -#: src/window.blp:621 -msgid "Platform Tools" -msgstr "Ferramentas da Plataforma" - -#: src/window.blp:624 -msgid "Adwaita Demo" -msgstr "Demonstração Adwaita" - -#: src/window.blp:630 -msgid "GTK Demo" -msgstr "Demonstração GTK" - -#: src/window.blp:636 -msgid "GTK Widget Factory" -msgstr "Fábrica de widgets GTK" - -#: src/window.blp:644 src/shortcutsWindow.blp:54 -msgid "Keyboard Shortcuts" -msgstr "Atalhos de teclado" - -#: src/window.blp:649 -msgid "About Workbench" -msgstr "Sobre o Workbench" - -#: src/shortcutsWindow.blp:11 -msgid "Run Code" -msgstr "Executar Código" - -#: src/shortcutsWindow.blp:16 -msgid "Format" -msgstr "" - -#: src/shortcutsWindow.blp:26 -msgid "Open Library" -msgstr "Abrir a Biblioteca" - -#: src/shortcutsWindow.blp:31 -msgid "Toggle Console" -msgstr "Fechar Console" - -#: src/shortcutsWindow.blp:36 -msgid "Clear Console" -msgstr "Limpar Console" - -#: src/shortcutsWindow.blp:42 -msgid "Inspector" -msgstr "Inspetor" - -#: src/shortcutsWindow.blp:50 -msgid "Redo" -msgstr "Refazer" - -#: src/shortcutsWindow.blp:58 -msgid "Quit" -msgstr "Sair" - -#: src/Library/Library.blp:7 -msgid "Library" -msgstr "Biblioteca" - -#: troll/src/widgets/ThemeSelector.blp:22 -#: troll/src/widgets/ThemeSelector.blp:25 -msgid "Follow system style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:41 -#: troll/src/widgets/ThemeSelector.blp:44 -msgid "Light style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:60 -#: troll/src/widgets/ThemeSelector.blp:63 -msgid "Dark style" -msgstr "" - -#~ msgid "About My App" -#~ msgstr "Sobre Minha App" - -#~ msgid "" -#~ "Learn and prototype with\n" -#~ "GNOME technologies" -#~ msgstr "" -#~ "Aprenda e prototipe com\n" -#~ "tecnologias GNOME" - -#~ msgid "sun-symbolic" -#~ msgstr "sun-symbolic" - -#~ msgid "Use Light mode" -#~ msgstr "Usar modo claro" - -#~ msgid "workbench-moon-rounded-symbolic" -#~ msgstr "workbench-moon-rounded-symbolic" - -#~ msgid "Use Dark mode" -#~ msgstr "Usar modo escuro" - -#~ msgid "Are you sure you want to discard your changes?" -#~ msgstr "Tem certeza que deseja abandonar suas modificações ?" - -#~ msgid "" -#~ "Side by side editors with live preview on the right and console in the " -#~ "bottom" -#~ msgstr "" -#~ "Editores lado a lado com visualização em tempo real à direita e console " -#~ "na parte inferior" - -#~ msgid "Run" -#~ msgstr "Executar" - -#~ msgid "Open Console" -#~ msgstr "Abrir console" - -#~ msgid "Code - JavaScript" -#~ msgstr "Código - JavaScript" - -#~ msgid "UI - XML" -#~ msgstr "UI - XML" - -#~ msgid "Clear" -#~ msgstr "Limpar" - -#~ msgid "Examples to start from or get inspired by" -#~ msgstr "Exemplos para começar ou se inspirar" - -#, fuzzy -#~ msgid "GTK Icon Browser" -#~ msgstr "Navegador de ícones GTK" - -#~ msgid "GNOME JavaScript (GJS)" -#~ msgstr "GNOME JavaScript (GJS)" - -#~ msgid "UI components" -#~ msgstr "Componentes da UI" - -#~ msgid "Platform components" -#~ msgstr "Componentes da plataforma" - -#~ msgid "Reference" -#~ msgstr "Referência" - -#~ msgid "GJS" -#~ msgstr "GJS" - -#~ msgid "Gtk" -#~ msgstr "Gtk" - -#~ msgid "Adwaita" -#~ msgstr "Adwaita" - -#~ msgid "Stack Overflow" -#~ msgstr "Stack Overflow" diff --git a/po/re.sonny.Workbench.pot b/po/re.sonny.Workbench.pot deleted file mode 100644 index 846698718..000000000 --- a/po/re.sonny.Workbench.pot +++ /dev/null @@ -1,700 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the re.sonny.Workbench package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: re.sonny.Workbench\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-18 13:24+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:4 -msgid "Workbench" -msgstr "" - -#: data/app.desktop:5 data/app.metainfo.xml:10 -msgid "Learn and prototype with GNOME technologies" -msgstr "" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:12 -msgid "CSS;JavaScript;GJS;Blueprint;builder;Vala;" -msgstr "" - -#: data/app.metainfo.xml:13 -msgid "Workbench goal is to let you experiment with GNOME technologies, no matter if tinkering for the first time or building and testing a GTK user interface." -msgstr "" - -#: data/app.metainfo.xml:14 -msgid "Among other things, Workbench comes with" -msgstr "" - -#: data/app.metainfo.xml:16 -msgid "realtime GTK/CSS preview" -msgstr "" - -#: data/app.metainfo.xml:17 -msgid "library of examples" -msgstr "" - -#: data/app.metainfo.xml:18 -msgid "1000+ icons" -msgstr "" - -#: data/app.metainfo.xml:19 -msgid "JavaScript and Vala support" -msgstr "" - -#: data/app.metainfo.xml:20 -msgid "XML and Blueprint for describing user interface" -msgstr "" - -#: data/app.metainfo.xml:21 -msgid "syntax highlighting, undo/redo, autosave, session restore" -msgstr "" - -#: data/app.metainfo.xml:22 -msgid "code formatter" -msgstr "" - -#: data/app.metainfo.xml:23 -msgid "console logs" -msgstr "" - -#: data/app.metainfo.xml:52 -msgid "Use Vala Language Server for diagnostics" -msgstr "" - -#: data/app.metainfo.xml:53 -msgid "Move Icon Browser to the main application menu" -msgstr "" - -#: data/app.metainfo.xml:54 -msgid "Reset window preview on close" -msgstr "" - -#: data/app.metainfo.xml:55 -msgid "Add a warning about Blueprint being experimental" -msgstr "" - -#: data/app.metainfo.xml:56 -msgid "Fix loading and running code with Blueprint UI" -msgstr "" - -#: data/app.metainfo.xml:57 -msgid "Fix crash when using abstract UI types" -msgstr "" - -#: data/app.metainfo.xml:58 -msgid "Fix \"No UI definition loaded yet.\" preview error when using Vala" -msgstr "" - -#: data/app.metainfo.xml:59 -msgid "Fix error message when hovering text with no diagnostic" -msgstr "" - -#: data/app.metainfo.xml:60 -msgid "VTE 0.70.1" -msgstr "" - -#: data/app.metainfo.xml:67 -msgid "GNOME 43" -msgstr "" - -#: data/app.metainfo.xml:68 -msgid "Display CSS errors inline" -msgstr "" - -#: data/app.metainfo.xml:69 -msgid "Fix responsiveness when working on large Blueprint files" -msgstr "" - -#: data/app.metainfo.xml:70 -msgid "Use AdwAboutWindow" -msgstr "" - -#: data/app.metainfo.xml:71 -msgid "Blueprint 0.4.0" -msgstr "" - -#: data/app.metainfo.xml:72 -msgid "VTE 0.70.0" -msgstr "" - -#: data/app.metainfo.xml:73 -msgid "Various bug and crash fixes" -msgstr "" - -#: data/app.metainfo.xml:80 -msgid "Show tooltip hints in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:81 -msgid "Improve XML formatter" -msgstr "" - -#: data/app.metainfo.xml:82 -msgid "Add Ctrl+Shift+Return shortcut to format" -msgstr "" - -#: data/app.metainfo.xml:83 -msgid "Apply Style CSS to windowed preview" -msgstr "" - -#: data/app.metainfo.xml:84 data/app.metainfo.xml:129 -msgid "Improve application design" -msgstr "" - -#: data/app.metainfo.xml:85 -msgid "Prevent crash for templates with GtkWidget parent" -msgstr "" - -#: data/app.metainfo.xml:86 -msgid "Update VTE and icon-development-kit" -msgstr "" - -#: data/app.metainfo.xml:93 -msgid "Underline errors in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:94 -msgid "Fix bugs and crashes" -msgstr "" - -#: data/app.metainfo.xml:102 -msgid "Add an Icon Browser to find the right icons for your prototypes" -msgstr "" - -#: data/app.metainfo.xml:103 -msgid "Add a Platform tools Library demo" -msgstr "" - -#: data/app.metainfo.xml:104 -msgid "Improve the style switcher" -msgstr "" - -#: data/app.metainfo.xml:105 -msgid "Replace confirmation dialogs with toasts and undo" -msgstr "" - -#: data/app.metainfo.xml:106 -msgid "Support updates on root objects" -msgstr "" - -#: data/app.metainfo.xml:107 -msgid "Support binding signal handlers from UI" -msgstr "" - -#: data/app.metainfo.xml:108 -msgid "Add APIs to allow using templates from Code" -msgstr "" - -#: data/app.metainfo.xml:109 -msgid "Add Center/Fill preview modes for templates" -msgstr "" - -#: data/app.metainfo.xml:111 -msgid "Open external preview with the dimensions of the internal preview" -msgstr "" - -#: data/app.metainfo.xml:112 -msgid "64 new icons available" -msgstr "" - -#: data/app.metainfo.xml:113 -msgid "Update Blueprint to 0.2.0" -msgstr "" - -#: data/app.metainfo.xml:114 -msgid "Fix empty preview on first load" -msgstr "" - -#: data/app.metainfo.xml:115 -msgid "Fix style scheme switch when system preference is light" -msgstr "" - -#: data/app.metainfo.xml:116 -msgid "Remove grid pattern on the source editors" -msgstr "" - -#: data/app.metainfo.xml:122 -msgid "Highlights" -msgstr "" - -#: data/app.metainfo.xml:124 -msgid "Add Blueprint markup syntax for UI" -msgstr "" - -#: data/app.metainfo.xml:125 -msgid "Add Vala programming language for Code" -msgstr "" - -#: data/app.metainfo.xml:126 -msgid "Add support for previewing templates" -msgstr "" - -#: data/app.metainfo.xml:127 -msgid "Add support for previewing signal handlers" -msgstr "" - -#: data/app.metainfo.xml:128 -msgid "Include all icons from icon-development-kit" -msgstr "" - -#: data/app.metainfo.xml:130 -msgid "Distribute Library examples under CC0-1.0" -msgstr "" - -#: data/app.metainfo.xml:131 -msgid "Respect system preference for color scheme" -msgstr "" - -#: data/app.metainfo.xml:132 -msgid "Add proper light/dark color schemes for Console" -msgstr "" - -#: data/app.metainfo.xml:133 -msgid "Fix error when importing files" -msgstr "" - -#: data/app.metainfo.xml:135 -msgid "Other changes" -msgstr "" - -#: data/app.metainfo.xml:137 -msgid "Silence platform tools" -msgstr "" - -#: data/app.metainfo.xml:138 -msgid "Remove GTK Icon browser platform tool" -msgstr "" - -#: data/app.metainfo.xml:139 -msgid "Make Library examples only open relevant panels" -msgstr "" - -#: data/app.metainfo.xml:140 -msgid "Always open the Console when opening a Library example" -msgstr "" - -#: data/app.metainfo.xml:141 -msgid "Prevent running Code if the panel is not visible" -msgstr "" - -#: data/app.metainfo.xml:142 -msgid "Add icons and mnemonics for all buttons" -msgstr "" - -#: data/app.metainfo.xml:143 -msgid "Move Bookmarks to the main menu" -msgstr "" - -#: data/app.metainfo.xml:144 -msgid "Enable scrollbar and kinetic scrolling on Console" -msgstr "" - -#: data/app.metainfo.xml:145 -msgid "Improve Library examples" -msgstr "" - -#: data/app.metainfo.xml:146 -msgid "Performance optimizations" -msgstr "" - -#: data/app.metainfo.xml:147 -msgid "Show a placeholder when all panels are invisible" -msgstr "" - -#: data/app.metainfo.xml:148 -msgid "Crash fixes" -msgstr "" - -#: data/app.metainfo.xml:149 -msgid "Use org.gnome.Sdk runtime" -msgstr "" - -#: data/app.metainfo.xml:156 -msgid "Add a Library of examples" -msgstr "" - -#: data/app.metainfo.xml:157 -msgid "Add an example of WebSocket client" -msgstr "" - -#: data/app.metainfo.xml:158 -msgid "Add an example of toasts" -msgstr "" - -#: data/app.metainfo.xml:159 -msgid "Add an example of application window" -msgstr "" - -#: data/app.metainfo.xml:160 -msgid "Add an example of desktop notification" -msgstr "" - -#: data/app.metainfo.xml:162 -msgid "Add Adwaita Demo, GTK Demo, GTK Widget Factory and GTK Icon Browser" -msgstr "" - -#: data/app.metainfo.xml:163 -msgid "The Console can be collapsed by resizing it" -msgstr "" - -#: data/app.metainfo.xml:164 -msgid "Prevent system.exit from quitting Workbench" -msgstr "" - -#: data/app.metainfo.xml:165 -msgid "Allow calling GObject.registerClass multiple times" -msgstr "" - -#: data/app.metainfo.xml:166 -msgid "Prevent crash caused by using non GtkBuildable objects" -msgstr "" - -#: data/app.metainfo.xml:167 -msgid "Allow using DBus and Gio.Application" -msgstr "" - -#: data/app.metainfo.xml:168 -msgid "Allow using network" -msgstr "" - -#: data/app.metainfo.xml:169 -msgid "Enable GtkWindow objects preview" -msgstr "" - -#: data/app.metainfo.xml:176 -msgid "Take a png screenshot of the preview" -msgstr "" - -#: data/app.metainfo.xml:177 -msgid "The console is now resizable" -msgstr "" - -#: data/app.metainfo.xml:178 -msgid "Redesign the dark/light mode switcher" -msgstr "" - -#: data/app.metainfo.xml:179 -msgid "Show platform and dependencies in about dialog" -msgstr "" - -#: data/app.metainfo.xml:180 -msgid "Update to GNOME platform 42" -msgstr "" - -#: data/app.metainfo.xml:181 -msgid "Various fixes" -msgstr "" - -#: data/app.metainfo.xml:187 -msgid "This is the first release of Workbench. We hope you like it." -msgstr "" - -#: src/window.js:371 -msgid "The demo has been loaded" -msgstr "" - -#: src/window.js:372 src/window.js:453 src/shortcutsWindow.blp:46 -msgid "Undo" -msgstr "" - -#: src/window.js:445 -msgid "This file cannot be loaded" -msgstr "" - -#: src/window.js:452 -msgid "The file has been loaded" -msgstr "" - -#. TRANSLATORS: eg. 'Translator Name ' or 'Translator Name https://website.example' -#: src/about.js:39 -msgid "translator-credits" -msgstr "" - -#: src/about.js:52 -msgid "Contributors" -msgstr "" - -#: src/actions.js:53 src/shortcutsWindow.blp:21 -msgid "Import File" -msgstr "" - -#: src/actions.js:147 -msgid "All supported" -msgstr "" - -#: src/window.blp:15 -msgid "_Library" -msgstr "" - -#: src/window.blp:19 -msgid "Open Library of Demos and Examples (Ctrl+Shift+O)" -msgstr "" - -#: src/window.blp:37 -msgid "_Code" -msgstr "" - -#: src/window.blp:54 -msgid "_Style" -msgstr "" - -#: src/window.blp:71 -msgid "_UI" -msgstr "" - -#: src/window.blp:88 -msgid "_Preview" -msgstr "" - -#: src/window.blp:130 -msgid "Code" -msgstr "" - -#: src/window.blp:146 -msgid "Switch document" -msgstr "" - -#: src/window.blp:154 -msgid "_Run" -msgstr "" - -#: src/window.blp:158 -msgid "Run (Ctrl+⏎)" -msgstr "" - -#: src/window.blp:218 -msgid "Style CSS" -msgstr "" - -#: src/window.blp:257 -msgid "UI" -msgstr "" - -#: src/window.blp:273 -msgid "Convert and switch syntax" -msgstr "" - -#: src/window.blp:277 -msgid "Informaton about Blueprint" -msgstr "" - -#: src/window.blp:289 src/window.blp:291 -msgid "Convert to XML" -msgstr "" - -#: src/window.blp:300 src/window.blp:302 -msgid "Convert to Blueprint" -msgstr "" - -#: src/window.blp:366 -msgid "Preview" -msgstr "" - -#: src/window.blp:376 -msgid "Fill" -msgstr "" - -#: src/window.blp:377 -msgid "Center" -msgstr "" - -#: src/window.blp:380 -msgid "Select Preview mode" -msgstr "" - -#: src/window.blp:386 src/window.blp:388 -msgid "Take Screenshot of Preview" -msgstr "" - -#: src/window.blp:420 src/window.blp:438 -msgid "Windowed Preview" -msgstr "" - -#: src/window.blp:421 src/window.blp:439 -msgid "" -"This interface can only be previewed as a separate window.\n" -"We recommend using “Always on Top”." -msgstr "" - -#: src/window.blp:428 -msgid "Show Preview Window" -msgstr "" - -#: src/window.blp:446 -msgid "Close Preview Window" -msgstr "" - -#: src/window.blp:481 -msgid "C_onsole" -msgstr "" - -#: src/window.blp:485 -msgid "Show logs (Ctrl+Shift+K)" -msgstr "" - -#: src/window.blp:491 -msgid "_Inspector" -msgstr "" - -#: src/window.blp:494 -msgid "Open GTK Inspector (Ctrl+Shift+I)" -msgstr "" - -#: src/window.blp:505 -msgid "Cl_ear" -msgstr "" - -#: src/window.blp:509 -msgid "Clear console (Ctrl+K)" -msgstr "" - -#: src/window.blp:536 -msgid "Future versions may have breaking syntax." -msgstr "" - -#: src/window.blp:537 -msgid "" -"Blueprint is\n" -"Experimental" -msgstr "" - -#: src/window.blp:541 -msgid "Documentation" -msgstr "" - -#: src/window.blp:556 -msgid "Import File…" -msgstr "" - -#: src/window.blp:562 -msgid "Bookmarks" -msgstr "" - -#: src/window.blp:564 -msgid "Learn" -msgstr "" - -#: src/window.blp:567 -msgid "Developer Documentation" -msgstr "" - -#: src/window.blp:574 -msgid "Human Interface Guidelines" -msgstr "" - -#: src/window.blp:580 -msgid "JavaScript" -msgstr "" - -#: src/window.blp:586 -msgid "Vala" -msgstr "" - -#: src/window.blp:592 -msgid "Blueprint" -msgstr "" - -#: src/window.blp:599 -msgid "Get help" -msgstr "" - -#: src/window.blp:602 -msgid "Discourse" -msgstr "" - -#: src/window.blp:608 -msgid "Matrix" -msgstr "" - -#: src/window.blp:616 -msgid "Icon Library" -msgstr "" - -#: src/window.blp:621 -msgid "Platform Tools" -msgstr "" - -#: src/window.blp:624 -msgid "Adwaita Demo" -msgstr "" - -#: src/window.blp:630 -msgid "GTK Demo" -msgstr "" - -#: src/window.blp:636 -msgid "GTK Widget Factory" -msgstr "" - -#: src/window.blp:644 src/shortcutsWindow.blp:54 -msgid "Keyboard Shortcuts" -msgstr "" - -#: src/window.blp:649 -msgid "About Workbench" -msgstr "" - -#: src/shortcutsWindow.blp:11 -msgid "Run Code" -msgstr "" - -#: src/shortcutsWindow.blp:16 -msgid "Format" -msgstr "" - -#: src/shortcutsWindow.blp:26 -msgid "Open Library" -msgstr "" - -#: src/shortcutsWindow.blp:31 -msgid "Toggle Console" -msgstr "" - -#: src/shortcutsWindow.blp:36 -msgid "Clear Console" -msgstr "" - -#: src/shortcutsWindow.blp:42 -msgid "Inspector" -msgstr "" - -#: src/shortcutsWindow.blp:50 -msgid "Redo" -msgstr "" - -#: src/shortcutsWindow.blp:58 -msgid "Quit" -msgstr "" - -#: src/Library/Library.blp:7 -msgid "Library" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:22 -#: troll/src/widgets/ThemeSelector.blp:25 -msgid "Follow system style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:41 -#: troll/src/widgets/ThemeSelector.blp:44 -msgid "Light style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:60 -#: troll/src/widgets/ThemeSelector.blp:63 -msgid "Dark style" -msgstr "" diff --git a/po/ru.po b/po/ru.po deleted file mode 100644 index f1f2aa682..000000000 --- a/po/ru.po +++ /dev/null @@ -1,757 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR Sonny Piers -# This file is distributed under the same license as the re.sonny.Workbench package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: re.sonny.Workbench\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-18 13:24+0100\n" -"PO-Revision-Date: 2022-08-30 16:19+0000\n" -"Last-Translator: Vik \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.14.1-dev\n" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:4 -msgid "Workbench" -msgstr "Workbench" - -#: data/app.desktop:5 data/app.metainfo.xml:10 -msgid "Learn and prototype with GNOME technologies" -msgstr "Изучайте и создавайте прототипы с технологиями GNOME" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:12 -msgid "CSS;JavaScript;GJS;Blueprint;builder;Vala;" -msgstr "CSS;JavaScript;GJS;Blueprint;builder;Vala;" - -#: data/app.metainfo.xml:13 -msgid "" -"Workbench goal is to let you experiment with GNOME technologies, no matter " -"if tinkering for the first time or building and testing a GTK user interface." -msgstr "" -"Цель Workbench — позволить вам экспериментировать с технологиями GNOME, " -"независимо от того, делаете ли вы это впервые или создаете и тестируете " -"пользовательский интерфейс GTK." - -#: data/app.metainfo.xml:14 -msgid "Among other things, Workbench comes with" -msgstr "Среди прочего, Workbench поставляется с" - -#: data/app.metainfo.xml:16 -msgid "realtime GTK/CSS preview" -msgstr "предпросмотром GTK/CSS в реальном времени" - -#: data/app.metainfo.xml:17 -msgid "library of examples" -msgstr "библиотекой примеров" - -#: data/app.metainfo.xml:18 -msgid "1000+ icons" -msgstr "" - -#: data/app.metainfo.xml:19 -#, fuzzy -msgid "JavaScript and Vala support" -msgstr "JavaScript и Vala работают без какой-либо настройки" - -#: data/app.metainfo.xml:20 -msgid "XML and Blueprint for describing user interface" -msgstr "XML и Blueprint для описания пользовательского интерфейса" - -#: data/app.metainfo.xml:21 -msgid "syntax highlighting, undo/redo, autosave, session restore" -msgstr "" -"подсветкой синтаксиса, отмена/повтор, автосохранение, восстановление сеанса" - -#: data/app.metainfo.xml:22 -msgid "code formatter" -msgstr "средством форматирования кода" - -#: data/app.metainfo.xml:23 -msgid "console logs" -msgstr "журналами консоли" - -#: data/app.metainfo.xml:52 -msgid "Use Vala Language Server for diagnostics" -msgstr "" - -#: data/app.metainfo.xml:53 -#, fuzzy -msgid "Move Icon Browser to the main application menu" -msgstr "Закладки перемещены в главное меню" - -#: data/app.metainfo.xml:54 -msgid "Reset window preview on close" -msgstr "" - -#: data/app.metainfo.xml:55 -msgid "Add a warning about Blueprint being experimental" -msgstr "" - -#: data/app.metainfo.xml:56 -msgid "Fix loading and running code with Blueprint UI" -msgstr "" - -#: data/app.metainfo.xml:57 -msgid "Fix crash when using abstract UI types" -msgstr "" - -#: data/app.metainfo.xml:58 -msgid "Fix \"No UI definition loaded yet.\" preview error when using Vala" -msgstr "" - -#: data/app.metainfo.xml:59 -msgid "Fix error message when hovering text with no diagnostic" -msgstr "" - -#: data/app.metainfo.xml:60 -msgid "VTE 0.70.1" -msgstr "" - -#: data/app.metainfo.xml:67 -msgid "GNOME 43" -msgstr "" - -#: data/app.metainfo.xml:68 -msgid "Display CSS errors inline" -msgstr "" - -#: data/app.metainfo.xml:69 -msgid "Fix responsiveness when working on large Blueprint files" -msgstr "" - -#: data/app.metainfo.xml:70 -msgid "Use AdwAboutWindow" -msgstr "" - -#: data/app.metainfo.xml:71 -#, fuzzy -msgid "Blueprint 0.4.0" -msgstr "Blueprint" - -#: data/app.metainfo.xml:72 -msgid "VTE 0.70.0" -msgstr "" - -#: data/app.metainfo.xml:73 -#, fuzzy -msgid "Various bug and crash fixes" -msgstr "Различные исправления" - -#: data/app.metainfo.xml:80 -msgid "Show tooltip hints in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:81 -#, fuzzy -msgid "Improve XML formatter" -msgstr "средством форматирования кода" - -#: data/app.metainfo.xml:82 -msgid "Add Ctrl+Shift+Return shortcut to format" -msgstr "" - -#: data/app.metainfo.xml:83 -msgid "Apply Style CSS to windowed preview" -msgstr "" - -#: data/app.metainfo.xml:84 data/app.metainfo.xml:129 -msgid "Improve application design" -msgstr "Улучшен дизайн приложения" - -#: data/app.metainfo.xml:85 -msgid "Prevent crash for templates with GtkWidget parent" -msgstr "" - -#: data/app.metainfo.xml:86 -#, fuzzy -msgid "Update VTE and icon-development-kit" -msgstr "Включены все значки из комплекта разработки значков" - -#: data/app.metainfo.xml:93 -msgid "Underline errors in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:94 -msgid "Fix bugs and crashes" -msgstr "" - -#: data/app.metainfo.xml:102 -msgid "Add an Icon Browser to find the right icons for your prototypes" -msgstr "" - -#: data/app.metainfo.xml:103 -msgid "Add a Platform tools Library demo" -msgstr "" - -#: data/app.metainfo.xml:104 -msgid "Improve the style switcher" -msgstr "" - -#: data/app.metainfo.xml:105 -msgid "Replace confirmation dialogs with toasts and undo" -msgstr "" - -#: data/app.metainfo.xml:106 -msgid "Support updates on root objects" -msgstr "" - -#: data/app.metainfo.xml:107 -#, fuzzy -msgid "Support binding signal handlers from UI" -msgstr "Добавлена поддержка предпросмотра обработчиков сигналов" - -#: data/app.metainfo.xml:108 -msgid "Add APIs to allow using templates from Code" -msgstr "" - -#: data/app.metainfo.xml:109 -#, fuzzy -msgid "Add Center/Fill preview modes for templates" -msgstr "Добавлена поддержка предпросмотра шаблонов" - -#: data/app.metainfo.xml:111 -msgid "Open external preview with the dimensions of the internal preview" -msgstr "" - -#: data/app.metainfo.xml:112 -msgid "64 new icons available" -msgstr "" - -#: data/app.metainfo.xml:113 -msgid "Update Blueprint to 0.2.0" -msgstr "" - -#: data/app.metainfo.xml:114 -msgid "Fix empty preview on first load" -msgstr "" - -#: data/app.metainfo.xml:115 -msgid "Fix style scheme switch when system preference is light" -msgstr "" - -#: data/app.metainfo.xml:116 -msgid "Remove grid pattern on the source editors" -msgstr "" - -#: data/app.metainfo.xml:122 -msgid "Highlights" -msgstr "Особенности" - -#: data/app.metainfo.xml:124 -msgid "Add Blueprint markup syntax for UI" -msgstr "Добавлена поддержка синтаксиса разметки Blueprint для UI" - -#: data/app.metainfo.xml:125 -msgid "Add Vala programming language for Code" -msgstr "Добавлен язык программирования Vala для кода" - -#: data/app.metainfo.xml:126 -msgid "Add support for previewing templates" -msgstr "Добавлена поддержка предпросмотра шаблонов" - -#: data/app.metainfo.xml:127 -msgid "Add support for previewing signal handlers" -msgstr "Добавлена поддержка предпросмотра обработчиков сигналов" - -#: data/app.metainfo.xml:128 -msgid "Include all icons from icon-development-kit" -msgstr "Включены все значки из комплекта разработки значков" - -#: data/app.metainfo.xml:130 -msgid "Distribute Library examples under CC0-1.0" -msgstr "Распространение примеров библиотеки под CC0-1.0" - -#: data/app.metainfo.xml:131 -msgid "Respect system preference for color scheme" -msgstr "Следует предпочтению системы для цветовой схемы" - -#: data/app.metainfo.xml:132 -msgid "Add proper light/dark color schemes for Console" -msgstr "Добавьлена правильная светлая/темная цветовая схема для консоли" - -#: data/app.metainfo.xml:133 -#, fuzzy -msgid "Fix error when importing files" -msgstr "Исправлена ошибка при открытии файла" - -#: data/app.metainfo.xml:135 -msgid "Other changes" -msgstr "Другие изменения" - -#: data/app.metainfo.xml:137 -msgid "Silence platform tools" -msgstr "Инструменты платформы Silence" - -#: data/app.metainfo.xml:138 -msgid "Remove GTK Icon browser platform tool" -msgstr "" - -#: data/app.metainfo.xml:139 -msgid "Make Library examples only open relevant panels" -msgstr "" -"Сделано так, чтобы примеры библиотеки открывали только соответствующие панели" - -#: data/app.metainfo.xml:140 -msgid "Always open the Console when opening a Library example" -msgstr "Теперь всегда открывается консоль при открытии примера библиотеки" - -#: data/app.metainfo.xml:141 -msgid "Prevent running Code if the panel is not visible" -msgstr "Добавлено предотвращение запуска кода, если панель не видна" - -#: data/app.metainfo.xml:142 -msgid "Add icons and mnemonics for all buttons" -msgstr "Добавлены значки и мнемоники для всех кнопок" - -#: data/app.metainfo.xml:143 -msgid "Move Bookmarks to the main menu" -msgstr "Закладки перемещены в главное меню" - -#: data/app.metainfo.xml:144 -msgid "Enable scrollbar and kinetic scrolling on Console" -msgstr "Включены полосы прокрутки и кинетическая прокрутка в консоле" - -#: data/app.metainfo.xml:145 -msgid "Improve Library examples" -msgstr "Улудшены примеры библеотек" - -#: data/app.metainfo.xml:146 -msgid "Performance optimizations" -msgstr "Оптимизация производительности" - -#: data/app.metainfo.xml:147 -msgid "Show a placeholder when all panels are invisible" -msgstr "Теперь будет отображаться заглушка, когда все панели невидимые" - -#: data/app.metainfo.xml:148 -msgid "Crash fixes" -msgstr "Исправлены сбои" - -#: data/app.metainfo.xml:149 -msgid "Use org.gnome.Sdk runtime" -msgstr "Используется среда выполнения org.gnome.Sdk" - -#: data/app.metainfo.xml:156 -msgid "Add a Library of examples" -msgstr "Добавлена библиотека примеров" - -#: data/app.metainfo.xml:157 -msgid "Add an example of WebSocket client" -msgstr "Добавлен пример клиента WebSocket" - -#: data/app.metainfo.xml:158 -msgid "Add an example of toasts" -msgstr "Добавлен пример тостов" - -#: data/app.metainfo.xml:159 -msgid "Add an example of application window" -msgstr "Добавлен пример окна приложения" - -#: data/app.metainfo.xml:160 -msgid "Add an example of desktop notification" -msgstr "Добавлен пример уведомления рабочего стола" - -#: data/app.metainfo.xml:162 -msgid "Add Adwaita Demo, GTK Demo, GTK Widget Factory and GTK Icon Browser" -msgstr "" -"Добавлены Adwaita Demo, GTK Demo, GTK Widget Factory и GTK Icon Browser" - -#: data/app.metainfo.xml:163 -msgid "The Console can be collapsed by resizing it" -msgstr "Консоль теперь может быть скрыта путём изменения размера" - -#: data/app.metainfo.xml:164 -msgid "Prevent system.exit from quitting Workbench" -msgstr "Предотвращен выход system.exit из Workbench" - -#: data/app.metainfo.xml:165 -msgid "Allow calling GObject.registerClass multiple times" -msgstr "Разрешен многоразовый вызов GObject.registerClass" - -#: data/app.metainfo.xml:166 -msgid "Prevent crash caused by using non GtkBuildable objects" -msgstr "" -"Предотвращение сбоя, вызванного использованием объектов, отличных от " -"GtkBuildable" - -#: data/app.metainfo.xml:167 -msgid "Allow using DBus and Gio.Application" -msgstr "Разрешено использование DBus и Gio.Application" - -#: data/app.metainfo.xml:168 -msgid "Allow using network" -msgstr "Разрешено использование интернета" - -#: data/app.metainfo.xml:169 -msgid "Enable GtkWindow objects preview" -msgstr "Включен предварительный просмотр объектов GtkWindow" - -#: data/app.metainfo.xml:176 -msgid "Take a png screenshot of the preview" -msgstr "Можно сделать скриншот предварительного просмотра в формате png" - -#: data/app.metainfo.xml:177 -msgid "The console is now resizable" -msgstr "Размер консоли теперь можно изменять" - -#: data/app.metainfo.xml:178 -msgid "Redesign the dark/light mode switcher" -msgstr "Переработан переключатель темного/светлого режима" - -#: data/app.metainfo.xml:179 -msgid "Show platform and dependencies in about dialog" -msgstr "" -"Теперь показана платформа и зависимости в диалоговом окне «О программе»" - -#: data/app.metainfo.xml:180 -msgid "Update to GNOME platform 42" -msgstr "Обновление до платформы GNOME 42" - -#: data/app.metainfo.xml:181 -msgid "Various fixes" -msgstr "Различные исправления" - -#: data/app.metainfo.xml:187 -msgid "This is the first release of Workbench. We hope you like it." -msgstr "Это первый выпуск Workbench. Мы надеемся, что Вам понравится." - -#: src/window.js:371 -msgid "The demo has been loaded" -msgstr "" - -#: src/window.js:372 src/window.js:453 src/shortcutsWindow.blp:46 -msgid "Undo" -msgstr "Назад" - -#: src/window.js:445 -msgid "This file cannot be loaded" -msgstr "" - -#: src/window.js:452 -msgid "The file has been loaded" -msgstr "" - -#. TRANSLATORS: eg. 'Translator Name ' or 'Translator Name https://website.example' -#: src/about.js:39 -msgid "translator-credits" -msgstr "" -"Давид Лапшин \n" -"ViktorOn https://github.com/ViktorOn" - -#: src/about.js:52 -msgid "Contributors" -msgstr "" - -#: src/actions.js:53 src/shortcutsWindow.blp:21 -msgid "Import File" -msgstr "Импортировать файл" - -#: src/actions.js:147 -msgid "All supported" -msgstr "Все поддерживается" - -#: src/window.blp:15 -msgid "_Library" -msgstr "_Библиотека" - -#: src/window.blp:19 -msgid "Open Library of Demos and Examples (Ctrl+Shift+O)" -msgstr "Открыть библиотеку демонстраций и примеров (Ctrl+Shift+O)" - -#: src/window.blp:37 -msgid "_Code" -msgstr "_Код" - -#: src/window.blp:54 -msgid "_Style" -msgstr "_Стиль" - -#: src/window.blp:71 -msgid "_UI" -msgstr "_UI" - -#: src/window.blp:88 -msgid "_Preview" -msgstr "_Предпросмотр" - -#: src/window.blp:130 -msgid "Code" -msgstr "Код" - -#: src/window.blp:146 -msgid "Switch document" -msgstr "Переключить документ" - -#: src/window.blp:154 -msgid "_Run" -msgstr "_Запустить" - -#: src/window.blp:158 -msgid "Run (Ctrl+⏎)" -msgstr "Запустить (Ctrl+⏎)" - -#: src/window.blp:218 -msgid "Style CSS" -msgstr "Стиль CSS" - -#: src/window.blp:257 -msgid "UI" -msgstr "UI" - -#: src/window.blp:273 -msgid "Convert and switch syntax" -msgstr "" - -#: src/window.blp:277 -#, fuzzy -msgid "Informaton about Blueprint" -msgstr "Конвертировать в Blueprint" - -#: src/window.blp:289 src/window.blp:291 -msgid "Convert to XML" -msgstr "Конвертировать в XML" - -#: src/window.blp:300 src/window.blp:302 -msgid "Convert to Blueprint" -msgstr "Конвертировать в Blueprint" - -#: src/window.blp:366 -msgid "Preview" -msgstr "Предпросмотр" - -#: src/window.blp:376 -msgid "Fill" -msgstr "" - -#: src/window.blp:377 -msgid "Center" -msgstr "" - -#: src/window.blp:380 -#, fuzzy -msgid "Select Preview mode" -msgstr "Закрыть окно предпросмотра" - -#: src/window.blp:386 src/window.blp:388 -msgid "Take Screenshot of Preview" -msgstr "Сделать скриншот предпросмотра" - -#: src/window.blp:420 src/window.blp:438 -msgid "Windowed Preview" -msgstr "Предпросмотр в окне" - -#: src/window.blp:421 src/window.blp:439 -#, fuzzy -msgid "" -"This interface can only be previewed as a separate window.\n" -"We recommend using “Always on Top”." -msgstr "" -"Этот интерфейс можно просмотреть только как отдельное окно.\n" -"Мы рекомендуем использовать «Всегда сверху»" - -#: src/window.blp:428 -msgid "Show Preview Window" -msgstr "Показать окно предпросмотра" - -#: src/window.blp:446 -msgid "Close Preview Window" -msgstr "Закрыть окно предпросмотра" - -#: src/window.blp:481 -msgid "C_onsole" -msgstr "К_онсоль" - -#: src/window.blp:485 -msgid "Show logs (Ctrl+Shift+K)" -msgstr "Показать журналы (Ctrl+Shift+K)" - -#: src/window.blp:491 -msgid "_Inspector" -msgstr "_Инспектор" - -#: src/window.blp:494 -msgid "Open GTK Inspector (Ctrl+Shift+I)" -msgstr "Открыть Инспектор GTK (Ctrl+Shift+I)" - -#: src/window.blp:505 -msgid "Cl_ear" -msgstr "Оч_истить" - -#: src/window.blp:509 -msgid "Clear console (Ctrl+K)" -msgstr "Очистить консоль (Ctrl+K)" - -#: src/window.blp:536 -msgid "Future versions may have breaking syntax." -msgstr "" - -#: src/window.blp:537 -msgid "" -"Blueprint is\n" -"Experimental" -msgstr "" - -#: src/window.blp:541 -#, fuzzy -msgid "Documentation" -msgstr "Документация для разработчиков" - -#: src/window.blp:556 -msgid "Import File…" -msgstr "Импортировать файл…" - -#: src/window.blp:562 -msgid "Bookmarks" -msgstr "Закладки" - -#: src/window.blp:564 -msgid "Learn" -msgstr "Учиться" - -#: src/window.blp:567 -msgid "Developer Documentation" -msgstr "Документация для разработчиков" - -#: src/window.blp:574 -msgid "Human Interface Guidelines" -msgstr "Рекомендации по человеческому интерфейсу" - -#: src/window.blp:580 -msgid "JavaScript" -msgstr "JavaScript" - -#: src/window.blp:586 -msgid "Vala" -msgstr "Vala" - -#: src/window.blp:592 -msgid "Blueprint" -msgstr "Blueprint" - -#: src/window.blp:599 -msgid "Get help" -msgstr "Получить помощь" - -#: src/window.blp:602 -msgid "Discourse" -msgstr "Обсудить" - -#: src/window.blp:608 -msgid "Matrix" -msgstr "Matrix" - -#: src/window.blp:616 -#, fuzzy -msgid "Icon Library" -msgstr "Открыть библиотеку" - -#: src/window.blp:621 -msgid "Platform Tools" -msgstr "Инструменты платформы" - -#: src/window.blp:624 -msgid "Adwaita Demo" -msgstr "Adwaita Demo" - -#: src/window.blp:630 -msgid "GTK Demo" -msgstr "GTK Demo" - -#: src/window.blp:636 -msgid "GTK Widget Factory" -msgstr "GTK Widget Factory" - -#: src/window.blp:644 src/shortcutsWindow.blp:54 -msgid "Keyboard Shortcuts" -msgstr "Комбинации клавиш" - -#: src/window.blp:649 -msgid "About Workbench" -msgstr "О Workbench" - -#: src/shortcutsWindow.blp:11 -msgid "Run Code" -msgstr "Запустить код" - -#: src/shortcutsWindow.blp:16 -msgid "Format" -msgstr "" - -#: src/shortcutsWindow.blp:26 -msgid "Open Library" -msgstr "Открыть библиотеку" - -#: src/shortcutsWindow.blp:31 -msgid "Toggle Console" -msgstr "Переключить консоль" - -#: src/shortcutsWindow.blp:36 -msgid "Clear Console" -msgstr "Очистить консоль" - -#: src/shortcutsWindow.blp:42 -msgid "Inspector" -msgstr "Инспектор" - -#: src/shortcutsWindow.blp:50 -msgid "Redo" -msgstr "Вперед" - -#: src/shortcutsWindow.blp:58 -msgid "Quit" -msgstr "Выйти" - -#: src/Library/Library.blp:7 -msgid "Library" -msgstr "Библиотека" - -#: troll/src/widgets/ThemeSelector.blp:22 -#: troll/src/widgets/ThemeSelector.blp:25 -msgid "Follow system style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:41 -#: troll/src/widgets/ThemeSelector.blp:44 -msgid "Light style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:60 -#: troll/src/widgets/ThemeSelector.blp:63 -msgid "Dark style" -msgstr "" - -#~ msgid "About My App" -#~ msgstr "О моем приложении" - -#~ msgid "" -#~ "Learn and prototype with\n" -#~ "GNOME technologies" -#~ msgstr "" -#~ "Учитесь и прототипируйте с\n" -#~ "технологиями GNOME" - -#~ msgid "sun-symbolic" -#~ msgstr "sun-symbolic" - -#~ msgid "Use Light mode" -#~ msgstr "Использовать светлый режим" - -#~ msgid "workbench-moon-rounded-symbolic" -#~ msgstr "workbench-moon-rounded-symbolic" - -#~ msgid "Use Dark mode" -#~ msgstr "Использовать темный режим" - -#~ msgid "Are you sure you want to discard your changes?" -#~ msgstr "Вы уверены, что хотите отменить изменения?" diff --git a/po/tr.po b/po/tr.po deleted file mode 100644 index d860c33af..000000000 --- a/po/tr.po +++ /dev/null @@ -1,807 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the re.sonny.Workbench package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: re.sonny.Workbench\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-18 13:24+0100\n" -"PO-Revision-Date: 2022-06-07 11:17+0000\n" -"Last-Translator: Onuralp SEZER \n" -"Language-Team: Turkish \n" -"Language: tr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.13-dev\n" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:4 -msgid "Workbench" -msgstr "Workbench" - -#: data/app.desktop:5 data/app.metainfo.xml:10 -msgid "Learn and prototype with GNOME technologies" -msgstr "GNOME teknolojileriyle hem öğrenin hem de prototip oluşturun" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:12 -msgid "CSS;JavaScript;GJS;Blueprint;builder;Vala;" -msgstr "CSS;JavaScript;GJS;Blueprint;builder;Vala;" - -#: data/app.metainfo.xml:13 -#, fuzzy -msgid "" -"Workbench goal is to let you experiment with GNOME technologies, no matter " -"if tinkering for the first time or building and testing a GTK user interface." -msgstr "" -"Workbench'in amacı, ister ilk kez kurcalıyor, ister özel bir GTK widget'ı " -"oluşturup test ediyor olun, GNOME teknolojilerini denemenize izin vermektir." - -#: data/app.metainfo.xml:14 -msgid "Among other things, Workbench comes with" -msgstr "Diğer şeylerin yanı sıra, Workbench bunlarla birlikte gelir:" - -#: data/app.metainfo.xml:16 -msgid "realtime GTK/CSS preview" -msgstr "gerçek zamanlı GTK/CSS önizlemesi" - -#: data/app.metainfo.xml:17 -msgid "library of examples" -msgstr "kütüphane örnekleri" - -#: data/app.metainfo.xml:18 -msgid "1000+ icons" -msgstr "" - -#: data/app.metainfo.xml:19 -#, fuzzy -msgid "JavaScript and Vala support" -msgstr "Herhangi bir kurulum yapmadan JavaScript ve Vala çalıştırın" - -#: data/app.metainfo.xml:20 -msgid "XML and Blueprint for describing user interface" -msgstr "XML ve Blueprint kullanıcı arayüzünü açıklamak için" - -#: data/app.metainfo.xml:21 -msgid "syntax highlighting, undo/redo, autosave, session restore" -msgstr "" -"Sözdizimi vurgulama, geri al/yeniden yap, otomatik kaydet, oturum geri " -"yüklemek" - -#: data/app.metainfo.xml:22 -msgid "code formatter" -msgstr "kod formatlayıcı" - -#: data/app.metainfo.xml:23 -msgid "console logs" -msgstr "konsol logları" - -#: data/app.metainfo.xml:52 -msgid "Use Vala Language Server for diagnostics" -msgstr "" - -#: data/app.metainfo.xml:53 -msgid "Move Icon Browser to the main application menu" -msgstr "" - -#: data/app.metainfo.xml:54 -msgid "Reset window preview on close" -msgstr "" - -#: data/app.metainfo.xml:55 -msgid "Add a warning about Blueprint being experimental" -msgstr "" - -#: data/app.metainfo.xml:56 -msgid "Fix loading and running code with Blueprint UI" -msgstr "" - -#: data/app.metainfo.xml:57 -msgid "Fix crash when using abstract UI types" -msgstr "" - -#: data/app.metainfo.xml:58 -msgid "Fix \"No UI definition loaded yet.\" preview error when using Vala" -msgstr "" - -#: data/app.metainfo.xml:59 -msgid "Fix error message when hovering text with no diagnostic" -msgstr "" - -#: data/app.metainfo.xml:60 -msgid "VTE 0.70.1" -msgstr "" - -#: data/app.metainfo.xml:67 -msgid "GNOME 43" -msgstr "" - -#: data/app.metainfo.xml:68 -msgid "Display CSS errors inline" -msgstr "" - -#: data/app.metainfo.xml:69 -msgid "Fix responsiveness when working on large Blueprint files" -msgstr "" - -#: data/app.metainfo.xml:70 -msgid "Use AdwAboutWindow" -msgstr "" - -#: data/app.metainfo.xml:71 -#, fuzzy -msgid "Blueprint 0.4.0" -msgstr "Blueprint" - -#: data/app.metainfo.xml:72 -msgid "VTE 0.70.0" -msgstr "" - -#: data/app.metainfo.xml:73 -#, fuzzy -msgid "Various bug and crash fixes" -msgstr "Çeşitli düzeltmeler" - -#: data/app.metainfo.xml:80 -msgid "Show tooltip hints in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:81 -#, fuzzy -msgid "Improve XML formatter" -msgstr "kod formatlayıcı" - -#: data/app.metainfo.xml:82 -msgid "Add Ctrl+Shift+Return shortcut to format" -msgstr "" - -#: data/app.metainfo.xml:83 -msgid "Apply Style CSS to windowed preview" -msgstr "" - -#: data/app.metainfo.xml:84 data/app.metainfo.xml:129 -msgid "Improve application design" -msgstr "" - -#: data/app.metainfo.xml:85 -msgid "Prevent crash for templates with GtkWidget parent" -msgstr "" - -#: data/app.metainfo.xml:86 -msgid "Update VTE and icon-development-kit" -msgstr "" - -#: data/app.metainfo.xml:93 -msgid "Underline errors in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:94 -msgid "Fix bugs and crashes" -msgstr "" - -#: data/app.metainfo.xml:102 -msgid "Add an Icon Browser to find the right icons for your prototypes" -msgstr "" - -#: data/app.metainfo.xml:103 -msgid "Add a Platform tools Library demo" -msgstr "" - -#: data/app.metainfo.xml:104 -msgid "Improve the style switcher" -msgstr "" - -#: data/app.metainfo.xml:105 -msgid "Replace confirmation dialogs with toasts and undo" -msgstr "" - -#: data/app.metainfo.xml:106 -msgid "Support updates on root objects" -msgstr "" - -#: data/app.metainfo.xml:107 -msgid "Support binding signal handlers from UI" -msgstr "" - -#: data/app.metainfo.xml:108 -msgid "Add APIs to allow using templates from Code" -msgstr "" - -#: data/app.metainfo.xml:109 -msgid "Add Center/Fill preview modes for templates" -msgstr "" - -#: data/app.metainfo.xml:111 -msgid "Open external preview with the dimensions of the internal preview" -msgstr "" - -#: data/app.metainfo.xml:112 -msgid "64 new icons available" -msgstr "" - -#: data/app.metainfo.xml:113 -msgid "Update Blueprint to 0.2.0" -msgstr "" - -#: data/app.metainfo.xml:114 -msgid "Fix empty preview on first load" -msgstr "" - -#: data/app.metainfo.xml:115 -msgid "Fix style scheme switch when system preference is light" -msgstr "" - -#: data/app.metainfo.xml:116 -msgid "Remove grid pattern on the source editors" -msgstr "" - -#: data/app.metainfo.xml:122 -msgid "Highlights" -msgstr "Vurgulamalar" - -#: data/app.metainfo.xml:124 -msgid "Add Blueprint markup syntax for UI" -msgstr "" - -#: data/app.metainfo.xml:125 -msgid "Add Vala programming language for Code" -msgstr "" - -#: data/app.metainfo.xml:126 -msgid "Add support for previewing templates" -msgstr "" - -#: data/app.metainfo.xml:127 -msgid "Add support for previewing signal handlers" -msgstr "" - -#: data/app.metainfo.xml:128 -msgid "Include all icons from icon-development-kit" -msgstr "" - -#: data/app.metainfo.xml:130 -msgid "Distribute Library examples under CC0-1.0" -msgstr "" - -#: data/app.metainfo.xml:131 -msgid "Respect system preference for color scheme" -msgstr "" - -#: data/app.metainfo.xml:132 -msgid "Add proper light/dark color schemes for Console" -msgstr "" - -#: data/app.metainfo.xml:133 -msgid "Fix error when importing files" -msgstr "" - -#: data/app.metainfo.xml:135 -msgid "Other changes" -msgstr "" - -#: data/app.metainfo.xml:137 -#, fuzzy -msgid "Silence platform tools" -msgstr "Platform Araçları" - -#: data/app.metainfo.xml:138 -msgid "Remove GTK Icon browser platform tool" -msgstr "" - -#: data/app.metainfo.xml:139 -msgid "Make Library examples only open relevant panels" -msgstr "" - -#: data/app.metainfo.xml:140 -msgid "Always open the Console when opening a Library example" -msgstr "" - -#: data/app.metainfo.xml:141 -msgid "Prevent running Code if the panel is not visible" -msgstr "" - -#: data/app.metainfo.xml:142 -msgid "Add icons and mnemonics for all buttons" -msgstr "" - -#: data/app.metainfo.xml:143 -msgid "Move Bookmarks to the main menu" -msgstr "" - -#: data/app.metainfo.xml:144 -msgid "Enable scrollbar and kinetic scrolling on Console" -msgstr "" - -#: data/app.metainfo.xml:145 -msgid "Improve Library examples" -msgstr "" - -#: data/app.metainfo.xml:146 -msgid "Performance optimizations" -msgstr "" - -#: data/app.metainfo.xml:147 -msgid "Show a placeholder when all panels are invisible" -msgstr "" - -#: data/app.metainfo.xml:148 -#, fuzzy -msgid "Crash fixes" -msgstr "Çeşitli düzeltmeler" - -#: data/app.metainfo.xml:149 -msgid "Use org.gnome.Sdk runtime" -msgstr "" - -#: data/app.metainfo.xml:156 -msgid "Add a Library of examples" -msgstr "" - -#: data/app.metainfo.xml:157 -msgid "Add an example of WebSocket client" -msgstr "" - -#: data/app.metainfo.xml:158 -msgid "Add an example of toasts" -msgstr "" - -#: data/app.metainfo.xml:159 -msgid "Add an example of application window" -msgstr "" - -#: data/app.metainfo.xml:160 -msgid "Add an example of desktop notification" -msgstr "" - -#: data/app.metainfo.xml:162 -msgid "Add Adwaita Demo, GTK Demo, GTK Widget Factory and GTK Icon Browser" -msgstr "" - -#: data/app.metainfo.xml:163 -msgid "The Console can be collapsed by resizing it" -msgstr "" - -#: data/app.metainfo.xml:164 -msgid "Prevent system.exit from quitting Workbench" -msgstr "" - -#: data/app.metainfo.xml:165 -msgid "Allow calling GObject.registerClass multiple times" -msgstr "" - -#: data/app.metainfo.xml:166 -msgid "Prevent crash caused by using non GtkBuildable objects" -msgstr "" - -#: data/app.metainfo.xml:167 -msgid "Allow using DBus and Gio.Application" -msgstr "DBus ve Gio.Application kullanımına izin ver" - -#: data/app.metainfo.xml:168 -msgid "Allow using network" -msgstr "Ağ kullanımına izin ver" - -#: data/app.metainfo.xml:169 -msgid "Enable GtkWindow objects preview" -msgstr "GtkWindow nesneleri için önizlemeyi etkinleştir" - -#: data/app.metainfo.xml:176 -msgid "Take a png screenshot of the preview" -msgstr "Önizlemenin png görüntüsünü al" - -#: data/app.metainfo.xml:177 -msgid "The console is now resizable" -msgstr "Konsol artık yeniden boyutlandırılabilir" - -#: data/app.metainfo.xml:178 -msgid "Redesign the dark/light mode switcher" -msgstr "Karanlık/ışık modu değiştiricisini yeniden tasarlayın" - -#: data/app.metainfo.xml:179 -msgid "Show platform and dependencies in about dialog" -msgstr "Hakkında iletişim kutusunda platformu ve bağımlılıkları göster" - -#: data/app.metainfo.xml:180 -msgid "Update to GNOME platform 42" -msgstr "GNOME platform 42'ye güncelle" - -#: data/app.metainfo.xml:181 -msgid "Various fixes" -msgstr "Çeşitli düzeltmeler" - -#: data/app.metainfo.xml:187 -msgid "This is the first release of Workbench. We hope you like it." -msgstr "Bu, Workbench'in ilk sürümüdür. Umarız beğenirsin." - -#: src/window.js:371 -msgid "The demo has been loaded" -msgstr "" - -#: src/window.js:372 src/window.js:453 src/shortcutsWindow.blp:46 -msgid "Undo" -msgstr "Geri al" - -#: src/window.js:445 -msgid "This file cannot be loaded" -msgstr "" - -#: src/window.js:452 -msgid "The file has been loaded" -msgstr "" - -#. TRANSLATORS: eg. 'Translator Name ' or 'Translator Name https://website.example' -#: src/about.js:39 -msgid "translator-credits" -msgstr "Emin Fedar" - -#: src/about.js:52 -msgid "Contributors" -msgstr "" - -#: src/actions.js:53 src/shortcutsWindow.blp:21 -msgid "Import File" -msgstr "Dosya içe aktar" - -#: src/actions.js:147 -msgid "All supported" -msgstr "Hepsi destekleniyor" - -#: src/window.blp:15 -msgid "_Library" -msgstr "Kütüphane" - -#: src/window.blp:19 -msgid "Open Library of Demos and Examples (Ctrl+Shift+O)" -msgstr "Demolar ve Örnekler Kitaplığını Açın (Ctrl+Shift+O)" - -#: src/window.blp:37 -msgid "_Code" -msgstr "_Kod" - -#: src/window.blp:54 -msgid "_Style" -msgstr "_Stil" - -#: src/window.blp:71 -msgid "_UI" -msgstr "_UI" - -#: src/window.blp:88 -msgid "_Preview" -msgstr "_Önizleme" - -#: src/window.blp:130 -msgid "Code" -msgstr "Kod" - -#: src/window.blp:146 -msgid "Switch document" -msgstr "Döküman değiştir" - -#: src/window.blp:154 -msgid "_Run" -msgstr "_Çalıştır" - -#: src/window.blp:158 -msgid "Run (Ctrl+⏎)" -msgstr "Çalıştır (Ctrl+⏎)" - -#: src/window.blp:218 -msgid "Style CSS" -msgstr "Stil CSS" - -#: src/window.blp:257 -msgid "UI" -msgstr "UI" - -#: src/window.blp:273 -msgid "Convert and switch syntax" -msgstr "" - -#: src/window.blp:277 -#, fuzzy -msgid "Informaton about Blueprint" -msgstr "Blueprint'e çevir" - -#: src/window.blp:289 src/window.blp:291 -msgid "Convert to XML" -msgstr "XML'e çevir" - -#: src/window.blp:300 src/window.blp:302 -msgid "Convert to Blueprint" -msgstr "Blueprint'e çevir" - -#: src/window.blp:366 -msgid "Preview" -msgstr "Önizleme" - -#: src/window.blp:376 -msgid "Fill" -msgstr "" - -#: src/window.blp:377 -msgid "Center" -msgstr "" - -#: src/window.blp:380 -#, fuzzy -msgid "Select Preview mode" -msgstr "Önizleme Penceresini Kapat" - -#: src/window.blp:386 src/window.blp:388 -msgid "Take Screenshot of Preview" -msgstr "Önizlemenin Ekran Görüntüsünü Al" - -#: src/window.blp:420 src/window.blp:438 -msgid "Windowed Preview" -msgstr "Pencereli Önizleme" - -#: src/window.blp:421 src/window.blp:439 -#, fuzzy -msgid "" -"This interface can only be previewed as a separate window.\n" -"We recommend using “Always on Top”." -msgstr "" -"Bu arayüz sadece ayrı bir pencere olarak önizlenebilir.\n" -"\"Her Zaman En Üstte\" seçeneğini kullanmanızı öneririz" - -#: src/window.blp:428 -msgid "Show Preview Window" -msgstr "Önizleme Penceresini Görüntüle" - -#: src/window.blp:446 -msgid "Close Preview Window" -msgstr "Önizleme Penceresini Kapat" - -#: src/window.blp:481 -msgid "C_onsole" -msgstr "K_onsol" - -#: src/window.blp:485 -msgid "Show logs (Ctrl+Shift+K)" -msgstr "Logları göster (Ctrl+Shift+K)" - -#: src/window.blp:491 -msgid "_Inspector" -msgstr "_Denetçi" - -#: src/window.blp:494 -msgid "Open GTK Inspector (Ctrl+Shift+I)" -msgstr "GTK Inspector'ü aç (Ctrl+Shift+I)" - -#: src/window.blp:505 -msgid "Cl_ear" -msgstr "Te_mizle" - -#: src/window.blp:509 -msgid "Clear console (Ctrl+K)" -msgstr "Konsolu temizle (Ctrl+K)" - -#: src/window.blp:536 -msgid "Future versions may have breaking syntax." -msgstr "" - -#: src/window.blp:537 -msgid "" -"Blueprint is\n" -"Experimental" -msgstr "" - -#: src/window.blp:541 -#, fuzzy -msgid "Documentation" -msgstr "Geliştirici Dökümanı" - -#: src/window.blp:556 -#, fuzzy -msgid "Import File…" -msgstr "Dosya Aç…" - -#: src/window.blp:562 -msgid "Bookmarks" -msgstr "Yer İmleri" - -#: src/window.blp:564 -msgid "Learn" -msgstr "Öğren" - -#: src/window.blp:567 -msgid "Developer Documentation" -msgstr "Geliştirici Dökümanı" - -#: src/window.blp:574 -#, fuzzy -msgid "Human Interface Guidelines" -msgstr "İnsan Arayüzü Yönergeleri (Human Interface Guidelines, HIG)" - -#: src/window.blp:580 -msgid "JavaScript" -msgstr "JavaScript" - -#: src/window.blp:586 -msgid "Vala" -msgstr "Vala" - -#: src/window.blp:592 -msgid "Blueprint" -msgstr "Blueprint" - -#: src/window.blp:599 -msgid "Get help" -msgstr "Yardım al" - -#: src/window.blp:602 -msgid "Discourse" -msgstr "Söylem" - -#: src/window.blp:608 -msgid "Matrix" -msgstr "Matrix" - -#: src/window.blp:616 -#, fuzzy -msgid "Icon Library" -msgstr "Kütüphaneyi Aç" - -#: src/window.blp:621 -msgid "Platform Tools" -msgstr "Platform Araçları" - -#: src/window.blp:624 -msgid "Adwaita Demo" -msgstr "Adwaita Demosu" - -#: src/window.blp:630 -msgid "GTK Demo" -msgstr "GTK Demosu" - -#: src/window.blp:636 -msgid "GTK Widget Factory" -msgstr "GTK Widget Factory" - -#: src/window.blp:644 src/shortcutsWindow.blp:54 -msgid "Keyboard Shortcuts" -msgstr "Klavye Kısayolları" - -#: src/window.blp:649 -msgid "About Workbench" -msgstr "Workbench Hakkında" - -#: src/shortcutsWindow.blp:11 -msgid "Run Code" -msgstr "Kodu çalıştır" - -#: src/shortcutsWindow.blp:16 -msgid "Format" -msgstr "" - -#: src/shortcutsWindow.blp:26 -msgid "Open Library" -msgstr "Kütüphaneyi Aç" - -#: src/shortcutsWindow.blp:31 -msgid "Toggle Console" -msgstr "Konsolu Aç/Kapat" - -#: src/shortcutsWindow.blp:36 -msgid "Clear Console" -msgstr "Konsolu Temizle" - -#: src/shortcutsWindow.blp:42 -msgid "Inspector" -msgstr "Denetçi" - -#: src/shortcutsWindow.blp:50 -msgid "Redo" -msgstr "Yinele" - -#: src/shortcutsWindow.blp:58 -msgid "Quit" -msgstr "Çıkış" - -#: src/Library/Library.blp:7 -msgid "Library" -msgstr "Kütüphane" - -#: troll/src/widgets/ThemeSelector.blp:22 -#: troll/src/widgets/ThemeSelector.blp:25 -msgid "Follow system style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:41 -#: troll/src/widgets/ThemeSelector.blp:44 -msgid "Light style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:60 -#: troll/src/widgets/ThemeSelector.blp:63 -msgid "Dark style" -msgstr "" - -#~ msgid "About My App" -#~ msgstr "Uygulamam hakkında" - -#, fuzzy -#~| msgid "" -#~| "Sandbox to learn and prototype with\n" -#~| "GNOME technologies" -#~ msgid "" -#~ "Learn and prototype with\n" -#~ "GNOME technologies" -#~ msgstr "" -#~ "GNOME teknolojileriyle\n" -#~ "öğrenmek ve prototip oluşturmak için korumalı alan" - -#~ msgid "sun-symbolic" -#~ msgstr "sun-symbolic" - -#~ msgid "Use Light mode" -#~ msgstr "Aydınlık Modu Kullan" - -#~ msgid "workbench-moon-rounded-symbolic" -#~ msgstr "workbench-moon-rounded-symbolic" - -#~ msgid "Use Dark mode" -#~ msgstr "Karanlık Modu Kullan" - -#~ msgid "Are you sure you want to discard your changes?" -#~ msgstr "Değişikliklerinizi silmek istediğinizden emin misiniz?" - -#~ msgid "" -#~ "Side by side editors with live preview on the right and console in the " -#~ "bottom" -#~ msgstr "" -#~ "Sağda canlı önizleme ve altta konsol bulunan yan yana düzenleyiciler" - -#~ msgid "JavaScript for quick and easy scripting" -#~ msgstr "Hızlı ve Kolay scripting için JavaScript" - -#~ msgid "Run" -#~ msgstr "Çalıştır" - -#~ msgid "Open Console" -#~ msgstr "Konsolu Aç" - -#~ msgid "Code - JavaScript" -#~ msgstr "Kod - JavaScript" - -#~ msgid "UI - XML" -#~ msgstr "UI - XML" - -#~ msgid "Clear" -#~ msgstr "Temizle" - -#~ msgid "GTK Icon Browser" -#~ msgstr "GTK Icon Browser" - -#~ msgid "GNOME JavaScript (GJS)" -#~ msgstr "GNOME JavaScript (GJS)" - -#~ msgid "UI components" -#~ msgstr "UI bileşenleri" - -#~ msgid "Platform components" -#~ msgstr "Platform bileşenleri" - -#~ msgid "Reference" -#~ msgstr "Referans" - -#~ msgid "GJS" -#~ msgstr "GJS" - -#~ msgid "Gtk" -#~ msgstr "Gtk" - -#~ msgid "Adwaita" -#~ msgstr "Adwaita" - -#~ msgid "Stack Overflow" -#~ msgstr "Stack Overflow" - -#~ msgid "Reset to Demo" -#~ msgstr "Demoya Sıfırla" diff --git a/po/vi.po b/po/vi.po deleted file mode 100644 index 7d606e90b..000000000 --- a/po/vi.po +++ /dev/null @@ -1,701 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR Sonny Piers -# This file is distributed under the same license as the re.sonny.Workbench package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: re.sonny.Workbench\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-18 13:24+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: vi\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:4 -msgid "Workbench" -msgstr "" - -#: data/app.desktop:5 data/app.metainfo.xml:10 -msgid "Learn and prototype with GNOME technologies" -msgstr "" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:12 -msgid "CSS;JavaScript;GJS;Blueprint;builder;Vala;" -msgstr "" - -#: data/app.metainfo.xml:13 -msgid "" -"Workbench goal is to let you experiment with GNOME technologies, no matter " -"if tinkering for the first time or building and testing a GTK user interface." -msgstr "" - -#: data/app.metainfo.xml:14 -msgid "Among other things, Workbench comes with" -msgstr "" - -#: data/app.metainfo.xml:16 -msgid "realtime GTK/CSS preview" -msgstr "" - -#: data/app.metainfo.xml:17 -msgid "library of examples" -msgstr "" - -#: data/app.metainfo.xml:18 -msgid "1000+ icons" -msgstr "" - -#: data/app.metainfo.xml:19 -msgid "JavaScript and Vala support" -msgstr "" - -#: data/app.metainfo.xml:20 -msgid "XML and Blueprint for describing user interface" -msgstr "" - -#: data/app.metainfo.xml:21 -msgid "syntax highlighting, undo/redo, autosave, session restore" -msgstr "" - -#: data/app.metainfo.xml:22 -msgid "code formatter" -msgstr "" - -#: data/app.metainfo.xml:23 -msgid "console logs" -msgstr "" - -#: data/app.metainfo.xml:52 -msgid "Use Vala Language Server for diagnostics" -msgstr "" - -#: data/app.metainfo.xml:53 -msgid "Move Icon Browser to the main application menu" -msgstr "" - -#: data/app.metainfo.xml:54 -msgid "Reset window preview on close" -msgstr "" - -#: data/app.metainfo.xml:55 -msgid "Add a warning about Blueprint being experimental" -msgstr "" - -#: data/app.metainfo.xml:56 -msgid "Fix loading and running code with Blueprint UI" -msgstr "" - -#: data/app.metainfo.xml:57 -msgid "Fix crash when using abstract UI types" -msgstr "" - -#: data/app.metainfo.xml:58 -msgid "Fix \"No UI definition loaded yet.\" preview error when using Vala" -msgstr "" - -#: data/app.metainfo.xml:59 -msgid "Fix error message when hovering text with no diagnostic" -msgstr "" - -#: data/app.metainfo.xml:60 -msgid "VTE 0.70.1" -msgstr "" - -#: data/app.metainfo.xml:67 -msgid "GNOME 43" -msgstr "" - -#: data/app.metainfo.xml:68 -msgid "Display CSS errors inline" -msgstr "" - -#: data/app.metainfo.xml:69 -msgid "Fix responsiveness when working on large Blueprint files" -msgstr "" - -#: data/app.metainfo.xml:70 -msgid "Use AdwAboutWindow" -msgstr "" - -#: data/app.metainfo.xml:71 -msgid "Blueprint 0.4.0" -msgstr "" - -#: data/app.metainfo.xml:72 -msgid "VTE 0.70.0" -msgstr "" - -#: data/app.metainfo.xml:73 -msgid "Various bug and crash fixes" -msgstr "" - -#: data/app.metainfo.xml:80 -msgid "Show tooltip hints in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:81 -msgid "Improve XML formatter" -msgstr "" - -#: data/app.metainfo.xml:82 -msgid "Add Ctrl+Shift+Return shortcut to format" -msgstr "" - -#: data/app.metainfo.xml:83 -msgid "Apply Style CSS to windowed preview" -msgstr "" - -#: data/app.metainfo.xml:84 data/app.metainfo.xml:129 -msgid "Improve application design" -msgstr "" - -#: data/app.metainfo.xml:85 -msgid "Prevent crash for templates with GtkWidget parent" -msgstr "" - -#: data/app.metainfo.xml:86 -msgid "Update VTE and icon-development-kit" -msgstr "" - -#: data/app.metainfo.xml:93 -msgid "Underline errors in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:94 -msgid "Fix bugs and crashes" -msgstr "" - -#: data/app.metainfo.xml:102 -msgid "Add an Icon Browser to find the right icons for your prototypes" -msgstr "" - -#: data/app.metainfo.xml:103 -msgid "Add a Platform tools Library demo" -msgstr "" - -#: data/app.metainfo.xml:104 -msgid "Improve the style switcher" -msgstr "" - -#: data/app.metainfo.xml:105 -msgid "Replace confirmation dialogs with toasts and undo" -msgstr "" - -#: data/app.metainfo.xml:106 -msgid "Support updates on root objects" -msgstr "" - -#: data/app.metainfo.xml:107 -msgid "Support binding signal handlers from UI" -msgstr "" - -#: data/app.metainfo.xml:108 -msgid "Add APIs to allow using templates from Code" -msgstr "" - -#: data/app.metainfo.xml:109 -msgid "Add Center/Fill preview modes for templates" -msgstr "" - -#: data/app.metainfo.xml:111 -msgid "Open external preview with the dimensions of the internal preview" -msgstr "" - -#: data/app.metainfo.xml:112 -msgid "64 new icons available" -msgstr "" - -#: data/app.metainfo.xml:113 -msgid "Update Blueprint to 0.2.0" -msgstr "" - -#: data/app.metainfo.xml:114 -msgid "Fix empty preview on first load" -msgstr "" - -#: data/app.metainfo.xml:115 -msgid "Fix style scheme switch when system preference is light" -msgstr "" - -#: data/app.metainfo.xml:116 -msgid "Remove grid pattern on the source editors" -msgstr "" - -#: data/app.metainfo.xml:122 -msgid "Highlights" -msgstr "" - -#: data/app.metainfo.xml:124 -msgid "Add Blueprint markup syntax for UI" -msgstr "" - -#: data/app.metainfo.xml:125 -msgid "Add Vala programming language for Code" -msgstr "" - -#: data/app.metainfo.xml:126 -msgid "Add support for previewing templates" -msgstr "" - -#: data/app.metainfo.xml:127 -msgid "Add support for previewing signal handlers" -msgstr "" - -#: data/app.metainfo.xml:128 -msgid "Include all icons from icon-development-kit" -msgstr "" - -#: data/app.metainfo.xml:130 -msgid "Distribute Library examples under CC0-1.0" -msgstr "" - -#: data/app.metainfo.xml:131 -msgid "Respect system preference for color scheme" -msgstr "" - -#: data/app.metainfo.xml:132 -msgid "Add proper light/dark color schemes for Console" -msgstr "" - -#: data/app.metainfo.xml:133 -msgid "Fix error when importing files" -msgstr "" - -#: data/app.metainfo.xml:135 -msgid "Other changes" -msgstr "" - -#: data/app.metainfo.xml:137 -msgid "Silence platform tools" -msgstr "" - -#: data/app.metainfo.xml:138 -msgid "Remove GTK Icon browser platform tool" -msgstr "" - -#: data/app.metainfo.xml:139 -msgid "Make Library examples only open relevant panels" -msgstr "" - -#: data/app.metainfo.xml:140 -msgid "Always open the Console when opening a Library example" -msgstr "" - -#: data/app.metainfo.xml:141 -msgid "Prevent running Code if the panel is not visible" -msgstr "" - -#: data/app.metainfo.xml:142 -msgid "Add icons and mnemonics for all buttons" -msgstr "" - -#: data/app.metainfo.xml:143 -msgid "Move Bookmarks to the main menu" -msgstr "" - -#: data/app.metainfo.xml:144 -msgid "Enable scrollbar and kinetic scrolling on Console" -msgstr "" - -#: data/app.metainfo.xml:145 -msgid "Improve Library examples" -msgstr "" - -#: data/app.metainfo.xml:146 -msgid "Performance optimizations" -msgstr "" - -#: data/app.metainfo.xml:147 -msgid "Show a placeholder when all panels are invisible" -msgstr "" - -#: data/app.metainfo.xml:148 -msgid "Crash fixes" -msgstr "" - -#: data/app.metainfo.xml:149 -msgid "Use org.gnome.Sdk runtime" -msgstr "" - -#: data/app.metainfo.xml:156 -msgid "Add a Library of examples" -msgstr "" - -#: data/app.metainfo.xml:157 -msgid "Add an example of WebSocket client" -msgstr "" - -#: data/app.metainfo.xml:158 -msgid "Add an example of toasts" -msgstr "" - -#: data/app.metainfo.xml:159 -msgid "Add an example of application window" -msgstr "" - -#: data/app.metainfo.xml:160 -msgid "Add an example of desktop notification" -msgstr "" - -#: data/app.metainfo.xml:162 -msgid "Add Adwaita Demo, GTK Demo, GTK Widget Factory and GTK Icon Browser" -msgstr "" - -#: data/app.metainfo.xml:163 -msgid "The Console can be collapsed by resizing it" -msgstr "" - -#: data/app.metainfo.xml:164 -msgid "Prevent system.exit from quitting Workbench" -msgstr "" - -#: data/app.metainfo.xml:165 -msgid "Allow calling GObject.registerClass multiple times" -msgstr "" - -#: data/app.metainfo.xml:166 -msgid "Prevent crash caused by using non GtkBuildable objects" -msgstr "" - -#: data/app.metainfo.xml:167 -msgid "Allow using DBus and Gio.Application" -msgstr "" - -#: data/app.metainfo.xml:168 -msgid "Allow using network" -msgstr "" - -#: data/app.metainfo.xml:169 -msgid "Enable GtkWindow objects preview" -msgstr "" - -#: data/app.metainfo.xml:176 -msgid "Take a png screenshot of the preview" -msgstr "" - -#: data/app.metainfo.xml:177 -msgid "The console is now resizable" -msgstr "" - -#: data/app.metainfo.xml:178 -msgid "Redesign the dark/light mode switcher" -msgstr "" - -#: data/app.metainfo.xml:179 -msgid "Show platform and dependencies in about dialog" -msgstr "" - -#: data/app.metainfo.xml:180 -msgid "Update to GNOME platform 42" -msgstr "" - -#: data/app.metainfo.xml:181 -msgid "Various fixes" -msgstr "" - -#: data/app.metainfo.xml:187 -msgid "This is the first release of Workbench. We hope you like it." -msgstr "" - -#: src/window.js:371 -msgid "The demo has been loaded" -msgstr "" - -#: src/window.js:372 src/window.js:453 src/shortcutsWindow.blp:46 -msgid "Undo" -msgstr "" - -#: src/window.js:445 -msgid "This file cannot be loaded" -msgstr "" - -#: src/window.js:452 -msgid "The file has been loaded" -msgstr "" - -#. TRANSLATORS: eg. 'Translator Name ' or 'Translator Name https://website.example' -#: src/about.js:39 -msgid "translator-credits" -msgstr "" - -#: src/about.js:52 -msgid "Contributors" -msgstr "" - -#: src/actions.js:53 src/shortcutsWindow.blp:21 -msgid "Import File" -msgstr "" - -#: src/actions.js:147 -msgid "All supported" -msgstr "" - -#: src/window.blp:15 -msgid "_Library" -msgstr "" - -#: src/window.blp:19 -msgid "Open Library of Demos and Examples (Ctrl+Shift+O)" -msgstr "" - -#: src/window.blp:37 -msgid "_Code" -msgstr "" - -#: src/window.blp:54 -msgid "_Style" -msgstr "" - -#: src/window.blp:71 -msgid "_UI" -msgstr "" - -#: src/window.blp:88 -msgid "_Preview" -msgstr "" - -#: src/window.blp:130 -msgid "Code" -msgstr "" - -#: src/window.blp:146 -msgid "Switch document" -msgstr "" - -#: src/window.blp:154 -msgid "_Run" -msgstr "" - -#: src/window.blp:158 -msgid "Run (Ctrl+⏎)" -msgstr "" - -#: src/window.blp:218 -msgid "Style CSS" -msgstr "" - -#: src/window.blp:257 -msgid "UI" -msgstr "" - -#: src/window.blp:273 -msgid "Convert and switch syntax" -msgstr "" - -#: src/window.blp:277 -msgid "Informaton about Blueprint" -msgstr "" - -#: src/window.blp:289 src/window.blp:291 -msgid "Convert to XML" -msgstr "" - -#: src/window.blp:300 src/window.blp:302 -msgid "Convert to Blueprint" -msgstr "" - -#: src/window.blp:366 -msgid "Preview" -msgstr "" - -#: src/window.blp:376 -msgid "Fill" -msgstr "" - -#: src/window.blp:377 -msgid "Center" -msgstr "" - -#: src/window.blp:380 -msgid "Select Preview mode" -msgstr "" - -#: src/window.blp:386 src/window.blp:388 -msgid "Take Screenshot of Preview" -msgstr "" - -#: src/window.blp:420 src/window.blp:438 -msgid "Windowed Preview" -msgstr "" - -#: src/window.blp:421 src/window.blp:439 -msgid "" -"This interface can only be previewed as a separate window.\n" -"We recommend using “Always on Top”." -msgstr "" - -#: src/window.blp:428 -msgid "Show Preview Window" -msgstr "" - -#: src/window.blp:446 -msgid "Close Preview Window" -msgstr "" - -#: src/window.blp:481 -msgid "C_onsole" -msgstr "" - -#: src/window.blp:485 -msgid "Show logs (Ctrl+Shift+K)" -msgstr "" - -#: src/window.blp:491 -msgid "_Inspector" -msgstr "" - -#: src/window.blp:494 -msgid "Open GTK Inspector (Ctrl+Shift+I)" -msgstr "" - -#: src/window.blp:505 -msgid "Cl_ear" -msgstr "" - -#: src/window.blp:509 -msgid "Clear console (Ctrl+K)" -msgstr "" - -#: src/window.blp:536 -msgid "Future versions may have breaking syntax." -msgstr "" - -#: src/window.blp:537 -msgid "" -"Blueprint is\n" -"Experimental" -msgstr "" - -#: src/window.blp:541 -msgid "Documentation" -msgstr "" - -#: src/window.blp:556 -msgid "Import File…" -msgstr "" - -#: src/window.blp:562 -msgid "Bookmarks" -msgstr "" - -#: src/window.blp:564 -msgid "Learn" -msgstr "" - -#: src/window.blp:567 -msgid "Developer Documentation" -msgstr "" - -#: src/window.blp:574 -msgid "Human Interface Guidelines" -msgstr "" - -#: src/window.blp:580 -msgid "JavaScript" -msgstr "" - -#: src/window.blp:586 -msgid "Vala" -msgstr "" - -#: src/window.blp:592 -msgid "Blueprint" -msgstr "" - -#: src/window.blp:599 -msgid "Get help" -msgstr "" - -#: src/window.blp:602 -msgid "Discourse" -msgstr "" - -#: src/window.blp:608 -msgid "Matrix" -msgstr "" - -#: src/window.blp:616 -msgid "Icon Library" -msgstr "" - -#: src/window.blp:621 -msgid "Platform Tools" -msgstr "" - -#: src/window.blp:624 -msgid "Adwaita Demo" -msgstr "" - -#: src/window.blp:630 -msgid "GTK Demo" -msgstr "" - -#: src/window.blp:636 -msgid "GTK Widget Factory" -msgstr "" - -#: src/window.blp:644 src/shortcutsWindow.blp:54 -msgid "Keyboard Shortcuts" -msgstr "" - -#: src/window.blp:649 -msgid "About Workbench" -msgstr "" - -#: src/shortcutsWindow.blp:11 -msgid "Run Code" -msgstr "" - -#: src/shortcutsWindow.blp:16 -msgid "Format" -msgstr "" - -#: src/shortcutsWindow.blp:26 -msgid "Open Library" -msgstr "" - -#: src/shortcutsWindow.blp:31 -msgid "Toggle Console" -msgstr "" - -#: src/shortcutsWindow.blp:36 -msgid "Clear Console" -msgstr "" - -#: src/shortcutsWindow.blp:42 -msgid "Inspector" -msgstr "" - -#: src/shortcutsWindow.blp:50 -msgid "Redo" -msgstr "" - -#: src/shortcutsWindow.blp:58 -msgid "Quit" -msgstr "" - -#: src/Library/Library.blp:7 -msgid "Library" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:22 -#: troll/src/widgets/ThemeSelector.blp:25 -msgid "Follow system style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:41 -#: troll/src/widgets/ThemeSelector.blp:44 -msgid "Light style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:60 -#: troll/src/widgets/ThemeSelector.blp:63 -msgid "Dark style" -msgstr "" diff --git a/po/zh_Hans.po b/po/zh_Hans.po deleted file mode 100644 index c9b08bd76..000000000 --- a/po/zh_Hans.po +++ /dev/null @@ -1,708 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR Sonny Piers -# This file is distributed under the same license as the re.sonny.Workbench package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: re.sonny.Workbench\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-18 13:24+0100\n" -"PO-Revision-Date: 2022-07-11 00:59+0000\n" -"Last-Translator: Jose Belmar \n" -"Language-Team: Chinese (Simplified) \n" -"Language: zh_Hans\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.13.1-dev\n" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:4 -msgid "Workbench" -msgstr "" - -#: data/app.desktop:5 data/app.metainfo.xml:10 -msgid "Learn and prototype with GNOME technologies" -msgstr "使用 GNOME 技术学习和制作原型" - -#. TRANSLATORS: Don't translate -#: data/app.desktop:12 -msgid "CSS;JavaScript;GJS;Blueprint;builder;Vala;" -msgstr "CSS;JavaScript;GJS;Blueprint;builder;Vala;" - -#: data/app.metainfo.xml:13 -msgid "" -"Workbench goal is to let you experiment with GNOME technologies, no matter " -"if tinkering for the first time or building and testing a GTK user interface." -msgstr "" -"Workbench 的目标是让您试验 GNOME 技术,无论是第一次修补还是构建和测试 GTK 用" -"户界面。" - -#: data/app.metainfo.xml:14 -msgid "Among other things, Workbench comes with" -msgstr "除了其他事项外,工作台也附带" - -#: data/app.metainfo.xml:16 -msgid "realtime GTK/CSS preview" -msgstr "GTK/CSS实时预览" - -#: data/app.metainfo.xml:17 -msgid "library of examples" -msgstr "示例庫" - -#: data/app.metainfo.xml:18 -msgid "1000+ icons" -msgstr "" - -#: data/app.metainfo.xml:19 -#, fuzzy -msgid "JavaScript and Vala support" -msgstr "運行javascript或vala不用額外的設置" - -#: data/app.metainfo.xml:20 -msgid "XML and Blueprint for describing user interface" -msgstr "可以选XML或是Blueprint设计用户界面" - -#: data/app.metainfo.xml:21 -msgid "syntax highlighting, undo/redo, autosave, session restore" -msgstr "语法高亮、撤消/重做、自动保存、会话恢复" - -#: data/app.metainfo.xml:22 -msgid "code formatter" -msgstr "源代码格式化工具" - -#: data/app.metainfo.xml:23 -msgid "console logs" -msgstr "控制台日志" - -#: data/app.metainfo.xml:52 -msgid "Use Vala Language Server for diagnostics" -msgstr "" - -#: data/app.metainfo.xml:53 -msgid "Move Icon Browser to the main application menu" -msgstr "" - -#: data/app.metainfo.xml:54 -msgid "Reset window preview on close" -msgstr "" - -#: data/app.metainfo.xml:55 -msgid "Add a warning about Blueprint being experimental" -msgstr "" - -#: data/app.metainfo.xml:56 -msgid "Fix loading and running code with Blueprint UI" -msgstr "" - -#: data/app.metainfo.xml:57 -msgid "Fix crash when using abstract UI types" -msgstr "" - -#: data/app.metainfo.xml:58 -msgid "Fix \"No UI definition loaded yet.\" preview error when using Vala" -msgstr "" - -#: data/app.metainfo.xml:59 -msgid "Fix error message when hovering text with no diagnostic" -msgstr "" - -#: data/app.metainfo.xml:60 -msgid "VTE 0.70.1" -msgstr "" - -#: data/app.metainfo.xml:67 -msgid "GNOME 43" -msgstr "" - -#: data/app.metainfo.xml:68 -msgid "Display CSS errors inline" -msgstr "" - -#: data/app.metainfo.xml:69 -msgid "Fix responsiveness when working on large Blueprint files" -msgstr "" - -#: data/app.metainfo.xml:70 -msgid "Use AdwAboutWindow" -msgstr "" - -#: data/app.metainfo.xml:71 -msgid "Blueprint 0.4.0" -msgstr "" - -#: data/app.metainfo.xml:72 -msgid "VTE 0.70.0" -msgstr "" - -#: data/app.metainfo.xml:73 -msgid "Various bug and crash fixes" -msgstr "" - -#: data/app.metainfo.xml:80 -msgid "Show tooltip hints in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:81 -#, fuzzy -msgid "Improve XML formatter" -msgstr "源代码格式化工具" - -#: data/app.metainfo.xml:82 -msgid "Add Ctrl+Shift+Return shortcut to format" -msgstr "" - -#: data/app.metainfo.xml:83 -msgid "Apply Style CSS to windowed preview" -msgstr "" - -#: data/app.metainfo.xml:84 data/app.metainfo.xml:129 -msgid "Improve application design" -msgstr "" - -#: data/app.metainfo.xml:85 -msgid "Prevent crash for templates with GtkWidget parent" -msgstr "" - -#: data/app.metainfo.xml:86 -msgid "Update VTE and icon-development-kit" -msgstr "" - -#: data/app.metainfo.xml:93 -msgid "Underline errors in Blueprint UI code" -msgstr "" - -#: data/app.metainfo.xml:94 -msgid "Fix bugs and crashes" -msgstr "" - -#: data/app.metainfo.xml:102 -msgid "Add an Icon Browser to find the right icons for your prototypes" -msgstr "" - -#: data/app.metainfo.xml:103 -msgid "Add a Platform tools Library demo" -msgstr "" - -#: data/app.metainfo.xml:104 -msgid "Improve the style switcher" -msgstr "" - -#: data/app.metainfo.xml:105 -msgid "Replace confirmation dialogs with toasts and undo" -msgstr "" - -#: data/app.metainfo.xml:106 -msgid "Support updates on root objects" -msgstr "" - -#: data/app.metainfo.xml:107 -msgid "Support binding signal handlers from UI" -msgstr "" - -#: data/app.metainfo.xml:108 -msgid "Add APIs to allow using templates from Code" -msgstr "" - -#: data/app.metainfo.xml:109 -msgid "Add Center/Fill preview modes for templates" -msgstr "" - -#: data/app.metainfo.xml:111 -msgid "Open external preview with the dimensions of the internal preview" -msgstr "" - -#: data/app.metainfo.xml:112 -msgid "64 new icons available" -msgstr "" - -#: data/app.metainfo.xml:113 -msgid "Update Blueprint to 0.2.0" -msgstr "" - -#: data/app.metainfo.xml:114 -msgid "Fix empty preview on first load" -msgstr "" - -#: data/app.metainfo.xml:115 -msgid "Fix style scheme switch when system preference is light" -msgstr "" - -#: data/app.metainfo.xml:116 -msgid "Remove grid pattern on the source editors" -msgstr "" - -#: data/app.metainfo.xml:122 -msgid "Highlights" -msgstr "" - -#: data/app.metainfo.xml:124 -msgid "Add Blueprint markup syntax for UI" -msgstr "" - -#: data/app.metainfo.xml:125 -msgid "Add Vala programming language for Code" -msgstr "" - -#: data/app.metainfo.xml:126 -msgid "Add support for previewing templates" -msgstr "" - -#: data/app.metainfo.xml:127 -msgid "Add support for previewing signal handlers" -msgstr "" - -#: data/app.metainfo.xml:128 -msgid "Include all icons from icon-development-kit" -msgstr "" - -#: data/app.metainfo.xml:130 -msgid "Distribute Library examples under CC0-1.0" -msgstr "" - -#: data/app.metainfo.xml:131 -msgid "Respect system preference for color scheme" -msgstr "" - -#: data/app.metainfo.xml:132 -msgid "Add proper light/dark color schemes for Console" -msgstr "" - -#: data/app.metainfo.xml:133 -msgid "Fix error when importing files" -msgstr "" - -#: data/app.metainfo.xml:135 -msgid "Other changes" -msgstr "" - -#: data/app.metainfo.xml:137 -msgid "Silence platform tools" -msgstr "" - -#: data/app.metainfo.xml:138 -msgid "Remove GTK Icon browser platform tool" -msgstr "" - -#: data/app.metainfo.xml:139 -msgid "Make Library examples only open relevant panels" -msgstr "" - -#: data/app.metainfo.xml:140 -msgid "Always open the Console when opening a Library example" -msgstr "" - -#: data/app.metainfo.xml:141 -msgid "Prevent running Code if the panel is not visible" -msgstr "" - -#: data/app.metainfo.xml:142 -msgid "Add icons and mnemonics for all buttons" -msgstr "" - -#: data/app.metainfo.xml:143 -msgid "Move Bookmarks to the main menu" -msgstr "" - -#: data/app.metainfo.xml:144 -msgid "Enable scrollbar and kinetic scrolling on Console" -msgstr "" - -#: data/app.metainfo.xml:145 -msgid "Improve Library examples" -msgstr "" - -#: data/app.metainfo.xml:146 -msgid "Performance optimizations" -msgstr "" - -#: data/app.metainfo.xml:147 -msgid "Show a placeholder when all panels are invisible" -msgstr "" - -#: data/app.metainfo.xml:148 -msgid "Crash fixes" -msgstr "" - -#: data/app.metainfo.xml:149 -msgid "Use org.gnome.Sdk runtime" -msgstr "" - -#: data/app.metainfo.xml:156 -msgid "Add a Library of examples" -msgstr "" - -#: data/app.metainfo.xml:157 -msgid "Add an example of WebSocket client" -msgstr "" - -#: data/app.metainfo.xml:158 -msgid "Add an example of toasts" -msgstr "" - -#: data/app.metainfo.xml:159 -msgid "Add an example of application window" -msgstr "" - -#: data/app.metainfo.xml:160 -msgid "Add an example of desktop notification" -msgstr "" - -#: data/app.metainfo.xml:162 -msgid "Add Adwaita Demo, GTK Demo, GTK Widget Factory and GTK Icon Browser" -msgstr "" - -#: data/app.metainfo.xml:163 -msgid "The Console can be collapsed by resizing it" -msgstr "" - -#: data/app.metainfo.xml:164 -msgid "Prevent system.exit from quitting Workbench" -msgstr "" - -#: data/app.metainfo.xml:165 -msgid "Allow calling GObject.registerClass multiple times" -msgstr "" - -#: data/app.metainfo.xml:166 -msgid "Prevent crash caused by using non GtkBuildable objects" -msgstr "" - -#: data/app.metainfo.xml:167 -msgid "Allow using DBus and Gio.Application" -msgstr "" - -#: data/app.metainfo.xml:168 -msgid "Allow using network" -msgstr "" - -#: data/app.metainfo.xml:169 -msgid "Enable GtkWindow objects preview" -msgstr "" - -#: data/app.metainfo.xml:176 -msgid "Take a png screenshot of the preview" -msgstr "" - -#: data/app.metainfo.xml:177 -msgid "The console is now resizable" -msgstr "" - -#: data/app.metainfo.xml:178 -msgid "Redesign the dark/light mode switcher" -msgstr "" - -#: data/app.metainfo.xml:179 -msgid "Show platform and dependencies in about dialog" -msgstr "" - -#: data/app.metainfo.xml:180 -msgid "Update to GNOME platform 42" -msgstr "" - -#: data/app.metainfo.xml:181 -msgid "Various fixes" -msgstr "" - -#: data/app.metainfo.xml:187 -msgid "This is the first release of Workbench. We hope you like it." -msgstr "" - -#: src/window.js:371 -msgid "The demo has been loaded" -msgstr "" - -#: src/window.js:372 src/window.js:453 src/shortcutsWindow.blp:46 -msgid "Undo" -msgstr "" - -#: src/window.js:445 -msgid "This file cannot be loaded" -msgstr "" - -#: src/window.js:452 -msgid "The file has been loaded" -msgstr "" - -#. TRANSLATORS: eg. 'Translator Name ' or 'Translator Name https://website.example' -#: src/about.js:39 -msgid "translator-credits" -msgstr "" - -#: src/about.js:52 -msgid "Contributors" -msgstr "" - -#: src/actions.js:53 src/shortcutsWindow.blp:21 -msgid "Import File" -msgstr "" - -#: src/actions.js:147 -msgid "All supported" -msgstr "" - -#: src/window.blp:15 -msgid "_Library" -msgstr "" - -#: src/window.blp:19 -msgid "Open Library of Demos and Examples (Ctrl+Shift+O)" -msgstr "" - -#: src/window.blp:37 -msgid "_Code" -msgstr "" - -#: src/window.blp:54 -msgid "_Style" -msgstr "" - -#: src/window.blp:71 -msgid "_UI" -msgstr "" - -#: src/window.blp:88 -msgid "_Preview" -msgstr "" - -#: src/window.blp:130 -msgid "Code" -msgstr "" - -#: src/window.blp:146 -msgid "Switch document" -msgstr "" - -#: src/window.blp:154 -msgid "_Run" -msgstr "" - -#: src/window.blp:158 -msgid "Run (Ctrl+⏎)" -msgstr "" - -#: src/window.blp:218 -msgid "Style CSS" -msgstr "" - -#: src/window.blp:257 -msgid "UI" -msgstr "" - -#: src/window.blp:273 -msgid "Convert and switch syntax" -msgstr "" - -#: src/window.blp:277 -msgid "Informaton about Blueprint" -msgstr "" - -#: src/window.blp:289 src/window.blp:291 -msgid "Convert to XML" -msgstr "" - -#: src/window.blp:300 src/window.blp:302 -msgid "Convert to Blueprint" -msgstr "" - -#: src/window.blp:366 -msgid "Preview" -msgstr "" - -#: src/window.blp:376 -msgid "Fill" -msgstr "" - -#: src/window.blp:377 -msgid "Center" -msgstr "" - -#: src/window.blp:380 -msgid "Select Preview mode" -msgstr "" - -#: src/window.blp:386 src/window.blp:388 -msgid "Take Screenshot of Preview" -msgstr "" - -#: src/window.blp:420 src/window.blp:438 -msgid "Windowed Preview" -msgstr "" - -#: src/window.blp:421 src/window.blp:439 -msgid "" -"This interface can only be previewed as a separate window.\n" -"We recommend using “Always on Top”." -msgstr "" - -#: src/window.blp:428 -msgid "Show Preview Window" -msgstr "" - -#: src/window.blp:446 -msgid "Close Preview Window" -msgstr "" - -#: src/window.blp:481 -msgid "C_onsole" -msgstr "" - -#: src/window.blp:485 -msgid "Show logs (Ctrl+Shift+K)" -msgstr "" - -#: src/window.blp:491 -msgid "_Inspector" -msgstr "" - -#: src/window.blp:494 -msgid "Open GTK Inspector (Ctrl+Shift+I)" -msgstr "" - -#: src/window.blp:505 -msgid "Cl_ear" -msgstr "" - -#: src/window.blp:509 -msgid "Clear console (Ctrl+K)" -msgstr "" - -#: src/window.blp:536 -msgid "Future versions may have breaking syntax." -msgstr "" - -#: src/window.blp:537 -msgid "" -"Blueprint is\n" -"Experimental" -msgstr "" - -#: src/window.blp:541 -msgid "Documentation" -msgstr "" - -#: src/window.blp:556 -msgid "Import File…" -msgstr "" - -#: src/window.blp:562 -msgid "Bookmarks" -msgstr "" - -#: src/window.blp:564 -msgid "Learn" -msgstr "" - -#: src/window.blp:567 -msgid "Developer Documentation" -msgstr "" - -#: src/window.blp:574 -msgid "Human Interface Guidelines" -msgstr "" - -#: src/window.blp:580 -msgid "JavaScript" -msgstr "" - -#: src/window.blp:586 -msgid "Vala" -msgstr "" - -#: src/window.blp:592 -msgid "Blueprint" -msgstr "" - -#: src/window.blp:599 -msgid "Get help" -msgstr "" - -#: src/window.blp:602 -msgid "Discourse" -msgstr "" - -#: src/window.blp:608 -msgid "Matrix" -msgstr "" - -#: src/window.blp:616 -msgid "Icon Library" -msgstr "" - -#: src/window.blp:621 -msgid "Platform Tools" -msgstr "" - -#: src/window.blp:624 -msgid "Adwaita Demo" -msgstr "" - -#: src/window.blp:630 -msgid "GTK Demo" -msgstr "" - -#: src/window.blp:636 -msgid "GTK Widget Factory" -msgstr "" - -#: src/window.blp:644 src/shortcutsWindow.blp:54 -msgid "Keyboard Shortcuts" -msgstr "" - -#: src/window.blp:649 -msgid "About Workbench" -msgstr "" - -#: src/shortcutsWindow.blp:11 -msgid "Run Code" -msgstr "" - -#: src/shortcutsWindow.blp:16 -msgid "Format" -msgstr "" - -#: src/shortcutsWindow.blp:26 -msgid "Open Library" -msgstr "" - -#: src/shortcutsWindow.blp:31 -msgid "Toggle Console" -msgstr "" - -#: src/shortcutsWindow.blp:36 -msgid "Clear Console" -msgstr "" - -#: src/shortcutsWindow.blp:42 -msgid "Inspector" -msgstr "" - -#: src/shortcutsWindow.blp:50 -msgid "Redo" -msgstr "" - -#: src/shortcutsWindow.blp:58 -msgid "Quit" -msgstr "" - -#: src/Library/Library.blp:7 -msgid "Library" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:22 -#: troll/src/widgets/ThemeSelector.blp:25 -msgid "Follow system style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:41 -#: troll/src/widgets/ThemeSelector.blp:44 -msgid "Light style" -msgstr "" - -#: troll/src/widgets/ThemeSelector.blp:60 -#: troll/src/widgets/ThemeSelector.blp:63 -msgid "Dark style" -msgstr "" diff --git a/re.sonny.Workbench.Devel.json b/re.sonny.Workbench.Devel.json deleted file mode 100644 index 5d9231391..000000000 --- a/re.sonny.Workbench.Devel.json +++ /dev/null @@ -1,235 +0,0 @@ -{ - "id": "re.sonny.Workbench.Devel", - "runtime": "org.gnome.Sdk", - "runtime-version": "44", - "sdk": "org.gnome.Sdk", - "sdk-extensions": [ - "org.freedesktop.Sdk.Extension.vala", - "org.gnome.Sdk.Docs" - ], - "build-options": { - "append-path": "/usr/lib/sdk/vala/bin", - "append-ld-library-path": "/usr/lib/sdk/vala/lib" - }, - "command": "workbench", - "finish-args": [ - "--share=ipc", - "--socket=fallback-x11", - "--socket=wayland", - "--device=dri", - "--share=network" - ], - "cleanup": [ - "/include", - "/lib/pkgconfig", - "/man", - "/share/doc", - "/share/gtk-doc", - "/share/man", - "/share/pkgconfig", - "/share/installed-tests", - "*.la", - "*.a" - ], - "modules": [ - { - "name": "python3-gi-docgen", - "buildsystem": "simple", - "build-commands": [ - "pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"gi-docgen\" --no-build-isolation" - ], - "sources": [ - { - "type": "file", - "url": "https://files.pythonhosted.org/packages/da/ed/1da76d11aa858ee23dac5b52d9ac2db7df02b89f7679d5d8970bcd44b59c/smartypants-2.0.1-py2.py3-none-any.whl", - "sha256": "8db97f7cbdf08d15b158a86037cd9e116b4cf37703d24e0419a0d64ca5808f0d" - }, - { - "type": "file", - "url": "https://files.pythonhosted.org/packages/8a/bf/64959d6187d42472acb846bcf462347c9124952c05bd57e5769d5f28f9a6/typogrify-2.0.7.tar.gz", - "sha256": "8be4668cda434163ce229d87ca273a11922cb1614cb359970b7dc96eed13cb38" - }, - { - "type": "file", - "url": "https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl", - "sha256": "806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b" - }, - { - "type": "file", - "url": "https://files.pythonhosted.org/packages/1d/97/2288fe498044284f39ab8950703e88abbac2abbdf65524d576157af70556/MarkupSafe-2.1.1.tar.gz", - "sha256": "7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b" - }, - { - "type": "file", - "url": "https://files.pythonhosted.org/packages/bc/c3/f068337a370801f372f2f8f6bad74a5c140f6fda3d9de154052708dd3c65/Jinja2-3.1.2-py3-none-any.whl", - "sha256": "6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61" - }, - { - "type": "file", - "url": "https://files.pythonhosted.org/packages/c1/53/aa5175b30b36e0095caeb2ea89a677d6aca9df1836b528df1682ca02fd98/gi_docgen-2022.1-py2.py3-none-any.whl", - "sha256": "25a13fcbe0e644e9738d583e0014b7819c5a8cecfba63d399a294a07ce290531" - } - ] - }, - { - "name": "vte", - "buildsystem": "meson", - "config-opts": [ - "-Ddocs=false", - "-Dgtk3=false", - "-Dgtk4=true", - "-Dvapi=false", - "-Dglade=false" - ], - "sources": [ - { - "type": "archive", - "url": "https://download.gnome.org/sources/vte/0.72/vte-0.72.1.tar.xz", - "sha256": "0554f9f88d56ce2d78398fcc7f69bc00e53bbbc5f694e0ae1dcaf5286f89d7e4" - } - ] - }, - { - "name": "libportal", - "buildsystem": "meson", - "config-opts": ["-Ddocs=true", "-Dbackends=gtk4"], - "sources": [ - { - "type": "archive", - "url": "https://github.com/flatpak/libportal/releases/download/0.6/libportal-0.6.tar.xz", - "sha256": "88a12c3ba71bc31acff7238c280de697d609cebc50830c3766776ec35abc6566" - } - ] - }, - { - "name": "blueprint-compiler", - "buildsystem": "meson", - "builddir": true, - "sources": [ - { - "type": "archive", - "url": "https://gitlab.gnome.org/jwestman/blueprint-compiler/-/archive/v0.10.0/blueprint-compiler-v0.10.0.tar.gz", - "sha512": "1f2a9097e3d6a030385c371a01e32caefab6f7ede1979b43492255b504250ac7f44ae22a97656a7c33c0e518236b95d6074baf8f87c53df1fbb1e42eceb39a87" - } - ] - }, - { - "name": "libshumate", - "buildsystem": "meson", - "config-opts": ["-Dgtk_doc=true", "-Dlibsoup3=true"], - "sources": [ - { - "type": "archive", - "url": "https://download.gnome.org/sources/libshumate/1.0/libshumate-1.0.3.tar.xz", - "sha256": "77a192f0dfec082b8de20b1939f3adf03eed41114d49fdaae2bbb2729ceb015a" - } - ] - }, - { - "name": "rome", - "buildsystem": "simple", - "build-commands": ["chmod +x rome", "cp rome /app/bin/rome"], - "sources": [ - { - "type": "archive", - "only-arches": ["aarch64"], - "url": "https://registry.npmjs.org/@rometools/cli-linux-arm64/-/cli-linux-arm64-12.1.1.tgz", - "sha512": "8ca25e4fa488d5df5b90094c398977750b73bd38bdf1db0903310cf754955cb9793a78e4e7967d406f5fd44e276d2efa2cae1e65a34c70aaacec5da14b255e75" - }, - { - "type": "archive", - "only-arches": ["x86_64"], - "url": "https://registry.npmjs.org/@rometools/cli-linux-x64/-/cli-linux-x64-12.1.1.tgz", - "sha512": "0ac2e3658b4b41d2a831cae85d72949997721507e0565ec2f282080dc24dce61d929d57046123533e9caff4be9885b558c2b7a8fe0b0da00d89284128a14edd3" - } - ] - }, - { - "name": "icon-development-kit", - "buildsystem": "simple", - "build-commands": [ - "mkdir -p /app/share/icon-development-kit", - "mkdir -p /app/share/icons/hicolor/scalable/actions/", - "yq -o=json _data/icons.yaml > /app/share/icon-development-kit/icons.json", - "cp -r img/symbolic/**/*.svg /app/share/icons/hicolor/scalable/actions/ || true" - ], - "sources": [ - { - "type": "git", - "url": "https://gitlab.gnome.org/Teams/Design/icon-development-kit-www.git", - "commit": "f2ecae16b8303d196577ebbbcb320d7a28ee0c69" - } - ], - "modules": [ - { - "name": "yq", - "buildsystem": "simple", - "build-commands": ["chmod +x yq", "cp yq /app/bin/yq"], - "sources": [ - { - "type": "file", - "only-arches": ["x86_64"], - "url": "https://github.com/mikefarah/yq/releases/download/v4.33.3/yq_linux_amd64", - "sha256": "4ee662847c588c3ef2fec8bfb304e8739e3dbaba87ccb9a608d691c88f5b64dc", - "dest-filename": "yq" - }, - { - "type": "file", - "only-arches": ["aarch64"], - "url": "https://github.com/mikefarah/yq/releases/download/v4.33.3/yq_linux_arm64", - "sha256": "15925a972d268bcb0a7aa2236c7e5925b7a3ba4b5569bb57e943db7e8c6f834f", - "dest-filename": "yq" - } - ] - } - ] - }, - { - "name": "GTKCssLanguageServer", - "config-opts": ["--buildtype=release"], - "buildsystem": "meson", - "builddir": true, - "sources": [ - { - "type": "git", - "url": "https://github.com/JCWasmx86/GTKCssLanguageServer", - "commit": "638bf6e8836d9c2aed6d4c5d17dbf00311155145" - } - ], - "modules": [ - { - "name": "jsonrpc-glib", - "config-opts": ["--buildtype=release", "-Denable_tests=false"], - "buildsystem": "meson", - "builddir": true, - "sources": [ - { - "type": "archive", - "url": "https://download.gnome.org/sources/jsonrpc-glib/3.44/jsonrpc-glib-3.44.0.tar.xz", - "sha256": "69406a0250d0cc5175408cae7eca80c0c6bfaefc4ae1830b354c0433bcd5ce06" - } - ] - } - ] - }, - { - "name": "Workbench", - "buildsystem": "meson", - "builddir": true, - "config-opts": ["-Dprofile=development"], - "sources": [ - { - "type": "dir", - "path": "." - } - ], - "post-install": [ - "cp -a /usr/share/doc/. /app/share/doc/", - "cp -a /usr/share/gtk-doc/html/. /app/share/doc", - "cp -a /usr/lib/sdk/vala/bin/. /app/bin/", - "cp -a /usr/lib/sdk/vala/lib/. /app/lib/", - "cp -a /usr/lib/sdk/vala/share/. /app/share/" - ] - } - ] -} diff --git a/re.sonny.Workbench.json b/re.sonny.Workbench.json deleted file mode 100644 index 9edfdd863..000000000 --- a/re.sonny.Workbench.json +++ /dev/null @@ -1,235 +0,0 @@ -{ - "id": "re.sonny.Workbench", - "runtime": "org.gnome.Sdk", - "runtime-version": "44", - "sdk": "org.gnome.Sdk", - "sdk-extensions": [ - "org.freedesktop.Sdk.Extension.vala", - "org.gnome.Sdk.Docs" - ], - "build-options": { - "append-path": "/usr/lib/sdk/vala/bin", - "append-ld-library-path": "/usr/lib/sdk/vala/lib" - }, - "command": "workbench", - "finish-args": [ - "--share=ipc", - "--socket=fallback-x11", - "--socket=wayland", - "--device=dri", - "--share=network" - ], - "cleanup": [ - "/include", - "/lib/pkgconfig", - "/man", - "/share/doc", - "/share/gtk-doc", - "/share/man", - "/share/pkgconfig", - "/share/installed-tests", - "*.la", - "*.a" - ], - "modules": [ - { - "name": "python3-gi-docgen", - "buildsystem": "simple", - "build-commands": [ - "pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"gi-docgen\" --no-build-isolation" - ], - "sources": [ - { - "type": "file", - "url": "https://files.pythonhosted.org/packages/da/ed/1da76d11aa858ee23dac5b52d9ac2db7df02b89f7679d5d8970bcd44b59c/smartypants-2.0.1-py2.py3-none-any.whl", - "sha256": "8db97f7cbdf08d15b158a86037cd9e116b4cf37703d24e0419a0d64ca5808f0d" - }, - { - "type": "file", - "url": "https://files.pythonhosted.org/packages/8a/bf/64959d6187d42472acb846bcf462347c9124952c05bd57e5769d5f28f9a6/typogrify-2.0.7.tar.gz", - "sha256": "8be4668cda434163ce229d87ca273a11922cb1614cb359970b7dc96eed13cb38" - }, - { - "type": "file", - "url": "https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl", - "sha256": "806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b" - }, - { - "type": "file", - "url": "https://files.pythonhosted.org/packages/1d/97/2288fe498044284f39ab8950703e88abbac2abbdf65524d576157af70556/MarkupSafe-2.1.1.tar.gz", - "sha256": "7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b" - }, - { - "type": "file", - "url": "https://files.pythonhosted.org/packages/bc/c3/f068337a370801f372f2f8f6bad74a5c140f6fda3d9de154052708dd3c65/Jinja2-3.1.2-py3-none-any.whl", - "sha256": "6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61" - }, - { - "type": "file", - "url": "https://files.pythonhosted.org/packages/c1/53/aa5175b30b36e0095caeb2ea89a677d6aca9df1836b528df1682ca02fd98/gi_docgen-2022.1-py2.py3-none-any.whl", - "sha256": "25a13fcbe0e644e9738d583e0014b7819c5a8cecfba63d399a294a07ce290531" - } - ] - }, - { - "name": "vte", - "buildsystem": "meson", - "config-opts": [ - "-Ddocs=false", - "-Dgtk3=false", - "-Dgtk4=true", - "-Dvapi=false", - "-Dglade=false" - ], - "sources": [ - { - "type": "archive", - "url": "https://download.gnome.org/sources/vte/0.72/vte-0.72.1.tar.xz", - "sha256": "0554f9f88d56ce2d78398fcc7f69bc00e53bbbc5f694e0ae1dcaf5286f89d7e4" - } - ] - }, - { - "name": "libportal", - "buildsystem": "meson", - "config-opts": ["-Ddocs=true", "-Dbackends=gtk4"], - "sources": [ - { - "type": "archive", - "url": "https://github.com/flatpak/libportal/releases/download/0.6/libportal-0.6.tar.xz", - "sha256": "88a12c3ba71bc31acff7238c280de697d609cebc50830c3766776ec35abc6566" - } - ] - }, - { - "name": "blueprint-compiler", - "buildsystem": "meson", - "builddir": true, - "sources": [ - { - "type": "archive", - "url": "https://gitlab.gnome.org/jwestman/blueprint-compiler/-/archive/v0.10.0/blueprint-compiler-v0.10.0.tar.gz", - "sha512": "1f2a9097e3d6a030385c371a01e32caefab6f7ede1979b43492255b504250ac7f44ae22a97656a7c33c0e518236b95d6074baf8f87c53df1fbb1e42eceb39a87" - } - ] - }, - { - "name": "libshumate", - "buildsystem": "meson", - "config-opts": ["-Dgtk_doc=true", "-Dlibsoup3=true"], - "sources": [ - { - "type": "archive", - "url": "https://download.gnome.org/sources/libshumate/1.0/libshumate-1.0.3.tar.xz", - "sha256": "77a192f0dfec082b8de20b1939f3adf03eed41114d49fdaae2bbb2729ceb015a" - } - ] - }, - { - "name": "rome", - "buildsystem": "simple", - "build-commands": ["chmod +x rome", "cp rome /app/bin/rome"], - "sources": [ - { - "type": "archive", - "only-arches": ["aarch64"], - "url": "https://registry.npmjs.org/@rometools/cli-linux-arm64/-/cli-linux-arm64-12.1.1.tgz", - "sha512": "8ca25e4fa488d5df5b90094c398977750b73bd38bdf1db0903310cf754955cb9793a78e4e7967d406f5fd44e276d2efa2cae1e65a34c70aaacec5da14b255e75" - }, - { - "type": "archive", - "only-arches": ["x86_64"], - "url": "https://registry.npmjs.org/@rometools/cli-linux-x64/-/cli-linux-x64-12.1.1.tgz", - "sha512": "0ac2e3658b4b41d2a831cae85d72949997721507e0565ec2f282080dc24dce61d929d57046123533e9caff4be9885b558c2b7a8fe0b0da00d89284128a14edd3" - } - ] - }, - { - "name": "icon-development-kit", - "buildsystem": "simple", - "build-commands": [ - "mkdir -p /app/share/icon-development-kit", - "mkdir -p /app/share/icons/hicolor/scalable/actions/", - "yq -o=json _data/icons.yaml > /app/share/icon-development-kit/icons.json", - "cp -r img/symbolic/**/*.svg /app/share/icons/hicolor/scalable/actions/ || true" - ], - "sources": [ - { - "type": "git", - "url": "https://gitlab.gnome.org/Teams/Design/icon-development-kit-www.git", - "commit": "f2ecae16b8303d196577ebbbcb320d7a28ee0c69" - } - ], - "modules": [ - { - "name": "yq", - "buildsystem": "simple", - "build-commands": ["chmod +x yq", "cp yq /app/bin/yq"], - "sources": [ - { - "type": "file", - "only-arches": ["x86_64"], - "url": "https://github.com/mikefarah/yq/releases/download/v4.33.3/yq_linux_amd64", - "sha256": "4ee662847c588c3ef2fec8bfb304e8739e3dbaba87ccb9a608d691c88f5b64dc", - "dest-filename": "yq" - }, - { - "type": "file", - "only-arches": ["aarch64"], - "url": "https://github.com/mikefarah/yq/releases/download/v4.33.3/yq_linux_arm64", - "sha256": "15925a972d268bcb0a7aa2236c7e5925b7a3ba4b5569bb57e943db7e8c6f834f", - "dest-filename": "yq" - } - ] - } - ] - }, - { - "name": "GTKCssLanguageServer", - "config-opts": ["--buildtype=release"], - "buildsystem": "meson", - "builddir": true, - "sources": [ - { - "type": "git", - "url": "https://github.com/JCWasmx86/GTKCssLanguageServer", - "commit": "638bf6e8836d9c2aed6d4c5d17dbf00311155145" - } - ], - "modules": [ - { - "name": "jsonrpc-glib", - "config-opts": ["--buildtype=release", "-Denable_tests=false"], - "buildsystem": "meson", - "builddir": true, - "sources": [ - { - "type": "archive", - "url": "https://download.gnome.org/sources/jsonrpc-glib/3.44/jsonrpc-glib-3.44.0.tar.xz", - "sha256": "69406a0250d0cc5175408cae7eca80c0c6bfaefc4ae1830b354c0433bcd5ce06" - } - ] - } - ] - }, - { - "name": "Workbench", - "buildsystem": "meson", - "builddir": true, - "config-opts": ["-Dprofile=default"], - "sources": [ - { - "type": "dir", - "path": "." - } - ], - "post-install": [ - "cp -a /usr/share/doc/. /app/share/doc/", - "cp -a /usr/share/gtk-doc/html/. /app/share/doc", - "cp -a /usr/lib/sdk/vala/bin/. /app/bin/", - "cp -a /usr/lib/sdk/vala/lib/. /app/lib/", - "cp -a /usr/lib/sdk/vala/share/. /app/share/" - ] - } - ] -} diff --git a/rome.json b/rome.json deleted file mode 100644 index c2cd11cc4..000000000 --- a/rome.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "formatter": { - "enabled": true, - "ignore": ["src/lib", "troll"], - "indentStyle": "space", - "indentSize": 2 - }, - "linter": { - "enabled": true, - "ignore": ["src/lib", "troll"], - "rules": { - "recommended": true, - "style": { - "useBlockStatements": "off", - "noParameterAssign": "off" - }, - "correctness": { - "noInvalidConstructorSuper": "off" - } - } - }, - "vcs": { - "enabled": true, - "clientKind": "git", - "useIgnoreFile": true - } -} diff --git a/src/Document.js b/src/Document.js index 4dd895ebf..cdef0217d 100644 --- a/src/Document.js +++ b/src/Document.js @@ -2,44 +2,58 @@ import Source from "gi://GtkSource"; import Gio from "gi://Gio"; import GLib from "gi://GLib"; -export default function Document({ session, code_view, file, lang }) { - const { buffer } = code_view; - let handler_id = null; +export default class Document { + handler_id = null; - const source_file = new Source.File({ - location: file, - }); + constructor({ session, code_view, lang }) { + this.code_view = code_view; + this.buffer = code_view.buffer; + this.session = session; + this.source_view = code_view.source_view; + + const file = session.file.get_child(lang.default_file); + this.file = file; + this.source_file = new Source.File({ + location: file, + }); - start(); + this.start(); + } - function save() { + save() { + const { source_file, buffer, session } = this; saveSourceBuffer({ source_file, buffer }) - .catch(logError) + .catch(console.error) .finally(() => { - session.settings.set_boolean("edited", true); + try { + session.settings.set_boolean("edited", true); + } catch (err) { + console.error(err); + } }); } - function start() { - stop(); - handler_id = buffer.connect("modified-changed", () => { - if (!buffer.get_modified()) return; - save(); + start() { + this.stop(); + this.handler_id = this.buffer.connect("modified-changed", () => { + if (!this.buffer.get_modified()) return; + this.save(); }); } - function stop() { - if (handler_id !== null) { - buffer.disconnect(handler_id); - handler_id = null; + stop() { + if (this.handler_id !== null) { + this.buffer.disconnect(this.handler_id); + this.handler_id = null; } } - function load() { - return loadSourceBuffer({ source_file, buffer, lang }); + load() { + const { source_file, buffer } = this; + return loadSourceBuffer({ source_file, buffer }); } - return { start, stop, save, code_view, file, load }; + format() {} } async function saveSourceBuffer({ source_file, buffer }) { @@ -58,26 +72,18 @@ async function saveSourceBuffer({ source_file, buffer }) { } } -async function loadSourceBuffer({ source_file, buffer, lang }) { +async function loadSourceBuffer({ source_file, buffer }) { const file_loader = new Source.FileLoader({ buffer, file: source_file, }); - let success; try { - success = await file_loader.load_async(GLib.PRIORITY_DEFAULT, null, null); + await file_loader.load_async(GLib.PRIORITY_DEFAULT, null, null); } catch (err) { - if (err.code === Gio.IOErrorEnum.NOT_FOUND) { - if (lang.placeholder) { - buffer.set_text(lang.placeholder, -1); - } - success = true; - } else { + if (!err.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND)) { throw err; } } - if (success) { - buffer.set_modified(false); - } + buffer.set_modified(false); } diff --git a/src/DocumentationViewer.blp b/src/DocumentationViewer.blp deleted file mode 100644 index 53049bda8..000000000 --- a/src/DocumentationViewer.blp +++ /dev/null @@ -1,75 +0,0 @@ -using Gtk 4.0; -using Adw 1; -using GObject 2.0; -using WebKit 6.0; - -Window documentation_viewer { - title: _("Documentation"); - default-width: 1024; - default-height: 768; - hide-on-close: true; - titlebar: Adw.HeaderBar { - Button button_back{ - icon-name: "go-previous-symbolic"; - tooltip-text: _("Back"); - styles ["flat"] - } - Button button_forward { - icon-name: "go-next-symbolic"; - tooltip-text: _("Forward"); - styles ["flat"] - } - ToggleButton button_sidebar { - active: false; - icon-name: "dock-left-symbolic"; - tooltip-text: _("Toggle Sidepanel"); - } - ToggleButton button_search { - icon-name: "loupe-large-symbolic"; - tooltip-text: _("Search"); - } - }; - - - Paned documentation_paned { - position: 400; - - [end] - WebKit.WebView webview { - settings: WebKit.Settings { - enable-back-forward-navigation-gestures: true; - enable-developer-extras: true; - enable-smooth-scrolling: true; - }; - } - - [start] - Box sidebar { - visible: bind button_sidebar.active; - orientation: vertical; - vexpand: true; - - - SearchBar search_bar { - key-capture-widget: sidebar; - SearchEntry search_entry{ - hexpand: true; - } - } - - ScrolledWindow { - ListBox listbox { - margin-top: 12; - margin-bottom: 12; - margin-start: 12; - margin-end: 12; - hexpand: true; - vexpand: true; - valign: start; - styles ["boxed-list"] - } - } - styles ["background"] - } - } -} diff --git a/src/DocumentationViewer.js b/src/DocumentationViewer.js deleted file mode 100644 index 61bb3d1ce..000000000 --- a/src/DocumentationViewer.js +++ /dev/null @@ -1,212 +0,0 @@ -import GObject from "gi://GObject"; -import Gtk from "gi://Gtk"; -import Gio from "gi://Gio"; -import GLib from "gi://GLib"; -import Adw from "gi://Adw"; -import WebKit from "gi://WebKit"; - -import { decode } from "./util.js"; -import resource from "./DocumentationViewer.blp"; - -export default function DocumentationViewer({ application }) { - const builder = Gtk.Builder.new_from_resource(resource); - - const window = builder.get_object("documentation_viewer"); - const webview = builder.get_object("webview"); - const listbox = builder.get_object("listbox"); - const search_bar = builder.get_object("search_bar"); - const button_sidebar = builder.get_object("button_sidebar"); - const button_search = builder.get_object("button_search"); - const search_entry = builder.get_object("search_entry"); - const button_back = builder.get_object("button_back"); - const button_forward = builder.get_object("button_forward"); - - const base_path = Gio.File.new_for_path("/app/share/doc"); - webview.load_uri( - base_path.resolve_relative_path("gtk4/index.html").get_uri(), - ); - let loaded = false; - - webview.connect("load-changed", (self, load_event) => { - updateButtons(); - - if (load_event === WebKit.LoadEvent.FINISHED) { - loaded = true; - button_sidebar.active = false; - } else { - loaded = false; - } - }); - - webview.get_back_forward_list().connect("changed", () => { - updateButtons(); - }); - - function updateButtons() { - button_back.sensitive = webview.can_go_back(); - button_forward.sensitive = webview.can_go_forward(); - } - - button_back.connect("clicked", () => { - webview.go_back(); - }); - - button_forward.connect("clicked", () => { - webview.go_forward(); - }); - - button_sidebar.connect("toggled", () => { - if (loaded) { - if (button_sidebar.active) disableDocSidebar(webview); - else enableDocSidebar(webview); - } - }); - - button_sidebar.connect("toggled", () => { - if (loaded) { - if (button_sidebar.active) disableDocSidebar(webview); - else enableDocSidebar(webview); - } - }); - - search_entry.connect("search-changed", () => { - listbox.invalidate_filter(); - }); - - search_bar.bind_property( - "search-mode-enabled", - button_search, - "active", - GObject.BindingFlags.BIDIRECTIONAL, - ); - - button_search.connect("toggled", () => { - if (button_search.active) button_sidebar.active = true; - }); - - listbox.set_sort_func(sort); - listbox.invalidate_sort(); - listbox.set_filter_func(filter); - listbox.connect("row-selected", (self, row) => { - webview.load_uri(row.uri); - }); - - getDocs(base_path, [ - "atk", - "javascriptcoregtk-4.1", - "libhandy-1", - "libnotify-0", - "webkit2gtk-4.1", - "webkit2gtk-web-extension-4.1", - ]) - .then((docs) => { - for (const doc of docs) { - const row = new Adw.ActionRow({ - title: doc.title, - }); - row.uri = doc.uri; - row.add_suffix(new Gtk.Image({ icon_name: "go-next-symbolic" })); - listbox.append(row); - } - }) - .catch(logError); - - function sort(a, b) { - return a.title.localeCompare(b.title); - } - - function filter(row) { - const re = new RegExp(search_entry.text, "i"); - return re.test(row.title); - } - - const action_documentation = new Gio.SimpleAction({ - name: "documentation", - parameter_type: null, - }); - action_documentation.connect("activate", () => { - window.present(); - }); - application.add_action(action_documentation); -} - -async function getDocs(base_path, filter_docs) { - const docs = []; - const dirs = await list(base_path); - const filtered = dirs.filter(dir => !(filter_docs.includes(dir))) - - for (const dir of filtered) { - const results = await Promise.allSettled([ - readDocIndexJSON(base_path, dir), - readDocIndexHTML(base_path, dir), - ]); - - const fulfilled = results.find((result) => result.status === "fulfilled"); - if (!fulfilled) continue; - - const title = fulfilled.value; - const uri = base_path.get_child(dir).get_child("index.html").get_uri(); - docs.push({ - title, - uri, - }); - } - - return docs; -} - -async function readDocIndexJSON(base_path, dir) { - const file = base_path.get_child(dir).get_child("index.json"); - const [data] = await file.load_contents_async(null); - const json = JSON.parse(decode(data)); - return `${json["meta"]["ns"]}-${json["meta"]["version"]}`; -} - -async function readDocIndexHTML(base_path, dir) { - const file = base_path.get_child(dir).get_child("api-index-full.html"); - const [data] = await file.load_contents_async(null); - const html = decode(data); - const pattern = /Index: ([^<]+)/; - return html.match(pattern)[1]; -} - -async function list(dir) { - // List all files in dir - const files = []; - const enumerator = await dir.enumerate_children_async( - "standard::name", - Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, - GLib.PRIORITY_DEFAULT, - null, - ); - for await (const info of enumerator) { - files.push(info.get_name()); - } - return files; -} - -async function disableDocSidebar(webview) { - try { - const script = `window.document.querySelector("nav").style.display = "none"`; - await webview.evaluate_javascript(script, -1, null, null, null); - } catch (err) { - if ( - !err.matches(WebKit.JavascriptError, WebKit.JavascriptError.SCRIPT_FAILED) - ) { - logError(err); - } - } -} - -async function enableDocSidebar(webview) { - try { - const script = `window.document.querySelector("nav").style.display = "block"`; - await webview.evaluate_javascript(script, -1, null, null, null); - } catch (err) { - if ( - !err.matches(WebKit.JavascriptError, WebKit.JavascriptError.SCRIPT_FAILED) - ) { - logError(err); - } - } -} diff --git a/src/Extensions/Extension.blp b/src/Extensions/Extension.blp new file mode 100644 index 000000000..4cf069c20 --- /dev/null +++ b/src/Extensions/Extension.blp @@ -0,0 +1,60 @@ +using Gtk 4.0; + +template $Extension: ListBoxRow { + activatable: false; + + Box { + orientation: vertical; + + CenterBox { + height-request: 55; + valign: center; + halign: fill; + margin-start: 14; + margin-end: 14; + + [start] + Label label_title {} + + [end] + Image image_available { + icon-name: "re.sonny.Workbench-test-pass-symbolic"; + + styles [ + "success", + ] + } + } + + Box installation_guide { + visible: false; + margin-start: 14; + margin-end: 14; + margin-bottom: 14; + orientation: vertical; + + Label { + wrap: true; + xalign: 0; + label: _("Run the following command"); + + styles [ + "dim-label", + ] + } + + Label label_command { + margin-top: 12; + use-markup: true; + wrap: true; + wrap-mode: word_char; + selectable: true; + xalign: 0; + + styles [ + "command_snippet", + ] + } + } + } +} diff --git a/src/Extensions/Extension.js b/src/Extensions/Extension.js new file mode 100644 index 000000000..06e6c3828 --- /dev/null +++ b/src/Extensions/Extension.js @@ -0,0 +1,73 @@ +import GObject from "gi://GObject"; +import Gtk from "gi://Gtk"; + +import Template from "./Extension.blp" with { type: "uri" }; + +export default GObject.registerClass( + { + GTypeName: "Extension", + Template, + InternalChildren: [ + "label_title", + "image_available", + "installation_guide", + "label_command", + ], + Properties: { + title: GObject.ParamSpec.string( + "title", + "", + "", + GObject.ParamFlags.READWRITE, + "", + ), + available: GObject.ParamSpec.boolean( + "available", + "", + "", + GObject.ParamFlags.READWRITE, + false, + ), + command: GObject.ParamSpec.string( + "command", + "", + "", + GObject.ParamFlags.READWRITE, + "", + ), + }, + }, + class Extension extends Gtk.ListBoxRow { + constructor(properties = {}) { + super(properties); + + this.bind_property( + "title", + this._label_title, + "label", + GObject.BindingFlags.SYNC_CREATE, + ); + + this.bind_property( + "available", + this._image_available, + "visible", + GObject.BindingFlags.SYNC_CREATE, + ); + + this.bind_property( + "available", + this._installation_guide, + "visible", + GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.INVERT_BOOLEAN, + ); + + this.bind_property( + "command", + this._label_command, + "label", + GObject.BindingFlags.SYNC_CREATE, + ); + } + }, +); diff --git a/src/Extensions/Extensions.blp b/src/Extensions/Extensions.blp new file mode 100644 index 000000000..68e156521 --- /dev/null +++ b/src/Extensions/Extensions.blp @@ -0,0 +1,93 @@ +using Gtk 4.0; +using Adw 1; + +Adw.Dialog dialog { + content-height: 750; + content-width: 600; + title: _("Extensions"); + + Adw.ToolbarView { + [top] + Adw.HeaderBar {} + + content: ScrolledWindow { + hscrollbar-policy: never; + + Adw.Clamp { + maximum-size: 600; + tightening-threshold: 400; + margin-start: 14; + margin-end: 14; + margin-top: 30; + margin-bottom: 30; + + Box { + orientation: vertical; + halign: fill; + // Gtk.Picture needs to be wrapped in a box to behave properly + Box { + halign: center; + + Picture picture_illustration { + can-shrink: false; + margin-bottom: 30; + } + } + + ListBox { + selection-mode: none; + + styles [ + "boxed-list", + ] + + $Extension { + title: _("JavaScript"); + available: true; + } + + $Extension { + title: _("Python"); + available: true; + } + + $Extension extension_rust { + title: _("Rust"); + } + + $Extension extension_vala { + title: _("Vala"); + } + + $Extension extension_typescript { + title: _("TypeScript"); + } + } + + Label restart_hint { + label: "To apply changes, restart Workbench once\nthe commands have completed"; + visible: false; + margin-top: 30; + justify: center; + wrap: true; + + styles [ + "dim-label", + ] + } + + Label all_set_hint { + label: "You’re all set!"; + margin-top: 30; + justify: center; + wrap: true; + + styles [ + "dim-label", + ] + } + } + } + }; + } +} diff --git a/src/Extensions/Extensions.js b/src/Extensions/Extensions.js new file mode 100644 index 000000000..5748bafa4 --- /dev/null +++ b/src/Extensions/Extensions.js @@ -0,0 +1,90 @@ +import Gio from "gi://Gio"; + +import { build } from "../../troll/src/main.js"; + +import Interface from "./Extensions.blp" with { type: "uri" }; +import illustration from "./extensions.svg"; + +import "./Extension.js"; +import { settings } from "../util.js"; +import { getFlatpakInfo } from "../flatpak.js"; + +export const action_extensions = new Gio.SimpleAction({ + name: "extensions", + parameter_type: null, +}); + +export function Extensions({ window }) { + const { + dialog, + picture_illustration, + extension_rust, + extension_vala, + extension_typescript, + restart_hint, + all_set_hint, + } = build(Interface); + + picture_illustration.set_resource(illustration); + + extension_rust.available = isRustAvailable(); + extension_rust.command = `flatpak install flathub org.freedesktop.Sdk.Extension.rust-stable//${freedesktop_version} org.freedesktop.Sdk.Extension.${llvm}//${freedesktop_version}`; + + extension_vala.available = isValaAvailable(); + extension_vala.command = `flatpak install flathub org.freedesktop.Sdk.Extension.vala//${freedesktop_version}`; + + extension_typescript.available = isTypeScriptAvailable(); + extension_typescript.command = `flatpak install flathub org.freedesktop.Sdk.Extension.${node}//${freedesktop_version} org.freedesktop.Sdk.Extension.typescript//${freedesktop_version}`; + extension_typescript.visible = isTypeScriptEnabled(); + + for (const extension of [ + extension_rust, + extension_vala, + extension_typescript, + ]) { + if (!extension.available) { + all_set_hint.set_visible(false); + restart_hint.set_visible(true); + } + } + + action_extensions.connect("activate", () => { + dialog.present(window); + }); + + window.add_action(action_extensions); +} + +let rust_available = null; +export function isRustAvailable() { + rust_available ??= + Gio.File.new_for_path("/usr/lib/sdk/rust-stable").query_exists(null) && + Gio.File.new_for_path(`/usr/lib/sdk/${llvm}`).query_exists(null); + return rust_available; +} + +let vala_available = null; +export function isValaAvailable() { + vala_available ??= + Gio.File.new_for_path("/usr/lib/sdk/vala").query_exists(null); + return vala_available; +} + +let typescript_available = null; +export function isTypeScriptAvailable() { + typescript_available ??= + isTypeScriptEnabled() && + Gio.File.new_for_path("/usr/lib/sdk/typescript").query_exists(null) && + Gio.File.new_for_path(`/usr/lib/sdk/${node}`).query_exists(null); + return typescript_available; +} + +// FIXME: read from manifest +const llvm = "llvm21"; +const node = "node24"; +const runtime = getFlatpakInfo().get_string("Application", "runtime"); +const freedesktop_version = runtime.endsWith("master") ? "25.08" : "25.08"; + +export function isTypeScriptEnabled() { + return settings.get_boolean("typescript"); +} diff --git a/src/Extensions/extensions.svg b/src/Extensions/extensions.svg new file mode 100644 index 000000000..1ccb2192b --- /dev/null +++ b/src/Extensions/extensions.svg @@ -0,0 +1,1228 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="332" + height="200" + viewBox="0 0 332 200" + version="1.1" + id="svg5" + inkscape:version="1.3 (0e150ed6c4, 2023-07-21)" + sodipodi:docname="extensions.svg" + xml:space="preserve" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#000000" + borderopacity="0.25" + inkscape:showpageshadow="false" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="false" + inkscape:deskcolor="#ffffff" + inkscape:document-units="px" + showgrid="false" + inkscape:zoom="2.8284271" + inkscape:cx="106.24279" + inkscape:cy="43.310291" + inkscape:current-layer="layer1" + showguides="true"><inkscape:grid + id="grid1" + units="px" + originx="0" + originy="0" + spacingx="1" + spacingy="1" + empcolor="#0099e5" + empopacity="0.30196078" + color="#0099e5" + opacity="0.14901961" + empspacing="4" + dotted="false" + gridanglex="30" + gridanglez="30" + visible="false" /></sodipodi:namedview><defs + id="defs2"><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect1474" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,2,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect1472" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,0,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect1422" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,2,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect1420" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,0,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect1370" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,2,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect1368" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,0,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect1266" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,2,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect1264" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,0,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect1214" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,2,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect1212" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,0,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect1159" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,2,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect1157" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,0,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect1104" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,2,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect1102" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,0,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect1029" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,2,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect1027" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,0,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect974" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,2,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect972" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,0,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect919" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,2,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect917" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,0,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect864" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,2,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect862" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,0,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect809" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,2,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect807" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,0,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect754" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,2,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect735" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,2,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect733" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,0,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><linearGradient + id="linearGradient681" + inkscape:collect="always"><stop + style="stop-color:#3584e4;stop-opacity:1" + offset="0" + id="stop680" /><stop + style="stop-color:#dc8add;stop-opacity:1" + offset="1" + id="stop681" /></linearGradient><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect680" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,2,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect678" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,0,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect518" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,2,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect516" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,0,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect461" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,2,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect459" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,0,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect404" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,2,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect402" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,0,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect345" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,2,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect343" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,0,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect119" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,0,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1 @ F,0,1,1,0,18,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect51" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,2,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect28" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,4.308594,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,4.308594,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect27" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,4,0,1 @ F,0,0,1,0,4,0,1 @ F,0,1,1,0,4,0,1 @ F,0,1,1,0,4,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect22" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,6,0,1 @ F,0,0,1,0,5.9999995,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect20" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,10.225507,0,1 @ F,0,0,1,0,8,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect19" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,8,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,8,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect17" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,8,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,8,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect16" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,7.98463,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect15" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2,0,1 @ F,0,0,1,0,2,0,1 @ F,0,0,1,0,2,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect14" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,1,1,0,3,0,1 @ F,0,0,1,0,5.564501,0,1 @ F,0,0,1,0,3,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect13" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,16,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect12" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,16,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect11" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,16,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,6,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect10" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,16,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect6" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,8,0,1 @ F,0,0,1,0,8,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect211" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect157" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect102" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><inkscape:path-effect + effect="fillet_chamfer" + id="path-effect39" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,3.414062,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /><clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath31"><path + style="opacity:1;fill:#865e3c;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + d="m 104.57142,32 c -2.53257,0 -4.571424,1.784002 -4.571424,4 V 82 H 227.99999 V 36 c 0,-2.215998 -2.03886,-4 -4.57143,-4 z" + id="path32" /></clipPath><clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath33"><path + style="opacity:1;fill:#865e3c;fill-opacity:1;stroke-width:1.99999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + d="m 99.999997,90 v 46 c 0,2.216 2.102573,4 4.714283,4 h 122.57143 c 2.61171,0 4.71428,-1.784 4.71428,-4 V 90 Z" + id="path34" /></clipPath><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient681" + id="linearGradient124" + x1="8" + y1="101.99999" + x2="331.99994" + y2="101.99998" + gradientUnits="userSpaceOnUse" /></defs><g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="ref" + style="font-variation-settings:normal;display:none;opacity:0.370739;vector-effect:none;fill:#000000;fill-opacity:1;stroke-width:7.93499;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1" + sodipodi:insensitive="true"><image + width="169.62854" + height="189.03625" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 jIyrD/8/3YiWtnrpmx8AAAAASUVORK5CYII= " + id="image1" + x="90.37146" + y="6.9637451" + style="opacity:0.370739;stroke-width:7.93499" /></g><g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"><path + id="rect115" + style="font-variation-settings:normal;opacity:0.545239;vector-effect:none;fill:url(#linearGradient124);fill-opacity:1;stroke:none;stroke-width:8.14663;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="M 8,30 A 18,18 45 0 0 26,48 H 82 A 18,18 45 0 1 100,66 18,18 135 0 1 82,84 H 38.616612 a 18,18 135 0 0 -18,18 18,18 45 0 0 18,18 l 3.054688,0 a 18,18 45 0 1 18,18 18,18 135 0 1 -18,18 H 34 a 18,18 135 0 0 -18,18 18,18 45 0 0 18,18 h 244 a 18,18 135 0 0 18,-18 18,18 45 0 0 -18,-18 h -69.36568 a 18,18 45 0 1 -18,-18 18,18 135 0 1 18,-18 L 314,120 A 18,18 135 0 0 332,102 18,18 45 0 0 314,84 H 302 A 18,18 45 0 1 284,66 18,18 135 0 1 302,48 18,18 135 0 0 320,30 18,18 45 0 0 302,12 L 26,12 A 18,18 135 0 0 8,30 Z" + inkscape:path-effect="#path-effect119" + inkscape:original-d="m 8,12 v 36 h 92 V 84 H 20.616612 v 36 H 59.6713 v 36 H 16 v 36 H 296 V 156 H 190.63432 V 120 H 332 V 84 H 284 V 48 h 36 V 12 Z" + sodipodi:nodetypes="ccccccccccccccccccccc" + transform="translate(-4,-0.37995546)" /><g + id="g51" + transform="matrix(0.78764906,0,0,0.78764906,101.38686,26.312772)"><path + id="path26" + style="opacity:1;fill:#241f31;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0" + d="M 124,15.765138 V 44.234863 L 136,46 V 14.000001 Z" + sodipodi:nodetypes="ccccc" /><path + id="rect2" + style="opacity:1;fill:#3d3846;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0" + d="m 156,8 -19.74219,3.037109 A 5.0219592,5.0219592 0 0 0 132,16 v 28 a 5.0219592,5.0219592 0 0 0 4.25781,4.962891 L 156,52 h 1 V 8 Z" /><path + id="rect1" + style="opacity:1;fill:#3584e4;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0" + d="m 156,8 v 44 1 H 260 V 52 24 A 16,16 0 0 0 244,8 Z" /><path + id="rect3" + style="opacity:1;fill:#9a9996;fill-opacity:1;stroke-width:1.92154;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0" + d="M 93.972788,25.671202 104,24 V 36 L 93.972788,34.328798 A 2.3609208,2.3609208 49.731161 0 1 92,32 v -4 a 2.3609208,2.3609208 130.26884 0 1 1.972788,-2.328798 z" + sodipodi:nodetypes="ccccc" + inkscape:path-effect="#path-effect51" + inkscape:original-d="m 92,26 12,-2 V 36 L 92,34 Z" + transform="matrix(1.0833333,0,0,1.4236537,-7.6666667,-12.709612)" /><path + id="path27" + style="opacity:1;fill:#3d3846;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0" + d="m 124.04649,12.916678 -16.09298,2.475238 A 4.6622719,4.6622719 130.62797 0 0 104,20 v 20 a 4.6622719,4.6622719 49.37203 0 0 3.95351,4.608084 l 16.09298,2.475238 A 3.4318033,3.4318033 139.37203 0 0 128,43.691406 V 16.308594 a 3.4318033,3.4318033 40.62797 0 0 -3.95351,-3.391916 z" /><path + style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#f66151;fill-opacity:1;stroke-width:7.93499;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 169.34164,70.683282 0.16984,0.339677 a 11.129002,11.129002 90 0 1 0,9.954082 l -0.16984,0.339677 A 1.854102,1.854102 58.282526 0 0 171,84 h 17 V 68 h -17 a 1.854102,1.854102 121.71747 0 0 -1.65836,2.683282 z" + id="path10" /><path + id="path15" + style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#1c71d8;fill-opacity:1;stroke-width:7.93499;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 156,52 c 0,8.836547 7.16345,16 16,16 h 4 2 c 1.10457,0 2,0.895432 2,2 v 12 c 0,1.104568 -0.89543,2 -2,2 -0.59911,-2e-6 -0.83441,0.777008 -0.33594,1.109375 l 8.75196,5.833984 L 192,144 v 4 h 20 v -4 l 8,-76 V 52 Z" /><path + id="path6" + style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#1a5fb4;fill-opacity:1;stroke-width:7.93499;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 220,52 a 16,16 0 0 0 -16,16 l 8,76 v 4 h 16 v -4 L 220.62891,73.966797 A 5.4015705,5.4015705 0 0 1 226,68 h 18 c 8.83655,0 16,-7.163453 16,-16 z" /><path + id="rect4" + style="opacity:1;fill:#3584e4;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0" + d="m 180,144 c -5.06833,-2.6e-4 -9.88389,2.21348 -13.18359,6.06055 l -13.6083,15.86692 A 21.616315,21.616315 110.30905 0 0 148,180 v 4 c 0,4.41828 3.58172,8 8,8 h 76 c 4.41828,0 8,-3.58172 8,-8 v -12 -20 a 8,8 45 0 0 -8,-8 z" + sodipodi:nodetypes="cccssssccc" /><path + style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#1c71d8;fill-opacity:1;stroke-width:7.93499;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="M 186.41602,90.943359 185.55011,90.366151 176,84 h 12 v 8 z" + id="path17" /><path + id="path18" + style="opacity:1;fill:#1a5fb4;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0" + d="M 149.58008,172 A 21.616315,21.616315 0 0 0 148,180 v 4 c 0,4.41828 3.58172,8 8,8 h 76 c 4.41828,0 8,-3.58172 8,-8 v -12 z" /><path + style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#1a5fb4;fill-opacity:1;stroke-width:7.93499;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 190.31579,128 -3.90077,-37.057307 0.001,6.53e-4 a 21.402244,21.402244 58.453579 0 1 9.65443,15.725974 l 1.40785,13.37464 A 7.2020938,7.2020938 131.9955 0 1 190.31579,128 Z" + id="path20" + sodipodi:nodetypes="ccccc" /><path + id="rect21" + style="opacity:1;vector-effect:none;fill:#1a5fb4;stroke-width:7.93499" + d="m 178,58 h 12 c 1.108,0 2,0.892 2,2 0,1.108 -0.892,2 -2,2 h -12 c -1.108,0 -2,-0.892 -2,-2 0,-1.108 0.892,-2 2,-2 z" /><path + id="rect43" + style="opacity:1;vector-effect:none;fill:#241f31;fill-opacity:0.344048;stroke-width:7.93499" + d="m 138,17 h 12 c 1.108,0 2,0.892 2,2 0,1.108 -0.892,2 -2,2 h -12 c -1.108,0 -2,-0.892 -2,-2 0,-1.108 0.892,-2 2,-2 z" /><path + id="rect46" + style="opacity:1;vector-effect:none;fill:#241f31;fill-opacity:0.344048;stroke-width:7.93499" + d="m 138,28 h 12 c 1.108,0 2,0.892 2,2 0,1.108 -0.892,2 -2,2 h -12 c -1.108,0 -2,-0.892 -2,-2 0,-1.108 0.892,-2 2,-2 z" /><path + id="rect48" + style="opacity:1;vector-effect:none;fill:#241f31;fill-opacity:0.344048;stroke-width:7.93499" + d="m 138,39 h 12 c 1.108,0 2,0.892 2,2 0,1.108 -0.892,2 -2,2 h -12 c -1.108,0 -2,-0.892 -2,-2 0,-1.108 0.892,-2 2,-2 z" /><path + id="rect49" + style="opacity:1;vector-effect:none;fill:#241f31;fill-opacity:0.344048;stroke-width:7.93499" + d="m 110,34 h 12 c 1.108,0 2,0.892 2,2 0,1.108 -0.892,2 -2,2 h -12 c -1.108,0 -2,-0.892 -2,-2 0,-1.108 0.892,-2 2,-2 z" /><path + id="rect51" + style="opacity:1;vector-effect:none;fill:#241f31;fill-opacity:0.344048;stroke-width:7.93499" + d="m 110,22 h 12 c 1.108,0 2,0.892 2,2 0,1.108 -0.892,2 -2,2 h -12 c -1.108,0 -2,-0.892 -2,-2 0,-1.108 0.892,-2 2,-2 z" /><path + id="path51" + style="opacity:1;vector-effect:none;fill:#1c71d8;stroke-width:7.93499" + d="m 252,25 a 9,9 0 0 1 -9,9 9,9 0 0 1 -9,-9 9,9 0 0 1 9,-9 9,9 0 0 1 9,9 z" /></g><g + id="g1160" + transform="translate(-2.4322982,1.9761922)"><rect + style="font-variation-settings:normal;vector-effect:none;fill:#9a9996;fill-opacity:1;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + id="rect52" + width="11.904518" + height="116.06905" + x="-124.39352" + y="43.925083" + ry="5.9522591" + transform="scale(-1,1)" /><path + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.1;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 124.39353,136.1851 c -2.97613,0 -11.90452,-2.97613 -11.90452,-5.95226 v -8.92839 c 0,2.97613 8.92839,5.95226 11.90452,5.95226 z" + id="path61" + sodipodi:nodetypes="ccccc" /><path + id="path62" + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.093995;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 112.48901,121.30445 c 0,2.97613 8.92839,5.95226 11.90452,5.95226 v 1.48807 c -2.97613,0 -11.90452,-2.97613 -11.90452,-5.95227 z" /><path + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.1;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 124.39353,118.32832 c -2.97613,0 -11.90452,-2.97612 -11.90452,-5.95226 v -8.92838 c 0,2.97612 8.92839,5.95225 11.90452,5.95225 z" + id="path63" + sodipodi:nodetypes="ccccc" /><path + id="path64" + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.093995;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 112.48901,103.44768 c 0,2.97612 8.92839,5.95225 11.90452,5.95225 v 1.48807 c -2.97613,0 -11.90452,-2.97613 -11.90452,-5.95226 z" /><path + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.1;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 124.39353,100.47155 c -2.97613,0 -11.90452,-2.976137 -11.90452,-5.952264 v -8.928388 c 0,2.976129 8.92839,5.952259 11.90452,5.952259 z" + id="path65" + sodipodi:nodetypes="ccccc" /><path + id="path66" + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.093995;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 112.48901,85.590898 c 0,2.976129 8.92839,5.952259 11.90452,5.952259 v 1.488064 c -2.97613,0 -11.90452,-2.976129 -11.90452,-5.952259 z" /><path + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.1;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 124.39353,82.614769 c -2.97613,0 -11.90452,-2.976131 -11.90452,-5.95226 v -8.928388 c 0,2.976129 8.92839,5.952259 11.90452,5.952259 z" + id="path67" + sodipodi:nodetypes="ccccc" /><path + id="path68" + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.093995;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 112.48901,67.734121 c 0,2.976129 8.92839,5.952259 11.90452,5.952259 v 1.488065 c -2.97613,0 -11.90452,-2.97613 -11.90452,-5.95226 z" /><path + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.1;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 124.39353,64.757991 c -2.97613,0 -11.90452,-2.976129 -11.90452,-5.952258 v -8.92839 c 0,2.97613 8.92839,5.952259 11.90452,5.952259 z" + id="path69" + sodipodi:nodetypes="ccccc" /><path + id="path70" + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.093995;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 112.48901,49.877343 c 0,2.97613 8.92839,5.952259 11.90452,5.952259 v 1.488065 c -2.97613,0 -11.90452,-2.976129 -11.90452,-5.952258 z" /><ellipse + style="font-variation-settings:normal;vector-effect:none;fill:#77767b;fill-opacity:1;stroke:none;stroke-width:7.19727;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + id="path349" + cx="118.44127" + cy="153.87608" + rx="5.9522595" + ry="6.1180477" /></g><g + id="g1161" + transform="translate(-6.4751974,-41.967774)"><rect + style="font-variation-settings:normal;vector-effect:none;fill:#77767b;fill-opacity:1;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + id="rect53" + width="11.904518" + height="116.06905" + x="-79.876213" + y="63.10733" + ry="5.9522591" + transform="scale(-1,1)" /><path + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.1;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 79.87621,155.36735 c -2.976131,0 -11.904519,-2.97613 -11.904519,-5.95227 v -8.92838 c 0,2.97613 8.928388,5.95225 11.904519,5.95225 z" + id="path73" + sodipodi:nodetypes="ccccc" /><path + id="path74" + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.093995;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 67.971691,140.4867 c 0,2.97613 8.928392,5.95225 11.904519,5.95225 v 1.48807 c -2.976127,0 -11.904519,-2.97613 -11.904519,-5.95226 z" /><path + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.1;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 79.87621,137.51057 c -2.976131,0 -11.904519,-2.97613 -11.904519,-5.95226 v -8.92839 c 0,2.97613 8.928388,5.95226 11.904519,5.95226 z" + id="path75" + sodipodi:nodetypes="ccccc" /><path + id="path76" + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.093995;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 67.971691,122.62992 c 0,2.97613 8.928392,5.95226 11.904519,5.95226 v 1.48807 c -2.976127,0 -11.904519,-2.97613 -11.904519,-5.95227 z" /><path + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.1;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 79.87621,119.65379 c -2.976131,0 -11.904519,-2.97613 -11.904519,-5.95226 v -8.92839 c 0,2.97613 8.928388,5.95226 11.904519,5.95226 z" + id="path77" + sodipodi:nodetypes="ccccc" /><path + id="path78" + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.093995;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 67.971691,104.77314 c 0,2.97613 8.928392,5.95226 11.904519,5.95226 v 1.48807 c -2.976127,0 -11.904519,-2.97613 -11.904519,-5.95226 z" /><path + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.1;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 79.87621,101.79701 c -2.976131,0 -11.904519,-2.976126 -11.904519,-5.952256 v -8.928388 c 0,2.976129 8.928388,5.952259 11.904519,5.952259 z" + id="path79" + sodipodi:nodetypes="ccccc" /><path + id="path80" + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.093995;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 67.971691,86.916366 c 0,2.976129 8.928392,5.952259 11.904519,5.952259 v 1.488065 c -2.976127,0 -11.904519,-2.976129 -11.904519,-5.95226 z" /><path + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.1;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 79.87621,83.940237 c -2.976131,0 -11.904519,-2.97613 -11.904519,-5.952259 v -8.928389 c 0,2.976129 8.928388,5.952259 11.904519,5.952259 z" + id="path81" + sodipodi:nodetypes="ccccc" /><path + id="path82" + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.093995;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 67.971691,69.059589 c 0,2.976129 8.928392,5.952259 11.904519,5.952259 v 1.488065 c -2.976127,0 -11.904519,-2.97613 -11.904519,-5.952259 z" /><ellipse + style="font-variation-settings:normal;vector-effect:none;fill:#5e5c64;fill-opacity:1;stroke:none;stroke-width:7.19727;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + id="ellipse349" + cx="73.92395" + cy="173.05833" + rx="5.9522595" + ry="6.1180477" /></g><g + id="g1159" + transform="translate(1.6105964,7.555664)"><rect + style="font-variation-settings:normal;vector-effect:none;fill:#5e5c64;fill-opacity:1;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + id="rect54" + width="11.904518" + height="116.06905" + x="-168.91084" + y="63.10733" + ry="5.9522591" + transform="scale(-1,1)" /><path + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.1;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 168.91083,155.36735 c -2.97612,0 -11.90451,-2.97613 -11.90451,-5.95227 v -8.92838 c 0,2.97613 8.92839,5.95225 11.90451,5.95225 z" + id="path85" + sodipodi:nodetypes="ccccc" /><path + id="path86" + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.093995;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 157.00632,140.4867 c 0,2.97613 8.92839,5.95225 11.90451,5.95225 v 1.48807 c -2.97612,0 -11.90451,-2.97613 -11.90451,-5.95226 z" /><path + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.1;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 168.91083,137.51057 c -2.97612,0 -11.90451,-2.97613 -11.90451,-5.95226 v -8.92839 c 0,2.97613 8.92839,5.95226 11.90451,5.95226 z" + id="path87" + sodipodi:nodetypes="ccccc" /><path + id="path88" + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.093995;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 157.00632,122.62992 c 0,2.97613 8.92839,5.95226 11.90451,5.95226 v 1.48807 c -2.97612,0 -11.90451,-2.97613 -11.90451,-5.95227 z" /><path + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.1;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 168.91083,119.65379 c -2.97612,0 -11.90451,-2.97613 -11.90451,-5.95226 v -8.92839 c 0,2.97613 8.92839,5.95226 11.90451,5.95226 z" + id="path89" + sodipodi:nodetypes="ccccc" /><path + id="path90" + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.093995;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 157.00632,104.77314 c 0,2.97613 8.92839,5.95226 11.90451,5.95226 v 1.48807 c -2.97612,0 -11.90451,-2.97613 -11.90451,-5.95226 z" /><path + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.1;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 168.91083,101.79701 c -2.97612,0 -11.90451,-2.976126 -11.90451,-5.952256 v -8.928388 c 0,2.976129 8.92839,5.952259 11.90451,5.952259 z" + id="path91" + sodipodi:nodetypes="ccccc" /><path + id="path92" + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.093995;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 157.00632,86.916366 c 0,2.976129 8.92839,5.952259 11.90451,5.952259 v 1.488065 c -2.97612,0 -11.90451,-2.976129 -11.90451,-5.95226 z" /><path + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.1;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 168.91083,83.940237 c -2.97612,0 -11.90451,-2.97613 -11.90451,-5.952259 v -8.928389 c 0,2.976129 8.92839,5.952259 11.90451,5.952259 z" + id="path93" + sodipodi:nodetypes="ccccc" /><path + id="path94" + style="font-variation-settings:normal;vector-effect:none;fill:#000000;fill-opacity:0.093995;stroke:none;stroke-width:5.90389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + d="m 157.00632,69.059589 c 0,2.976129 8.92839,5.952259 11.90451,5.952259 v 1.488065 c -2.97612,0 -11.90451,-2.97613 -11.90451,-5.952259 z" /><ellipse + style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#3d3846;fill-opacity:1;stroke:none;stroke-width:7.19727;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none" + id="ellipse350" + cx="162.95859" + cy="173.05833" + rx="5.9522595" + ry="6.1180477" /></g></g></svg> diff --git a/src/IconLibrary/IconWidget.blp b/src/IconLibrary/IconWidget.blp deleted file mode 100644 index eee861be3..000000000 --- a/src/IconLibrary/IconWidget.blp +++ /dev/null @@ -1,18 +0,0 @@ -using Gtk 4.0; - -template $IconWidget : FlowBoxChild { - focusable: false; - halign: start; - Button button { - clicked => $onClicked(); - width-request: 48; - height-request: 48; - Image image { - icon-name: "applications-science-symbolic"; // preview only - pixel-size: 32; - halign: center; - valign: center; - } - styles ["flat"] - } -} diff --git a/src/IconLibrary/IconWidget.js b/src/IconLibrary/IconWidget.js deleted file mode 100644 index c5231fd25..000000000 --- a/src/IconLibrary/IconWidget.js +++ /dev/null @@ -1,47 +0,0 @@ -import Gtk from "gi://Gtk"; -import GObject from "gi://GObject"; - -import Template from "./IconWidget.blp" with { type: "uri" }; -import { registerClass } from "../overrides.js"; - -class IconWidget extends Gtk.FlowBoxChild { - constructor(params = {}) { - super(params); - this.bind_property( - "icon_name", - this._image, - "icon-name", - GObject.BindingFlags.SYNC_CREATE, - ); - this.bind_property( - "icon_name", - this, - "tooltip_text", - GObject.BindingFlags.SYNC_CREATE, - ); - } - onClicked() { - this.emit("clicked"); - } -} - -export default registerClass( - { - GTypeName: "IconWidget", - Template, - InternalChildren: ["image"], - Properties: { - icon_name: GObject.ParamSpec.string( - "icon_name", // Name - "icon_name", // Nick - "", // Blurb - GObject.ParamFlags.READWRITE, // Flags - null, // Default value - ), - }, - Signals: { - clicked: {}, - }, - }, - IconWidget, -); diff --git a/src/IconLibrary/main.blp b/src/IconLibrary/main.blp deleted file mode 100644 index cb4ac42dd..000000000 --- a/src/IconLibrary/main.blp +++ /dev/null @@ -1,74 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.Window window { - width-request: 800; - height-request: 600; - hide-on-close: true; - - Adw.ToastOverlay overlay { - Box { - orientation: vertical; - - Adw.HeaderBar { - [title] - Adw.Clamp { - maximum-size: 800; - - SearchEntry search_entry { - hexpand: true; - placeholder-text: _("Search for icons by name, category or tag"); - } - } - } - - ScrolledWindow { - hexpand: true; - vexpand: true; - Adw.Clamp { - maximum-size: 800; - - Box { - orientation: vertical; - - Label { - styles ["title-4"] - label: "Icon Development Kit"; - margin-bottom: 6; - margin-top: 12; - halign: start; - } - - FlowBox flow_box_devkit { - visible: false; - valign: start; - min-children-per-line: 5; - max-children-per-line: 18; - activate-on-single-click: true; - selection-mode: none; - margin-bottom: 12; - } - - Label { - styles ["title-4"] - label: "Platform icons"; - margin-bottom: 6; - margin-top: 12; - halign: start; - } - - FlowBox flow_box_platform { - visible: false; - valign: start; - min-children-per-line: 5; - max-children-per-line: 18; - activate-on-single-click: true; - selection-mode: none; - margin-bottom: 12; - } - } - } - } - } - } -} diff --git a/src/IconLibrary/main.js b/src/IconLibrary/main.js deleted file mode 100644 index 60e7c7198..000000000 --- a/src/IconLibrary/main.js +++ /dev/null @@ -1,136 +0,0 @@ -import Gtk from "gi://Gtk?version=4.0"; -import Gdk from "gi://Gdk"; - -import Adw from "gi://Adw"; -import Gio from "gi://Gio"; - -import IconWidget from "./IconWidget.js"; -import resource from "./main.blp"; - -const toasts = new Set(); - -export default function IconLibrary() { - const display = Gdk.Display.get_default(); - const clipboard = display.get_clipboard(); - - const dev_kit_icons = getDevKitIcons(); - const platform_icons = getPlatformIcons(dev_kit_icons); - const icons = Object.assign( - Object.create(null), - platform_icons, - dev_kit_icons, - ); - - const builder = Gtk.Builder.new_from_resource(resource); - - const overlay = builder.get_object("overlay"); - const search_entry = builder.get_object("search_entry"); - - function selectIcon(icon_name) { - clipboard.set(icon_name); - - for (const toast of toasts) { - toast.dismiss(); - } - const toast = new Adw.Toast({ - title: `“${icon_name}” copied to clipboard`, - priority: Adw.ToastPriority.HIGH, - }); - toast.connect("dismissed", onToastDismissed); - toasts.add(toast); - overlay.add_toast(toast); - } - - const flow_box_devkit = builder.get_object("flow_box_devkit"); - const flow_box_platform = builder.get_object("flow_box_platform"); - - function filter_func({ icon_name }) { - return icons[icon_name]?.some((tag) => tag.includes(search_entry.text)); - } - flow_box_devkit.set_filter_func(filter_func); - flow_box_platform.set_filter_func(filter_func); - - search_entry.connect("search-changed", () => { - flow_box_devkit.invalidate_filter(); - flow_box_platform.invalidate_filter(); - }); - - function populateIconDevKit() { - for (const icon_name of Object.keys(dev_kit_icons).sort((a, b) => - a.localeCompare(b), - )) { - const icon = new IconWidget({ - icon_name, - }); - icon.connect("clicked", () => selectIcon(icon_name)); - flow_box_devkit.append(icon); - } - flow_box_devkit.visible = true; - } - - function populatePlatformIcons() { - for (const icon_name of Object.keys(platform_icons).sort((a, b) => - a.localeCompare(b), - )) { - const icon = new IconWidget({ - icon_name, - }); - icon.connect("clicked", () => selectIcon(icon_name)); - flow_box_platform.append(icon); - } - flow_box_platform.visible = true; - } - - populateIconDevKit(); - populatePlatformIcons(); - - const window = builder.get_object("window"); - return window; -} - -function onToastDismissed(toast) { - toasts.delete(toast); -} - -function getDevKitIcons() { - const icons = Object.create(null); - - const [bytes] = Gio.File.new_for_path( - "/app/share/icon-development-kit/icons.json", - ).load_bytes(null); - - const icons_dev_kit = JSON.parse(new TextDecoder().decode(bytes.get_data())); - for (const icon of icons_dev_kit) { - // https://gitlab.gnome.org/Teams/Design/icon-development-kit/-/issues/62 - if (icon.context === "noexport-bits") continue; - - icons[`${icon.filename}-symbolic`] = [ - icon.filename, - icon.context, - ...icon.tags, - ]; - } - - return icons; -} - -function getPlatformIcons(dev_kit_icons) { - const display = Gdk.Display.get_default(); - const icons = Object.create(null); - - const icon_theme = Gtk.IconTheme.get_for_display(display); - const icons_theme = icon_theme.get_icon_names(); - - for (const icon of icons_theme) { - if ( - icon.startsWith("re.sonny.Workbench") || - !icon.endsWith("-symbolic") || - icon in dev_kit_icons - ) - continue; - - if (!(icon in icons)) icons[icon] = [icon.split("-symbolic")[0]]; - } - - return icons; -} diff --git a/src/Library/EntryRow.blp b/src/Library/EntryRow.blp new file mode 100644 index 000000000..b5eddb208 --- /dev/null +++ b/src/Library/EntryRow.blp @@ -0,0 +1,55 @@ +using Gtk 4.0; +using Adw 1; + +template $EntryRow: Adw.ActionRow { + activatable: true; + + accessibility { + labelled-by: title_label; + described-by: description_label; + } + + [prefix] + Box contents { + orientation: horizontal; + + Box labels_box { + margin-top: 6; + margin-bottom: 6; + spacing: 3; + orientation: vertical; + + Label title_label { + xalign: 0; + wrap: true; + wrap-mode: word_char; + } + + Label description_label { + styles [ + "dim-label", + "caption", + ] + + xalign: 0; + wrap: true; + wrap-mode: word_char; + natural-wrap-mode: none; + } + + Box languages_box { + orientation: horizontal; + spacing: 3; + margin-top: 3; + } + } + } + + [suffix] + Image { + icon-name: "go-next-symbolic"; + margin-start: 6; + hexpand: true; + halign: end; + } +} diff --git a/src/Library/EntryRow.js b/src/Library/EntryRow.js new file mode 100644 index 000000000..07778d639 --- /dev/null +++ b/src/Library/EntryRow.js @@ -0,0 +1,80 @@ +import Adw from "gi://Adw"; +import Gtk from "gi://Gtk"; +import Gio from "gi://Gio"; +import GObject from "gi://GObject"; + +import { getLanguage } from "../util.js"; +import Template from "./EntryRow.blp" with { type: "uri" }; +import { isTypeScriptEnabled } from "../Extensions/Extensions.js"; + +class EntryRow extends Adw.ActionRow { + constructor({ demo, ...params } = {}) { + super(params); + + this._title_label.label = demo.name; + this._description_label.label = demo.description; + + this.#createLanguageTags(demo); + + const action_group = new Gio.SimpleActionGroup(); + const activate_action = new Gio.SimpleAction({ + name: "activate", + parameter_type: null, + }); + + activate_action.connect("activate", () => { + this.emit("triggered", null); + }); + action_group.add_action(activate_action); + + this.insert_action_group("demo-row", action_group); + this.action_name = "demo-row.activate"; + } + + #createLanguageTags(demo) { + demo.languages.forEach((id) => { + if (id === "typescript" && !isTypeScriptEnabled()) return; + const language = getLanguage(id); + if (!language) return; + const language_tag = this.#createLanguageTag(language); + this._languages_box.append(language_tag); + }); + } + + #createLanguageTag(language) { + const button = new Gtk.Button({ + label: language.name, + valign: Gtk.Align.CENTER, + css_classes: ["pill", "small"], + }); + + button.connect("clicked", () => { + this.emit("triggered", language); + }); + + return button; + } +} + +export default GObject.registerClass( + { + GTypeName: "EntryRow", + Template, + Properties: { + demo: GObject.ParamSpec.jsobject( + "demo", + "", + "", + GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT_ONLY, + null, + ), + }, + Signals: { + triggered: { + param_types: [GObject.TYPE_JSOBJECT], + }, + }, + InternalChildren: ["title_label", "description_label", "languages_box"], + }, + EntryRow, +); diff --git a/src/Library/Library.blp b/src/Library/Library.blp index 901a982e9..59913f75a 100644 --- a/src/Library/Library.blp +++ b/src/Library/Library.blp @@ -1,64 +1,132 @@ using Gtk 4.0; using Adw 1; -Adw.PreferencesWindow library { +Adw.Window window { hide-on-close: true; modal: false; - title: _("Library"); + title: _("Workbench — Library"); default-height: 700; default-width: 700; - Adw.PreferencesPage { - Adw.PreferencesGroup { - Label { - label: _('Learn, Test, Remix'); - styles ["title-1"] - } + Adw.ToolbarView toolbar_view { + [top] + Adw.HeaderBar header_bar { + title-widget: Adw.WindowTitle { + title: _("Workbench — Library"); + }; } - Adw.PreferencesGroup library_uncategorized { - } + content: ScrolledWindow scrolled_window { + hscrollbar-policy: never; - Adw.PreferencesGroup library_tools { - title: _("Tools"); - } + child: Adw.Clamp { + maximum-size: 576; + margin-end: 12; + margin-start: 12; - Adw.PreferencesGroup library_network { - title: _("Network"); - } + child: Box { + orientation: vertical; + spacing: 12; - Adw.PreferencesGroup library_controls { - title: _("Controls"); - } + Box { + orientation: vertical; - Adw.PreferencesGroup library_layout { - title: _("Layout"); - } + Box { + halign: center; + vexpand: false; - Adw.PreferencesGroup library_feedback { - title: _("Feedback"); - } + Picture picture_illustration { + can-shrink: false; + margin-bottom: 32; + margin-top: 24; + } + } - Adw.PreferencesGroup library_navigation { - title: _("Navigation"); - } + Label { + label: _("Learn, Test, Remix"); - Adw.PreferencesGroup library_user_interface { - title: "User Interface"; - } + styles [ + "title-1", + ] + } - Adw.PreferencesGroup library_platform { - title: "Platform APIs"; - } + Box { + spacing: 6; - Adw.PreferencesGroup { - vexpand: true; - valign: end; - Label { - label: _('All examples are dedicated to the public domain\nand <b>can be used freely</b> under the terms of <a href="https://creativecommons.org/publicdomain/zero/1.0/">CC0 1.0</a>.'); - use-markup: true; - styles ["caption"] - } - } + SearchEntry search_entry { + search-delay: 100; + placeholder-text: _("Search demos"); + activates-default: true; + hexpand: true; + margin-top: 32; + } + + DropDown dropdown_language { + valign: end; + + model: Gtk.StringList {}; + } + + DropDown dropdown_category { + valign: end; + + model: Gtk.StringList {}; + } + } + } + + ListBox listbox { + selection-mode: none; + + styles [ + "boxed-list", + ] + } + + Box { + halign: center; + margin-bottom: 24; + margin-top: 12; + orientation: vertical; + + Box results_empty { + orientation: vertical; + visible: false; + margin-top: 46; + margin-bottom: 70; + spacing: 6; + + Label { + label: _("No results"); + + styles [ + "title-3", + ] + } + + Button button_reset { + label: _("Reset filters"); + halign: center; + + styles [ + "pill", + ] + } + } + + Label { + label: _( + "All examples are dedicated to the public domain\nand <b>can be used freely</b> under the terms of <a href=\"https://creativecommons.org/publicdomain/zero/1.0/\">CC0 1.0</a>" + ); + use-markup: true; + + styles [ + "caption", + ] + } + } + }; + }; + }; } } diff --git a/src/Library/Library.js b/src/Library/Library.js index 8496861ee..464552b2d 100644 --- a/src/Library/Library.js +++ b/src/Library/Library.js @@ -1,83 +1,230 @@ import Gio from "gi://Gio"; -import Adw from "gi://Adw"; -import Gtk from "gi://Gtk"; -import { demos_dir, getDemo, readDemoFile } from "../util.js"; +import { + decode, + demos_dir, + getLanguage, + settings as global_settings, + quitOnLastWindowClose, +} from "../util.js"; import Window from "../window.js"; -import resource from "./Library.blp"; +import resource from "./Library.blp" with { type: "uri" }; import { createSessionFromDemo } from "../sessions.js"; +import EntryRow from "./EntryRow.js"; + +import illustration from "./library.svg"; +import { gettext as _ } from "gettext"; + +import { build } from "../../troll/src/builder.js"; +import { + needsAdditionalPermissions, + showPermissionsDialog, +} from "../Permissions/Permissions.js"; +import { isTypeScriptEnabled } from "../Extensions/Extensions.js"; export default function Library({ application }) { - const builder = Gtk.Builder.new_from_resource(resource); - const window = builder.get_object("library"); + const objects = build(resource); + const { + window, + picture_illustration, + search_entry, + dropdown_category, + dropdown_language, + results_empty, + button_reset, + listbox, + scrolled_window, + } = objects; + window.application = application; + picture_illustration.set_resource(illustration); + + if (__DEV__) { + window.add_css_class("devel"); + } + + let last_triggered; + + window.connect("close-request", quitOnLastWindowClose); + + const categories = [ + { id: "all", name: _("Any Category"), index: 0 }, + { id: "tools", name: _("Tools"), index: 1 }, + { id: "network", name: _("Network"), index: 2 }, + { id: "controls", name: _("Controls"), index: 3 }, + { id: "layout", name: _("Layout"), index: 4 }, + { id: "feedback", name: _("Feedback"), index: 5 }, + { id: "navigation", name: _("Navigation"), index: 6 }, + { id: "user_interface", name: _("User Interface"), index: 7 }, + { id: "platform", name: _("Platform APIs"), index: 8 }, + ]; + const categories_by_id = Object.fromEntries( + categories.map((category) => [category.id, category]), + ); + const categories_by_index = Object.fromEntries( + categories.map((category) => [category.index, category]), + ); + const category_all = categories_by_id["all"]; + + categories.forEach((category) => { + dropdown_category.model.append(category.name); + }); - let last_selected; + const languages = [ + { id: "all", name: _("Any Language"), index: 0 }, + { id: "javascript", name: _("JavaScript"), index: 1 }, + { id: "python", name: _("Python"), index: 2 }, + { id: "rust", name: _("Rust"), index: 3 }, + { id: "vala", name: _("Vala"), index: 4 }, + ]; + if (isTypeScriptEnabled()) { + languages.push({ id: "typescript", name: _("TypeScript"), index: 5 }); + } + const languages_by_id = Object.fromEntries( + languages.map((language) => [language.id, language]), + ); + const languages_by_index = Object.fromEntries( + languages.map((language) => [language.index, language]), + ); + languages.forEach((language) => { + dropdown_language.model.append(language.name); + }); const demos = getDemos(); - demos.forEach((demo) => { - const widget = new Adw.ActionRow({ - title: demo.name, - subtitle: demo.description, - activatable: true, + const entries = demos.map((demo) => { + const entry_row = new EntryRow({ demo }); + if (demo.name === "Welcome") last_triggered = entry_row; + + entry_row.connect("triggered", (_self, language) => { + last_triggered = entry_row; + + openDemo({ + application, + demo_name: demo.name, + language, + }).catch(console.error); }); - if (demo.name === "Welcome") last_selected = widget; - widget.add_suffix( - new Gtk.Image({ - icon_name: "go-next-symbolic", - }), - ); - widget.connect("activated", () => { - last_selected = widget; + listbox.append(entry_row); - openDemo({ application, demo_name: demo.name }).catch(logError); - }); + const category = categories_by_id[demo.category]; + const widget = entry_row; + const languages = demo.languages.map((lang) => languages_by_id[lang]); - builder.get_object(`library_${demo.category}`).add(widget); + return { ...demo, category, widget, languages }; }); + const language_all = languages_by_id["all"]; + + function updateList() { + const current_category = + categories_by_index[dropdown_category.get_selected()]; + const current_language = + languages_by_index[dropdown_language.get_selected()]; + + const search_term = search_entry.get_text().toLowerCase(); + let results_found = false; + entries.forEach(({ name, description, category, languages, widget }) => { + const category_match = + current_category === category_all || category === current_category; + const language_match = + current_language === language_all || + languages.includes(current_language); + const search_match = + search_term === "" || + name.toLowerCase().includes(search_term) || + description.toLowerCase().includes(search_term) || + category.name.toLowerCase().includes(search_term); + const is_match = category_match && language_match && search_match; + widget.visible = is_match; + if (is_match) { + results_found = true; + } + }); + + results_empty.visible = !results_found; + } + + search_entry.connect("search-changed", updateList); + dropdown_category.connect("notify::selected", updateList); + dropdown_language.connect("notify::selected", updateList); + + function reset() { + scrolled_window.vadjustment = null; + search_entry.text = ""; + dropdown_category.selected = category_all.index; + dropdown_language.selected = language_all.index; + } + button_reset.connect("clicked", reset); + window.connect("show", reset); + const action_library = new Gio.SimpleAction({ name: "library", parameter_type: null, }); action_library.connect("activate", () => { window.present(); - last_selected?.grab_focus(); + last_triggered?.grab_focus(); }); application.add_action(action_library); application.set_accels_for_action("app.library", ["<Control><Shift>O"]); } -function getDemos() { - const demos = []; - - for (const child of demos_dir.enumerate_children( - "", - Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, - null, - )) { - if (child.get_file_type() !== Gio.FileType.DIRECTORY) continue; - - let demo; - try { - demo = getDemo(child.get_name()); - } catch (err) { - console.debug(err); - continue; +const getDemos = (() => { + let demos; + return function getDemos() { + if (!demos) { + const file = demos_dir.get_child("index.json"); + const [, data] = file.load_contents(null); + demos = JSON.parse(decode(data)); } + return demos; + }; +})(); - demos.push(demo); - } - - return demos; +export function getDemo(name) { + const demos = getDemos(); + return demos.find((demo) => demo.name === name); } -async function openDemo({ application, demo_name }) { +async function openDemo({ application, demo_name, language }) { const demo = getDemo(demo_name); const session = await createSessionFromDemo(demo); - const is_js = session.settings.get_int("code-language") === 0; + if (language) { + session.settings.set_int("code-language", language.index); + global_settings.set_int("recent-code-language", language.index); - const { load } = Window({ application, session }); - await load({ run: demo.autorun && is_js }); + // If the user explicitly requested to open the demo + // in a specific language then that's probably what they are interested in + // therefore override the demo default and force show the code panel + session.settings.set_boolean("show-code", true); + } + + const { autorun, languages } = demo; + + // Override the user preferred language if the demo doesn't support it + const lang = session.getCodeLanguage(); + if (languages.length > 0 && !languages.includes(lang.id)) { + session.settings.set_int( + "code-language", + getLanguage(demo.languages[0]).index, + ); + } + + const { load, runCode, window } = Window({ + application, + session, + }); + await load(); + + if (needsAdditionalPermissions({ demo })) { + showPermissionsDialog({ window }); + return; + } + + const code_language = session.getCodeLanguage(); + const run = autorun && code_language.id === "javascript"; + if (run) { + await runCode(); + } } diff --git a/src/Library/demos/.eslintrc.yml b/src/Library/demos/.eslintrc.yml deleted file mode 100644 index 2d895c227..000000000 --- a/src/Library/demos/.eslintrc.yml +++ /dev/null @@ -1,3 +0,0 @@ -root: false -globals: - workbench: true diff --git a/src/Library/demos/About Window/main.blp b/src/Library/demos/About Window/main.blp deleted file mode 100644 index 779ebe2d1..000000000 --- a/src/Library/demos/About Window/main.blp +++ /dev/null @@ -1,25 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: "About Window"; - description: _("A window showing information about the application."); - - Box { - orientation: vertical; - halign: center; - - Button button { - label: _("About"); - margin-bottom: 12; - styles ['pill'] - } - - LinkButton { - label: "API Reference"; - uri: "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.3/class.AboutWindow.html"; - } - } -} - - diff --git a/src/Library/demos/About Window/main.js b/src/Library/demos/About Window/main.js deleted file mode 100644 index a716fdfba..000000000 --- a/src/Library/demos/About Window/main.js +++ /dev/null @@ -1,46 +0,0 @@ -import Adw from "gi://Adw"; -import Gtk from "gi://Gtk"; - -const parent = workbench.window; -const button = workbench.builder.get_object("button"); - -function openAboutWindow() { - const dialog = new Adw.AboutWindow({ - transient_for: parent, - application_icon: "application-x-executable", - application_name: "Typeset", - developer_name: "Angela Avery", - version: "1.2.3", - comments: _( - "Typeset is an app that doesn’t exist and is used as an example content for About Window.", - ), - website: "https://example.org", - issue_url: "https://example.org", - support_url: "https://example.org", - copyright: "© 2023 Angela Avery", - license_type: Gtk.License.GPL_3_0_ONLY, - developers: ["Angela Avery <angela@example.org>"], - artists: ["GNOME Design Team"], - translator_credits: _("translator-credits"), - }); - - dialog.add_link( - _("Documentation"), - "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.AboutWindow.html", - ); - - dialog.add_legal_section( - _("Fonts"), - null, - Gtk.License.CUSTOM, - _( - "This application uses font data from <a href='https://example.org'>somewhere</a>.", - ), - ); - - dialog.add_acknowledgement_section(_("Special thanks to"), [_("My cat")]); - - dialog.present(); -} - -button.connect("clicked", openAboutWindow); diff --git a/src/Library/demos/About Window/main.json b/src/Library/demos/About Window/main.json deleted file mode 100644 index cd103558b..000000000 --- a/src/Library/demos/About Window/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "user_interface", - "description": "A window showing information about the application.", - "panels": ["code", "preview"], - "autorun": true -} diff --git a/src/Library/demos/About Window/main.vala b/src/Library/demos/About Window/main.vala deleted file mode 100644 index 4c3314141..000000000 --- a/src/Library/demos/About Window/main.vala +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env -S vala workbench.vala --pkg gtk4 --pkg libadwaita-1 - -public void main () { - Gtk.init (); - - var button = workbench.builder.get_object ("button") as Gtk.Button; - button.clicked.connect(on_button_clicked); -} - -public void on_button_clicked () { - // https://valadoc.org/libadwaita-1/Adw.AboutWindow.html - var dialog = new Adw.AboutWindow() { - transient_for = workbench.window, - application_icon = "application-x-executable", - application_name = "Typeset", - developer_name = "Angela Avery", - version = "1.2.3", - comments = "Typeset is an app that doesn’t exist and is used as an example content for About Window.", - website = "https://example.org", - issue_url = "https://example.org", - support_url = "https://example.org", - copyright = "© 2023 Angela Avery", - license_type = Gtk.License.GPL_3_0_ONLY, - developers = { "Angela Avery <angela@example.org>" }, - artists = { "GNOME Design Team" }, - translator_credits = "translator-credits", - }; - dialog.add_link ( - "Documentation", - "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.AboutWindow.html" - ); - dialog.add_legal_section ( - "Fonts", - null, - Gtk.License.CUSTOM, - "This application uses font data from <a href='https://example.org'>somewhere</a>." - ); - - dialog.add_acknowledgement_section ("Special thanks to", { "My cat" } ); - - dialog.present(); -} diff --git a/src/Library/demos/Account/main.blp b/src/Library/demos/Account/main.blp deleted file mode 100644 index 901a5a0d4..000000000 --- a/src/Library/demos/Account/main.blp +++ /dev/null @@ -1,78 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: _("Account"); - description: _("Request information about the user"); - margin-top: 48; - - Adw.Clamp { - maximum-size: 340; - - Box { - orientation: vertical; - - Box { - orientation: vertical; - margin-bottom: 30; - spacing: 18; - - - Adw.EntryRow entry { - title: _("Reason"); - styles ["card"] - halign: fill; - } - - Button button { - label: _("Request"); - halign: center; - styles ["suggested-action", "pill"] - } - } - - Revealer revealer { - transition-duration: 300; - transition-type: slide_up; - - ListBox { - selection-mode: none; - margin-bottom: 18; - - styles ["boxed-list"] - - Gtk.ListBoxRow { - activatable: false; - Adw.Avatar avatar { - hexpand: true; - size: 80; - margin-bottom: 18; - margin-top: 18; - } - } - - Adw.ActionRow { - title: _("ID :"); - - Label username { - label: _("N/A"); - } - } - - Adw.ActionRow { - title: _("Name :"); - - Label name { - label: _("N/A"); - } - } - } - } - - LinkButton { - label: "API Reference"; - uri: "https://libportal.org/method.Portal.get_user_information.html"; - } - } - } -} diff --git a/src/Library/demos/Account/main.js b/src/Library/demos/Account/main.js deleted file mode 100644 index a438d7a67..000000000 --- a/src/Library/demos/Account/main.js +++ /dev/null @@ -1,51 +0,0 @@ -import Xdp from "gi://Xdp"; -import XdpGtk from "gi://XdpGtk4"; -import Gio from "gi://Gio"; -import Gdk from "gi://Gdk"; - -Gio._promisify( - Xdp.Portal.prototype, - "get_user_information", - "get_user_information_finish", -); - -const portal = new Xdp.Portal(); -const parent = XdpGtk.parent_new_gtk(workbench.window); - -const revealer = workbench.builder.get_object("revealer"); -const button = workbench.builder.get_object("button"); -const avatar = workbench.builder.get_object("avatar"); -const entry = workbench.builder.get_object("entry"); -const username = workbench.builder.get_object("username"); -const display = workbench.builder.get_object("name"); - -async function onClicked() { - const reason = entry.get_text(); - const result = await portal.get_user_information(parent, reason, null, null); - - /* - result is a GVariant dictionary containing the following fields - id (s): the user ID - name (s): the users real name - image (s): the uri of an image file for the users avatar picture - */ - - const user_info = result.deepUnpack(); - const id = user_info["id"].deepUnpack(); - const name = user_info["name"].deepUnpack(); - const uri = user_info["image"].deepUnpack(); - const file = Gio.File.new_for_uri(uri); - const texture = Gdk.Texture.new_from_file(file); - - username.label = id; - display.label = name; - avatar.set_custom_image(texture); - revealer.reveal_child = true; - - entry.set_text(""); - console.log("Information retrieved"); -} - -button.connect("clicked", () => { - onClicked().catch(logError); -}); diff --git a/src/Library/demos/Account/main.json b/src/Library/demos/Account/main.json deleted file mode 100644 index 0bf3d2257..000000000 --- a/src/Library/demos/Account/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "platform", - "description": "Request information about the user", - "panels": ["code", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Action Bar/main.blp b/src/Library/demos/Action Bar/main.blp deleted file mode 100644 index 783ce864f..000000000 --- a/src/Library/demos/Action Bar/main.blp +++ /dev/null @@ -1,57 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Box { - height-request: 720; - width-request: 360; - halign: center; - margin-top: 48; - margin-bottom: 48; - orientation: vertical; - styles ["card"] - - Adw.StatusPage { - title: _("Action Bar"); - description: _("Toolbar for contextual actions."); - - Box { - orientation: vertical; - spacing: 18; - vexpand:true; - - ToggleButton button { - halign: center; - active: false; - label: _("Reveal"); - styles ["pill", "suggested-action"] - } - LinkButton { - label: _("API Reference"); - uri: "https://docs.gtk.org/gtk4/class.ActionBar.html"; - } - } - } - ActionBar action_bar { - revealed: true; - valign: end; - - [start] - Button start_widget { - icon-name: "call-start-symbolic"; - } - - [center] - DropDown { - model: StringList { - strings ["Center Widget","👁️", "❤️", "💼", "🪑"] - }; - } - - [end] - Button end_widget { - icon-name: "padlock2-symbolic"; - } - } -} - - diff --git a/src/Library/demos/Action Bar/main.js b/src/Library/demos/Action Bar/main.js deleted file mode 100644 index 4a17102cb..000000000 --- a/src/Library/demos/Action Bar/main.js +++ /dev/null @@ -1,16 +0,0 @@ -const action_bar = workbench.builder.get_object("action_bar"); -const button = workbench.builder.get_object("button"); -const start_widget = workbench.builder.get_object("start_widget"); -const end_widget = workbench.builder.get_object("end_widget"); - -button.connect("notify::active", () => { - action_bar.revealed = !button.active; -}); - -start_widget.connect("clicked", () => { - console.log("Start widget"); -}); - -end_widget.connect("clicked", () => { - console.log("End widget"); -}); diff --git a/src/Library/demos/Action Bar/main.json b/src/Library/demos/Action Bar/main.json deleted file mode 100644 index 8eb7cbaac..000000000 --- a/src/Library/demos/Action Bar/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "user_interface", - "description": "Toolbar for contextual actions.", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Actions/main.blp b/src/Library/demos/Actions/main.blp deleted file mode 100644 index 414dc1376..000000000 --- a/src/Library/demos/Actions/main.blp +++ /dev/null @@ -1,208 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage demo { - title: "Actions"; - description: _("A high-level interface used to describe a piece of functionality"); - - Adw.Clamp { - Box { - orientation: vertical; - - Box actions { - orientation: vertical; - homogeneous: true; - vexpand: true; - spacing: 24; - - Adw.PreferencesGroup { - title: _("Activatable Actions"); - description: _("Stateless actions that optionally take parameters"); - - Box { - margin-top: 6; - margin-bottom: 6; - hexpand: true; - homogeneous: true; - - Button button { - halign: center; - action-name: "demo.simple"; - label: _("Simple Action"); - - styles ["pill"] - } - - MenuButton menu_button { - halign: center; - menu-model: bookmarks_menu; - label: _("Bookmarks"); - - styles ["pill"] - } - } - } - - Adw.PreferencesGroup { - title: _("Stateful Actions"); - description: _("Actions with a closely-associated state"); - - Box { - margin-top: 6; - margin-bottom: 6; - hexpand: true; - homogeneous: true; - - Box { - valign: center; - orientation: vertical; - spacing: 6; - - Label { - label: _("Toggle Action"); - - styles ["heading"] - } - - Switch switch { - halign: center; - valign: center; - action-name: "demo.toggle"; - } - } - - Box { - orientation: vertical; - spacing: 6; - - Label { - label: _("Scale"); - - styles ["heading"] - } - - Box { - halign: center; - valign: center; - - ToggleButton { - action-name: "demo.scale"; - action-target: "'100%'"; - label: _("100%"); - } - - ToggleButton { - action-name: "demo.scale"; - action-target: "'150%'"; - label: _("150%"); - } - - ToggleButton { - action-name: "demo.scale"; - action-target: "'200%'"; - label: _("200%"); - } - - styles ["linked"] - } - } - } - } - - Adw.PreferencesGroup { - title: _("Specialized Actions"); - description: _("A stateful action which is bound to a GObject property"); - - Box { - orientation: vertical; - halign: center; - margin-top: 6; - margin-bottom: 12; - homogeneous: true; - - - Label text { - label: _("Text Align"); - halign: center; - - styles ["heading"] - } - - Box { - halign: center; - spacing: 6; - - CheckButton { - label: _("Start"); - action-name: "demo.text-align"; - action-target: "'start'"; - } - - CheckButton { - label: _("Center"); - action-name: "demo.text-align"; - action-target: "'center'"; - } - - CheckButton { - label: _("End"); - action-name: "demo.text-align"; - action-target: "'end'"; - } - } - } - } - } - - Box links { - halign: center; - - LinkButton { - label: "GJS Guide"; - uri: "https://gjs.guide/guides/gio/actions-and-menus.html"; - } - - LinkButton { - label: "GTK Documentation"; - uri: "https://docs.gtk.org/gtk4/actions.html"; - } - } - } - } -} - -menu bookmarks_menu { - item { - label: _("Developer Documentation"); - action: "demo.open-bookmarks"; - target: _("Developer Documentation"); - } - - item { - label: _("Human Interface Guidelines"); - action: "demo.open-bookmarks"; - target: _("Human Interface Guidelines"); - } - - item { - label: _("GNOME Javascript"); - action: "demo.open-bookmarks"; - target: _("GNOME Javascript"); - } - - section { - label: _("Actions Documentation"); - - item { - label: _("GJS Guide"); - action: "app.open_uri"; - target: "https://gjs.guide/guides/gio/actions-and-menus.html"; - } - - item { - label: _("GTK Documentation"); - action: "app.open_uri"; - target: "https://docs.gtk.org/gtk4/actions.html"; - } - } -} diff --git a/src/Library/demos/Actions/main.js b/src/Library/demos/Actions/main.js deleted file mode 100644 index 032b80703..000000000 --- a/src/Library/demos/Actions/main.js +++ /dev/null @@ -1,68 +0,0 @@ -import Gtk from "gi://Gtk"; -import Gio from "gi://Gio"; -import GObject from "gi://GObject"; -import GLib from "gi://GLib"; - -const demo = workbench.builder.get_object("demo"); - -const demo_group = new Gio.SimpleActionGroup(); -demo.insert_action_group("demo", demo_group); - -// Action with no state or parameters -const simple_action = new Gio.SimpleAction({ - name: "simple", -}); - -simple_action.connect("activate", (action, parameter) => { - console.log(`${action.name} action activated`); -}); - -demo_group.add_action(simple_action); - -// Action with parameter -const bookmarks_action = new Gio.SimpleAction({ - name: "open-bookmarks", - parameter_type: new GLib.VariantType("s"), -}); - -bookmarks_action.connect("activate", (action, parameter) => { - console.log(`${action.name} activated with ${parameter.unpack()}`); -}); - -demo_group.add_action(bookmarks_action); - -// Action with state -const toggle_action = new Gio.SimpleAction({ - name: "toggle", - // Boolean actions dont need parameters for activation - state: GLib.Variant.new_boolean(false), -}); - -toggle_action.connect("notify::state", (action) => { - console.log(`${action.name} action set to ${action.state.unpack()}`); -}); - -demo_group.add_action(toggle_action); - -// Action with state and parameter -const scale_action = new Gio.SimpleAction({ - name: "scale", - state: GLib.Variant.new_string("100%"), - parameter_type: new GLib.VariantType("s"), -}); - -scale_action.connect("notify::state", (action) => { - console.log(`${action.name} action set to ${action.state.unpack()}`); -}); - -demo_group.add_action(scale_action); - -const text = workbench.builder.get_object("text"); - -const alignment_action = new Gio.PropertyAction({ - name: "text-align", - object: text, - property_name: "halign", -}); - -demo_group.add_action(alignment_action); diff --git a/src/Library/demos/Actions/main.json b/src/Library/demos/Actions/main.json deleted file mode 100644 index 92141aeb3..000000000 --- a/src/Library/demos/Actions/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "controls", - "description": "A high-level interface used to describe a piece of functionality", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Advanced Buttons/main.blp b/src/Library/demos/Advanced Buttons/main.blp deleted file mode 100644 index 3dd444190..000000000 --- a/src/Library/demos/Advanced Buttons/main.blp +++ /dev/null @@ -1,207 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: _("Advanced Buttons"); - description: _("Complex buttons with menus and icons"); - - Box { - orientation: vertical; - halign: center; - spacing: 6; - - Box { - spacing: 6; - halign: center; - orientation: vertical; - - Label { - label: _("Split Button"); - - styles ["title-4"] - } - - Label { - label: _("A combined button and dropdown widget"); - } - - Box { - halign: center; - margin-top: 12; - homogeneous: true; - spacing: 18; - - Box { - margin-top: 6; - margin-bottom: 6; - orientation: vertical; - spacing: 6; - - Adw.SplitButton { - halign: center; - icon-name: "execute-from-symbolic"; - menu-model: button_run_menu; - } - - Label { - label: _("Menu Model"); - } - } - - Box { - margin-top: 6; - margin-bottom: 6; - orientation: vertical; - spacing: 6; - - Adw.SplitButton { - label: _("Open"); - popover: button_popover; - } - - Label { - label: _("Popover"); - } - } - } - } - - LinkButton { - margin-bottom: 36; - label: "API Reference"; - uri: "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.3/class.SplitButton.html"; - } - - Box { - spacing: 6; - halign: center; - orientation: vertical; - - Label { - label: _("Button Content"); - - styles ["title-4"] - } - - Label { - label: _("A helper widget to create buttons with icons and labels"); - } - - Box { - halign: center; - margin-top: 12; - homogeneous: true; - spacing: 18; - - Box { - margin-top: 6; - margin-bottom: 6; - orientation: vertical; - spacing: 6; - - Button { - Adw.ButtonContent { - label: _("Edit"); - icon-name: "document-edit-symbolic"; - } - } - - Label { - label: _("Button"); - } - } - - Box { - margin-top: 6; - margin-bottom: 6; - orientation: vertical; - spacing: 6; - - MenuButton { - menu-model: button_new_menu; - - Adw.ButtonContent { - label: _("New"); - icon-name: "plus-symbolic"; - } - } - - Label { - label: _("Menu Button"); - } - } - - Box { - margin-top: 6; - margin-bottom: 6; - orientation: vertical; - spacing: 6; - - ToggleButton { - Adw.ButtonContent { - label: _("Alerts"); - icon-name: "bell-symbolic"; - } - } - - Label { - label: _("Toggle Button"); - } - } - } - } - - LinkButton { - label: "API Reference"; - uri: "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.3/class.ButtonContent.html"; - } - } -} - -Popover button_popover { - Box { - orientation: vertical; - SearchEntry { - placeholder-text: _("Search documents"); - } - - Adw.StatusPage { - title: _("No Recent Documents"); - icon-name: "clock-symbolic"; - width-request: 300; - height-request: 300; - styles [ - "compact", - "dim-label", - ] - } - } -} - -menu button_new_menu { - item ("New File") - item ("New Folder") - item ("New Window") -} - -menu button_run_menu { - section { - item ("Run") - item ("Run with Leak Detector") - item ("Run with Debugger") - } - - section { - label: _("Settings"); - submenu { - label: _("Accessibility"); - item ("High Contrast") - - section { - label: _("Text Direction"); - item ("Left-to-Right") - item ("Right-to-Left") - } - } - } -} diff --git a/src/Library/demos/Advanced Buttons/main.json b/src/Library/demos/Advanced Buttons/main.json deleted file mode 100644 index 215416e5b..000000000 --- a/src/Library/demos/Advanced Buttons/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "controls", - "description": "Complex buttons with menus and icons", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Animation/main.blp b/src/Library/demos/Animation/main.blp deleted file mode 100644 index 3522f321b..000000000 --- a/src/Library/demos/Animation/main.blp +++ /dev/null @@ -1,143 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.Clamp { - Box { - margin-top: 30; - margin-bottom: 12; - orientation: vertical; - Box { - spacing: 6; - orientation: vertical; - Label { - label: _("Animation"); - styles ["title-1"] - } - Label { - label: _("Create timed or spring based animations"); - } - } - - Box { - margin-top: 54; - orientation: vertical; - homogeneous: true; - - Box target_container{ - vexpand: true; - spacing: 12; - orientation: vertical; - - Box { - spacing:24; - - Box { - homogeneous: true; - orientation: vertical; - - Label { - halign: start; - label: _("Animation Target"); - - styles ["title-4"] - } - - Label { - halign: start; - label: _("Animate a widget property"); - - styles ["dim-label"] - } - } - - Button button_timed { - hexpand: true; - halign: end; - valign: center; - icon-name: "play-large-symbolic"; - - styles ["circular"] - } - } - - Box { - hexpand: true; - ProgressBar progress_bar{ - hexpand: true; - } - } - } - - Box callback_target_container{ - spacing: 12; - orientation: vertical; - - Box { - spacing:24; - - Box { - homogeneous: true; - orientation: vertical; - - Label { - halign: start; - label: _("Callback Animation Target"); - - styles ["title-4"] - } - - Label { - halign: start; - label: _("Use callbacks to animate a custom property"); - - styles ["dim-label"] - } - } - - Button button_spring { - hexpand: true; - halign: end; - valign: center; - icon-name: "play-large-symbolic"; - - styles ["circular"] - } - } - - Box { - hexpand: true; - Adw.Bin ball { - styles ["ball"] - } - } - } - } - - Box { - orientation: vertical; - - Label { - label: "Tools"; - styles ["title-2"] - } - LinkButton { - margin-bottom: 12; - label: "Elastic"; - uri: "https://apps.gnome.org/app/app.drey.Elastic/"; - } - Label { - label: "API References"; - margin-top: 12; - styles ["title-2"] - } - LinkButton { - label: "Timed Animation"; - uri: "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.3/class.TimedAnimation.html"; - } - LinkButton { - label: "Spring Animation"; - uri: "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.3/class.SpringAnimation.html"; - } - } - } -} diff --git a/src/Library/demos/Animation/main.css b/src/Library/demos/Animation/main.css deleted file mode 100644 index 51e35a49d..000000000 --- a/src/Library/demos/Animation/main.css +++ /dev/null @@ -1,10 +0,0 @@ -.ball { - min-height: 50px; - min-width: 50px; - border-radius: 50%; - background-image: linear-gradient(@green_2, @green_5); -} - -.circular { - padding: 6px; -} diff --git a/src/Library/demos/Animation/main.js b/src/Library/demos/Animation/main.js deleted file mode 100644 index ce020f38e..000000000 --- a/src/Library/demos/Animation/main.js +++ /dev/null @@ -1,64 +0,0 @@ -import Adw from "gi://Adw"; -import Gsk from "gi://Gsk"; -import Graphene from "gi://Graphene"; - -const button_timed = workbench.builder.get_object("button_timed"); -const progress_bar = workbench.builder.get_object("progress_bar"); -const target_timed = Adw.PropertyAnimationTarget.new(progress_bar, "fraction"); - -const animation_timed = new Adw.TimedAnimation({ - widget: progress_bar, - value_from: 0, - value_to: 1, - duration: 1500, - easing: Adw.Easing["EASE_IN_OUT_CUBIC"], - target: target_timed, -}); - -button_timed.connect("clicked", () => { - animation_timed.play(); -}); - -animation_timed.connect("done", () => { - animation_timed.reset(); -}); - -const button_spring = workbench.builder.get_object("button_spring"); -const ball = workbench.builder.get_object("ball"); - -const target_spring = Adw.CallbackAnimationTarget.new(animation_cb); -const params = Adw.SpringParams.new( - // Damping Ratio - 0.5, - // Mass - 1.0, - // Stiffness - 50.0, -); -const animation_spring = new Adw.SpringAnimation({ - widget: ball, - value_from: 0, - value_to: 8.5, - spring_params: params, - target: target_spring, -}); -animation_spring.initial_velocity = 1.0; -// If amplitude of oscillation < epsilon, animation stops -animation_spring.epsilon = 0.001; -animation_spring.clamp = false; - -button_spring.connect("clicked", () => { - animation_spring.play(); -}); - -function animation_cb(value) { - const x = Adw.lerp(0, 60, value); - move_widget(ball, x, 0); -} - -function move_widget(widget, x, y) { - let transform = new Gsk.Transform(); - const p = new Graphene.Point({ x: x, y: y }); - transform = transform.translate(p); - widget.allocate(widget.get_width(), widget.get_height(), -1, transform); -} diff --git a/src/Library/demos/Animation/main.json b/src/Library/demos/Animation/main.json deleted file mode 100644 index 873a65117..000000000 --- a/src/Library/demos/Animation/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "user_interface", - "description": "Create timed or spring based animations", - "panels": ["code", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Audio/Chopin-nocturne-op-9-no-2.ogg b/src/Library/demos/Audio/Chopin-nocturne-op-9-no-2.ogg deleted file mode 100644 index 9db3983ac..000000000 Binary files a/src/Library/demos/Audio/Chopin-nocturne-op-9-no-2.ogg and /dev/null differ diff --git a/src/Library/demos/Audio/Dog.ogg b/src/Library/demos/Audio/Dog.ogg deleted file mode 100644 index 5e445f5fd..000000000 Binary files a/src/Library/demos/Audio/Dog.ogg and /dev/null differ diff --git a/src/Library/demos/Audio/main.blp b/src/Library/demos/Audio/main.blp deleted file mode 100644 index 9be51edeb..000000000 --- a/src/Library/demos/Audio/main.blp +++ /dev/null @@ -1,49 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: _("Audio"); - description: _("Play Audio with media controls"); - - Box { - orientation: vertical; - halign: fill; - - Adw.Clamp { - maximum-size: 400; - MediaControls controls {} - } - - Box { - margin-top: 12; - orientation: horizontal; - halign: center; - styles ["linked"] - - Button button_sound { - label: _("Play sound"); - } - - Button button_music { - label: _("Play music"); - } - } - - Box { - margin-top: 48; - spacing: 6; - orientation: vertical; - - LinkButton { - label: "MediaControls API Reference"; - uri: "https://docs.gtk.org/gtk4/class.MediaControls.html"; - } - - LinkButton { - label: "MediaFile API Reference"; - uri: "https://docs.gtk.org/gtk4/class.MediaFile.html"; - } - } - } -} - diff --git a/src/Library/demos/Audio/main.js b/src/Library/demos/Audio/main.js deleted file mode 100644 index c1f76e7e7..000000000 --- a/src/Library/demos/Audio/main.js +++ /dev/null @@ -1,25 +0,0 @@ -import Gtk from "gi://Gtk"; -import Gio from "gi://Gio"; - -const controls = workbench.builder.get_object("controls"); - -const buttons = ["sound", "music"]; -const audio_files = { - sound: "./Dog.ogg", - music: "./Chopin-nocturne-op-9-no-2.ogg", -}; - -buttons.forEach((button_name) => { - const button = workbench.builder.get_object(`button_${button_name}`); - const file = Gio.File.new_for_uri( - workbench.resolve(audio_files[button_name]), - ); - - button.connect("clicked", () => { - if (controls.media_stream) { - controls.media_stream.playing = false; - } - controls.media_stream = Gtk.MediaFile.new_for_file(file); - controls.media_stream.play(); - }); -}); diff --git a/src/Library/demos/Audio/main.json b/src/Library/demos/Audio/main.json deleted file mode 100644 index 68d7c977d..000000000 --- a/src/Library/demos/Audio/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "user_interface", - "description": "Play audio with media controls", - "panels": ["code", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Avatar/main.blp b/src/Library/demos/Avatar/main.blp deleted file mode 100644 index 8df1ad1a9..000000000 --- a/src/Library/demos/Avatar/main.blp +++ /dev/null @@ -1,53 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: "Avatar"; - description: "Display a round avatar for image or initials."; - - Box { - orientation: vertical; - halign: center; - - Adw.Avatar { - size: 96; - show-initials: true; - text: "Jay Doe"; - margin-bottom: 6; - } - - Label { - label: "Initials"; - margin-bottom: 30; - } - - Adw.Avatar avatar_image { - size: 96; - margin-bottom: 6; - } - - Button button { - label: "Image…"; - margin-bottom: 30; - - styles [ - "pill", - ] - } - - Adw.Avatar { - size: 96; - margin-bottom: 6; - } - - Label { - label: "Fallback"; - margin-bottom: 30; - } - - LinkButton { - label: "API Reference"; - uri: "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.3/class.Avatar.html"; - } - } -} diff --git a/src/Library/demos/Avatar/main.js b/src/Library/demos/Avatar/main.js deleted file mode 100644 index f766b5853..000000000 --- a/src/Library/demos/Avatar/main.js +++ /dev/null @@ -1,29 +0,0 @@ -import Gtk from "gi://Gtk"; -import Gdk from "gi://Gdk"; -import Gio from "gi://Gio"; - -Gio._promisify(Gtk.FileDialog.prototype, "open", "open_finish"); - -const avatar_image = workbench.builder.get_object("avatar_image"); -const button = workbench.builder.get_object("button"); - -const filter = new Gtk.FileFilter({ - name: "Images", -}); -filter.add_pixbuf_formats(); - -const dialog = new Gtk.FileDialog({ - title: "Select an Avatar", - modal: true, - default_filter: filter, -}); - -button.connect("clicked", () => { - onClicked().catch(logError); -}); - -async function onClicked() { - const file = await dialog.open(workbench.window, null); - const texture = Gdk.Texture.new_from_file(file); - avatar_image.set_custom_image(texture); -} diff --git a/src/Library/demos/Avatar/main.json b/src/Library/demos/Avatar/main.json deleted file mode 100644 index 137cdd425..000000000 --- a/src/Library/demos/Avatar/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "user_interface", - "description": "Display a round avatar for image or initials.", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Banner/main.blp b/src/Library/demos/Banner/main.blp deleted file mode 100644 index 4a4e3d249..000000000 --- a/src/Library/demos/Banner/main.blp +++ /dev/null @@ -1,48 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.ToastOverlay overlay { - Box { - orientation: vertical; - - Adw.Banner banner { - button-label: _("Troubleshoot"); - title: _("An error occurred: Could not resolve host"); - revealed: true; - } - - Adw.StatusPage { - title: _("Banner"); - description: _("A bar with contextual information"); - vexpand: true; - - Box { - orientation: vertical; - halign: center; - - Button button_show_banner { - halign: center; - label: _("Show Banner"); - - styles ["pill"] - } - - Box { - margin-top: 24; - margin-bottom: 24; - orientation: vertical; - - LinkButton { - label: "API Reference"; - uri: "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.3/class.Banner.html"; - } - - LinkButton { - label: "Human Interface Guidelines"; - uri: "https://developer.gnome.org/hig/patterns/feedback/banners.html"; - } - } - } - } - } -} diff --git a/src/Library/demos/Banner/main.js b/src/Library/demos/Banner/main.js deleted file mode 100644 index 040c318c4..000000000 --- a/src/Library/demos/Banner/main.js +++ /dev/null @@ -1,23 +0,0 @@ -import Adw from "gi://Adw"; - -const banner = workbench.builder.get_object("banner"); -const overlay = workbench.builder.get_object("overlay"); -const button_show_banner = workbench.builder.get_object("button_show_banner"); - -function alert() { - const toast = new Adw.Toast({ - title: "Troubleshoot successful!", - timeout: 3, - }); - - overlay.add_toast(toast); -} - -banner.connect("button-clicked", () => { - alert(); - banner.revealed = false; -}); - -button_show_banner.connect("clicked", () => { - banner.revealed = true; -}); diff --git a/src/Library/demos/Banner/main.json b/src/Library/demos/Banner/main.json deleted file mode 100644 index a23f76b12..000000000 --- a/src/Library/demos/Banner/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "feedback", - "description": "A bar with contextual information", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Box/main.blp b/src/Library/demos/Box/main.blp deleted file mode 100644 index d4621290f..000000000 --- a/src/Library/demos/Box/main.blp +++ /dev/null @@ -1,203 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.Clamp { - maximum-size: 1024; - - Box { - orientation: vertical; - - Label { - label: "Box"; - margin-top: 12; - margin-bottom: 12; - styles [ - "title-1", - ] - } - - Label { - label: _("A widget that arranges its child widgets into a single row or column"); - } - - Box{ - halign: center; - valign: end; - margin-bottom: 12; - - LinkButton{ - label: "Tutorial"; - uri: "https://developer.gnome.org/documentation/tutorials/beginners/components/box.html"; - } - - LinkButton{ - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.Box.html"; - } - } - - Box { - orientation: vertical; - - Box { - hexpand: true; - orientation: vertical; - spacing: 12; - margin-bottom:24; - - Box { - halign: center; - spacing: 18; - - Button button_append{ - label: _("Append Item"); - styles [ - "pill", - ] - } - - Button button_prepend{ - label: _("Prepend Item"); - styles [ - "pill", - ] - } - - Button button_remove{ - label: _("Remove Item"); - styles [ - "pill", - ] - } - } - } - - Box { - halign:center; - spacing:18; - - Box{ - spacing: 18; - Label { - label: _("orientation"); - } - - Box { - margin-start: 6; - homogeneous: true; - halign: center; - styles ["linked"] - - ToggleButton toggle_orientation_horizontal { - label: _("horizontal"); - active: true; - } - ToggleButton toggle_orientation_vertical { - label: _("vertical"); - group: toggle_orientation_horizontal; - } - } - } - - CheckButton highlight{ - label: _("Highlight Box"); - } - } - - Grid { - margin-top:12; - margin-bottom:12; - margin-start:12; - row-spacing:18; - margin-end: 114; - - Box { - tooltip-text: _("Horizontal Alignment"); - orientation: vertical; - layout { - row:0; - column:1; - } - Label { - margin-top:12; - margin-bottom:12; - label: _("halign"); - } - Box { - homogeneous: true; - halign: center; - spacing: 36; - ToggleButton halign_toggle_fill{ - label: _("fill"); - active: true; - } - ToggleButton halign_toggle_start{ - label: _("start"); - group: halign_toggle_fill; - } - ToggleButton halign_toggle_center{ - label: _("center"); - group: halign_toggle_fill; - } - ToggleButton halign_toggle_end{ - label: _("end"); - group: halign_toggle_fill; - } - } - } - - Box { - tooltip-text: _("Vertical Alignment"); - layout { - row:1; - column:0; - } - Label { - label: _("valign"); - styles ["rotate"] - } - Box { - valign:center; - orientation: vertical; - spacing: 60; - - ToggleButton valign_toggle_fill{ - label: _("fill"); - active: true; - styles ["rotate"] - } - ToggleButton valign_toggle_start{ - label: _("start"); - group: valign_toggle_fill; - styles ["rotate"] - } - ToggleButton valign_toggle_center{ - label: _("center"); - group: valign_toggle_fill; - styles ["rotate"] - } - ToggleButton valign_toggle_end{ - label: _("end"); - group: valign_toggle_fill; - styles ["rotate"] - } - } - } - - ScrolledWindow { - hexpand: true; - vexpand: true; - has-frame: true; - - layout { - row:1; - column:1; - } - Box interactive_box{ - } - } - } - } - } -} - diff --git a/src/Library/demos/Box/main.css b/src/Library/demos/Box/main.css deleted file mode 100644 index fee0d55f5..000000000 --- a/src/Library/demos/Box/main.css +++ /dev/null @@ -1,12 +0,0 @@ -.card { - margin: 6px; - padding: 24px; -} - -.border { - border: 3px solid @accent_color; -} - -.rotate { - transform: rotate(-90deg); -} diff --git a/src/Library/demos/Box/main.js b/src/Library/demos/Box/main.js deleted file mode 100644 index 536cb1d91..000000000 --- a/src/Library/demos/Box/main.js +++ /dev/null @@ -1,111 +0,0 @@ -import Gtk from "gi://Gtk"; - -const interactive_box = workbench.builder.get_object("interactive_box"); -const button_append = workbench.builder.get_object("button_append"); -const button_prepend = workbench.builder.get_object("button_prepend"); -const button_remove = workbench.builder.get_object("button_remove"); -let count = 0; - -button_append.connect("clicked", append); -button_prepend.connect("clicked", prepend); -button_remove.connect("clicked", remove); - -const toggle_orientation_horizontal = workbench.builder.get_object( - "toggle_orientation_horizontal", -); -const toggle_orientation_vertical = workbench.builder.get_object( - "toggle_orientation_vertical", -); - -toggle_orientation_horizontal.connect("toggled", () => { - if (toggle_orientation_horizontal.active) - interactive_box.orientation = Gtk.Orientation.HORIZONTAL; -}); - -toggle_orientation_vertical.connect("toggled", () => { - if (toggle_orientation_vertical.active) - interactive_box.orientation = Gtk.Orientation.VERTICAL; -}); - -const highlight = workbench.builder.get_object("highlight"); -highlight.connect("toggled", () => { - highlight.active - ? interactive_box.add_css_class("border") - : interactive_box.remove_css_class("border"); -}); - -const halign_toggle_fill = workbench.builder.get_object("halign_toggle_fill"); -const halign_toggle_start = workbench.builder.get_object("halign_toggle_start"); -const halign_toggle_center = workbench.builder.get_object( - "halign_toggle_center", -); -const halign_toggle_end = workbench.builder.get_object("halign_toggle_end"); - -halign_toggle_fill.connect("toggled", () => { - if (halign_toggle_fill.active) interactive_box.halign = Gtk.Align.FILL; -}); - -halign_toggle_start.connect("toggled", () => { - if (halign_toggle_start.active) interactive_box.halign = Gtk.Align.START; -}); - -halign_toggle_center.connect("toggled", () => { - if (halign_toggle_center.active) interactive_box.halign = Gtk.Align.CENTER; -}); - -halign_toggle_end.connect("toggled", () => { - if (halign_toggle_end.active) interactive_box.halign = Gtk.Align.END; -}); - -const valign_toggle_fill = workbench.builder.get_object("valign_toggle_fill"); -const valign_toggle_start = workbench.builder.get_object("valign_toggle_start"); -const valign_toggle_center = workbench.builder.get_object( - "valign_toggle_center", -); -const valign_toggle_end = workbench.builder.get_object("valign_toggle_end"); - -valign_toggle_fill.connect("toggled", () => { - if (valign_toggle_fill.active) interactive_box.valign = Gtk.Align.FILL; -}); - -valign_toggle_start.connect("toggled", () => { - if (valign_toggle_start.active) interactive_box.valign = Gtk.Align.START; -}); - -valign_toggle_center.connect("toggled", () => { - if (valign_toggle_center.active) interactive_box.valign = Gtk.Align.CENTER; -}); -valign_toggle_end.connect("toggled", () => { - if (valign_toggle_end.active) interactive_box.valign = Gtk.Align.END; -}); - -function append() { - const label = new Gtk.Label({ - name: "card", - label: `Item ${count + 1}`, - css_classes: ["card"], - }); - interactive_box.append(label); - count++; -} - -function prepend() { - const label = new Gtk.Label({ - name: "card", - label: `Item ${count + 1}`, - css_classes: ["card"], - }); - interactive_box.prepend(label); - count++; -} - -function remove() { - if (count) { - interactive_box.remove(interactive_box.get_last_child()); - count--; - } else { - console.log("The box has no child widget to remove"); - } -} - -append(); diff --git a/src/Library/demos/Box/main.json b/src/Library/demos/Box/main.json deleted file mode 100644 index db093f3ca..000000000 --- a/src/Library/demos/Box/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "layout", - "description": "A widget that arranges its child widgets into a single row or column", - "panels": ["preview"], - "autorun": true -} diff --git a/src/Library/demos/Boxed Lists/main.blp b/src/Library/demos/Boxed Lists/main.blp deleted file mode 100644 index 474bb44e7..000000000 --- a/src/Library/demos/Boxed Lists/main.blp +++ /dev/null @@ -1,74 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: _("Boxed Lists"); - description: _("List to present both controls and information"); - - Adw.Clamp { - maximum-size: 500; - - Box { - orientation: vertical; - - ListBox { - selection-mode: none; - styles ["boxed-list"] - - Adw.ActionRow { - title: _("ActionRow can have a prefix child"); - - [prefix] - CheckButton checkbox { - active: true; - } - } - - Adw.ActionRow { - title: _("ActionRow can have a suffix child"); - subtitle: _("The checkbox above controls the spinner"); - - [suffix] - Spinner { - spinning: bind checkbox.active; - } - } - - Adw.EntryRow { - title: _("A row can be an entry"); - } - - Adw.ComboRow { - title: _("Choose an item"); - subtitle: _("ComboRow can have a drop down list"); - model: StringList list { - strings ["this", "is", "a", "string", "list"] - }; - } - - Adw.ExpanderRow { - title: _("Rows can be expandable"); - show-enable-switch: true; - - Adw.ActionRow { - title: _("First row"); - } - Adw.ActionRow { - title: _("Second row"); - } - } - } - - LinkButton { - margin-top: 24; - label: "API Reference"; - uri: "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1-latest/boxed-lists.html"; - } - - LinkButton { - label: "Human Interface Guidelines"; - uri: "https://developer.gnome.org/hig/patterns/containers/boxed-lists.html"; - } - } - } -} diff --git a/src/Library/demos/Boxed Lists/main.json b/src/Library/demos/Boxed Lists/main.json deleted file mode 100644 index 494bf7181..000000000 --- a/src/Library/demos/Boxed Lists/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "user_interface", - "description": "List to present both controls and information", - "panels": ["preview", "ui"], - "autorun": true -} diff --git a/src/Library/demos/Button/main.blp b/src/Library/demos/Button/main.blp deleted file mode 100644 index c607a63a1..000000000 --- a/src/Library/demos/Button/main.blp +++ /dev/null @@ -1,145 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: "Button"; - description: _("Allow people to perform actions by clicking"); - - Box { - orientation: vertical; - halign: center; - - Box { - margin-bottom: 24; - - Button regular { - name: "regular"; - label: "Regular"; - margin-end: 40; - } - - Button flat { - name: "flat"; - label: "Flat"; - margin-end: 40; - - styles [ - "flat", - ] - } - - Button suggested { - name: "suggested"; - label: "Suggested"; - - styles [ - "suggested-action", - ] - } - } - - Box { - margin-bottom: 24; - - Button destructive { - name: "destructive"; - label: "Destructive"; - margin-end: 40; - - styles [ - "destructive-action", - ] - } - - Button custom { - name: "custom"; - label: "Custom"; - margin-end: 40; - } - - Button disabled { - name: "disabled"; - label: "Disabled"; - sensitive: false; - } - } - - Box { - orientation: horizontal; - margin-bottom: 30; - - Button circular-plus { - name: "circular-plus"; - icon-name: "plus"; - margin-start: 13; - margin-end: 20; - valign: center; - - styles [ - "circular", - "opaque", - ] - } - - Button circular-minus { - name: "circular-minus"; - icon-name: "minus"; - margin-end: 70; - valign: center; - - styles [ - "circular", - "opaque", - ] - } - - Button pill { - name: "pill"; - label: "Pill"; - margin-end: 60; - - styles [ - "pill", - ] - } - - Button osd-left { - name: "osd-left"; - icon-name: "go-previous"; - margin-end: 20; - valign: center; - - styles [ - "osd", - ] - } - - Button osd-right { - name: "osd-right"; - icon-name: "go-next"; - valign: center; - halign: center; - - styles [ - "osd", - ] - } - } - - LinkButton { - label: "Tutorial"; - uri: "https://developer.gnome.org/documentation/tutorials/beginners/components/button.html"; - } - - LinkButton { - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.Button.html"; - } - - LinkButton { - label: "Human Interface Guidelines"; - uri: "https://developer.gnome.org/hig/patterns/controls/buttons.html"; - } - } -} - diff --git a/src/Library/demos/Button/main.css b/src/Library/demos/Button/main.css deleted file mode 100644 index 285dcfb53..000000000 --- a/src/Library/demos/Button/main.css +++ /dev/null @@ -1,14 +0,0 @@ -#custom { - color: #000000; - background-color: #ffa500; -} - -#regular, -#flat, -#suggested, -#destructive, -#custom, -#disabled { - min-width: 80px; -} - diff --git a/src/Library/demos/Button/main.js b/src/Library/demos/Button/main.js deleted file mode 100644 index 5909b4404..000000000 --- a/src/Library/demos/Button/main.js +++ /dev/null @@ -1,22 +0,0 @@ -const button_ids = [ - "regular", - "flat", - "suggested", - "destructive", - "custom", - "disabled", - "circular-plus", - "circular-minus", - "pill", - "osd-left", - "osd-right", -]; - -for (const id of button_ids) { - const button = workbench.builder.get_object(id); - button.connect("clicked", onClicked); -} - -function onClicked(button) { - console.log(`${button.name} clicked`); -} diff --git a/src/Library/demos/Button/main.json b/src/Library/demos/Button/main.json deleted file mode 100644 index 4023bdbfa..000000000 --- a/src/Library/demos/Button/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "controls", - "description": "Allow people to perform actions by clicking", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Button/main.vala b/src/Library/demos/Button/main.vala deleted file mode 100644 index 844a42929..000000000 --- a/src/Library/demos/Button/main.vala +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env -S vala workbench.vala --pkg gtk4 --pkg libadwaita-1 - -public void main () { - string[] button_ids = { - "regular", - "flat", - "suggested", - "destructive", - "custom", - "disabled", - "circular-plus", - "circular-minus", - "pill", - "osd-left", - "osd-right", - }; - - foreach (string id in button_ids) { - var button = (Gtk.Button) workbench.builder.get_object(id); - button.clicked.connect(() => message(@"$(button.name) clicked")); - } -} diff --git a/src/Library/demos/COPYING b/src/Library/demos/COPYING deleted file mode 100644 index ed39f5a27..000000000 --- a/src/Library/demos/COPYING +++ /dev/null @@ -1,29 +0,0 @@ -Creative Commons Legal Code - -CC0 1.0 Universal - -CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER. - -Statement of Purpose - -The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work"). - -Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others. - -For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights. - - 1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following: - i. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work; - ii. moral rights retained by the original author(s) and/or performer(s); - iii. publicity and privacy rights pertaining to a person's image or likeness depicted in a Work; - iv. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below; - v. rights protecting the extraction, dissemination, use and reuse of data in a Work; - vi. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and - vii. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof. - 2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose. - 3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose. - 4. Limitations and Disclaimers. - a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document. - b. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law. - c. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work. - d. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work. diff --git a/src/Library/demos/Calendar/main.blp b/src/Library/demos/Calendar/main.blp deleted file mode 100644 index c6c0c9fb1..000000000 --- a/src/Library/demos/Calendar/main.blp +++ /dev/null @@ -1,25 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: "Calendar"; - description: "Display a Gregorian calendar, one month at a time"; - - Box { - orientation: vertical; - halign: center; - - Calendar calendar { - show-day-names: true; - show-week-numbers: false; - show-heading: true; - margin-bottom: 18; - day: 1; - } - - LinkButton { - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.Calendar.html"; - } - } -} diff --git a/src/Library/demos/Calendar/main.js b/src/Library/demos/Calendar/main.js deleted file mode 100644 index e2cf20e33..000000000 --- a/src/Library/demos/Calendar/main.js +++ /dev/null @@ -1,22 +0,0 @@ -const calendar = workbench.builder.get_object("calendar"); - -// calendar.get_date() returns a GLib.DateTime object -// https://docs.gtk.org/glib/struct.DateTime.html - -calendar.connect("notify::day", () => { - console.log(calendar.get_date().format("%e")); -}); - -calendar.connect("notify::month", () => { - console.log(calendar.get_date().format("%B")); -}); - -calendar.connect("notify::year", () => { - console.log(calendar.get_date().format("%Y")); -}); - -calendar.connect("day-selected", () => { - console.log(calendar.get_date().format_iso8601()); -}); - -calendar.mark_day(15); diff --git a/src/Library/demos/Calendar/main.json b/src/Library/demos/Calendar/main.json deleted file mode 100644 index f20e4b825..000000000 --- a/src/Library/demos/Calendar/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "user_interface", - "description": "Display a Gregorian calendar, one month at a time", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Carousel/main.blp b/src/Library/demos/Carousel/main.blp deleted file mode 100644 index 74fd3d69f..000000000 --- a/src/Library/demos/Carousel/main.blp +++ /dev/null @@ -1,77 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Box root_box { - orientation: vertical; - valign: center; - halign: center; - spacing: 12; - - Adw.Carousel carousel { - halign: center; - valign: center; - allow-long-swipes: true; - allow-scroll-wheel: true; - spacing: 12; - - Adw.StatusPage { - title: _("Carousel"); - description: _("Swipe or Scroll to Navigate"); - icon-name: "carousel-symbolic"; - - LinkButton { - label: "API Reference"; - uri: "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.3/class.Carousel.html"; - margin-top: 12; - } - - } - - Adw.Clamp { - maximum-size: 700; - halign: center; - valign: center; - - Adw.PreferencesGroup { - styles ["boxed-list"] - - Adw.ComboRow orientation_row { - title: _("Carousel Orientation"); - model: StringList { - strings [_("Horizontal"), _("Vertical")] - }; - } - - Adw.ComboRow indicator_row { - title: _("Page Indicators"); - model: StringList { - strings [_("Dots"), _("Lines")] - }; - } - - Adw.ActionRow { - title: _("Scroll Wheel"); - activatable-widget: sw_switch; - - Gtk.Switch sw_switch { - valign: center; - } - } - - Adw.ActionRow { - title: _("Long Swipes"); - activatable-widget: ls_switch; - - Gtk.Switch ls_switch { - valign: center; - } - } - } - } - - Adw.StatusPage { - title: _("Last Page"); - description: _("You've reached the end of the carousel."); - } - } -} diff --git a/src/Library/demos/Carousel/main.js b/src/Library/demos/Carousel/main.js deleted file mode 100644 index 40c10d250..000000000 --- a/src/Library/demos/Carousel/main.js +++ /dev/null @@ -1,62 +0,0 @@ -import Gtk from "gi://Gtk"; -import Adw from "gi://Adw"; - -const root_box = workbench.builder.get_object("root_box"); -const carousel = workbench.builder.get_object("carousel"); -const ls_switch = workbench.builder.get_object("ls_switch"); -const sw_switch = workbench.builder.get_object("sw_switch"); -const indicator_row = workbench.builder.get_object("indicator_row"); -const orientation_row = workbench.builder.get_object("orientation_row"); -let indicators; - -carousel.connect("page-changed", () => { - console.log("Page Changed"); -}); - -// Scroll Wheel Switch -sw_switch.active = carousel.allow_scroll_wheel; - -sw_switch.connect("notify::active", () => { - carousel.allow_scroll_wheel = sw_switch.active; -}); - -// Long Swipe Switch -ls_switch.active = carousel.allow_long_swipes; - -ls_switch.connect("notify::active", () => { - carousel.allow_long_swipes = ls_switch.active; -}); - -if (indicator_row.get_selected() === 0) { - indicators = new Adw.CarouselIndicatorDots({ carousel: carousel }); -} else { - indicators = new Adw.CarouselIndicatorLines({ carousel: carousel }); -} - -indicators.orientation = carousel.orientation; -root_box.append(indicators); - -indicator_row.connect("notify::selected-item", () => { - root_box.remove(indicators); - - if (indicator_row.get_selected() === 0) { - indicators = new Adw.CarouselIndicatorDots({ carousel: carousel }); - } else { - indicators = new Adw.CarouselIndicatorLines({ carousel: carousel }); - } - - indicators.orientation = carousel.orientation; - root_box.append(indicators); -}); - -orientation_row.connect("notify::selected-item", () => { - if (orientation_row.get_selected() === 0) { - root_box.orientation = Gtk.Orientation.VERTICAL; - carousel.orientation = Gtk.Orientation.HORIZONTAL; - indicators.orientation = Gtk.Orientation.HORIZONTAL; - } else { - root_box.orientation = Gtk.Orientation.HORIZONTAL; - carousel.orientation = Gtk.Orientation.VERTICAL; - indicators.orientation = Gtk.Orientation.VERTICAL; - } -}); diff --git a/src/Library/demos/Carousel/main.json b/src/Library/demos/Carousel/main.json deleted file mode 100644 index f8bae15d9..000000000 --- a/src/Library/demos/Carousel/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "user_interface", - "description": "A paginated scrolling widget", - "panels": ["code", "ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Carousel/main.vala b/src/Library/demos/Carousel/main.vala deleted file mode 100644 index 569039fc3..000000000 --- a/src/Library/demos/Carousel/main.vala +++ /dev/null @@ -1,68 +0,0 @@ -#! /usr/bin/env -S vala workbench.vala --pkg gtk4 --pkg libadwaita-1 - -public void main() { - var root_box = workbench.builder.get_object("root_box") as Gtk.Box; - var carousel = workbench.builder.get_object("carousel") as Adw.Carousel; - var ls_switch = workbench.builder.get_object("ls_switch") as Gtk.Switch; - var sw_switch = workbench.builder.get_object("sw_switch") as Gtk.Switch; - var indicator_row = workbench.builder.get_object("indicator_row") as Adw.ComboRow; - var orientation_row = workbench.builder.get_object("orientation_row") as Adw.ComboRow; - Adw.CarouselIndicatorDots? dots = null; - Adw.CarouselIndicatorLines? lines = null; - - carousel.page_changed.connect(() => { - debug("Page Changed"); - }); - - // Scroll Wheel Switch - sw_switch.active = carousel.allow_scroll_wheel; - sw_switch.notify["active"].connect(() => { - carousel.allow_scroll_wheel = sw_switch.active; - }); - - // Long Swipe Switch - ls_switch.active = carousel.allow_long_swipes; - ls_switch.notify["active"].connect(() => { - carousel.allow_long_swipes = ls_switch.active; - }); - - if (indicator_row.get_selected() == 0) { - dots = new Adw.CarouselIndicatorDots() { carousel = carousel }; - dots.orientation = carousel.orientation; - root_box.append(dots); - } else { - lines = new Adw.CarouselIndicatorLines() { carousel = carousel }; - lines.orientation = carousel.orientation; - root_box.append(lines); - } - - indicator_row.notify["selected-item"].connect(() => { - if (indicator_row.get_selected() == 0) { - root_box.remove(lines); - dots = new Adw.CarouselIndicatorDots() { carousel = carousel }; - dots.orientation = carousel.orientation; - root_box.append(dots); - } else { - root_box.remove(dots); - lines = new Adw.CarouselIndicatorLines() { carousel = carousel }; - lines.orientation = carousel.orientation; - root_box.append(lines); - } - }); - - orientation_row.notify["selected-item"].connect(() => { - if (orientation_row.get_selected() == 0) { - root_box.orientation = Gtk.Orientation.VERTICAL; - carousel.orientation = Gtk.Orientation.HORIZONTAL; - dots.orientation = Gtk.Orientation.HORIZONTAL; - lines.orientation = Gtk.Orientation.HORIZONTAL; - } else { - root_box.orientation = Gtk.Orientation.HORIZONTAL; - carousel.orientation = Gtk.Orientation.VERTICAL; - dots.orientation = Gtk.Orientation.VERTICAL; - lines.orientation = Gtk.Orientation.VERTICAL; - } - }); -} - - diff --git a/src/Library/demos/Checkboxes/main.blp b/src/Library/demos/Checkboxes/main.blp deleted file mode 100644 index fe18387f3..000000000 --- a/src/Library/demos/Checkboxes/main.blp +++ /dev/null @@ -1,49 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: _("Checkboxes"); - description: _("Allow users to control binary options or properties."); - - Box { - orientation: vertical; - - Box { - orientation: vertical; - halign: center; - spacing: 12; - - CheckButton checkbox_1 { - active: true; - label: _("Enable Notifications"); - } - - CheckButton checkbox_2 { - label: _("Auto-save changes"); - } - - CheckButton checkbox_3 { - label: _("Mixed State"); - inconsistent: true; - } - - CheckButton checkbox_4 { - label: _("Disabled"); - sensitive: false; - } - } - - Box { - orientation: vertical; - margin-top: 48; - LinkButton { - label: "Human Interface Guidelines"; - uri: "https://developer.gnome.org/hig/patterns/controls/checkboxes.html"; - } - LinkButton { - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.CheckButton.html"; - } - } - } -} diff --git a/src/Library/demos/Checkboxes/main.js b/src/Library/demos/Checkboxes/main.js deleted file mode 100644 index c61d8224c..000000000 --- a/src/Library/demos/Checkboxes/main.js +++ /dev/null @@ -1,12 +0,0 @@ -const checkbox_1 = workbench.builder.get_object("checkbox_1"); -const checkbox_2 = workbench.builder.get_object("checkbox_2"); - -checkbox_1.connect("toggled", () => { - if (checkbox_1.active) console.log("Notifications Enabled"); - else console.log("Notifications Disabled"); -}); - -checkbox_2.connect("toggled", () => { - if (checkbox_2.active) console.log("Changes will be auto-saved"); - else console.log("Changes will not be auto-saved"); -}); diff --git a/src/Library/demos/Checkboxes/main.json b/src/Library/demos/Checkboxes/main.json deleted file mode 100644 index 0b2091378..000000000 --- a/src/Library/demos/Checkboxes/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "controls", - "description": "Allow users to control binary options or properties.", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Color Dialog/main.blp b/src/Library/demos/Color Dialog/main.blp deleted file mode 100644 index 76257e109..000000000 --- a/src/Library/demos/Color Dialog/main.blp +++ /dev/null @@ -1,58 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: "Color Dialog"; - description: _("Show a dialog to select a color"); - - Box { - orientation: vertical; - halign: center; - spacing:42; - - Box{ - orientation:vertical; - - Label { - label: _("Dialog Button"); - margin-bottom:12; - styles ["title-4"] - } - - ColorDialogButton color_dialog_button { - halign: center; - margin-bottom:12; - } - - - LinkButton { - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.ColorDialogButton.html"; - } - } - - Box{ - orientation: vertical; - - Label { - label: _("Dialog with Custom Button"); - margin-bottom:12; - styles ["title-4"] - } - - Button custom_button { - label: _("Select Color…"); - margin-start:42; - margin-end:42; - margin-bottom:12; - styles ["pill"] - } - - LinkButton { - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.ColorDialog.html"; - } - } - } -} - diff --git a/src/Library/demos/Color Dialog/main.js b/src/Library/demos/Color Dialog/main.js deleted file mode 100644 index 44a9f4e46..000000000 --- a/src/Library/demos/Color Dialog/main.js +++ /dev/null @@ -1,41 +0,0 @@ -import Gtk from "gi://Gtk"; -import Gdk from "gi://Gdk"; -import Gio from "gi://Gio"; - -Gio._promisify(Gtk.ColorDialog.prototype, "choose_rgba", "choose_rgba_finish"); - -const color_dialog_button = workbench.builder.get_object("color_dialog_button"); -const custom_button = workbench.builder.get_object("custom_button"); - -const color = new Gdk.RGBA(); -color.parse("red"); - -const dialog_standard = new Gtk.ColorDialog({ - title: "Select a color", - modal: true, - with_alpha: true, -}); - -color_dialog_button.dialog = dialog_standard; -color_dialog_button.rgba = color; - -color_dialog_button.connect("notify::rgba", () => { - console.log( - `Color Dialog Button: The color selected is ${color_dialog_button.rgba.to_string()}`, - ); -}); - -const dialog_custom = new Gtk.ColorDialog({ - title: "Select a color", - modal: true, - with_alpha: false, -}); - -custom_button.connect("clicked", () => { - onClicked().catch(logError); -}); - -async function onClicked() { - const color = await dialog_custom.choose_rgba(workbench.window, null, null); - console.log(`Custom Button: The color selected is ${color.to_string()}`); -} diff --git a/src/Library/demos/Color Dialog/main.json b/src/Library/demos/Color Dialog/main.json deleted file mode 100644 index bec3e2b36..000000000 --- a/src/Library/demos/Color Dialog/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "controls", - "description": "Show a dialog to select color", - "panels": ["code", "ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Color Dialog/main.vala b/src/Library/demos/Color Dialog/main.vala deleted file mode 100644 index 33f2915eb..000000000 --- a/src/Library/demos/Color Dialog/main.vala +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env -S vala workbench.vala --pkg libadwaita-1 - -private Gtk.ColorDialogButton color_dialog_button; -private Gtk.Button custom_button; -private Gtk.ColorDialog dialog_custom; - -public void main () { - color_dialog_button = (Gtk.ColorDialogButton) workbench.builder.get_object ("color_dialog_button"); - custom_button = (Gtk.Button) workbench.builder.get_object ("custom_button"); - - var color = Gdk.RGBA (); - color.parse ("red"); - - var color_dialog = new Gtk.ColorDialog () { - title = "Select a Color", - modal = true, - with_alpha = true - }; - - color_dialog_button.dialog = color_dialog; - color_dialog_button.rgba = color; - - color_dialog_button.notify["rgba"].connect (() => { - Gdk.RGBA chosen_color = color_dialog_button.get_rgba (); - message (@"Color Dialog Button: The color selected is $chosen_color"); - }); - - dialog_custom = new Gtk.ColorDialog () { - title = "Select a Color", - modal = true, - with_alpha = true - }; - - custom_button.clicked.connect (on_button_clicked); -} - -private async void on_button_clicked () { - try { - Gdk.RGBA color = yield dialog_custom.choose_rgba (workbench.window, null, null); - message (@"Custom Button: The color selected is $color"); - } catch (Error e) { - critical (e.message); - } -} diff --git a/src/Library/demos/Color Picker/main.blp b/src/Library/demos/Color Picker/main.blp deleted file mode 100644 index 635413c98..000000000 --- a/src/Library/demos/Color Picker/main.blp +++ /dev/null @@ -1,25 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: _("Color Picker"); - description: _("Pick color from anywhere on-screen"); - margin-top: 48; - - Box { - orientation: vertical; - halign: center; - - Button button { - label: _("Select Color"); - margin-bottom: 42; - halign: center; - styles ["suggested-action", "pill"] - } - - LinkButton { - label: "API Reference"; - uri: "https://libportal.org/method.Portal.pick_color.html"; - } - } -} diff --git a/src/Library/demos/Color Picker/main.js b/src/Library/demos/Color Picker/main.js deleted file mode 100644 index a9b5a4b8a..000000000 --- a/src/Library/demos/Color Picker/main.js +++ /dev/null @@ -1,23 +0,0 @@ -import Gdk from "gi://Gdk"; -import Gio from "gi://Gio"; -import Xdp from "gi://Xdp"; -import XdpGtk from "gi://XdpGtk4"; - -Gio._promisify(Xdp.Portal.prototype, "pick_color", "pick_color_finish"); - -const portal = new Xdp.Portal(); -const parent = XdpGtk.parent_new_gtk(workbench.window); -const button = workbench.builder.get_object("button"); - -async function onClicked() { - // result is a GVariant of the form (ddd), containing red, green and blue components in the range [0,1] - const result = await portal.pick_color(parent, null); - const [r, g, b] = result.deepUnpack(); - - const color = new Gdk.RGBA({ red: r, green: g, blue: b, alpha: 1.0 }); - console.log(`Selected color is: ${color.to_string()}`); -} - -button.connect("clicked", () => { - onClicked().catch(logError); -}); diff --git a/src/Library/demos/Color Picker/main.json b/src/Library/demos/Color Picker/main.json deleted file mode 100644 index 0d5535427..000000000 --- a/src/Library/demos/Color Picker/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "platform", - "description": "Pick color from anywhere on-screen", - "panels": ["code", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Custom Widget/main.blp b/src/Library/demos/Custom Widget/main.blp deleted file mode 100644 index 4dddb8803..000000000 --- a/src/Library/demos/Custom Widget/main.blp +++ /dev/null @@ -1,9 +0,0 @@ -using Gtk 4.0; - -template $AwesomeButton : Button { - clicked => $onclicked(); - Image { - halign: center; - icon-name: "penguin-alt-symbolic"; - } -} diff --git a/src/Library/demos/Custom Widget/main.js b/src/Library/demos/Custom Widget/main.js deleted file mode 100644 index d1462b848..000000000 --- a/src/Library/demos/Custom Widget/main.js +++ /dev/null @@ -1,25 +0,0 @@ -import GObject from "gi://GObject"; -import Gtk from "gi://Gtk"; - -const AwesomeButton = GObject.registerClass( - { - GTypeName: "AwesomeButton", - Template: workbench.template, - }, - class AwesomeButton extends Gtk.Button { - onclicked() { - console.log("Clicked"); - } - }, -); - -const container = new Gtk.FlowBox({ - hexpand: true, -}); - -for (let i = 0; i < 100; i++) { - const widget = new AwesomeButton(); - container.append(widget); -} - -workbench.preview(container); diff --git a/src/Library/demos/Custom Widget/main.json b/src/Library/demos/Custom Widget/main.json deleted file mode 100644 index d2ea49dff..000000000 --- a/src/Library/demos/Custom Widget/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "user_interface", - "description": "A Custom Widget using UI template", - "panels": ["code", "ui", "preview"], - "autorun": false -} diff --git a/src/Library/demos/Dialogs/main.blp b/src/Library/demos/Dialogs/main.blp deleted file mode 100644 index 27d8eaa80..000000000 --- a/src/Library/demos/Dialogs/main.blp +++ /dev/null @@ -1,40 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: "Dialogs"; - description: _("Present options, choices or information to users"); - - Box { - orientation: vertical; - halign: center; - - Button button_confirmation { - label: "Confirmation Dialog"; - margin-bottom: 30; - styles ["pill"] - } - - Button button_error { - label: "Error Dialog"; - margin-bottom: 30; - styles ["pill"] - } - - Button button_advanced { - label: "Advanced Error Dialog"; - margin-bottom: 30; - styles ["pill"] - } - - LinkButton { - label: "API Reference"; - uri: "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.3/class.MessageDialog.html"; - } - - LinkButton { - label: "Human Interface Guidelines"; - uri: "https://developer.gnome.org/hig/patterns/feedback/dialogs.html"; - } - } -} diff --git a/src/Library/demos/Dialogs/main.js b/src/Library/demos/Dialogs/main.js deleted file mode 100644 index c0733afd6..000000000 --- a/src/Library/demos/Dialogs/main.js +++ /dev/null @@ -1,86 +0,0 @@ -import Adw from "gi://Adw"; -import Gtk from "gi://Gtk"; - -const button_confirmation = workbench.builder.get_object("button_confirmation"); -const button_error = workbench.builder.get_object("button_error"); -const button_advanced = workbench.builder.get_object("button_advanced"); -const window = workbench.window; - -function createConfirmationDialog() { - const dialog = new Adw.MessageDialog({ - heading: "Replace File?", - body: "A file named `example.png` already exists. Do you want to replace it?", - close_response: "cancel", - modal: true, - transient_for: window, - }); - - dialog.add_response("cancel", "Cancel"); - dialog.add_response("replace", "Replace"); - - // Use DESTRUCTIVE appearance to draw attention to the potentially damaging consequences of this action - dialog.set_response_appearance("replace", Adw.ResponseAppearance.DESTRUCTIVE); - - dialog.connect("response", (_self, response) => { - console.log(`Selected "${response}" response.`); - }); - - dialog.present(); -} - -function createErrorDialog() { - const dialog = new Adw.MessageDialog({ - heading: "Critical Error", - body: "You did something you should not have", - close_response: "okay", - modal: true, - transient_for: window, - }); - - dialog.add_response("okay", "Okay"); - - dialog.connect("response", (_self, response) => { - console.log(`Selected "${response}" response.`); - }); - - dialog.present(); -} - -//Creates a message dialog with an extra child -function createAdvancedDialog() { - const dialog = new Adw.MessageDialog({ - heading: "Login", - body: "A valid password is needed to continue", - close_response: "cancel", - modal: true, - transient_for: window, - }); - - dialog.add_response("cancel", "Cancel"); - dialog.add_response("login", "Login"); - - // Use SUGGESTED appearance to mark important responses such as the affirmative action - dialog.set_response_appearance("login", Adw.ResponseAppearance.SUGGESTED); - - const entry = new Gtk.PasswordEntry({ - show_peek_icon: true, - }); - - dialog.set_extra_child(entry); - - dialog.connect("response", (dialog, response) => { - if (dialog.get_response_label(response) === "Login") { - console.log( - `Selected "${response}" response with password "${entry.get_text()}"`, - ); - } else { - console.log(`Selected "${response}" response.`); - } - }); - - dialog.present(); -} - -button_confirmation.connect("clicked", createConfirmationDialog); -button_error.connect("clicked", createErrorDialog); -button_advanced.connect("clicked", createAdvancedDialog); diff --git a/src/Library/demos/Dialogs/main.json b/src/Library/demos/Dialogs/main.json deleted file mode 100644 index 23b3be5b6..000000000 --- a/src/Library/demos/Dialogs/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "feedback", - "description": "Present options, choices or information to users", - "panels": ["code", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Dialogs/main.vala b/src/Library/demos/Dialogs/main.vala deleted file mode 100644 index 31e847885..000000000 --- a/src/Library/demos/Dialogs/main.vala +++ /dev/null @@ -1,87 +0,0 @@ -#! /usr/bin/env -S vala workbench.vala --pkg gtk4 --pkg libadwaita-1 - -public void main() { - var button_confirmation = workbench.builder.get_object("button_confirmation") as Gtk.Button; - var button_error = workbench.builder.get_object("button_error") as Gtk.Button; - var button_advanced = workbench.builder.get_object("button_advanced") as Gtk.Button; - - button_confirmation.clicked.connect(_create_confirmation_dialog); - button_error.clicked.connect(_create_error_dialog); - button_advanced.clicked.connect(_create_advanced_dialog); -} - -private void _create_confirmation_dialog (Gtk.Button button) { - // Get the parent window - var window_type = GLib.Type.from_name("GtkWindow"); - Gtk.Window window = workbench.window; - - Adw.MessageDialog dialog = new Adw.MessageDialog - (window, - "Replace File?", - """A file named "example.png" already exists. Do you want to replace it?"""); - - dialog.close_response = "replace"; - - dialog.add_response("cancel", "Cancel"); - dialog.add_response("replace", "Replace"); - - //Use DESTRUCTIVE to draw attention to the potentially damaging consequences of using response. - dialog.set_response_appearance("replace", Adw.ResponseAppearance.DESTRUCTIVE); - - dialog.response.connect((response) => { - message("Selected \"%s\" response.\n", response); - }); - - dialog.present(); -} - -private void _create_error_dialog (Gtk.Button button) { - // Get the parent window - var window_type = GLib.Type.from_name("GtkWindow"); - Gtk.Window window = button.get_ancestor(window_type) as Gtk.Window; - - Adw.MessageDialog dialog = new Adw.MessageDialog - (window, - "Critical Error", - "You did something you should not have"); - - dialog.close_response = "okay"; - - dialog.add_response("okay", "Okay"); - - dialog.response.connect((response) => { - message("Selected \"%s\" response.\n", response); - }); - - dialog.present(); -} - -private void _create_advanced_dialog(Gtk.Button button) { - // Get the parent window - var window_type = GLib.Type.from_name("GtkWindow"); - Gtk.Window window = button.get_ancestor(window_type) as Gtk.Window; - - Adw.MessageDialog dialog = new Adw.MessageDialog ( - window, - "Login", - "A valid password is needed to continue"); - - dialog.close_response = "cancel"; - dialog.add_response("cancel", "Cancel"); - dialog.add_response("login", "Login"); - dialog.set_response_appearance("login", Adw.ResponseAppearance.SUGGESTED); - - var entry = new Gtk.PasswordEntry() {show_peek_icon = true}; - - dialog.set_extra_child(entry); - - dialog.response.connect((response) => { - if (dialog.get_response_label(response) == "Login") { - message("Selected \"%s\" response with password \"%s\".", response, entry.get_text()); - } else { - message("Selected \"%s\" response.", response); - } - }); - - dialog.present(); -} diff --git a/src/Library/demos/Drag and Drop/main.blp b/src/Library/demos/Drag and Drop/main.blp deleted file mode 100644 index 2f2a1dba4..000000000 --- a/src/Library/demos/Drag and Drop/main.blp +++ /dev/null @@ -1,78 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: _("Drag and Drop"); - description: _("A User interaction pattern where users drag a UI element from one place to another"); - - Box { - orientation: vertical; - - Adw.Clamp { - maximum-size: 400; - - ListBox list { - styles ["boxed-list"] - - Adw.ActionRow { - title: _("Row 1"); - - [prefix] - Image { - styles ["dim-label"] - icon-name: "list-drag-handle-symbolic"; - } - } - - Adw.ActionRow { - title: _("Row 2"); - - [prefix] - Image { - styles ["dim-label"] - icon-name: "list-drag-handle-symbolic"; - } - } - - Adw.ActionRow { - title: _("Row 3"); - - [prefix] - Image { - styles ["dim-label"] - icon-name: "list-drag-handle-symbolic"; - } - } - - Adw.ActionRow { - title: _("Row 4"); - - [prefix] - Image { - styles ["dim-label"] - icon-name: "list-drag-handle-symbolic"; - } - } - - Adw.ActionRow { - title: _("Row 5"); - - [prefix] - Image { - styles ["dim-label"] - icon-name: "list-drag-handle-symbolic"; - } - } - } - } - - LinkButton { - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/drag-and-drop.html"; - margin-top: 24; - } - } -} - - - diff --git a/src/Library/demos/Drag and Drop/main.js b/src/Library/demos/Drag and Drop/main.js deleted file mode 100644 index ce96fe0a6..000000000 --- a/src/Library/demos/Drag and Drop/main.js +++ /dev/null @@ -1,87 +0,0 @@ -import Gtk from "gi://Gtk"; -import Adw from "gi://Adw"; -import Gdk from "gi://Gdk"; -import GObject from "gi://GObject"; - -const list = workbench.builder.get_object("list"); -const drop_target = Gtk.DropTarget.new(Gtk.ListBoxRow, Gdk.DragAction.MOVE); - -list.add_controller(drop_target); - -// Iterate over ListBox children -for (const row of list) { - let drag_x; - let drag_y; - - const drop_controller = new Gtk.DropControllerMotion(); - - const drag_source = new Gtk.DragSource({ - actions: Gdk.DragAction.MOVE, - }); - - row.add_controller(drag_source); - row.add_controller(drop_controller); - - // Drag handling - drag_source.connect("prepare", (_source, x, y) => { - drag_x = x; - drag_y = y; - - const value = new GObject.Value(); - value.init(Gtk.ListBoxRow); - value.set_object(row); - - return Gdk.ContentProvider.new_for_value(value); - }); - - drag_source.connect("drag-begin", (_source, drag) => { - const allocation = row.get_allocation(); - const drag_widget = new Gtk.ListBox(); - - drag_widget.set_size_request(allocation.width, allocation.height); - drag_widget.add_css_class("boxed-list"); - - const drag_row = new Adw.ActionRow({ title: row.title }); - drag_row.add_prefix( - new Gtk.Image({ - icon_name: "list-drag-handle-symbolic", - css_classes: ["dim-label"], - }), - ); - - drag_widget.append(drag_row); - drag_widget.drag_highlight_row(drag_row); - - const icon = Gtk.DragIcon.get_for_drag(drag); - icon.child = drag_widget; - - drag.set_hotspot(drag_x, drag_y); - }); - - // Update row visuals during DnD operation - drop_controller.connect("enter", () => { - list.drag_highlight_row(row); - }); - - drop_controller.connect("leave", () => { - list.drag_unhighlight_row(); - }); -} - -// Drop Handling -drop_target.connect("drop", (_drop, value, _x, y) => { - const target_row = list.get_row_at_y(y); - const target_index = target_row.get_index(); - - // If value or the target row is null, do not accept the drop - if (!value || !target_row) { - return false; - } - - list.remove(value); - list.insert(value, target_index); - target_row.set_state_flags(Gtk.StateFlags.NORMAL, true); - - // If everything is successful, return true to accept the drop - return true; -}); diff --git a/src/Library/demos/Drag and Drop/main.json b/src/Library/demos/Drag and Drop/main.json deleted file mode 100644 index 528b6bf7f..000000000 --- a/src/Library/demos/Drag and Drop/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "user_interface", - "description": "A User interaction pattern where users drag a UI element from one place to another", - "panels": ["code", "ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Drag and Drop/main.vala b/src/Library/demos/Drag and Drop/main.vala deleted file mode 100644 index 3427a0a62..000000000 --- a/src/Library/demos/Drag and Drop/main.vala +++ /dev/null @@ -1,77 +0,0 @@ -#! /usr/bin/env -S vala workbench.vala --pkg gtk4 --pkg libadwaita-1 - -public void main() { - var list = workbench.builder.get_object("list") as Gtk.ListBox; - var drop_target = new Gtk.DropTarget(typeof(Adw.ActionRow), Gdk.DragAction.MOVE); - - list.add_controller(drop_target); - - for (int i = 0; list.get_row_at_index(i) != null; i++) { - var row = list.get_row_at_index(i) as Adw.ActionRow; - - double drag_x = 0.0; - double drag_y = 0.0; - - var drop_controller = new Gtk.DropControllerMotion(); - var drag_source = new Gtk.DragSource() { actions = Gdk.DragAction.MOVE }; - - row.add_controller(drag_source); - row.add_controller(drop_controller); - - // Drag handling - drag_source.prepare.connect((x, y) => { - drag_x = x; - drag_y = y; - - Value value = Value(typeof(Adw.ActionRow)); - value.set_object(row); - - return new Gdk.ContentProvider.for_value(value); - }); - - drag_source.drag_begin.connect((drag) => { - Gtk.Allocation allocation; - row.get_allocation(out allocation); - var drag_widget = new Gtk.ListBox(); - - drag_widget.set_size_request(allocation.width, allocation.height); - drag_widget.add_css_class("boxed-list"); - - var drag_row = new Adw.ActionRow() {title = row.get_title()}; - - drag_row.add_prefix ( - new Gtk.Image.from_icon_name("list-drag-handle-symbolic") {css_classes = {"dim-label"}} - ); - - drag_widget.append(drag_row); - drag_widget.drag_highlight_row(drag_row); - - var icon = Gtk.DragIcon.get_for_drag(drag) as Gtk.DragIcon; - icon.child = drag_widget; - - drag.set_hotspot((int)drag_x, (int)drag_y); - }); - - // Update row visuals during DnD operation - drop_controller.enter.connect(() => list.drag_highlight_row(row)); - drop_controller.leave.connect(() => list.drag_unhighlight_row()); - } - - // Drop Handling - drop_target.drop.connect((drop, value, x, y) => { - var value_row = value.get_object() as Adw.ActionRow?; - Gtk.ListBoxRow? target_row = list.get_row_at_y((int)y); - // If value or the target row is null, do not accept the drop - if (value_row == null || target_row == null) { - return false; - } - - int target_index = target_row.get_index(); - - list.remove(value_row); - list.insert(value_row, target_index); - target_row.set_state_flags(Gtk.StateFlags.NORMAL, true); - - return true; - }); -} diff --git a/src/Library/demos/Drawing Area/main.blp b/src/Library/demos/Drawing Area/main.blp deleted file mode 100644 index a9c105d46..000000000 --- a/src/Library/demos/Drawing Area/main.blp +++ /dev/null @@ -1,33 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: "Drawing Area"; - description: _("Programmatically draw onto a surface."); - - Box { - halign: center; - orientation: vertical; - - DrawingArea drawing_area { - content-width: 300; - content-height: 300; - } - - Scale scale { - orientation: horizontal; - draw-value: true; - adjustment: Gtk.Adjustment { - lower: -25; - upper: 25; - value: 0; - }; - } - - LinkButton { - margin-top: 48; - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.DrawingArea.html"; - } - } -} diff --git a/src/Library/demos/Drawing Area/main.js b/src/Library/demos/Drawing Area/main.js deleted file mode 100644 index c22efb677..000000000 --- a/src/Library/demos/Drawing Area/main.js +++ /dev/null @@ -1,83 +0,0 @@ -import Cairo from "cairo"; - -const drawingArea = workbench.builder.get_object("drawing_area"); -const scaleRotate = workbench.builder.get_object("scale"); - -let triangle = [3]; -triangle[0] = [2]; -triangle[0][0] = 100; -triangle[0][1] = 100; -triangle[1] = [2]; -triangle[1][0] = 0; -triangle[1][1] = -100; -triangle[2] = [2]; -triangle[2][0] = -100; -triangle[2][1] = 100; -let triangle_original = [3]; -for (let i = 0; i < 3; i++) { - let temp = [2]; - temp[0] = triangle[i][0]; - temp[1] = triangle[i][1]; - triangle_original[i] = temp; -} - -drawingArea.set_draw_func((area, cr, width, height) => { - // Draw triangle in context - cr.moveTo(150 + triangle[0][0], 150 + triangle[0][1]); - cr.lineTo(150 + triangle[1][0], 150 + triangle[1][1]); - cr.lineTo(150 + triangle[2][0], 150 + triangle[2][1]); - cr.lineTo(150 + triangle[0][0], 150 + triangle[0][1]); - - cr.setSourceRGBA(1, 0, 1, 1); - cr.stroke(); - // Freeing the context before returning from the callback - cr.$dispose(); -}); - -scaleRotate.connect("value-changed", () => { - // Recalculate value of points of triangle - for (let i = 0; i < 3; i++) { - // Calculate original angle - let x = triangle_original[i][0]; - let y = triangle_original[i][1]; - let angle = Math.atan(Math.abs(y) / Math.abs(x)); - if (x > 0 && y > 0) { - angle = angle; - } - if (x < 0 && y > 0) { - angle = Math.PI - angle; - } - if (x < 0 && y < 0) { - angle = Math.PI + angle; - } - if (x > 0 && y < 0) { - angle = Math.PI * 2 - angle; - } - if (x === 0) { - if (y > 0) { - angle = angle; - } - if (y < 0) { - angle = -1 * angle; - } - } - if (y === 0) { - if (x > 0) { - angle = angle; - } - if (x < 0) { - angle = M_PI; - } - } - // Add to original angle scale value - angle += (scaleRotate.get_value() * Math.PI) / 180; - // Set new value to triangle - let radius = Math.sqrt(x * x + y * y); - - triangle[i][0] = radius * Math.cos(angle); - triangle[i][1] = radius * Math.sin(angle); - } - // Redraw drawing_area - drawingArea.queue_draw(); -}); -//https://www.cairographics.org/tutorial/ diff --git a/src/Library/demos/Drawing Area/main.json b/src/Library/demos/Drawing Area/main.json deleted file mode 100644 index 7bb3b2b36..000000000 --- a/src/Library/demos/Drawing Area/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "user_interface", - "description": "Programmatically draw onto a surface.", - "panels": ["ui", "code", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Drop Down/main.blp b/src/Library/demos/Drop Down/main.blp deleted file mode 100644 index b19100ae0..000000000 --- a/src/Library/demos/Drop Down/main.blp +++ /dev/null @@ -1,50 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: _("Drop Down"); - description: _("A widget to choose an item from a list of options"); - - Box { - orientation: vertical; - halign: center; - valign: center; - - Label { - label: _("From a StringList model"); - margin-top: 24; - margin-bottom: 24; - styles["heading"] - } - - DropDown drop_down { - enable-search: true; - model: StringList { - strings ["Grapes", "Apples", "Bananas", "Tomatoes"] - }; - } - - Label { - label: _("From a ListStore model"); - margin-top: 24; - margin-bottom: 24; - styles["heading"] - } - - DropDown advanced_drop_down { - enable-search: true; - } - - LinkButton { - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.DropDown.html"; - margin-top: 12; - } - - LinkButton { - label: "Human Interface Guidelines"; - uri: "https://developer.gnome.org/hig/patterns/controls/drop-downs.html"; - margin-top: 12; - } - } -} diff --git a/src/Library/demos/Drop Down/main.js b/src/Library/demos/Drop Down/main.js deleted file mode 100644 index 73e30b324..000000000 --- a/src/Library/demos/Drop Down/main.js +++ /dev/null @@ -1,77 +0,0 @@ -import Gtk from "gi://Gtk"; -import GObject from "gi://GObject"; -import Gio from "gi://Gio"; - -const drop_down = workbench.builder.get_object("drop_down"); -const advanced_drop_down = workbench.builder.get_object("advanced_drop_down"); - -drop_down.connect("notify::selected-item", () => { - const selected_item = drop_down.selected_item.get_string(); - console.log(selected_item); -}); - -const expression = new Gtk.ClosureExpression( - GObject.TYPE_STRING, - (obj) => obj.string, - null, -); - -drop_down.expression = expression; - -const KeyValuePair = GObject.registerClass( - { - Properties: { - key: GObject.ParamSpec.string( - "key", - null, - null, - GObject.ParamFlags.READWRITE, - "", - ), - value: GObject.ParamSpec.string( - "value", - "Value", - "Value", - GObject.ParamFlags.READWRITE, - "", - ), - }, - }, - class KeyValuePair extends GObject.Object {}, -); - -const model = new Gio.ListStore({ item_type: KeyValuePair }); - -model.splice(0, 0, [ - new KeyValuePair({ key: "lion", value: "Lion" }), - new KeyValuePair({ key: "tiger", value: "Tiger" }), - new KeyValuePair({ key: "leopard", value: "Leopard" }), - new KeyValuePair({ key: "elephant", value: "Elephant" }), - new KeyValuePair({ key: "giraffe", value: "Giraffe" }), - new KeyValuePair({ key: "cheetah", value: "Cheetah" }), - new KeyValuePair({ key: "zebra", value: "Zebra" }), - new KeyValuePair({ key: "panda", value: "Panda" }), - new KeyValuePair({ key: "koala", value: "Koala" }), - new KeyValuePair({ key: "crocodile", value: "Crocodile" }), - new KeyValuePair({ key: "hippo", value: "Hippopotamus" }), - new KeyValuePair({ key: "monkey", value: "Monkey" }), - new KeyValuePair({ key: "rhino", value: "Rhinoceros" }), - new KeyValuePair({ key: "kangaroo", value: "Kangaroo" }), - new KeyValuePair({ key: "dolphin", value: "Dolphin" }), -]); - -const list_store_expression = Gtk.PropertyExpression.new( - KeyValuePair, - null, - "value", -); - -advanced_drop_down.expression = list_store_expression; -advanced_drop_down.model = model; - -advanced_drop_down.connect("notify::selected-item", () => { - const selected_item = advanced_drop_down.selected_item; - if (selected_item) { - console.log(selected_item.key); - } -}); diff --git a/src/Library/demos/Drop Down/main.json b/src/Library/demos/Drop Down/main.json deleted file mode 100644 index 14f8bb532..000000000 --- a/src/Library/demos/Drop Down/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "controls", - "description": "A widget to choose an item from a list of options", - "panels": ["ui", "code", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Drop Down/main.vala b/src/Library/demos/Drop Down/main.vala deleted file mode 100644 index 978f37e8e..000000000 --- a/src/Library/demos/Drop Down/main.vala +++ /dev/null @@ -1,66 +0,0 @@ -#! /usr/bin/env -S vala workbench.vala --pkg gtk4 --pkg libadwaita-1 --pkg gio-2.0 - -using Gtk; -using GLib; - -// Define our class for our custom model -public class KeyValuePair : Object { - public string key { get; set; default = ""; } - public string value { get; set; default = ""; } - - public KeyValuePair(string key, string value) { - this.key = key; - this.value = value; - } -} - -public void main() { - - Gtk.DropDown drop_down = workbench.builder.get_object("drop_down") as Gtk.DropDown; - Gtk.DropDown advanced_drop_down = workbench.builder.get_object("advanced_drop_down") as Gtk.DropDown; - - drop_down.notify["selected"].connect(() => { - var selected_index = drop_down.get_selected(); - if (selected_index != -1) { - var model = drop_down.get_model() as Gtk.StringList; - var selected_item = model.get_string(selected_index); - print("%s\n", selected_item); - } - }); - - // Create the model - var model = new GLib.ListStore(typeof(KeyValuePair)); - - model.splice(0, 0, { - new KeyValuePair("lion", "Lion"), - new KeyValuePair("tiger", "Tiger"), - new KeyValuePair("leopard", "Leopard"), - new KeyValuePair("elephant", "Elephant"), - new KeyValuePair("giraffe", "Giraffe"), - new KeyValuePair("cheetah", "Cheetah"), - new KeyValuePair("zebra", "Zebra"), - new KeyValuePair("panda", "Panda"), - new KeyValuePair("koala", "Koala"), - new KeyValuePair("crocodile", "Crocodile"), - new KeyValuePair("hippo", "Hippopotamus"), - new KeyValuePair("monkey", "Monkey"), - new KeyValuePair("rhino", "Rhinoceros"), - new KeyValuePair("kangaroo", "Kangaroo"), - new KeyValuePair("dolphin", "Dolphin") - }); - - // Create expression for displaying the value in the advanced drop-down - var expression = new Gtk.PropertyExpression(typeof(KeyValuePair), null, "value"); - - // Set the model and expression for the advanced drop-down - advanced_drop_down.set_expression(expression); - advanced_drop_down.set_model(model); - - // Handle selected item change in the advanced drop-down - advanced_drop_down.notify["selected-item"].connect(() => { - var selected_item = advanced_drop_down.get_selected_item() as KeyValuePair; - if (selected_item != null) { - print("%s\n", selected_item.key); - } - }); -} diff --git a/src/Library/demos/Drop Zone/main.blp b/src/Library/demos/Drop Zone/main.blp deleted file mode 100644 index 8d0506b87..000000000 --- a/src/Library/demos/Drop Zone/main.blp +++ /dev/null @@ -1,47 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: _("Drop Zone"); - description: _("A versatile drop area for external content"); - - Box { - orientation: vertical; - - Adw.Clamp { - maximum-size: 500; - - Box { - orientation: vertical; - styles ["card"] - - Adw.Bin bin { - - height-request: 150; - - Label { - label: _("Drop files or text here"); - } - } - } - } - - Box { - margin-top: 24; - orientation: vertical; - - LinkButton { - label: "Drag-and-Drop in GTK"; - uri: "https://docs.gtk.org/gtk4/drag-and-drop.html#drop-targets"; - } - - LinkButton { - label: "DropTarget API Reference"; - uri: "https://docs.gtk.org/gtk4/class.DropTarget.html"; - } - } - } -} - - - diff --git a/src/Library/demos/Drop Zone/main.css b/src/Library/demos/Drop Zone/main.css deleted file mode 100644 index c20887fc0..000000000 --- a/src/Library/demos/Drop Zone/main.css +++ /dev/null @@ -1,6 +0,0 @@ -.overlay-drag-area { - box-shadow: none; - background-color: alpha(@accent_color, 0.35); - margin: 12px; - border-radius: 12px; -} diff --git a/src/Library/demos/Drop Zone/main.js b/src/Library/demos/Drop Zone/main.js deleted file mode 100644 index 0cd06b235..000000000 --- a/src/Library/demos/Drop Zone/main.js +++ /dev/null @@ -1,117 +0,0 @@ -import Gtk from "gi://Gtk"; -import Gio from "gi://Gio"; -import Adw from "gi://Adw"; -import Gdk from "gi://Gdk"; -import GObject from "gi://GObject"; - -const bin = workbench.builder.get_object("bin"); - -// Universal drop target for any String data -const string_drop_target = Gtk.DropTarget.new( - GObject.TYPE_STRING, - Gdk.DragAction.COPY, -); - -bin.add_controller(string_drop_target); - -string_drop_target.connect("drop", (self, value, x, y) => { - bin.child = createTextPreview(value); - bin.remove_css_class("overlay-drag-area"); -}); - -// Drop Target for Files -const file_drop_target = Gtk.DropTarget.new(Gio.File, Gdk.DragAction.COPY); -bin.add_controller(file_drop_target); -file_drop_target.connect("drop", (self, value, x, y) => { - try { - bin.child = onDrop(value); - } catch (err) { - logError(err, "Unable to load preview"); - } - bin.remove_css_class("overlay-drag-area"); -}); - -function onDrop(value) { - if (!(value instanceof Gio.File)) return false; - - const file_info = value.query_info("standard::content-type", 0, null); - const content_type = file_info.get_content_type(); - - if (content_type.startsWith("image/")) { - return createImagePreview(value); - } else if (content_type.startsWith("video/")) { - return createVideoPreview(value); - } else { - return createFilePreview(value); - } -} - -function createImagePreview(value) { - const widget = createBoxWidget(); - - const picture = Gtk.Picture.new_for_file(value); - picture.can_shrink = true; - picture.content_fit = Gtk.ContentFit.SCALE_DOWN; - widget.append(picture); - return widget; -} - -function createTextPreview(text) { - const widget = createBoxWidget(); - - const label = new Gtk.Label({ label: text, wrap: true }); - widget.append(label); - return widget; -} - -function createVideoPreview(file) { - const widget = createBoxWidget(); - const video = new Gtk.Video({ file: file }); - widget.append(video); - return widget; -} - -function createFilePreview(file) { - const widget = createBoxWidget(); - - const file_info = file.query_info("standard::icon", 0, null); - const icon = Gtk.Image.new_from_gicon(file_info.get_icon()); - widget.append(icon); - icon.icon_size = Gtk.IconSize.LARGE; - - const file_name = new Gtk.Label({ label: file.get_basename() }); - widget.append(file_name); - - return widget; -} - -function createBoxWidget() { - return new Gtk.Box({ - orientation: Gtk.Orientation.VERTICAL, - halign: Gtk.Align.CENTER, - valign: Gtk.Align.CENTER, - spacing: 6, - margin_top: 12, - margin_bottom: 12, - margin_start: 12, - margin_end: 12, - }); -} - -// Drop Hover Effect - -file_drop_target.connect("enter", () => { - bin.add_css_class("overlay-drag-area"); -}); - -file_drop_target.connect("leave", () => { - bin.remove_css_class("overlay-drag-area"); -}); - -string_drop_target.connect("enter", () => { - bin.add_css_class("overlay-drag-area"); -}); - -string_drop_target.connect("leave", () => { - bin.remove_css_class("overlay-drag-area"); -}); diff --git a/src/Library/demos/Drop Zone/main.json b/src/Library/demos/Drop Zone/main.json deleted file mode 100644 index 23d468a76..000000000 --- a/src/Library/demos/Drop Zone/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "controls", - "description": "A versatile drop area for external content", - "panels": ["code", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Drop Zone/main.vala b/src/Library/demos/Drop Zone/main.vala deleted file mode 100644 index 3dcbb8047..000000000 --- a/src/Library/demos/Drop Zone/main.vala +++ /dev/null @@ -1,126 +0,0 @@ -#! /usr/bin/env -S vala workbench.vala --pkg gtk4 --pkg libadwaita-1 --pkg gio-2.0 --pkg gobject-2.0 - -using Gtk; -using GLib; -using Gdk; -using Adw; - -void main() { - Adw.Bin bin = workbench.builder.get_object("bin") as Adw.Bin; - - // Universal drop target for any String data - var string_drop_target = new DropTarget(GLib.Type.STRING, Gdk.DragAction.COPY); - bin.add_controller(string_drop_target); - - string_drop_target.drop.connect((self, value, x, y) => { - bin.child = createTextPreview(value.get_string()); - bin.remove_css_class("overlay-drag-area"); - return true; - }); - - // Drop Target for Files - var file_drop_target = new DropTarget(typeof(GLib.File), Gdk.DragAction.COPY); - bin.add_controller(file_drop_target); - - file_drop_target.drop.connect((self, value, x, y) => { - File file = value.get_object() as GLib.File; - - if (!(file is GLib.File)) - return false; - - try { - var file_info = file.query_info("standard::content-type", 0, null); - string content_type = file_info.get_content_type(); - if (content_type.has_prefix("image/")) { - bin.child = createImagePreview(file); - } else if (content_type.has_prefix("video/")) { - bin.child = createVideoPreview(file); - } else { - bin.child = createFilePreview(file); - } - } catch (GLib.Error e) { - message("Failed to retrieve file info: \"%s\"", e.message); - } - - bin.remove_css_class("overlay-drag-area"); - return true; - }); - - // Drop Hover Effect - file_drop_target.enter.connect(() => { - bin.add_css_class("overlay-drag-area"); - return Gdk.DragAction.COPY; - }); - - file_drop_target.leave.connect(() => { - bin.remove_css_class("overlay-drag-area"); - return; - }); - - string_drop_target.enter.connect(() => { - bin.add_css_class("overlay-drag-area"); - return Gdk.DragAction.COPY; - }); - - string_drop_target.leave.connect(() => { - bin.remove_css_class("overlay-drag-area"); - return; - }); -} - -private Widget createImagePreview(GLib.File file) { - var widget = createBoxWidget(); - - var picture = new Picture() {file = file, can_shrink = true, content_fit = Gtk.ContentFit.SCALE_DOWN }; - widget.append(picture); - - return widget; -} - -private Widget createTextPreview(string text) { - var widget = createBoxWidget(); - - var label = new Label(text) {wrap = true}; - widget.append(label); - - return widget; -} - -private Widget createVideoPreview(GLib.File file) { - var widget = createBoxWidget(); - - var video = new Video.for_file(file); - widget.append(video); - - return widget; -} - -private Widget createFilePreview(GLib.File file) { - var widget = createBoxWidget(); - - try { - var file_info = file.query_info("standard::icon", 0, null); - var icon = new Image.from_gicon(file_info.get_icon()); - widget.append(icon); - icon.icon_size = IconSize.LARGE; - - var file_name = new Label(file.get_basename()); - widget.append(file_name); - } catch (GLib.Error e) { - message("Failed to retrieve file icon: \"%s\"", e.message); - } - - return widget; -} - -private Box createBoxWidget() { - var widget = new Box(Orientation.VERTICAL, 6); - widget.halign = Align.CENTER; - widget.valign = Align.CENTER; - widget.margin_top = 12; - widget.margin_bottom = 12; - widget.margin_start = 12; - widget.margin_end = 12; - - return widget; -} diff --git a/src/Library/demos/Editable Label/main.blp b/src/Library/demos/Editable Label/main.blp deleted file mode 100644 index 671d08017..000000000 --- a/src/Library/demos/Editable Label/main.blp +++ /dev/null @@ -1,30 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: _("Editable Label"); - description: _("A text widget with an editing mode"); - - Box { - orientation: vertical; - halign: center; - spacing: 12; - - EditableLabel edit_label { - text: _("Lorem ipsum dolor sit amet, consectetur adipiscing elit"); - editing: bind edit_switch.active; - } - - Switch edit_switch { - halign: center; - active: bind edit_label.editing; - } - - LinkButton { - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.EditableLabel.html"; - margin-top: 12; - } - } -} - diff --git a/src/Library/demos/Editable Label/main.json b/src/Library/demos/Editable Label/main.json deleted file mode 100644 index 6fa8ca33b..000000000 --- a/src/Library/demos/Editable Label/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "user_interface", - "description": "A text widget with an editing mode", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Email/main.blp b/src/Library/demos/Email/main.blp deleted file mode 100644 index c70c9727a..000000000 --- a/src/Library/demos/Email/main.blp +++ /dev/null @@ -1,30 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: _("Email"); - description: _("Trigger an email"); - margin-top: 48; - - Box { - orientation: vertical; - halign: center; - - Entry entry { - placeholder-text: _("Enter your email address"); - margin-bottom: 18; - } - - Button button { - label: _("Send Email"); - margin-bottom: 42; - halign: center; - styles ["suggested-action", "pill"] - } - - LinkButton { - label: "API Reference"; - uri: "https://libportal.org/method.Portal.compose_email.html"; - } - } -} diff --git a/src/Library/demos/Email/main.js b/src/Library/demos/Email/main.js deleted file mode 100644 index 55822b5b9..000000000 --- a/src/Library/demos/Email/main.js +++ /dev/null @@ -1,37 +0,0 @@ -import Xdp from "gi://Xdp"; -import XdpGtk from "gi://XdpGtk4"; -import Gio from "gi://Gio"; - -Gio._promisify(Xdp.Portal.prototype, "compose_email", "compose_email_finish"); - -const portal = new Xdp.Portal(); -const parent = XdpGtk.parent_new_gtk(workbench.window); - -const button = workbench.builder.get_object("button"); -const entry = workbench.builder.get_object("entry"); - -async function onClicked() { - const email_address = entry.get_text(); - - const success = await portal.compose_email( - parent, - [email_address], // addresses - null, // cc - null, // bcc - "Email from Workbench", // subject - "Hello World!", // body - null, // attachments - Xdp.EmailFlags.NONE, // flags - null, // cancellable - ); - - if (success) { - console.log("Success"); - } else { - console.log("Failure, verify that you have an email application."); - } -} - -button.connect("clicked", () => { - onClicked().catch(logError); -}); diff --git a/src/Library/demos/Email/main.json b/src/Library/demos/Email/main.json deleted file mode 100644 index b04515a3a..000000000 --- a/src/Library/demos/Email/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "platform", - "description": "Trigger an email", - "panels": ["code", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Emoji Chooser/main.blp b/src/Library/demos/Emoji Chooser/main.blp deleted file mode 100644 index c43118308..000000000 --- a/src/Library/demos/Emoji Chooser/main.blp +++ /dev/null @@ -1,25 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: _("Emoji Chooser"); - description: _("Display a popover to select emojis"); - - Box { - spacing: 24; - orientation: vertical; - - MenuButton button { - halign: center; - label: "😀️"; - popover: EmojiChooser emoji_chooser {}; - - styles ["pill", "emoji"] - } - - LinkButton { - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.EmojiChooser.html"; - } - } -} diff --git a/src/Library/demos/Emoji Chooser/main.css b/src/Library/demos/Emoji Chooser/main.css deleted file mode 100644 index d6dc418b5..000000000 --- a/src/Library/demos/Emoji Chooser/main.css +++ /dev/null @@ -1,3 +0,0 @@ - .emoji { - font-size: 30px; - } diff --git a/src/Library/demos/Emoji Chooser/main.js b/src/Library/demos/Emoji Chooser/main.js deleted file mode 100644 index 80c57330a..000000000 --- a/src/Library/demos/Emoji Chooser/main.js +++ /dev/null @@ -1,6 +0,0 @@ -const emoji_chooser = workbench.builder.get_object("emoji_chooser"); -const button = workbench.builder.get_object("button"); - -emoji_chooser.connect("emoji-picked", (chooser, emoji) => { - button.label = emoji; -}); diff --git a/src/Library/demos/Emoji Chooser/main.json b/src/Library/demos/Emoji Chooser/main.json deleted file mode 100644 index f17238f01..000000000 --- a/src/Library/demos/Emoji Chooser/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "user_interface", - "description": "Display a popover to select emojis", - "panels": ["code", "ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Event Controllers/image1.png b/src/Library/demos/Event Controllers/image1.png deleted file mode 100644 index 1fbd483ab..000000000 Binary files a/src/Library/demos/Event Controllers/image1.png and /dev/null differ diff --git a/src/Library/demos/Event Controllers/image2.png b/src/Library/demos/Event Controllers/image2.png deleted file mode 100644 index 2ebfe723e..000000000 Binary files a/src/Library/demos/Event Controllers/image2.png and /dev/null differ diff --git a/src/Library/demos/Event Controllers/main.blp b/src/Library/demos/Event Controllers/main.blp deleted file mode 100644 index 2dec4cfda..000000000 --- a/src/Library/demos/Event Controllers/main.blp +++ /dev/null @@ -1,137 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage page { - title: _("Event Controllers"); - description: _("Ancillary Objects which responds to events"); - - child: Box { - orientation: vertical; - halign: center; - spacing: 18; - - Box { - orientation: vertical; - spacing: 12; - - Label { - label: _("EventControllerKey Example"); - styles ["heading"] - } - - Gtk.Button ctrl_button { - label: _("Ctrl + Click to Activate"); - width-request: 200; - halign: center; - } - } - - Box { - orientation: vertical; - spacing: 12; - - Label { - label: _("GestureClick Example"); - styles ["heading"] - } - - Frame gesture_frame { - halign: center; - - Box { - halign: center; - styles ["linked"] - - Button primary_button { - label: _("Left"); - width-request: 150; - height-request: 50; - } - - Button middle_button { - label: _("Middle"); - width-request: 150; - height-request: 50; - } - - Button secondary_button { - label: _("Right"); - width-request: 150; - height-request: 50; - } - } - } - } - - Box { - orientation: vertical; - spacing: 12; - - Label { - label: _("GestureSwipe Example"); - styles ["heading"] - } - - Gtk.StackSwitcher { - stack: stack; - } - - Frame { - halign: center; - - Stack stack { - transition-type: slide_left_right; - valign: center; - halign: center; - height-request: 128; - width-request: 128; - - StackPage { - title: _("Start"); - name: "pic1"; - child: Picture pic1 { - can-shrink: true; - content-fit: scale_down; - }; - } - - StackPage { - title: _("Finish"); - name: "pic2"; - child: Picture pic2 { - can-shrink: true; - content-fit: scale_down; - }; - } - } - } - - Label { - margin-top: 12; - label: _("Swipe"); - } - } - - Box { - orientation: horizontal; - halign: center; - valign: center; - margin-top: 24; - - LinkButton { - label: "EventControllerKey"; - uri: "https://docs.gtk.org/gtk4/class.EventControllerKey.html"; - } - - LinkButton { - label: "GestureClick"; - uri: "https://docs.gtk.org/gtk4/class.GestureClick.html"; - } - - LinkButton { - label: "GestureSwipe"; - uri: "https://docs.gtk.org/gtk4/class.GestureSwipe.html"; - } - } - }; -} diff --git a/src/Library/demos/Event Controllers/main.js b/src/Library/demos/Event Controllers/main.js deleted file mode 100644 index 38bd85f3d..000000000 --- a/src/Library/demos/Event Controllers/main.js +++ /dev/null @@ -1,91 +0,0 @@ -import Gtk from "gi://Gtk"; -import Gdk from "gi://Gdk"; -import Gio from "gi://Gio"; - -const window = workbench.window; -const ctrl_button = workbench.builder.get_object("ctrl_button"); -const stack = workbench.builder.get_object("stack"); -const pic1 = workbench.builder.get_object("pic1"); -const pic2 = workbench.builder.get_object("pic2"); -const primary_button = workbench.builder.get_object("primary_button"); -const middle_button = workbench.builder.get_object("middle_button"); -const secondary_button = workbench.builder.get_object("secondary_button"); - -pic1.file = Gio.File.new_for_uri(workbench.resolve('image1.png')); -pic2.file = Gio.File.new_for_uri(workbench.resolve('image2.png')); - -let ctrl_pressed = false; - -// Key controller to detect when the Ctrl key is pressed and released -const key_controller = new Gtk.EventControllerKey(); -window.add_controller(key_controller); -key_controller.connect("key-pressed", (controller, keyval, keycode, state) => { - if (keyval === Gdk.KEY_Control_L || keyval === Gdk.KEY_Control_R) { - ctrl_pressed = true; - } -}); - -key_controller.connect("key-released", (controller, keyval, keycode, state) => { - if (keyval === Gdk.KEY_Control_L || keyval === Gdk.KEY_Control_R) { - ctrl_pressed = false; - } -}); - -ctrl_button.connect("clicked", () => { - if (ctrl_pressed) { - ctrl_button.label = _("Click to Deactivate"); - ctrl_button.add_css_class("suggested-action"); - } else { - ctrl_button.label = _("Ctrl + Click to Activate"); - ctrl_button.remove_css_class("suggested-action"); - } -}); - -// Detect pointer button press and release events -const gesture_click = new Gtk.GestureClick({ button: 0 }); - -window.add_controller(gesture_click); - -gesture_click.connect("pressed", (gesture, n_press, x, y) => { - switch (gesture.get_current_button()) { - case Gdk.BUTTON_PRIMARY: - primary_button.add_css_class("suggested-action"); - break; - - case Gdk.BUTTON_MIDDLE: - middle_button.add_css_class("suggested-action"); - break; - - case Gdk.BUTTON_SECONDARY: - secondary_button.add_css_class("suggested-action"); - break; - } -}); - -gesture_click.connect("released", (gesture, n_press, x, y) => { - switch (gesture.get_current_button()) { - case Gdk.BUTTON_PRIMARY: - primary_button.remove_css_class("suggested-action"); - break; - - case Gdk.BUTTON_MIDDLE: - middle_button.remove_css_class("suggested-action"); - break; - - case Gdk.BUTTON_SECONDARY: - secondary_button.remove_css_class("suggested-action"); - break; - } -}); - -const gesture_swipe = new Gtk.GestureSwipe(); - -stack.add_controller(gesture_swipe); - -gesture_swipe.connect("swipe", (controller, vel_x, vel_y) => { - if (vel_x > 0) { - stack.set_visible_child_name("pic1"); - } else { - stack.set_visible_child_name("pic2"); - } -}); diff --git a/src/Library/demos/Event Controllers/main.json b/src/Library/demos/Event Controllers/main.json deleted file mode 100644 index 56a8d2293..000000000 --- a/src/Library/demos/Event Controllers/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "controls", - "description": "Ancillary Objects which responds to events", - "panels": ["code", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Flow Box/main.blp b/src/Library/demos/Flow Box/main.blp deleted file mode 100644 index 1a148397c..000000000 --- a/src/Library/demos/Flow Box/main.blp +++ /dev/null @@ -1,38 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Gtk.Window { - default-width: 800; - default-height: 800; - title: _("Flow Box Demo"); - titlebar: Adw.HeaderBar {}; - - Adw.StatusPage { - title: _("Flow Box"); - description: _("Puts child widgets in a reflowing grid"); - - Box { - spacing: 12; - orientation: vertical; - - ScrolledWindow { - propagate-natural-height: true; - has-frame: true; - - FlowBox flowbox { - orientation: horizontal; - row-spacing: 6; - column-spacing: 6; - homogeneous: true; - max-children-per-line: 6; - min-children-per-line: 3; - } - } - - LinkButton { - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.FlowBox.html"; - } - } - } -} diff --git a/src/Library/demos/Flow Box/main.css b/src/Library/demos/Flow Box/main.css deleted file mode 100644 index 210fd8089..000000000 --- a/src/Library/demos/Flow Box/main.css +++ /dev/null @@ -1,3 +0,0 @@ - .emoji { - font-size: 60px; -} diff --git a/src/Library/demos/Flow Box/main.js b/src/Library/demos/Flow Box/main.js deleted file mode 100644 index ea6bd33fa..000000000 --- a/src/Library/demos/Flow Box/main.js +++ /dev/null @@ -1,29 +0,0 @@ -import Gtk from "gi://Gtk"; -import Adw from "gi://Adw"; - -const flowbox = workbench.builder.get_object("flowbox"); - -for (let code = 128513; code <= 128591; code++) { - addEmoji(flowbox, String.fromCodePoint(code)); -} - -flowbox.connect("child-activated", (flowbox, item) => { - // FlowBoxChild -> AdwBin -> Label - const emoji = item.child.child.label; - console.log("Unicode:", emoji.codePointAt(0).toString(16)); -}); - -function addEmoji(flowbox, unicode) { - const item = new Adw.Bin({ - child: new Gtk.Label({ - vexpand: true, - hexpand: true, - label: unicode, - css_classes: ["emoji"], - }), - width_request: 100, - height_request: 100, - css_classes: ["card"], - }); - flowbox.append(item); -} diff --git a/src/Library/demos/Flow Box/main.json b/src/Library/demos/Flow Box/main.json deleted file mode 100644 index 817a04934..000000000 --- a/src/Library/demos/Flow Box/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "layout", - "description": "Puts child widgets in a reflowing grid", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Font Dialog/main.blp b/src/Library/demos/Font Dialog/main.blp deleted file mode 100644 index 23e8a03bd..000000000 --- a/src/Library/demos/Font Dialog/main.blp +++ /dev/null @@ -1,61 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: "Font Dialog"; - description: _("Show a dialog to select a font"); - - Box { - orientation: vertical; - halign: center; - spacing: 42; - - Box{ - orientation: vertical; - - Label { - label: _("Dialog Button"); - margin-bottom: 12; - styles ["title-4"] - } - - FontDialogButton font_dialog_button { - halign: center; - margin-bottom: 12; - use-font: true; - use-size: true; - } - - - LinkButton { - label: _("API Reference"); - uri: "https://docs.gtk.org/gtk4/class.FontDialogButton.html"; - } - } - - Box{ - orientation: vertical; - - Label { - label: _("Dialog with Custom Button"); - margin-bottom: 12; - styles ["title-4"] - } - - Button custom_button { - label: _("Select Font…"); - halign: center; - margin-bottom: 12; - styles ["pill"] - } - - LinkButton { - label: _("API Reference"); - uri: "https://docs.gtk.org/gtk4/class.FontDialog.html"; - } - } - } -} - - - diff --git a/src/Library/demos/Font Dialog/main.js b/src/Library/demos/Font Dialog/main.js deleted file mode 100644 index 05318e5c4..000000000 --- a/src/Library/demos/Font Dialog/main.js +++ /dev/null @@ -1,44 +0,0 @@ -import Gtk from "gi://Gtk"; -import Gio from "gi://Gio"; - -Gio._promisify( - Gtk.FontDialog.prototype, - "choose_font_and_features", - "choose_font_and_features_finish", -); - -Gio._promisify( - Gtk.FontDialog.prototype, - "choose_family", - "choose_family_finish", -); - -const font_dialog_button = workbench.builder.get_object("font_dialog_button"); -const custom_button = workbench.builder.get_object("custom_button"); - -const dialog_standard = new Gtk.FontDialog({ - title: "Select a Font", - modal: true, -}); -font_dialog_button.set_dialog(dialog_standard); - -font_dialog_button.connect("notify::font-desc", () => { - const font_name = font_dialog_button.get_font_desc().to_string(); - console.log(`Font: ${font_name}`); -}); - -const dialog_custom = new Gtk.FontDialog({ - title: "Select a Font Family", - modal: true, -}); - -custom_button.connect("clicked", () => onClicked().catch(logError)); - -async function onClicked() { - const result = await dialog_custom.choose_family( - workbench.window, - null, - null, - ); - console.log(`Font Family: ${result.get_name()}`); -} diff --git a/src/Library/demos/Font Dialog/main.json b/src/Library/demos/Font Dialog/main.json deleted file mode 100644 index 999a482bd..000000000 --- a/src/Library/demos/Font Dialog/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "controls", - "description": "Show a dialog to select a font", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Frame/image.png b/src/Library/demos/Frame/image.png deleted file mode 100644 index ae33fbced..000000000 Binary files a/src/Library/demos/Frame/image.png and /dev/null differ diff --git a/src/Library/demos/Frame/main.blp b/src/Library/demos/Frame/main.blp deleted file mode 100644 index 3a9c55702..000000000 --- a/src/Library/demos/Frame/main.blp +++ /dev/null @@ -1,198 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: _("Frame"); - description: _("A widget that surrounds its child with a decorative frame"); - - Box { - orientation: vertical; - halign: center; - - Box { - orientation: horizontal; - halign: center; - spacing: 18; - margin-bottom: 18; - homogeneous: false; - - Box { - orientation: vertical; - halign: center; - spacing: 12; - - Picture without_frame { - width-request: 180; - height-request: 180; - } - - Label { - label: _("Without Frame"); - styles ["title-4"] - } - - } - - Separator { - margin-start: 6; - margin-end: 6; - } - - Box { - orientation: vertical; - halign: center; - spacing: 12; - - Frame { - - Picture with_frame { - width-request: 180; - height-request: 180; - } - } - - Label { - label: _("With Frame"); - styles ["title-4"] - } - } - } - - Separator { - margin-bottom: 24; - } - - Label { - label: _("Without Frame"); - margin-bottom: 12; - halign: start; - styles ["title-4"] - } - - Box { - margin-bottom: 18; - halign: center; - styles ["toolbar"] - - Button { - icon-name: "plus"; - } - - Button { - icon-name: "minus"; - } - - Button { - icon-name: "bell"; - } - } - - Label { - halign: start; - label: _("With Frame"); - margin-bottom: 12; - styles ["title-4"] - } - - - Frame { - label: _("Frame can have an optional label"); - margin-bottom: 24; - - Box { - halign: center; - styles ["toolbar"] - - Button { - icon-name: "plus"; - } - - Button { - icon-name: "minus"; - } - - Button { - icon-name: "bell"; - } - } - } - - Separator { - margin-bottom: 24; - } - - Box { - orientation: horizontal; - halign: center; - spacing: 18; - margin-bottom: 18; - homogeneous: false; - - Box { - orientation: vertical; - halign: center; - spacing: 12; - - ScrolledWindow { - height-request: 240; - width-request: 240; - - TextView textview_without_frame { - bottom-margin: 12; - left-margin: 12; - right-margin: 12; - top-margin: 12; - margin-bottom: 12; - editable: false; - wrap-mode: char; - } - } - - Label { - label: _("Without Frame"); - styles ["title-4"] - } - } - - Separator { - margin-start: 6; - margin-end: 6; - } - - Box { - orientation: vertical; - halign: center; - spacing: 12; - - Frame { - - ScrolledWindow { - height-request: 240; - width-request: 240; - - TextView textview_with_frame { - bottom-margin: 12; - left-margin: 12; - right-margin: 12; - top-margin: 12; - editable: false; - wrap-mode: char; - } - } - } - - Label { - label: _("With Frame"); - styles ["title-4"] - } - } - } - - LinkButton { - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.Frame.html"; - } - } -} - - diff --git a/src/Library/demos/Frame/main.js b/src/Library/demos/Frame/main.js deleted file mode 100644 index 969873f74..000000000 --- a/src/Library/demos/Frame/main.js +++ /dev/null @@ -1,24 +0,0 @@ -import Gio from "gi://Gio"; -import Gtk from "gi://Gtk"; - -const pic_with_frame = workbench.builder.get_object("with_frame"); -const pic_without_frame = workbench.builder.get_object("without_frame"); - -const textview_with_frame = workbench.builder.get_object("textview_with_frame"); -const textview_without_frame = workbench.builder.get_object( - "textview_without_frame", -); - -const file = Gio.File.new_for_uri(workbench.resolve("./image.png")); - -const buffer = new Gtk.TextBuffer(); -buffer.set_text( - "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Vel elit scelerisque mauris pellentesque pulvinar. Molestie nunc non blandit massa enim nec dui nunc. Turpis in eu mi bibendum neque egestas congue quisque. Sed velit dignissim sodales ut. Massa tempor nec feugiat nisl pretium fusce id velit. Vitae congue eu consequat ac felis donec et. Ultrices sagittis orci a scelerisque purus semper eget duis at. Habitant morbi tristique senectus et netus et malesuada fames ac. Vitae aliquet nec ullamcorper sit amet risus nullam. Tortor at auctor urna nunc. Eget velit aliquet sagittis id consectetur purus. Libero id faucibus nisl tincidunt eget. Nunc consequat interdum varius sit amet mattis. Enim facilisis gravida neque convallis. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Venenatis tellus in metus vulputate eu scelerisque.Sit amet luctus venenatis lectus magna fringilla urna. Eget nunc lobortis mattis aliquam. Urna duis convallis convallis tellus id interdum velit. Fames ac turpis egestas maecenas. Venenatis lectus magna fringilla urna porttitor rhoncus dolor. Egestas erat imperdiet sed euismod nisi porta lorem mollis aliquam. Eget est lorem ipsum dolor sit amet consectetur. Eget nunc lobortis mattis aliquam faucibus purus in. Iaculis nunc sed augue lacus viverra vitae. Euismod elementum nisi quis eleifend. Et pharetra pharetra massa massa ultricies mi quis. Volutpat odio facilisis mauris sit. Enim ut tellus elementum sagittis vitae et. Volutpat sed cras ornare arcu dui vivamus arcu felis. Arcu vitae elementum curabitur vitae nunc sed. Porttitor rhoncus dolor purus non enim. Scelerisque fermentum dui faucibus in ornare quam viverra. Amet purus gravida quis blandit turpis cursus. Faucibus pulvinar elementum integer enim. Aenean et tortor at risus viverra adipiscing at in.Vitae ultricies leo integer malesuada nunc vel. Quis lectus nulla at volutpat diam ut. Donec ac odio tempor orci dapibus ultrices. Justo eget magna fermentum iaculis eu non diam. Mauris cursus mattis molestie a iaculis at erat pellentesque. Phasellus faucibus scelerisque eleifend donec pretium. Blandit volutpat maecenas volutpat blandit aliquam etiam erat velit scelerisque. Habitant morbi tristique senectus et netus. Nunc faucibus a pellentesque sit amet porttitor eget dolor. Nulla malesuada pellentesque elit eget. Tortor vitae purus faucibus ornare suspendisse sed nisi lacus sed. Sollicitudin ac orci phasellus egestas tellus. In hendrerit gravida rutrum quisque non tellus orci ac. Suspendisse ultrices gravida dictum fusce ut placerat. Varius morbi enim nunc faucibus. Tellus elementum sagittis vitae et leo duis ut diam. Velit dignissim sodales ut eu sem integer. Sapien eget mi proin sed libero enim. Odio euismod lacinia at quis risus. Tellus at urna condimentum mattis pellentesque id.", - -1, -); - -textview_with_frame.buffer = buffer; -textview_without_frame.buffer = buffer; - -pic_with_frame.file = file; -pic_without_frame.file = file; diff --git a/src/Library/demos/Frame/main.json b/src/Library/demos/Frame/main.json deleted file mode 100644 index f7a03cac6..000000000 --- a/src/Library/demos/Frame/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "layout", - "description": "A widget that surrounds its child with a decorative frame", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Grid/main.blp b/src/Library/demos/Grid/main.blp deleted file mode 100644 index af1e61d0d..000000000 --- a/src/Library/demos/Grid/main.blp +++ /dev/null @@ -1,103 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: "Grid"; - description: _("Arrange widgets in rows and columns."); - - Box { - halign: center; - Grid { - Button button00 { - name: "button00"; - layout { row: 0; column: 0; } - hexpand: false; - Image { - icon-name: "circle-outline-thick-symbolic"; - pixel-size: 100; - } - styles ['cell'] - } - - Button button01 { - name: "button01"; - layout { row: 0; column: 1; } - hexpand: false; - Image { - pixel-size: 100; - } - styles ['cell'] - } - - Button button02 { - name: "button02"; - layout { row: 0; column: 2; } - hexpand: false; - Image { - pixel-size: 100; - } - styles ['cell'] - } - - Button button10 { - name: "button10"; - layout { row: 1; column: 0; } - hexpand: false; - Image { - pixel-size: 100; - } - styles ['cell'] - } - - Button button11 { - name: "button11"; - layout { row: 1; column: 1; } - hexpand: false; - Image { - pixel-size: 100; - } - styles ['cell'] - } - - Button button12 { - name: "button12"; - layout { row: 1; column: 2; } - hexpand: false; - Image { - pixel-size: 100; - } - styles ['cell'] - } - - Button button20 { - name: "button20"; - layout { row: 2; column: 0; } - hexpand: false; - Image { - pixel-size: 100; - } - styles ['cell'] - } - - Button button21 { - name: "button21"; - layout { row: 2; column: 1; } - hexpand: false; - Image { - pixel-size: 100; - } - styles ['cell'] - } - - Button button22 { - name: "button22"; - layout { row: 2; column: 2; } - hexpand: false; - Image { - pixel-size: 100; - } - styles ['cell'] - } - } - } -} diff --git a/src/Library/demos/Grid/main.css b/src/Library/demos/Grid/main.css deleted file mode 100644 index 57f4d9ca0..000000000 --- a/src/Library/demos/Grid/main.css +++ /dev/null @@ -1,4 +0,0 @@ -.cell { - margin: 6px; - padding: 18px; -} diff --git a/src/Library/demos/Grid/main.js b/src/Library/demos/Grid/main.js deleted file mode 100644 index 4edc82cb4..000000000 --- a/src/Library/demos/Grid/main.js +++ /dev/null @@ -1,43 +0,0 @@ -const button_ids = [ - "button00", - "button01", - "button02", - "button10", - "button11", - "button12", - "button20", - "button21", - "button22", -]; - -for (const id of button_ids) { - const button = workbench.builder.get_object(id); - button.connect("clicked", onClicked); -} - -let step = 1; -function onClicked(button) { - //check access for user action - const image = button.get_child(); - if (image.icon_name) return; - //store and show user action - image.icon_name = "cross-large-symbolic"; - //calculate pc reaction - let pc_is_thinking = true; - while (pc_is_thinking) { - const pc_is_thinking_row = Math.floor(Math.random() * 3).toString(); - const pc_is_thinking_col = Math.floor(Math.random() * 3).toString(); - //make pc reaction if possible - const temp = workbench.builder.get_object( - `button${pc_is_thinking_row}${pc_is_thinking_col}`, - ); - const temp_image = temp.get_child(); - if (!temp_image.icon_name) { - //store and show pc reaction - temp_image.icon_name = "circle-outline-thick-symbolic"; - pc_is_thinking = false; - step += 2; - } - if (step >= 8) pc_is_thinking = false; - } -} diff --git a/src/Library/demos/Grid/main.json b/src/Library/demos/Grid/main.json deleted file mode 100644 index ba8f0b35a..000000000 --- a/src/Library/demos/Grid/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "layout", - "description": "Arrange widgets in rows and columns.", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/HTTP Image/main.blp b/src/Library/demos/HTTP Image/main.blp deleted file mode 100644 index d15863748..000000000 --- a/src/Library/demos/HTTP Image/main.blp +++ /dev/null @@ -1,20 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: "HTTP Image"; - description: _("Load and display an image from an HTTP URL."); - valign: start; - - Box { - orientation: vertical; - - Picture picture { - halign: center; - valign: center; - can-shrink: true; - content-fit: scale_down; - margin-bottom: 30; - } - } -} diff --git a/src/Library/demos/HTTP Image/main.js b/src/Library/demos/HTTP Image/main.js deleted file mode 100644 index 747019414..000000000 --- a/src/Library/demos/HTTP Image/main.js +++ /dev/null @@ -1,31 +0,0 @@ -import Soup from "gi://Soup"; -import GLib from "gi://GLib"; -import Gio from "gi://Gio"; -import GdkPixbuf from "gi://GdkPixbuf"; - -const IMAGE_URL = "https://cataas.com/cat"; - -Gio._promisify(Soup.Session.prototype, "send_async", "send_finish"); -Gio._promisify( - GdkPixbuf.Pixbuf, - "new_from_stream_async", - "new_from_stream_finish", -); - -const input_stream = await getInputStream(IMAGE_URL); -const pixbuf = await GdkPixbuf.Pixbuf.new_from_stream_async(input_stream, null); -workbench.builder.get_object("picture").set_pixbuf(pixbuf); - -async function getInputStream(url) { - const session = new Soup.Session(); - const message = new Soup.Message({ - method: "GET", - uri: GLib.Uri.parse(url, GLib.UriFlags.NONE), - }); - const input_stream = await session.send_async(message, null, null); - const { status_code, reason_phrase } = message; - if (status_code !== 200) { - throw new Error(`Got ${status_code}, ${reason_phrase}`); - } - return input_stream; -} diff --git a/src/Library/demos/HTTP Image/main.json b/src/Library/demos/HTTP Image/main.json deleted file mode 100644 index 6662d172d..000000000 --- a/src/Library/demos/HTTP Image/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "network", - "description": "Load and display an image from an HTTP URL.", - "panels": ["code", "preview"], - "autorun": true -} diff --git a/src/Library/demos/HTTP Image/main.vala b/src/Library/demos/HTTP Image/main.vala deleted file mode 100644 index 903a5ffaf..000000000 --- a/src/Library/demos/HTTP Image/main.vala +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env -S vala workbench.vala --pkg libadwaita-1 --pkg gdk-pixbuf-2.0 --pkg libsoup-3.0 - -public errordomain MessageError { - FAILED; -} - -private const string IMAGE_URL = "https://cataas.com/cat"; - -public async void main () { - try { - var input_stream = yield get_input_stream (IMAGE_URL); - var pixbuf = yield new Gdk.Pixbuf.from_stream_async (input_stream, null); - - var picture = (Gtk.Picture) workbench.builder.get_object ("picture"); - picture.set_pixbuf (pixbuf); - } catch (Error e) { - critical (e.message); - } -} - -private async InputStream? get_input_stream (string url) throws Error { - var session = new Soup.Session (); - var message = new Soup.Message.from_uri ("GET", Uri.parse (url, NONE)); - - InputStream input_stream = yield session.send_async (message, Priority.DEFAULT, null); - - uint status_code = message.status_code; - string reason = message.reason_phrase; - - if (status_code != 200) { - throw new MessageError.FAILED (@"Got $status_code: $reason"); - } - - return input_stream; -} diff --git a/src/Library/demos/Header Bar/main.blp b/src/Library/demos/Header Bar/main.blp deleted file mode 100644 index 80cacc447..000000000 --- a/src/Library/demos/Header Bar/main.blp +++ /dev/null @@ -1,80 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Gtk.Window { - default-width: 800; - default-height: 600; - title: _("Header Bar"); - titlebar: Adw.HeaderBar { - - [start] - MenuButton{ - label: _("Open"); - menu-model: open_menu; - } - [start] - Button { - icon-name: "tab-new-filled-symbolic"; - } - [end] - MenuButton { - icon-name: "open-menu-symbolic"; - tooltip-text: _("Main Menu"); - primary: true; - menu-model: window_menu; - } - [end] - Button { - icon-name: "loupe-large-symbolic"; - } - }; - - Adw.StatusPage { - title: "Header Bar"; - description: _("Custom titlebars for windows"); - - Box{ - orientation:vertical; - - LinkButton { - label: "API Reference"; - uri: "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.3/class.HeaderBar.html"; - } - - LinkButton { - label: "Human Interface Guidelines"; - uri: "https://developer.gnome.org/hig/patterns/containers/header-bars.html"; - } - } - } -} - -menu window_menu { - section { - item { - label: _("Keyboard Shortcuts"); - action: "app.shortcuts"; - } - - item { - label: _("About App"); - action: "app.about"; - } - } -} - -menu open_menu { - section { - item { - label: _("Item 1"); - } - item { - label: _("Item 2"); - } - item { - label: _("Item 3"); - } - } -} - - diff --git a/src/Library/demos/Header Bar/main.json b/src/Library/demos/Header Bar/main.json deleted file mode 100644 index d484e68e4..000000000 --- a/src/Library/demos/Header Bar/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "user_interface", - "description": "Custom titlebars for windows", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Image/main.blp b/src/Library/demos/Image/main.blp deleted file mode 100644 index 0cefdaf94..000000000 --- a/src/Library/demos/Image/main.blp +++ /dev/null @@ -1,99 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: _("Image"); - description: _("Display images as icons"); - - Box { - halign: center; - orientation: vertical; - spacing: 18; - - Box { - halign: center; - spacing: 24; - - Image { - icon-size: normal; - icon-name: "bear-symbolic"; - } - - Image { - icon-size: normal; - icon-name: "sentiment-very-satisfied-symbolic"; - } - - Image { - icon-size: normal; - icon-name: "star-filled-rounded-symbolic"; - } - - Image { - icon-size: normal; - icon-name: "background-app-ghost-symbolic"; - } - } - - Box{ - halign: center; - spacing: 24; - - Image { - icon-size: large; - icon-name: "bear-symbolic"; - } - - Image { - icon-size: large; - icon-name: "sentiment-very-satisfied-symbolic"; - } - - Image { - icon-size: large; - icon-name: "star-filled-rounded-symbolic"; - } - - Image { - icon-size: large; - icon-name: "background-app-ghost-symbolic"; - } - } - - Box { - halign: center; - spacing: 24; - - Image icon1 { - pixel-size: 128; - styles ["icon-dropshadow"] - } - - Image icon2 { - pixel-size: 64; - styles ["icon-dropshadow"] - } - - Image icon3 { - pixel-size: 32; - styles ["lowres-icon"] - } - } - - Box { - orientation: vertical; - halign: center; - spacing: 6; - - LinkButton { - uri: "https://docs.gtk.org/gtk4/class.Image.html"; - label: "API Reference"; - } - - LinkButton { - uri: "https://developer.gnome.org/hig/guidelines/ui-icons.html"; - label: "Human Interface Guidelines"; - } - } - } -} diff --git a/src/Library/demos/Image/main.js b/src/Library/demos/Image/main.js deleted file mode 100644 index dd3e193ea..000000000 --- a/src/Library/demos/Image/main.js +++ /dev/null @@ -1,10 +0,0 @@ -import Gio from "gi://Gio"; - -const path = Gio.File.new_for_uri( - workbench.resolve("workbench.png"), -).get_path(); - -workbench.builder.get_object("icon1").file = path; -workbench.builder.get_object("icon2").file = path; -workbench.builder.get_object("icon3").file = path; - diff --git a/src/Library/demos/Image/main.json b/src/Library/demos/Image/main.json deleted file mode 100644 index 117c9cb0a..000000000 --- a/src/Library/demos/Image/main.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "Image", - "category": "user_interface", - "description": "Display images as icons", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Image/workbench.png b/src/Library/demos/Image/workbench.png deleted file mode 100644 index 47fd1b3be..000000000 Binary files a/src/Library/demos/Image/workbench.png and /dev/null differ diff --git a/src/Library/demos/Label/main.blp b/src/Library/demos/Label/main.blp deleted file mode 100644 index 52192cc2e..000000000 --- a/src/Library/demos/Label/main.blp +++ /dev/null @@ -1,103 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: _("Label"); - description: _("Multipurpose text widget for a small amount of text"); - - Box { - orientation: vertical; - spacing: 18; - - Adw.Clamp { - maximum-size: 450; - - ListBox { - styles ["boxed-list"] - selection-mode: none; - - Adw.ActionRow { - title: _("Single Line"); - activatable-widget: single_line_switch; - - Switch single_line_switch { - valign: center; - active: true; - } - } - - Adw.ActionRow { - title: _("Use Markup"); - activatable-widget: markup_switch; - - Switch markup_switch { - valign: center; - } - } - - Adw.ComboRow wrap_row { - title: _("Wrap Mode"); - model: StringList { - strings ["None", "Character", "Word", "Word & Character"] - }; - } - - Adw.ComboRow ellipsize_row { - title: _("Ellipsize Mode"); - model: StringList { - strings ["None", "Start", "Middle", "End"] - }; - } - - - Adw.ComboRow style_row { - title: _("Style Class"); - model: StringList { - strings ["None", "Title 1", "Title 2", "Title 3", "Title 4", - "Monospace", "Accent", "Success", "Warning", "Error", - "Heading", "Body", "Caption Heading", "Caption"] - }; - } - - - Adw.ComboRow justification_row { - title: _("Justification"); - model: StringList { - strings [_("Left"), _("Right"), _("Center"), _("Fill")] - }; - } - - Adw.ActionRow { - title: _("X Align"); - activatable-widget: xalign_spin_button; - - SpinButton xalign_spin_button { - valign: center; - value: 0.5; - digits: 1; - adjustment: Adjustment { - step-increment: 0.1; - lower: 0; - upper: 1; - }; - } - } - } - } - - LinkButton { - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.Label.html"; - } - - Separator {} - - Label label { - wrap: bind wrap_row.selected; - xalign: bind xalign_spin_button.value; - ellipsize: bind ellipsize_row.selected; - use-markup: bind markup_switch.active; - } - } -} - diff --git a/src/Library/demos/Label/main.js b/src/Library/demos/Label/main.js deleted file mode 100644 index ca32d479a..000000000 --- a/src/Library/demos/Label/main.js +++ /dev/null @@ -1,63 +0,0 @@ -import Gtk from "gi://Gtk"; -import Adw from "gi://Adw"; - -const label = workbench.builder.get_object("label"); -const justification_row = workbench.builder.get_object("justification_row"); -const style_row = workbench.builder.get_object("style_row"); -const xalign_spin_button = workbench.builder.get_object("xalign_spin_button"); -const single_line_switch = workbench.builder.get_object("single_line_switch"); - -const style_classes = [ - "none", - "title-1", - "title-2", - "title-3", - "title-4", - "monospace", - "accent", - "success", - "warning", - "error", - "heading", - "body", - "caption-heading", - "caption", -]; - -const short_label = - "<b>Lorem ipsum</b> dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore disputandum putant."; - -const long_label = - " <b>Lorem ipsum</b> dolor sit amet, consectetur adipiscing elit,\n\ - sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem.\n\ - Ut enim mortis metu omnis quietae vitae status perturbatur,\n\ - et ut succumbere doloribus eosque humili animo inbecilloque ferre miserum est,\n\ - ob eamque debilitatem animi multi parentes, multi amicos, non nulli patriam,\n\ - plerique autem se ipsos penitus perdiderunt, sic robustus animus et excelsus omni."; - -label.label = short_label; - -single_line_switch.connect("notify::active", () => { - if (!single_line_switch.active) { - label.label = long_label; - } else { - label.label = short_label; - } -}); - -justification_row.connect("notify::selected", () => { - label.set_justify(justification_row.selected); -}); - -style_row.connect("notify::selected", () => { - // Remove all existing style classes - style_classes.forEach((style_class) => { - label.remove_css_class(style_class); - }); - - if (style_row.selected === 0) return; - - // Add the new style class - const new_style_class = style_classes[style_row.selected]; - label.add_css_class(new_style_class); -}); diff --git a/src/Library/demos/Label/main.json b/src/Library/demos/Label/main.json deleted file mode 100644 index 6312c2ee1..000000000 --- a/src/Library/demos/Label/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "layout", - "description": "Multipurpose text widget for a small amount of text", - "panels": ["code", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Level Bars/main.blp b/src/Library/demos/Level Bars/main.blp deleted file mode 100644 index 25024fa91..000000000 --- a/src/Library/demos/Level Bars/main.blp +++ /dev/null @@ -1,81 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: _("Level Bars"); - description: _("A bar widget used as a level indicator"); - - Box { - orientation: vertical; - margin-top: 24; - halign: center; - - Box { - orientation: vertical; - spacing: 18; - margin-start: 18; - margin-end: 18; - - Label { - label: _("Continuous"); - } - - Box { - orientation: vertical; - spacing: 12; - - Label { - halign: start; - margin-start: 12; - margin-top: 12; - label: _("Battery"); - } - - LevelBar bar_continuous{ - mode: continuous; - margin-start:12; - margin-end:12; - margin-bottom: 24; - min-value:0; - max-value:100; - value: 50; - } - styles ["card"] - margin-bottom: 24; - } - - - Label { - label: _("Discrete"); - } - - PasswordEntry entry { - placeholder-text: "Choose a Password"; - show-peek-icon: true; - } - LevelBar bar_discrete { - mode: discrete; - min-value: 0; - max-value: 6; - } - Label label_strength { - - } - } - - Box { - orientation: vertical; - margin-bottom: 24; - - LinkButton { - label: "Tutorial"; - uri: "https://developer.gnome.org/documentation/tutorials/beginners/components/level_bar.html"; - } - - LinkButton { - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.LevelBar.html"; - } - } - } -} diff --git a/src/Library/demos/Level Bars/main.css b/src/Library/demos/Level Bars/main.css deleted file mode 100644 index cb08b041b..000000000 --- a/src/Library/demos/Level Bars/main.css +++ /dev/null @@ -1,43 +0,0 @@ -levelbar block.full { - background-color: @success_color; -} - -levelbar block.half { - background-color: @warning_color; -} - -levelbar block.low { - background-color: @error_color; -} - -levelbar block.very-weak { - background-color: @red_4; -} - -levelbar block.weak { - background-color: @orange_4; -} - -levelbar block.moderate { - background-color: @yellow_4; -} - -levelbar block.strong { - background-color: @green_4; -} - -.very-weak-label { - color: @red_4; -} - -.weak-label { - color: @orange_4; -} - -.moderate-label { - color: @yellow_4; -} - -.strong-label { - color: @green_4; -} diff --git a/src/Library/demos/Level Bars/main.js b/src/Library/demos/Level Bars/main.js deleted file mode 100644 index 98c49392b..000000000 --- a/src/Library/demos/Level Bars/main.js +++ /dev/null @@ -1,52 +0,0 @@ -const bar_continuous = workbench.builder.get_object("bar_continuous"); - -bar_continuous.add_offset_value("full", 100); -bar_continuous.add_offset_value("half", 50); -bar_continuous.add_offset_value("low", 25); - -const bar_discrete = workbench.builder.get_object("bar_discrete"); - -bar_discrete.add_offset_value("very-weak", 1); -bar_discrete.add_offset_value("weak", 2); -bar_discrete.add_offset_value("moderate", 4); -bar_discrete.add_offset_value("strong", 6); - -const entry = workbench.builder.get_object("entry"); -const label_strength = workbench.builder.get_object("label_strength"); - -entry.connect("notify::text", () => { - estimatePasswordStrength(); -}); - -// This is not a secure way to estimate password strength -// Use appropriate solutions instead -// such as https://github.com/dropbox/zxcvbn -function estimatePasswordStrength() { - const level = Math.min(Math.ceil(entry.text.length / 2), 6); - - switch (level) { - case 1: - label_strength.label = "Very Weak"; - label_strength.css_classes = ["very-weak-label"]; - break; - case 2: - label_strength.label = "Weak"; - label_strength.css_classes = ["weak-label"]; - break; - case 3: - case 4: - label_strength.label = "Moderate"; - label_strength.css_classes = ["moderate-label"]; - break; - case 5: - case 6: - label_strength.label = "Strong"; - label_strength.css_classes = ["strong-label"]; - break; - default: - label_strength.label = ""; - label_strength.css_classes = []; - } - - bar_discrete.value = level; -} diff --git a/src/Library/demos/Level Bars/main.json b/src/Library/demos/Level Bars/main.json deleted file mode 100644 index 83271d5bd..000000000 --- a/src/Library/demos/Level Bars/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "feedback", - "description": "A bar widget used as a level indicator", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Link Button/main.blp b/src/Library/demos/Link Button/main.blp deleted file mode 100644 index d2943711f..000000000 --- a/src/Library/demos/Link Button/main.blp +++ /dev/null @@ -1,12 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: _("Link Button"); - description: _("A button with a hyperlink"); - - LinkButton linkbutton{ - label: "Documentation"; - uri: "https://docs.gtk.org/gtk4/class.LinkButton.html"; - } -} diff --git a/src/Library/demos/Link Button/main.js b/src/Library/demos/Link Button/main.js deleted file mode 100644 index 8830156ab..000000000 --- a/src/Library/demos/Link Button/main.js +++ /dev/null @@ -1,13 +0,0 @@ -const linkbutton = workbench.builder.get_object("linkbutton"); - -linkbutton.connect("notify::visited", () => { - console.log("The link has been visited"); -}); - -linkbutton.connect("activate-link", (button) => { - console.log(`About to activate ${button.uri}`); - - // Return true if handling the link manually, or - // false to let the default behavior continue - return false; -}); diff --git a/src/Library/demos/Link Button/main.json b/src/Library/demos/Link Button/main.json deleted file mode 100644 index 6c55c840a..000000000 --- a/src/Library/demos/Link Button/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "controls", - "description": "A button with a hyperlink", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/List Model/main.blp b/src/Library/demos/List Model/main.blp deleted file mode 100644 index 860537191..000000000 --- a/src/Library/demos/List Model/main.blp +++ /dev/null @@ -1,103 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: "List Model"; - description: _("List models are a simple interface for ordered lists of GObject instances"); - valign: start; - - Adw.Clamp { - maximum-size: 640; - Box { - orientation: vertical; - spacing: 24; - - LinkButton { - label: "Documentation"; - uri: "https://gjs.guide/guides/gio/list-models.html"; - } - - Gtk.StackSwitcher { - stack: stack; - halign: center; - } - - Gtk.Stack stack { - transition-type: crossfade; - vexpand: true; - - Gtk.StackPage { - name: "listbox"; - title: _("List Box"); - child: - Box { - ListBox list_box { - hexpand: true; - valign: start; - selection-mode: none; - styles ["boxed-list"] - } - }; - } - - Gtk.StackPage { - name: "flowbox"; - title: _("Flow Box"); - child: - Frame { - hexpand: true; - valign: start; - FlowBox flow_box { - orientation: horizontal; - selection-mode: none; - } - }; - } - - - Gtk.StackPage { - name: "Filter"; - title: _("Edit"); - child: - Box { - orientation: vertical; - spacing: 12; - - Box { - halign: center; - styles ["linked"] - - SearchEntry search_entry { - placeholder-text: _("Start searching"); - } - - Button add { - icon-name: "list-add-symbolic"; - tooltip-text: _("Add Item"); - } - - Button remove { - icon-name: "list-remove-symbolic"; - tooltip-text: _("Remove Item"); - sensitive: false; - } - } - - ListBox list_box_editable { - hexpand: true; - valign: start; - activate-on-single-click: true; - selection-mode: single; - styles ["boxed-list"] - } - }; - } - } - } - } -} - - - - - diff --git a/src/Library/demos/List Model/main.js b/src/Library/demos/List Model/main.js deleted file mode 100644 index 1a35b2287..000000000 --- a/src/Library/demos/List Model/main.js +++ /dev/null @@ -1,105 +0,0 @@ -import Gio from "gi://Gio"; -import Gdk from "gi://Gdk"; -import GObject from "gi://GObject"; -import Gtk from "gi://Gtk"; -import Adw from "gi://Adw"; - -const stack = workbench.builder.get_object("stack"); -const list_box = workbench.builder.get_object("list_box"); -const flow_box = workbench.builder.get_object("flow_box"); -const add = workbench.builder.get_object("add"); -const remove = workbench.builder.get_object("remove"); -const list_box_editable = workbench.builder.get_object("list_box_editable"); -const search_entry = workbench.builder.get_object("search_entry"); - -//Model -const model = new Gtk.StringList({ - strings: ["Default Item 1", "Default Item 2", "Default Item 3"], -}); -let item = 1; - -model.connect("items-changed", (list, position, removed, added) => { - console.log( - `position: ${position}, Item removed? ${Boolean( - removed, - )}, Item added? ${Boolean(added)}`, - ); -}); - -//Filter-Model -const search_expression = Gtk.PropertyExpression.new( - Gtk.StringObject, - null, - "string", -); -const filter = new Gtk.StringFilter({ - expression: search_expression, - ignore_case: true, - match_mode: Gtk.StringFilterMatchMode.SUBSTRING, -}); -const filter_model = new Gtk.FilterListModel({ - model: model, - filter: filter, - incremental: true, -}); - -function createItemForListBox(listItem) { - const listRow = new Adw.ActionRow({ - title: listItem.string, - }); - return listRow; -} - -function createItemForFlowBox(listItem) { - const listBox = new Adw.Bin({ - width_request: 160, - height_request: 160, - css_classes: ["card"], - valign: Gtk.Align.START, - child: new Gtk.Label({ - label: listItem.string, - halign: Gtk.Align.CENTER, - hexpand: true, - valign: Gtk.Align.CENTER, - }), - }); - return listBox; -} - -function createItemForFilterModel(listItem) { - const listRow = new Adw.ActionRow({ - title: listItem.string, - }); - return listRow; -} - -list_box.bind_model(model, createItemForListBox); -flow_box.bind_model(model, createItemForFlowBox); -list_box_editable.bind_model(filter_model, createItemForFilterModel); - -// Controller -add.connect("clicked", () => { - const new_item = `New Item ${item}`; - model.append(new_item); - item++; -}); - -remove.connect("clicked", () => { - const selectedRow = list_box_editable.get_selected_row(); - const index = selectedRow.get_index(); - model.remove(index); -}); - -search_entry.connect("search-changed", () => { - const searchText = search_entry.get_text(); - filter.search = searchText; -}); - -// View -stack.connect("notify::visible-child", () => { - console.log("View changed"); -}); - -list_box_editable.connect("row-selected", () => { - remove.sensitive = list_box_editable.get_selected_row() !== null; -}); diff --git a/src/Library/demos/List Model/main.json b/src/Library/demos/List Model/main.json deleted file mode 100644 index c4e5d0741..000000000 --- a/src/Library/demos/List Model/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "layout", - "description": "List models are a simple interface for ordered lists of GObject instances", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/List Model/main.vala b/src/Library/demos/List Model/main.vala deleted file mode 100644 index 7004f74ef..000000000 --- a/src/Library/demos/List Model/main.vala +++ /dev/null @@ -1,100 +0,0 @@ -#! /usr/bin/env -S vala workbench.vala --pkg libadwaita-1 - -private Gtk.Stack stack; -private Gtk.ListBox list_box; -private Gtk.FlowBox flow_box; -private Gtk.ListBox list_box_editable; -private Gtk.SearchEntry search_entry; -private Gtk.Button add; -private Gtk.Button remove_button; - -public void main () { - stack = (Gtk.Stack) workbench.builder.get_object ("stack"); - list_box = (Gtk.ListBox) workbench.builder.get_object ("list_box"); - flow_box = (Gtk.FlowBox) workbench.builder.get_object ("flow_box"); - list_box_editable = (Gtk.ListBox) workbench.builder.get_object ("list_box_editable"); - search_entry = (Gtk.SearchEntry) workbench.builder.get_object ("search_entry"); - add = (Gtk.Button) workbench.builder.get_object ("add"); - remove_button = (Gtk.Button) workbench.builder.get_object ("remove"); - - // Model - int item = 1; - var model = new Gtk.StringList ( - {"Default Item 1", "Default Item 2", "Default Item 3"} - ); - - model.items_changed.connect ((position, removed, added) => { - message (@"position: $position, Item Removed? $(removed > 0), Item Added? $(added > 0)"); - }); - - // Filter Model - var search_expression = new Gtk.PropertyExpression (typeof(Gtk.StringObject), null, "string"); - var filter = new Gtk.StringFilter (search_expression) { - ignore_case = true, - match_mode = SUBSTRING - }; - var filter_model = new Gtk.FilterListModel (model, filter) { - incremental = true - }; - - list_box.bind_model (model, create_item_for_list_box); - flow_box.bind_model (model, create_item_for_flow_box); - list_box_editable.bind_model (filter_model, create_item_for_filter_model); - - // Controllers - add.clicked.connect (() => { - model.append (@"New Item $item"); - item++; - }); - - search_entry.search_changed.connect (() => { - string search_text = search_entry.text; - filter.search = search_text; - }); - - remove_button.clicked.connect (() => { - Gtk.ListBoxRow selected_row = list_box_editable.get_selected_row (); - model.remove (selected_row.get_index ()); - }); - - // View - stack.notify["visible-child"].connect (() => { - message ("View Changed"); - }); - - list_box_editable.row_selected.connect (() => { - remove_button.sensitive = list_box_editable.get_selected_row () != null; - }); -} - -private Gtk.Widget create_item_for_list_box (Object item) { - var string_object = (Gtk.StringObject) item; - - var list_row = new Adw.ActionRow () { - title = string_object.string - }; - return list_row; -} - -private Gtk.Widget create_item_for_flow_box (Object item) { - var string_object = (Gtk.StringObject) item; - var label = new Gtk.Label (string_object.string) { - halign = CENTER, - valign = CENTER, - hexpand = true, - width_request = 160, - height_request = 160, - css_classes = {"card"} - }; - - return label; -} - -private Gtk.Widget create_item_for_filter_model (Object item) { - var string_object = (Gtk.StringObject) item; - - var list_row = new Adw.ActionRow () { - title = string_object.string - }; - return list_row; -} diff --git a/src/Library/demos/List View Widgets/main.blp b/src/Library/demos/List View Widgets/main.blp deleted file mode 100644 index 155608cc1..000000000 --- a/src/Library/demos/List View Widgets/main.blp +++ /dev/null @@ -1,95 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: _("List View Widgets"); - description: _("List and Grid views present a large dynamic list of model items"); - valign: start; - - Adw.Clamp { - maximum-size: 240; - Box { - orientation: vertical; - spacing: 18; - - LinkButton { - label: _("Documentation"); - uri: "https://docs.gtk.org/gtk4/section-list-widget.html"; - } - - Box { - orientation: horizontal; - halign: center; - LinkButton { - label: _("List View"); - uri: "https://docs.gtk.org/gtk4/class.ListView.html"; - } - LinkButton { - label: _("Grid View"); - uri: "https://docs.gtk.org/gtk4/class.GridView.html"; - } - } - - Box { - halign: center; - styles ["linked"] - Button add { - label: _("Add Item"); - tooltip-text: _("Add Item"); - } - - Button remove { - label: _("Remove Item"); - tooltip-text: _("Remove Item"); - } - } - - Gtk.StackSwitcher { - stack: stack; - halign: center; - } - - Gtk.Stack stack { - transition-type: crossfade; - vexpand: true; - - Gtk.StackPage { - name: "listview"; - title: _("List View"); - child: Frame { - valign: start; - ListView list_view { - enable-rubberband: true; - factory: BuilderListItemFactory { - template ListItem { - child: Gtk.Box { - Gtk.Label { - label: bind template.item as <StringObject>.string; - height-request: 50; - margin-start: 12; - margin-end: 12; - } - }; - } - }; - } - }; - } - - Gtk.StackPage { - name: "gridview"; - title: _("Grid View"); - child: Frame { - valign: start; - GridView grid_view { - orientation: vertical; - max-columns: 4; - min-columns: 4; - enable-rubberband: true; - } - }; - } - } - } - } -} diff --git a/src/Library/demos/List View Widgets/main.js b/src/Library/demos/List View Widgets/main.js deleted file mode 100644 index 1280a122b..000000000 --- a/src/Library/demos/List View Widgets/main.js +++ /dev/null @@ -1,70 +0,0 @@ -import Gtk from "gi://Gtk"; - -const stack = workbench.builder.get_object("stack"); -const list_view = workbench.builder.get_object("list_view"); -const grid_view = workbench.builder.get_object("grid_view"); -const add = workbench.builder.get_object("add"); -const remove = workbench.builder.get_object("remove"); - -//Model -let item = 1; -const string_model = new Gtk.StringList({ - strings: ["Default Item 1", "Default Item 2", "Default Item 3"], -}); - -const model = new Gtk.SingleSelection({ model: string_model }); - -const factory_for_grid_view = new Gtk.SignalListItemFactory(); -factory_for_grid_view.connect("setup", (factory, listItem) => { - const listBox = new Gtk.Box({ - width_request: 160, - height_request: 160, - css_classes: ["card"], - }); - const label = new Gtk.Label({ - halign: Gtk.Align.CENTER, - hexpand: true, - valign: Gtk.Align.CENTER, - }); - listBox.append(label); - listItem.set_child(listBox); -}); -factory_for_grid_view.connect("bind", (factory, listItem) => { - const listBox = listItem.get_child(); - const modelItem = listItem.get_item(); - const labelWidget = listBox.get_last_child(); - - labelWidget.label = modelItem.string; -}); - -//View -model.model.connect("items-changed", (list, position, removed, added) => { - console.log( - `position: ${position}, Item removed? ${Boolean( - removed, - )}, Item added? ${Boolean(added)}`, - ); -}); - -model.connect("selection-changed", () => { - const selected_item = model.get_selected(); - console.log( - `Model item selected from view: ${model.model.get_string(selected_item)}`, - ); -}); - -list_view.model = model; -grid_view.model = model; -grid_view.factory = factory_for_grid_view; - -// Controller -add.connect("clicked", () => { - const new_item = `New item ${item}`; - model.model.append(new_item); - item++; -}); - -remove.connect("clicked", () => { - const selected_item = model.get_selected(); - model.model.remove(selected_item); -}); diff --git a/src/Library/demos/List View Widgets/main.json b/src/Library/demos/List View Widgets/main.json deleted file mode 100644 index ee2799002..000000000 --- a/src/Library/demos/List View Widgets/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "layout", - "description": "List and Grid views present a large dynamic list of model items", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/List View Widgets/main.vala b/src/Library/demos/List View Widgets/main.vala deleted file mode 100644 index bfcba5fb4..000000000 --- a/src/Library/demos/List View Widgets/main.vala +++ /dev/null @@ -1,66 +0,0 @@ -#! /usr/bin/env -S vala workbench.vala --pkg libadwaita-1 - -private Gtk.ListView list_view; -private Gtk.GridView grid_view; -private Gtk.Button add; -private Gtk.Button remove_button; - -public void main () { - list_view = (Gtk.ListView) workbench.builder.get_object ("list_view"); - grid_view = (Gtk.GridView) workbench.builder.get_object ("grid_view"); - add = (Gtk.Button) workbench.builder.get_object ("add"); - remove_button = (Gtk.Button) workbench.builder.get_object ("remove"); - - // Model - int item = 1; - var string_model = new Gtk.StringList ( - {"Default Item 1", "Default Item 2", "Default Item 3"} - ); - var model = new Gtk.SingleSelection (string_model); - - var grid_view_factory = new Gtk.SignalListItemFactory (); - - grid_view_factory.setup.connect ((list_item) => { - var label = new Gtk.Label ("") { - css_classes = {"card"}, - halign = CENTER, - valign = CENTER, - hexpand = true, - height_request = 160, - width_request = 160 - }; - - list_item.child = label; - }); - - grid_view_factory.bind.connect ((list_item) => { - var label_widget = (Gtk.Label) list_item.child; - var model_item = (Gtk.StringObject) list_item.item; - - label_widget.label = model_item.string; - }); - - // View - string_model.items_changed.connect ((position, removed, added) => { - message (@"position: $position, Item Removed? $(removed > 0), Item Added? $(added > 0)"); - }); - - model.selection_changed.connect (() => { - var string_object = (Gtk.StringObject) model.selected_item; - message (@"Model item selected from view: $(string_object.string)"); - }); - - list_view.model = model; - grid_view.model = model; - grid_view.factory = grid_view_factory; - - // Controllers - add.clicked.connect (() => { - string_model.append (@"New Item $item"); - item++; - }); - - remove_button.clicked.connect (() => { - string_model.remove (model.selected); - }); -} diff --git a/src/Library/demos/Location/main.blp b/src/Library/demos/Location/main.blp deleted file mode 100644 index 1c3d585b1..000000000 --- a/src/Library/demos/Location/main.blp +++ /dev/null @@ -1,177 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: _("Location"); - description: _("Request the user location"); - margin-top: 48; - - Adw.Clamp { - maximum-size: 480; - - Box { - orientation: vertical; - halign: center; - - ListBox { - selection-mode: none; - margin-bottom: 18; - - styles ["boxed-list"] - - Adw.ActionRow { - title: _("Distance Threshold"); - subtitle: _("In meters"); - - SpinButton distance_threshold { - valign: center; - wrap: true; - value: 0; - climb-rate: 1; - adjustment: Adjustment { - lower: 0; - upper: 100; - step-increment: 1; - value: 0; - }; - } - } - - Adw.ActionRow { - title: _("Time Threshold"); - subtitle: _("In meters"); - - SpinButton time_threshold { - valign: center; - wrap: true; - value: 0; - climb-rate: 1; - adjustment: Adjustment { - lower: 0; - upper: 100; - step-increment: 1; - value: 0; - }; - } - } - - Adw.ComboRow accuracy_button { - title: _("Accuracy"); - model: Gtk.StringList { - strings [C_("Accuracy", "Exact"), C_("Accuracy", "Street"), C_("Accuracy", "Neighborhood"), C_("Accuracy", "City"), C_("Accuracy", "Country"), C_("Accuracy", "None")] - }; - } - } - - Box { - halign: center; - spacing: 30; - margin-bottom: 24; - - Button start { - label: _("Start Session"); - halign: center; - styles ["suggested-action", "pill"] - } - - Button close { - label: _("Close Session"); - halign: center; - sensitive: false; - styles ["destructive-action", "pill"] - } - } - - Revealer revealer { - transition-duration: 300; - transition-type: slide_up; - - ListBox { - selection-mode: none; - margin-bottom: 18; - - styles ["boxed-list"] - - Adw.ActionRow { - title: _("Latitude"); - subtitle: _("In degrees"); - - Label latitude { - label: _("N/A"); - } - } - - Adw.ActionRow { - title: _("Longitude"); - subtitle: _("In degrees"); - - Label longitude { - label: _("N/A"); - } - } - - Adw.ActionRow { - title: _("Accuracy"); - subtitle: _("In meters"); - - Label accuracy { - label: _("N/A"); - } - } - - Adw.ActionRow { - title: _("Altitude"); - subtitle: _("In meters"); - - Label altitude { - label: _("N/A"); - } - } - - Adw.ActionRow { - title: _("Speed"); - subtitle: _("In meters per second"); - - Label speed { - label: _("N/A"); - } - } - - Adw.ActionRow { - title: _("Heading"); - subtitle: _("In degrees, clockwise"); - - Label heading { - label: _("N/A"); - } - } - - Adw.ActionRow { - title: _("Description"); - - Label description { - label: _("N/A"); - } - } - - Adw.ActionRow { - title: _("Timestamp"); - - Label timestamp { - label: _("N/A"); - } - } - } - } - - LinkButton { - label: "API Reference"; - uri: "https://libportal.org/method.Portal.location_monitor_start.html"; - } - } - } -} - - - - diff --git a/src/Library/demos/Location/main.js b/src/Library/demos/Location/main.js deleted file mode 100644 index 91ee0873b..000000000 --- a/src/Library/demos/Location/main.js +++ /dev/null @@ -1,118 +0,0 @@ -import Xdp from "gi://Xdp"; -import XdpGtk from "gi://XdpGtk4"; -import Gio from "gi://Gio"; -import Gdk from "gi://Gdk"; -import Gtk from "gi://Gtk"; -import Adw from "gi://Adw"; - -Gio._promisify( - Xdp.Portal.prototype, - "location_monitor_start", - "location_monitor_start_finish", -); - -const portal = new Xdp.Portal(); -const parent = XdpGtk.parent_new_gtk(workbench.window); - -const revealer = workbench.builder.get_object("revealer"); -const start = workbench.builder.get_object("start"); -const close = workbench.builder.get_object("close"); -const distance_threshold = workbench.builder.get_object("distance_threshold"); -const time_threshold = workbench.builder.get_object("time_threshold"); -const accuracy_button = workbench.builder.get_object("accuracy_button"); - -const latitude_label = workbench.builder.get_object("latitude"); -const longitude_label = workbench.builder.get_object("longitude"); -const accuracy_label = workbench.builder.get_object("accuracy"); -const altitude_label = workbench.builder.get_object("altitude"); -const speed_label = workbench.builder.get_object("speed"); -const heading_label = workbench.builder.get_object("heading"); -const description_label = workbench.builder.get_object("description"); -const timestamp_label = workbench.builder.get_object("timestamp"); - -let locationAccuracy = Xdp.LocationAccuracy.Exact; -let distanceThreshold = distance_threshold.value; -let timeThreshold = time_threshold.value; - -time_threshold.connect("value-changed", () => { - portal.location_monitor_stop(); - revealer.reveal_child = false; - timeThreshold = time_threshold.value; - console.log("Time threshold changed"); - startSession(); -}); - -distance_threshold.connect("value-changed", () => { - portal.location_monitor_stop(); - revealer.reveal_child = false; - distanceThreshold = distance_threshold.value; - console.log("Distance threshold changed"); - startSession(); -}); - -accuracy_button.connect("notify::selected-item", () => { - console.log("Accuracy changed"); - portal.location_monitor_stop(); - revealer.reveal_child = false; - const accuracy_flag = accuracy_button.selected_item.get_string(); - locationAccuracy = Xdp.LocationAccuracy[accuracy_flag]; - startSession(); -}); - -async function startSession() { - start.sensitive = false; - close.sensitive = true; - const result = await portal.location_monitor_start( - parent, - distanceThreshold, - timeThreshold, - locationAccuracy, - Xdp.LocationMonitorFlags.NONE, - null, - ); - if (result === true) { - console.log("Location access granted"); - revealer.reveal_child = true; - } else { - console.log("Error retrieving location"); - } -} - -portal.connect( - "location-updated", - ( - portal, - latitude, - longitude, - altitude, - accuracy, - speed, - heading, - description, - timestamp_s, - ) => { - latitude_label.label = latitude.toString(); - longitude_label.label = longitude.toString(); - accuracy_label.label = accuracy.toString(); - altitude_label.label = altitude.toString(); - speed_label.label = speed.toString(); - heading_label.label = heading.toString(); - description_label.label = description.toString(); - - const timestamp = new Date(timestamp_s * 1000); // Convert UNIX timestamp to milliseconds - const formattedTimestamp = timestamp.toLocaleString(); // Convert timestamp to local date and time string - timestamp_label.label = formattedTimestamp; - }, -); - -start.connect("clicked", () => { - startSession().catch(logError); -}); - -close.connect("clicked", () => { - start.sensitive = true; - close.sensitive = false; - portal.location_monitor_stop(); - revealer.reveal_child = false; - console.log("Session closed"); -}); diff --git a/src/Library/demos/Location/main.json b/src/Library/demos/Location/main.json deleted file mode 100644 index ffa1fd3a6..000000000 --- a/src/Library/demos/Location/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "platform", - "description": "Request the user location", - "panels": ["code", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Map/main.blp b/src/Library/demos/Map/main.blp deleted file mode 100644 index d4dfdcb30..000000000 --- a/src/Library/demos/Map/main.blp +++ /dev/null @@ -1,76 +0,0 @@ -using Gtk 4.0; -using Adw 1; -using Shumate 1.0; - -Adw.StatusPage { - title: _("Map"); - description: _("Display an interactive map"); - - Adw.Clamp { - Box { - orientation: vertical; - - Box controls { - spacing:6; - halign: center; - - Box { - Box { - Entry entry_latitude { - input-purpose: digits; - placeholder-text: _("Latitude"); - } - - Entry entry_longitude { - input-purpose: digits; - placeholder-text: _("Longitude"); - } - - Button button_go{ - label: _("Go"); - } - - styles ["linked"] - } - } - - Separator { - } - - Box { - ToggleButton button_move { - active: true; - icon-name: "move-tool-symbolic"; - tooltip-text: _("Move Map"); - } - - ToggleButton button_marker { - group: button_move; - icon-name: "map-marker-symbolic"; - tooltip-text: _("Place Marker"); - } - - styles ["linked"] - } - styles ["toolbar"] - } - - Shumate.SimpleMap map_widget { - height-request: 360; - show-zoom-buttons: true; - } - - LinkButton { - label: "API Reference"; - uri: "https://gnome.pages.gitlab.gnome.org/libshumate/index.html"; - } - } - } -} - -Shumate.Marker marker { - Image { - icon-name: "map-marker-symbolic"; - styles ["map-marker"] - } -} diff --git a/src/Library/demos/Map/main.css b/src/Library/demos/Map/main.css deleted file mode 100644 index 3359850ac..000000000 --- a/src/Library/demos/Map/main.css +++ /dev/null @@ -1,3 +0,0 @@ -.map-marker { - color: @red_2; -} diff --git a/src/Library/demos/Map/main.js b/src/Library/demos/Map/main.js deleted file mode 100644 index bb38b29a9..000000000 --- a/src/Library/demos/Map/main.js +++ /dev/null @@ -1,78 +0,0 @@ -import Gtk from "gi://Gtk"; -import Shumate from "gi://Shumate"; - -const map_widget = workbench.builder.get_object("map_widget"); -const registry = Shumate.MapSourceRegistry.new_with_defaults(); - -// Use OpenStreetMap as the source -const map_source = registry.get_by_id(Shumate.MAP_SOURCE_OSM_MAPNIK); -const viewport = map_widget.viewport; - -map_widget.map_source = map_source; -map_widget.map.center_on(0, 0); - -// Reference map source used by MarkerLayer -viewport.reference_map_source = map_source; -viewport.zoom_level = 5; - -const marker_layer = new Shumate.MarkerLayer({ - viewport: viewport, - selection_mode: Gtk.SelectionMode.SINGLE, -}); - -const marker = workbench.builder.get_object("marker"); -marker.set_location(0, 0); -marker_layer.add_marker(marker); -map_widget.map.add_layer(marker_layer); - -const gesture = new Gtk.GestureClick(); -map_widget.add_controller(gesture); - -const button_marker = workbench.builder.get_object("button_marker"); - -gesture.connect("pressed", (_, n_press, x, y) => { - if (button_marker.active) { - const location = viewport.widget_coords_to_location(map_widget, x, y); - marker.set_location(location[0], location[1]); - console.log(`Marker placed at ${location[0]}, ${location[1]}`); - } -}); - -const entry_latitude = workbench.builder.get_object("entry_latitude"); -const entry_longitude = workbench.builder.get_object("entry_longitude"); -const button_go = workbench.builder.get_object("button_go"); - -button_go.connect("clicked", () => { - go_to_location(); -}); - -entry_latitude.connect("activate", () => { - go_to_location(); -}); - -entry_longitude.connect("activate", () => { - go_to_location(); -}); - -function go_to_location() { - const latitude = entry_latitude.text; - const longitude = entry_longitude.text; - if (isNaN(latitude) || isNaN(longitude)) { - console.log("Please enter valid coordinates"); - return; - } - if (latitude > Shumate.MAX_LATITUDE || latitude < Shumate.MIN_LATITUDE) { - console.log( - `Latitudes must be between ${Shumate.MIN_LATITUDE} and ${Shumate.MAX_LATITUDE}`, - ); - return; - } - if (longitude > Shumate.MAX_LONGITUDE || longitude < Shumate.MIN_LONGITUDE) { - console.log( - `Longitudes must be between ${Shumate.MIN_LONGITUDE} and ${Shumate.MAX_LONGITUDE}`, - ); - return; - } - viewport.zoom_level = 5; - map_widget.map.go_to(latitude, longitude); -} diff --git a/src/Library/demos/Map/main.json b/src/Library/demos/Map/main.json deleted file mode 100644 index adb4ca2d5..000000000 --- a/src/Library/demos/Map/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "user_interface", - "description": "Display an interactive map", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Menu Button/main.blp b/src/Library/demos/Menu Button/main.blp deleted file mode 100644 index fc6a33b86..000000000 --- a/src/Library/demos/Menu Button/main.blp +++ /dev/null @@ -1,189 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: _("Menu Button"); - description: _("Displays a popover on button click"); - - Adw.Clamp { - maximum-size: 500; - - Box { - orientation: vertical; - spacing: 6; - - MenuButton primary { - halign: center; - icon-name: "open-menu-symbolic"; - menu-model: primary_button_menu; - primary: true; // May not work in Previewer - } - - Label { - label: _("Primary Menu Button"); - styles ["title-4"] - } - - Label { - label: _("Displays an app-wide menu with standard features"); - - } - - MenuButton secondary { - direction: bind direction_row.selected; - halign: center; - menu-model: secondary_button_menu; - margin-top: 18; - } - - Label { - label: _("Secondary Menu Button"); - styles ["title-4"] - } - - Label { - label: _("Displays view-specific items, typically used with hierarchical navigation and sidebars"); - } - - ListBox { - styles ["boxed-list"] - margin-top: 18; - selection-mode: none; - - Adw.ComboRow direction_row { - title: _("Direction"); - model: StringList { - strings ["Up", "Down", "Left", "Right", "None"] - }; - } - - Adw.ActionRow { - title: _("Circular"); - activatable-widget: circular_switch; - - Switch circular_switch { - valign: center; - } - } - } - - LinkButton { - label: "Human Interface Guidelines"; - uri: "https://developer.gnome.org/hig/patterns/controls/menus.html"; - } - - LinkButton { - label: "Menu Button API Reference"; - uri: "https://docs.gtk.org/gtk4/class.MenuButton.html"; - } - } - } -} - -menu primary_button_menu { - section { - submenu { - label: _("Bookmarks"); - section { - label: _("Learn"); - - item { - label: _("Developer Documentation"); - action: "app.open_uri"; - target: "https://developer.gnome.org/documentation/index.html"; - } - - - item { - label: _("Human Interface Guidelines"); - action: "app.open_uri"; - target: "https://developer.gnome.org/hig/"; - } - - item { - label: _("JavaScript"); - action: "app.open_uri"; - target: "https://gjs.guide"; - } - - item { - label: _("Vala"); - action: "app.open_uri"; - target: "https://wiki.gnome.org/Projects/Vala"; - } - - item { - label: _("Blueprint"); - action: "app.open_uri"; - target: "https://gitlab.gnome.org/jwestman/blueprint-compiler"; - } - } - - section { - label: _("Get help"); - - item { - label: _("Discourse"); - action: "app.open_uri"; - target: "https://discourse.gnome.org/c/platform/5"; - } - - item { - label: _("Matrix"); - action: "app.open_uri"; - target: "https://matrix.to/#/#workbench:gnome.org"; - } - } - } - - item { - label: _("Icon Library"); - action: "app.icon_library"; - } - - submenu { - label: _("Platform Tools"); - - item { - label: _("Adwaita Demo"); - action: "app.platform_tools"; - target: "adwaita-1-demo"; - } - - item { - label: _("GTK Demo"); - action: "app.platform_tools"; - target: "gtk4-demo"; - } - - item { - label: _("GTK Widget Factory"); - action: "app.platform_tools"; - target: "gtk4-widget-factory"; - } - } - } - - item { - label: _("Documentation"); - action: "app.documentation"; - } - - section { - item { - label: _("Keyboard Shortcuts"); - action: "app.shortcuts"; - } - - item { - label: _("About Workbench"); - action: "app.about"; - } - } -} - -menu secondary_button_menu { - item ("Item 1") - item ("Item 2") - item ("Item 3") -} diff --git a/src/Library/demos/Menu Button/main.js b/src/Library/demos/Menu Button/main.js deleted file mode 100644 index f76a77ed4..000000000 --- a/src/Library/demos/Menu Button/main.js +++ /dev/null @@ -1,13 +0,0 @@ -import Gtk from "gi://Gtk"; - -const circular_switch = workbench.builder.get_object("circular_switch"); -const primary_button = workbench.builder.get_object("primary"); -const secondary_button = workbench.builder.get_object("secondary"); - -circular_switch.connect("notify::active", () => { - if (circular_switch.active) { - secondary_button.add_css_class("circular"); - } else { - secondary_button.remove_css_class("circular"); - } -}); diff --git a/src/Library/demos/Menu Button/main.json b/src/Library/demos/Menu Button/main.json deleted file mode 100644 index b13e743ce..000000000 --- a/src/Library/demos/Menu Button/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "controls", - "description": "Displays a popover on button click", - "panels": ["ui", "code", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Notification/main.blp b/src/Library/demos/Notification/main.blp deleted file mode 100644 index f6d353d4b..000000000 --- a/src/Library/demos/Notification/main.blp +++ /dev/null @@ -1,33 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: "Notification"; - description: "Desktop notifications"; - - Box { - orientation: vertical; - halign: center; - - Button button_simple { - label: "Trigger notification"; - margin-bottom: 30; - styles ["pill"] - } - - LinkButton { - label: "Tutorial"; - uri: "https://developer.gnome.org/documentation/tutorials/notifications.html"; - } - - LinkButton { - label: "API Reference"; - uri: "https://docs.gtk.org/gio/class.Notification.html"; - } - - LinkButton { - label: "Human Interface Guidelines"; - uri: "https://developer.gnome.org/hig/patterns/feedback/notifications.html"; - } - } -} diff --git a/src/Library/demos/Notification/main.js b/src/Library/demos/Notification/main.js deleted file mode 100644 index 68661de0c..000000000 --- a/src/Library/demos/Notification/main.js +++ /dev/null @@ -1,39 +0,0 @@ -import Gio from "gi://Gio"; - -const { application, builder } = workbench; - -// https://gjs-docs.gnome.org/gio20/gio.notification -const notification = new Gio.Notification(); - -notification.set_title("Lunch is ready"); -notification.set_body( - "Today we have pancakes and salad, and fruit and cake for dessert", -); -notification.set_default_action("app.notification-reply"); -notification.add_button("Accept", "app.notification-accept"); -notification.add_button("Decline", "app.notification-decline"); - -const icon = new Gio.ThemedIcon({ name: "object-rotate-right-symbolic" }); -notification.set_icon(icon); - -builder.get_object("button_simple").connect("clicked", () => { - application.send_notification("lunch-is-ready", notification); -}); - -const action_reply = new Gio.SimpleAction({ name: "notification-reply" }); -action_reply.connect("activate", () => { - console.log("Reply"); -}); -application.add_action(action_reply); - -const action_accept = new Gio.SimpleAction({ name: "notification-accept" }); -action_accept.connect("activate", () => { - console.log("Accept"); -}); -application.add_action(action_accept); - -const action_decline = new Gio.SimpleAction({ name: "notification-decline" }); -action_decline.connect("activate", () => { - console.log("Decline"); -}); -application.add_action(action_decline); diff --git a/src/Library/demos/Notification/main.json b/src/Library/demos/Notification/main.json deleted file mode 100644 index 58aeaf279..000000000 --- a/src/Library/demos/Notification/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "feedback", - "description": "Desktop notifications are a useful way of communicating with users while they are using other applications.", - "panels": ["code", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Notification/main.vala b/src/Library/demos/Notification/main.vala deleted file mode 100644 index a10ec653e..000000000 --- a/src/Library/demos/Notification/main.vala +++ /dev/null @@ -1,2 +0,0 @@ -// Sorry, this demo is not available in Vala yet. -// see https://github.com/sonnyp/Workbench/issues/110 diff --git a/src/Library/demos/Overlay/image.png b/src/Library/demos/Overlay/image.png deleted file mode 100644 index c9af00623..000000000 Binary files a/src/Library/demos/Overlay/image.png and /dev/null differ diff --git a/src/Library/demos/Overlay/main.blp b/src/Library/demos/Overlay/main.blp deleted file mode 100644 index fa4b079ed..000000000 --- a/src/Library/demos/Overlay/main.blp +++ /dev/null @@ -1,56 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: "Overlay"; - description: "Overlay widgets on top of a each other"; - - Adw.Clamp{ - Overlay { - Picture picture { - } - - [overlay] - Box toolbar{ - margin-start: 24; - margin-end: 24; - margin-bottom:18; - valign: end; - - Button { - icon-name: "skip-backwards-10-symbolic"; - } - - Button { - icon-name: "play-large-symbolic"; - } - - Button { - icon-name: "skip-forward-10-symbolic"; - } - - Scale { - hexpand: true; - orientation: horizontal; - show-fill-level: true; - adjustment: - Adjustment { - lower: 0; - upper: 100; - value:50; - }; - } - - Button { - icon-name: "audio-volume-muted-symbolic"; - } - - styles [ - "toolbar", - "osd", - "darken", - ] - } - } - } -} diff --git a/src/Library/demos/Overlay/main.css b/src/Library/demos/Overlay/main.css deleted file mode 100644 index 0f8b9861c..000000000 --- a/src/Library/demos/Overlay/main.css +++ /dev/null @@ -1,7 +0,0 @@ -.darken { - transition: background-color 0.3s ease-in-out; -} - -.darken:hover { - background-color: black; -} diff --git a/src/Library/demos/Overlay/main.js b/src/Library/demos/Overlay/main.js deleted file mode 100644 index 58f18b865..000000000 --- a/src/Library/demos/Overlay/main.js +++ /dev/null @@ -1,6 +0,0 @@ -import Gio from "gi://Gio"; - -const file = Gio.File.new_for_uri(workbench.resolve("./image.png")); - -const picture = workbench.builder.get_object("picture"); -picture.file = file; diff --git a/src/Library/demos/Overlay/main.json b/src/Library/demos/Overlay/main.json deleted file mode 100644 index c8374c20e..000000000 --- a/src/Library/demos/Overlay/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "layout", - "description": "Overlay widgets on top of each other", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Overlay/main.vala b/src/Library/demos/Overlay/main.vala deleted file mode 100644 index 77a1ad0f3..000000000 --- a/src/Library/demos/Overlay/main.vala +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env -S vala workbench.vala --pkg gio-2.0 --pkg gtk4 - -public void main () { - var file = File.new_for_uri(workbench.resolve("./image.png")); - - var picture = (Gtk.Picture) workbench.builder.get_object("picture"); - picture.file = file; -} diff --git a/src/Library/demos/Platform Tools/main.blp b/src/Library/demos/Platform Tools/main.blp deleted file mode 100644 index b856d5387..000000000 --- a/src/Library/demos/Platform Tools/main.blp +++ /dev/null @@ -1,76 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: "Platform Tools"; - - Box { - orientation: vertical; - - Box { - orientation: vertical; - halign: center; - - Button adwaita-1-demo { - label: "Adwaita Demo"; - action-name: "app.platform_tools"; - action-target: "'adwaita-1-demo'"; - styles ["pill"] - } - LinkButton { - styles ["caption"] - margin-bottom: 30; - label: _("Source code"); - uri: "https://gitlab.gnome.org/GNOME/libadwaita/-/tree/1.2.2/demo"; - } - - Button gtk4-demo { - label: "GTK Demo"; - action-name: "app.platform_tools"; - action-target: "'gtk4-demo'"; - styles ["pill"] - } - LinkButton { - styles ["caption"] - margin-bottom: 30; - label: _("Source code"); - uri: "https://gitlab.gnome.org/GNOME/gtk/-/tree/4.8.3/demos/gtk-demo"; - } - - Button gtk4-widget-factory { - label: "GTK Widget Factory"; - action-name: "app.platform_tools"; - action-target: "'gtk4-widget-factory'"; - styles ["pill"] - } - LinkButton { - styles ["caption"] - margin-bottom: 30; - label: _("Source code"); - uri: "https://gitlab.gnome.org/GNOME/gtk/-/tree/4.8.3/demos/widget-factory"; - } - } - - Box { - halign: center; - orientation: vertical; - Label { - label: _("As with most GTK applications, you can use the keyboard shortcut\nto open the Inspector and select an object to see what it is made of."); - justify: center; - styles ["body"] - } - ShortcutsShortcut { - halign: center; - accelerator: "<Control><Shift>I"; - margin-top: 6; - } - LinkButton { - margin-top: 6; - halign: center; - label: "The GTK Inspector"; - // https://gitlab.gnome.org/Teams/documentation/developer-www/-/issues/40 - uri: "https://blog.gtk.org/2017/04/05/the-gtk-inspector/"; - } - } - } -} diff --git a/src/Library/demos/Platform Tools/main.json b/src/Library/demos/Platform Tools/main.json deleted file mode 100644 index 08092250b..000000000 --- a/src/Library/demos/Platform Tools/main.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "category": "tools", - "description": "Learn about and from GTK Inspector, Adwaita Demo, GTK Demo and GTK Widget Factory", - "panels": ["preview"] -} diff --git a/src/Library/demos/Popovers/main.blp b/src/Library/demos/Popovers/main.blp deleted file mode 100644 index 9d7d7a63c..000000000 --- a/src/Library/demos/Popovers/main.blp +++ /dev/null @@ -1,76 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: "Popovers"; - description: _("Display content in a container anchored to another widget"); - - Box { - orientation: vertical; - - Box { - margin-bottom: 78; - margin-top: 42; - spacing: 42; - halign: center; - - MenuButton { - label: "Plain Popover"; - popover: plain_popover; - } - - MenuButton { - label: "Popover Menu"; - popover: popover_menu; - } - } - - LinkButton { - label: "Popover"; - uri: "https://docs.gtk.org/gtk4/class.Popover.html"; - } - - LinkButton { - label: "Popover Menu"; - uri: "https://docs.gtk.org/gtk4/class.PopoverMenu.html"; - } - - LinkButton { - margin-top: 24; - label: "Human Interface Guidelines"; - uri: "https://developer.gnome.org/hig/patterns/containers/popovers.html"; - } - } -} - -Popover plain_popover { - has-arrow: true; - name: "plain_popover"; - child: Box plain-popover-box { - name: "plain-popover-box"; - - Label { - label: "Plain Popover"; - } - }; -} - -PopoverMenu popover_menu { - name: "popover_menu"; - menu-model: menu_app; -} - -menu menu_app { - section { - item { - label: _("Keyboard Shortcuts"); - action: "app.shortcuts"; - } - - item { - label: _("About WorkBench"); - action: "app.about"; - } - } -} - diff --git a/src/Library/demos/Popovers/main.css b/src/Library/demos/Popovers/main.css deleted file mode 100644 index b4e40803e..000000000 --- a/src/Library/demos/Popovers/main.css +++ /dev/null @@ -1,4 +0,0 @@ -#plain-popover-box { - padding: 42px; -} - diff --git a/src/Library/demos/Popovers/main.js b/src/Library/demos/Popovers/main.js deleted file mode 100644 index 03a104e09..000000000 --- a/src/Library/demos/Popovers/main.js +++ /dev/null @@ -1,10 +0,0 @@ -const popover_ids = ["plain_popover", "popover_menu"]; - -for (const id of popover_ids) { - const popover = workbench.builder.get_object(id); - popover.connect("closed", onClosed); -} - -function onClosed(popover) { - console.log(`${popover.name} closed.`); -} diff --git a/src/Library/demos/Popovers/main.json b/src/Library/demos/Popovers/main.json deleted file mode 100644 index dc0677e26..000000000 --- a/src/Library/demos/Popovers/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "user_interface", - "description": "Popups are used to display content in a container anchored to another widget", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Preferences Window/main.blp b/src/Library/demos/Preferences Window/main.blp deleted file mode 100644 index 9dde9a994..000000000 --- a/src/Library/demos/Preferences Window/main.blp +++ /dev/null @@ -1,182 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.PreferencesWindow pref_window { - default-width: 800; - default-height: 600; - title: _("Preferences"); - - Adw.PreferencesPage appearance_page { - title: _("Appearance"); - icon-name: "brush-monitor-symbolic"; - - Adw.PreferencesGroup { - title: _("Color Settings"); - description: _("Change the color-scheme of the application."); - - Adw.ActionRow { - title: _("Use Dark Mode"); - activatable-widget: dm_switch; - - [suffix] - Switch dm_switch { - halign: center; - valign: center; - } - } - } - - Adw.PreferencesGroup { - title: _("Text Settings"); - description: _("Customize the appearance of text in the application."); - - Adw.ActionRow { - title: _("Font Size"); - - [suffix] - Gtk.SpinButton { - halign: center; - valign: center; - adjustment: - Gtk.Adjustment { - lower: 5; - upper: 20; - step-increment: 1; - value: 11; - }; - } - } - - Adw.ActionRow { - title: _("Font Color"); - - [suffix] - Gtk.ColorDialogButton { - halign: center; - valign: center; - dialog: ColorDialog {}; - } - } - } - - Adw.PreferencesGroup { - title: _("API References"); - - Box { - orientation: horizontal; - margin-top: 12; - - LinkButton { - label: _("PreferencesWindow"); - uri: "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.3/class.PreferencesWindow.html"; - } - - LinkButton { - label: _("PreferencesPage"); - uri: "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.3/class.PreferencesPage.html"; - } - - LinkButton { - label: _("PreferencesGroup"); - uri: "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.3/class.PreferencesGroup.html"; - } - - LinkButton { - label: _("PreferencesRow"); - uri: "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.3/class.PreferencesRow.html"; - } - } - } - } - - Adw.PreferencesPage { - title: _("Behavior"); - icon-name: "settings-symbolic"; - - Adw.PreferencesGroup { - title: _("Interaction Settings"); - description: _("Change how the app behaves during user interaction."); - - // Adw.PreferencesGroup can have suffix widgets like Adw.ActionRows - [header-suffix] - Button{ - halign: center; - valign: center; - icon-name: "settings-symbolic"; - } - - Adw.ActionRow { - title: _("Run on Startup"); - activatable-widget: startup_switch; - - [suffix] - Switch startup_switch { - halign: center; - valign: center; - } - } - - Adw.ActionRow { - title: _("Show Toast"); - activatable-widget: toast_button; - - [suffix] - Button toast_button { - halign: center; - valign: center; - label: _("show toast"); - icon-name: "bread-symbolic"; - } - } - } - - Adw.PreferencesGroup { - title: _("Data Settings"); - description: _("Manage user data related settings."); - - Adw.ActionRow { - title: _("Enable Telemetry"); - activatable-widget: telemetry_switch; - - [suffix] - Switch telemetry_switch{ - halign: center; - valign: center; - } - } - - Adw.ActionRow { - title: _("Enable Auto-Updates"); - activatable-widget: update_switch; - - [suffix] - Switch update_switch { - halign: center; - valign: center; - } - } - - Adw.ActionRow subpage_row { - title: _("Additional Preferences"); - activatable: true; - - [suffix] - Gtk.Image { - icon-name: "go-next-symbolic"; - styles ["dim-label"] - } - } - } - } -} - -Adw.StatusPage subpage { - description: _("Custom Subpage"); - - Gtk.Button subpage_button { - label: _("Go back"); - halign: center; - valign: center; - styles ["suggested-action", "pill"] - } -} diff --git a/src/Library/demos/Preferences Window/main.js b/src/Library/demos/Preferences Window/main.js deleted file mode 100644 index 67a19e8cd..000000000 --- a/src/Library/demos/Preferences Window/main.js +++ /dev/null @@ -1,37 +0,0 @@ -import Adw from "gi://Adw"; - -const pref_window = workbench.builder.get_object("pref_window"); -const dm_switch = workbench.builder.get_object("dm_switch"); -const subpage = workbench.builder.get_object("subpage"); -const subpage_row = workbench.builder.get_object("subpage_row"); -const subpage_button = workbench.builder.get_object("subpage_button"); -const toast_button = workbench.builder.get_object("toast_button"); -const style_manager = Adw.StyleManager.get_default(); - -dm_switch.active = style_manager.dark; - -dm_switch.connect("notify::active", () => { - // When the Switch is toggled, set the color scheme - if (dm_switch.active) { - style_manager.color_scheme = Adw.ColorScheme.FORCE_DARK; - } else { - style_manager.color_scheme = Adw.ColorScheme.FORCE_LIGHT; - } -}); - -// Preferences windows can display subpages -subpage_row.connect("activated", () => { - pref_window.present_subpage(subpage); -}); - -subpage_button.connect("clicked", () => { - pref_window.close_subpage(); -}); - -toast_button.connect("clicked", () => { - const toast = new Adw.Toast({ - title: "Preferences windows can display toasts", - }); - - pref_window.add_toast(toast); -}); diff --git a/src/Library/demos/Preferences Window/main.json b/src/Library/demos/Preferences Window/main.json deleted file mode 100644 index 26dc01976..000000000 --- a/src/Library/demos/Preferences Window/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "user_interface", - "description": "A window containing an application's preferences", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Preferences Window/main.vala b/src/Library/demos/Preferences Window/main.vala deleted file mode 100644 index 5510b9fae..000000000 --- a/src/Library/demos/Preferences Window/main.vala +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env -S vala workbench.vala --pkg gtk4 --pkg libadwaita-1 - -public void main () { - var pref_window = (Adw.PreferencesWindow) workbench.builder.get_object ("pref_window"); - var dm_switch = (Gtk.Switch) workbench.builder.get_object ("dm_switch"); - var subpage = (Adw.StatusPage) workbench.builder.get_object ("subpage"); - var subpage_row = (Adw.ActionRow) workbench.builder.get_object ("subpage_row"); - var subpage_button = (Gtk.Button) workbench.builder.get_object ("subpage_button"); - var toast_button = (Gtk.Button) workbench.builder.get_object ("toast_button"); - var style_manager = Adw.StyleManager.get_default(); - - dm_switch.active = style_manager.dark; - - dm_switch.notify["active"].connect(() => { - // When the Switch is toggled, set the color scheme - if (dm_switch.active) { - style_manager.color_scheme = Adw.ColorScheme.FORCE_DARK; - } else { - style_manager.color_scheme = Adw.ColorScheme.FORCE_LIGHT; - } - }); - - // Preferences windows can display subpages - subpage_row.activated.connect(() => pref_window.present_subpage(subpage)); - - subpage_button.clicked.connect(() => pref_window.close_subpage()); - - toast_button.clicked.connect(() => { - var toast = new Adw.Toast("Preferences windows can display toasts"); - - pref_window.add_toast(toast); - }); -} diff --git a/src/Library/demos/Progress Bar/main.blp b/src/Library/demos/Progress Bar/main.blp deleted file mode 100644 index 622590f24..000000000 --- a/src/Library/demos/Progress Bar/main.blp +++ /dev/null @@ -1,48 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: "Progress Bar"; - description: _("Display the progress of a long running operation"); - - Box { - orientation: vertical; - halign: center; - - ProgressBar first { - fraction: 0.2; - show-text: true; - margin-bottom: 24; - } - - ProgressBar second { - inverted: true; - pulse-step: 0.25; - show-text: true; - text: ""; - margin-bottom: 24; - } - - Label progress_tracker { - label: ""; - margin-bottom: 12; - } - - Button play { - halign: center; - margin-bottom: 24; - icon-name: "media-playback-start-symbolic"; - } - - LinkButton { - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.ProgressBar.html"; - } - - LinkButton{ - label: "Human Interface Guidelines"; - uri: "https://developer.gnome.org/hig/patterns/feedback/progress-bars.html"; - } - } - } - diff --git a/src/Library/demos/Progress Bar/main.js b/src/Library/demos/Progress Bar/main.js deleted file mode 100644 index 20554c95d..000000000 --- a/src/Library/demos/Progress Bar/main.js +++ /dev/null @@ -1,62 +0,0 @@ -import Adw from "gi://Adw"; - -const first_bar = workbench.builder.get_object("first"); -const second_bar = workbench.builder.get_object("second"); -const play = workbench.builder.get_object("play"); -const progress_tracker = workbench.builder.get_object("progress_tracker"); - -const target = Adw.PropertyAnimationTarget.new(first_bar, "fraction"); - -const animation = new Adw.TimedAnimation({ - widget: first_bar, - value_from: 0.2, - value_to: 1, - duration: 11000, - easing: Adw.Easing["LINEAR"], - target: target, -}); - -animation.connect("done", () => { - animation.reset(); -}); - -play.connect("clicked", () => { - animation.play(); - updateTracker(); - pulseProgress(); -}); - -function pulseProgress() { - let counter = 0; - // Time after which progress bar is pulsed - const pulse_period = 500; - // Duration of animation - const duration = 10000; - const increment = pulse_period / duration; - const interval = setInterval(() => { - if (counter >= 1.0) { - clearInterval(interval); - counter = 0; - second_bar.fraction = 0; - return; - } - - second_bar.pulse(); - counter += increment; - }, pulse_period); -} - -function updateTracker() { - let time = 10; - const interval = setInterval(() => { - if (time === 0) { - progress_tracker.label = ""; - clearInterval(interval); - console.log("Operation complete!"); - return; - } - - progress_tracker.label = `${time} seconds remaining…`; - time -= 1; - }, 1000); -} diff --git a/src/Library/demos/Progress Bar/main.json b/src/Library/demos/Progress Bar/main.json deleted file mode 100644 index 65c9d6600..000000000 --- a/src/Library/demos/Progress Bar/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "feedback", - "description": "Display the progress of a long running operation", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Radio Buttons/main.blp b/src/Library/demos/Radio Buttons/main.blp deleted file mode 100644 index 9b24777c7..000000000 --- a/src/Library/demos/Radio Buttons/main.blp +++ /dev/null @@ -1,52 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: _("Radio Buttons"); - description: _("Allow users to make a selection from a set of options."); - - Box { - orientation: vertical; - - Box { - orientation: vertical; - halign: center; - spacing: 12; - - CheckButton radio_button_1 { - active: true; - label: _("Force Light Mode"); - } - - CheckButton radio_button_2 { - label: _("Force Dark Mode"); - group: radio_button_1; - } - - CheckButton radio_button_3 { - label: _("Mixed State"); - group: radio_button_1; - inconsistent: true; - } - - CheckButton radio_button_4 { - label: _("Disabled"); - group: radio_button_1; - sensitive: false; - } - } - - Box { - orientation: vertical; - margin-top: 48; - LinkButton { - label: "Human Interface Guidelines"; - uri: "https://developer.gnome.org/hig/patterns/controls/radio-buttons.html"; - } - LinkButton { - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.CheckButton.html"; - } - } - } -} diff --git a/src/Library/demos/Radio Buttons/main.js b/src/Library/demos/Radio Buttons/main.js deleted file mode 100644 index f6e5e2181..000000000 --- a/src/Library/demos/Radio Buttons/main.js +++ /dev/null @@ -1,10 +0,0 @@ -const radio_button_1 = workbench.builder.get_object("radio_button_1"); -const radio_button_2 = workbench.builder.get_object("radio_button_2"); - -radio_button_1.connect("toggled", () => { - if (radio_button_1.active) console.log("Force Light Mode"); -}); - -radio_button_2.connect("toggled", () => { - if (radio_button_2.active) console.log("Force Dark Mode"); -}); diff --git a/src/Library/demos/Radio Buttons/main.json b/src/Library/demos/Radio Buttons/main.json deleted file mode 100644 index 4c50c0e73..000000000 --- a/src/Library/demos/Radio Buttons/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "controls", - "description": "Allow users to make a selection from a set of options.", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Revealer/image1.png b/src/Library/demos/Revealer/image1.png deleted file mode 100644 index 446dace16..000000000 Binary files a/src/Library/demos/Revealer/image1.png and /dev/null differ diff --git a/src/Library/demos/Revealer/image2.png b/src/Library/demos/Revealer/image2.png deleted file mode 100644 index 45bcb6a3c..000000000 Binary files a/src/Library/demos/Revealer/image2.png and /dev/null differ diff --git a/src/Library/demos/Revealer/main.blp b/src/Library/demos/Revealer/main.blp deleted file mode 100644 index 5bbaf598a..000000000 --- a/src/Library/demos/Revealer/main.blp +++ /dev/null @@ -1,94 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: _("Revealer"); - description: _("Animates the transition of its child from invisible to visible"); - - Box { - orientation: vertical; - spacing: 24; - - Box { - homogeneous: true; - orientation: vertical; - - Box { - margin-start: 24; - margin-end: 24; - orientation: vertical; - spacing: 12; - - ToggleButton button_slide { - halign: center; - label: _("Slide"); - - styles [ - "pill", - ] - } - - Adw.Clamp { - Revealer revealer_slide { - transition-duration: 300; - // https://docs.gtk.org/gtk4/enum.RevealerTransitionType.html - transition-type: slide_up; - - ListBox { - selection-mode: none; - - Adw.ActionRow { - title: _("Item 1"); - } - - Adw.ActionRow { - title: _("Item 2"); - } - - Adw.ActionRow { - title: _("Item 3"); - } - - Adw.ActionRow { - title: _("Item 4"); - } - - styles ["boxed-list"] - } - } - } - } - - Box { - margin-start: 24; - margin-end: 24; - orientation: vertical; - spacing: 12; - - ToggleButton button_crossfade { - halign: center; - label: _("Crossfade"); - - styles ["pill"] - } - - Overlay { - Picture image1 {} - - [overlay] - Revealer revealer_crossfade { - transition-duration: 800; - transition-type: crossfade; - - Picture image2 {} - } - } - } - } - - LinkButton { - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.Revealer.html"; - } - } -} diff --git a/src/Library/demos/Revealer/main.js b/src/Library/demos/Revealer/main.js deleted file mode 100644 index f901d0241..000000000 --- a/src/Library/demos/Revealer/main.js +++ /dev/null @@ -1,27 +0,0 @@ -import Gio from "gi://Gio"; - -const button_slide = workbench.builder.get_object("button_slide"); -const button_crossfade = workbench.builder.get_object("button_crossfade"); -const revealer_slide = workbench.builder.get_object("revealer_slide"); -const revealer_crossfade = workbench.builder.get_object("revealer_crossfade"); -const image1 = workbench.builder.get_object("image1"); -const image2 = workbench.builder.get_object("image2"); - -image1.file = Gio.File.new_for_uri(workbench.resolve("./image1.png")); -image2.file = Gio.File.new_for_uri(workbench.resolve("./image2.png")); - -button_slide.connect("toggled", () => { - revealer_slide.reveal_child = button_slide.active; -}); - -button_crossfade.connect("toggled", () => { - revealer_crossfade.reveal_child = button_crossfade.active; -}); - -revealer_slide.connect("notify::child-revealed", () => { - if (revealer_slide.child_revealed) { - console.log("Slide Revealer Shown"); - } else { - console.log("Slide Revealer Hidden"); - } -}); diff --git a/src/Library/demos/Revealer/main.json b/src/Library/demos/Revealer/main.json deleted file mode 100644 index ff8678ce9..000000000 --- a/src/Library/demos/Revealer/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "user_interface", - "description": "Animates the transition of its child from invisible to visible", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Scale/main.blp b/src/Library/demos/Scale/main.blp deleted file mode 100644 index f25a801a2..000000000 --- a/src/Library/demos/Scale/main.blp +++ /dev/null @@ -1,78 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: "Scale"; - description: _("Slider control to select a value from a range"); - - Box { - orientation: vertical; - halign: center; - - Box{ - halign: center; - - Scale one { - orientation: horizontal; - margin-bottom: 18; - width-request: 130; - draw-value: true; - margin-end: 36; - adjustment: Gtk.Adjustment { - lower: 0; - upper: 100; - value: 0; - }; - } - - Scale two { - orientation: vertical; - margin-bottom: 18; - height-request: 140; - adjustment: Gtk.Adjustment { - lower: 0; - upper: 100; - value: 0; - }; - } - } - Scale disabled { - orientation: horizontal; - sensitive: false; - margin-bottom: 18; - show-fill-level: true; - adjustment: Gtk.Adjustment { - lower: 0; - upper: 50; - value: 25; - }; - } - - ScaleButton button { - orientation: horizontal; - margin-bottom: 18; - halign: center; - adjustment: Gtk.Adjustment { - lower: 0; - upper: 100; - value: 0; - page-increment: 15; - }; - } - - LinkButton { - label: "Scale API Reference"; - uri: "https://docs.gtk.org/gtk4/class.Scale.html"; - } - - LinkButton { - label: "ScaleButton API Reference"; - uri: "https://docs.gtk.org/gtk4/class.ScaleButton.html"; - } - - LinkButton { - label: "Human Interface Guidelines"; - uri: "https://developer.gnome.org/hig/patterns/controls/sliders.html"; - } - } -} diff --git a/src/Library/demos/Scale/main.js b/src/Library/demos/Scale/main.js deleted file mode 100644 index c5b360094..000000000 --- a/src/Library/demos/Scale/main.js +++ /dev/null @@ -1,43 +0,0 @@ -import Gtk from "gi://Gtk"; - -const scale_one = workbench.builder.get_object("one"); -const scale_two = workbench.builder.get_object("two"); -const scale_button = workbench.builder.get_object("button"); - -const marks = { - 0: "A", - 50: "B", - 100: "C", -}; - -const volume_icons = [ - "audio-volume-muted-symbolic", - "audio-volume-high-symbolic", - "audio-volume-low-symbolic", - "audio-volume-medium-symbolic", -]; - -for (const [value, label] of Object.entries(marks)) { - scale_two.add_mark(value, Gtk.PositionType.RIGHT, label); -} - -scale_two.set_increments(25, 100); - -scale_one.connect("value-changed", () => { - const scale_value = scale_one.get_value(); - if (scale_value === scale_one.adjustment.upper) { - console.log("Maximum value reached"); - } else if (scale_value === scale_one.adjustment.lower) { - console.log("Minimum value reached"); - } -}); - -scale_two.connect("value-changed", () => { - const scale_value = scale_two.get_value(); - const label = marks[scale_value]; - if (!label) return; - - console.log(`Mark ${label} reached`); -}); - -scale_button.icons = volume_icons; diff --git a/src/Library/demos/Scale/main.json b/src/Library/demos/Scale/main.json deleted file mode 100644 index 80d0ed19d..000000000 --- a/src/Library/demos/Scale/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "controls", - "description": "Slider control to select a value from a range", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Scale/main.vala b/src/Library/demos/Scale/main.vala deleted file mode 100644 index 707349b9b..000000000 --- a/src/Library/demos/Scale/main.vala +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env -S vala workbench.vala --pkg gtk4 --pkg libadwaita-1 - -private Gtk.Scale scale_one; -private Gtk.Scale scale_two; -private Gtk.ScaleButton scale_button; - -public void main () { - scale_one = (Gtk.Scale) workbench.builder.get_object ("one"); - scale_two = (Gtk.Scale) workbench.builder.get_object ("two"); - scale_button = (Gtk.ScaleButton) workbench.builder.get_object("button"); - - string[] marks = { "A", "B", "C" }; - string[] volume_icons = { - "audio-volume-muted-symbolic", - "audio-volume-high-symbolic", - "audio-volume-low-symbolic", - "audio-volume-medium-symbolic" - }; - - for (int i = 0; i < marks.length; i++) { - scale_two.add_mark(i * 50, Gtk.PositionType.RIGHT, marks[i]); - } - - scale_two.set_increments(25, 100); - - scale_one.value_changed.connect(() => { - var scale_value = scale_one.get_value (); - if (scale_value == scale_one.adjustment.upper) { - message ("Maximum value reached"); - } else if (scale_value == scale_one.adjustment.lower) { - message ("Minimum value reached"); - } - }); - - scale_two.value_changed.connect(() => { - double scale_value = scale_two.get_value (); - - // Check if indicator is on mark - scale_value /= 50; - if (scale_value % 1 != 0) return; - - var label = marks[(int) scale_value]; - if (label == null) return; - - message (@"Mark $(label) reached"); - }); - - scale_button.set_icons(volume_icons); -} diff --git a/src/Library/demos/Screenshot/main.blp b/src/Library/demos/Screenshot/main.blp deleted file mode 100644 index fc58b839e..000000000 --- a/src/Library/demos/Screenshot/main.blp +++ /dev/null @@ -1,32 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: "Screenshot"; - description: _("Take a picture of the screen"); - margin-top: 48; - - Box { - orientation: vertical; - halign: center; - - Box { - Picture picture {} - margin-bottom: 12; - width-request: 256; - height-request: 256; - } - - Button button { - label: _("Take Screenshot"); - margin-bottom: 42; - halign: center; - styles ["suggested-action"] - } - - LinkButton { - label: "API Reference"; - uri: "https://libportal.org/method.Portal.take_screenshot.html"; - } - } -} diff --git a/src/Library/demos/Screenshot/main.js b/src/Library/demos/Screenshot/main.js deleted file mode 100644 index 50179f75d..000000000 --- a/src/Library/demos/Screenshot/main.js +++ /dev/null @@ -1,48 +0,0 @@ -import Xdp from "gi://Xdp"; -import XdpGtk from "gi://XdpGtk4"; -import Gio from "gi://Gio"; -import Adw from "gi://Adw"; - -const portal = new Xdp.Portal(); -const parent = XdpGtk.parent_new_gtk(workbench.window); - -const button = workbench.builder.get_object("button"); -const picture = workbench.builder.get_object("picture"); - -Gio._promisify( - Xdp.Portal.prototype, - "take_screenshot", - "take_screenshot_finish", -); - -button.connect("clicked", () => { - takeScreenshot().catch(logError); -}); - -async function takeScreenshot() { - const flags = Xdp.ScreenshotFlags.NONE; - - let uri; - try { - uri = await portal.take_screenshot(parent, flags, null); - } catch (err) { - showPermissionError(); - return; - } - - const file = Gio.File.new_for_uri(uri); - picture.set_file(file); -} - -function showPermissionError() { - const dialog = new Adw.MessageDialog({ - heading: "Permission Error", - body: "Ensure Screenshot permission is enabled in\nSettings → Apps → Workbench", - close_response: "ok", - modal: true, - transient_for: workbench.window, - }); - - dialog.add_response("ok", "OK"); - dialog.present(); -} diff --git a/src/Library/demos/Screenshot/main.json b/src/Library/demos/Screenshot/main.json deleted file mode 100644 index 28726f891..000000000 --- a/src/Library/demos/Screenshot/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "platform", - "description": "Take a picture of the screen", - "panels": ["code", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Search/main.blp b/src/Library/demos/Search/main.blp deleted file mode 100644 index 7f85976f9..000000000 --- a/src/Library/demos/Search/main.blp +++ /dev/null @@ -1,88 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.Window { - default-width: 800; - default-height: 600; - title: _("Search"); - - Box container { - orientation: vertical; - - HeaderBar { - ToggleButton button_search { - icon-name: "loupe-large-symbolic"; - } - } - - SearchBar searchbar { - key-capture-widget: container; - - SearchEntry searchentry{ - search-delay: 100; - placeholder-text: _("Search for fruits"); - width-request: 400; - } - } - - Stack stack { - transition-type: crossfade; - - Adw.StatusPage main_page { - title: _("Search"); - description: _("Allow items to be located by filtering"); - vexpand: true; - - - Box{ - orientation: vertical; - spacing: 6; - Label { - label: _("API References"); - } - Box{ - halign: center; - LinkButton { - label: _("Search Entry"); - uri: "https://docs.gtk.org/gtk4/class.SearchEntry.html"; - } - LinkButton { - label: _("Search Bar"); - uri: "https://docs.gtk.org/gtk4/class.SearchBar"; - } - } - - LinkButton { - margin-top: 6; - label: _("Human Interface Guidelines"); - uri: "https://developer.gnome.org/hig/patterns/nav/search.html"; - } - } - } - - ScrolledWindow search_page { - Adw.Clamp { - margin-top: 24; - margin-bottom: 24; - ListBox listbox { - valign: start; - hexpand: true; - selection-mode: none; - - styles [ - "boxed-list", - ] - } - - } - } - - Adw.StatusPage status_page { - title: _("No results founds"); - description: _("Try a different search"); - icon-name: "edit-find-symbolic"; - vexpand: true; - } - } - } -} diff --git a/src/Library/demos/Search/main.js b/src/Library/demos/Search/main.js deleted file mode 100644 index 3632d4e0d..000000000 --- a/src/Library/demos/Search/main.js +++ /dev/null @@ -1,65 +0,0 @@ -import Adw from "gi://Adw"; - -const button = workbench.builder.get_object("button_search"); -const searchbar = workbench.builder.get_object("searchbar"); -const searchentry = workbench.builder.get_object("searchentry"); -const stack = workbench.builder.get_object("stack"); -const main_page = workbench.builder.get_object("main_page"); -const search_page = workbench.builder.get_object("search_page"); -const status_page = workbench.builder.get_object("status_page"); -const listbox = workbench.builder.get_object("listbox"); - -button.connect("clicked", () => { - searchbar.search_mode_enabled = !searchbar.search_mode_enabled; -}); - -searchbar.connect("notify::search-mode-enabled", () => { - if (searchbar.search_mode_enabled) { - stack.visible_child = search_page; - } else { - stack.visible_child = main_page; - } -}); - -const fruits = [ - "Apple 🍎️", - "Orange 🍊️", - "Pear 🍐️", - "Watermelon 🍉️", - "Melon 🍈️", - "Pineapple 🍍️", - "Grape 🍇️", - "Kiwi 🥝️", - "Banana 🍌️", - "Peach 🍑️", - "Cherry 🍒️", - "Strawberry 🍓️", - "Blueberry 🫐️", - "Mango 🥭️", - "Bell Pepper 🫑️", -]; - -fruits.forEach((name) => { - const row = new Adw.ActionRow({ - title: name, - }); - listbox.append(row); -}); - -let results_count; - -function filter(row) { - const re = new RegExp(searchentry.text, "i"); - const match = re.test(row.title); - if (match) results_count++; - return match; -} - -listbox.set_filter_func(filter); - -searchentry.connect("search-changed", () => { - results_count = -1; - listbox.invalidate_filter(); - if (results_count === -1) stack.visible_child = status_page; - else if (searchbar.search_mode_enabled) stack.visible_child = search_page; -}); diff --git a/src/Library/demos/Search/main.json b/src/Library/demos/Search/main.json deleted file mode 100644 index 2597ea2f7..000000000 --- a/src/Library/demos/Search/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "navigation", - "description": "Allow items to be located by filtering", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Separator/main.blp b/src/Library/demos/Separator/main.blp deleted file mode 100644 index 526f18dbe..000000000 --- a/src/Library/demos/Separator/main.blp +++ /dev/null @@ -1,73 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: _("Separator"); - description: _("Separates one widget from another"); - - Box { - orientation: vertical; - halign: center; - spacing: 18; - - Box { - orientation: horizontal; - halign: center; - spacing: 18; - - Picture picture_one { - width-request: 180; - height-request: 180; - } - - Separator { - } - - Picture picture_two { - width-request: 180; - height-request: 180; - } - } - - Separator { - } - - Label { - label:_("Separator with toolbar class"); - styles ["title-4"] - } - - Box { - halign: center; - margin-bottom: 24; - spacing: 12; - styles ["toolbar"] - - Label { - label: _("Welcome to Workbench"); - } - Button { - icon-name: "window-minimize-symbolic"; - } - - Separator { - } - - Button { - icon-name: "window-maximize-symbolic"; - } - - Separator { - } - - Button { - icon-name: "window-close-symbolic"; - } - } - - LinkButton { - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.Separator.html"; - } - } -} diff --git a/src/Library/demos/Separator/main.js b/src/Library/demos/Separator/main.js deleted file mode 100644 index a396882b7..000000000 --- a/src/Library/demos/Separator/main.js +++ /dev/null @@ -1,9 +0,0 @@ -import Gio from "gi://Gio"; - -const picture_one = workbench.builder.get_object("picture_one"); -const picture_two = workbench.builder.get_object("picture_two"); - -const file = Gio.File.new_for_uri(workbench.resolve("./image.png")); - -picture_one.file = file; -picture_two.file = file; diff --git a/src/Library/demos/Separator/main.json b/src/Library/demos/Separator/main.json deleted file mode 100644 index ac93dee69..000000000 --- a/src/Library/demos/Separator/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "user_interface", - "description": "Separates one widget from another", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Spin Button/main.blp b/src/Library/demos/Spin Button/main.blp deleted file mode 100644 index 48a85d976..000000000 --- a/src/Library/demos/Spin Button/main.blp +++ /dev/null @@ -1,71 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: _("Spin Button"); - description: _("Let users choose a precise numerical value"); - - Box { - orientation: vertical; - spacing: 12; - - Label { - label: _("Select Time"); - styles ["title-4"] - } - Box{ - halign: center; - spacing: 6; - - SpinButton hours { - halign: center; - orientation: vertical; - wrap: true; - value: 0; - climb-rate: 1; - adjustment: - Adjustment { - lower: 0; - upper: 23; - step-increment: 1; - value: 0; - }; - } - Label { - label: ":"; - } - SpinButton minutes { - halign: center; - orientation: vertical; - wrap: true; - climb-rate: 1; - adjustment: - Adjustment { - lower: 0; - upper: 59; - step-increment: 1; - value: 0; - }; - } - } - - Box { - orientation: vertical; - - LinkButton { - label: "Tutorial"; - uri: "https://developer.gnome.org/documentation/tutorials/beginners/components/spin_button.html"; - } - - LinkButton { - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.SpinButton.html"; - } - - LinkButton { - label: "Human Interface Guidelines"; - uri: "https://developer.gnome.org/hig/patterns/controls/spin-buttons.html"; - } - } - } -} diff --git a/src/Library/demos/Spin Button/main.js b/src/Library/demos/Spin Button/main.js deleted file mode 100644 index 03cffdc63..000000000 --- a/src/Library/demos/Spin Button/main.js +++ /dev/null @@ -1,38 +0,0 @@ -import Gtk from "gi://Gtk"; -const hours = workbench.builder.get_object("hours"); -const minutes = workbench.builder.get_object("minutes"); - -hours.text = "00"; -minutes.text = "00"; - -hours.connect("value-changed", () => { - console.log(tellTime(hours, minutes)); -}); - -hours.connect("output", () => { - const value = hours.adjustment.value; - const text = value.toString().padStart(2, "0"); - hours.text = text; - return true; -}); - -minutes.connect("output", () => { - const value = minutes.adjustment.value; - const text = value.toString().padStart(2, "0"); - minutes.text = text; - return true; -}); - -minutes.connect("value-changed", () => { - console.log(tellTime(hours, minutes)); -}); - -// This only works for one direction -// Add any extra logic to account for wrapping in both directions -minutes.connect("wrapped", () => { - hours.spin(Gtk.SpinType["SPIN_STEP_FORWARD"], 1); -}); - -function tellTime(hours, minutes) { - return `The time selected is ${hours.text}:${minutes.text}`; -} diff --git a/src/Library/demos/Spin Button/main.json b/src/Library/demos/Spin Button/main.json deleted file mode 100644 index 442a0c9d1..000000000 --- a/src/Library/demos/Spin Button/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "controls", - "description": "Let users choose a precise numerical value", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Spinner/main.blp b/src/Library/demos/Spinner/main.blp deleted file mode 100644 index f6d654745..000000000 --- a/src/Library/demos/Spinner/main.blp +++ /dev/null @@ -1,39 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: "Spinner"; - description: _("Display loading state"); - - Box { - orientation: vertical; - halign: center; - - Spinner spinner { - spinning: true; - margin-bottom: 30; - } - - Button button { - icon-name: "media-playback-pause"; - margin-bottom: 30; - halign: center; - styles ["circular"] - } - - LinkButton { - label: "Tutorial"; - uri: "https://developer.gnome.org/documentation/tutorials/beginners/components/spinner.html"; - } - - LinkButton { - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.Spinner.html"; - } - - LinkButton { - label: "Human Interface Guidelines"; - uri: "https://developer.gnome.org/hig/patterns/feedback/spinners.html"; - } - } -} diff --git a/src/Library/demos/Spinner/main.js b/src/Library/demos/Spinner/main.js deleted file mode 100644 index 836339675..000000000 --- a/src/Library/demos/Spinner/main.js +++ /dev/null @@ -1,12 +0,0 @@ -const button = workbench.builder.get_object("button"); -const spinner = workbench.builder.get_object("spinner"); - -button.connect("clicked", () => { - if (spinner.spinning === true) { - button.icon_name = "media-playback-start"; - spinner.spinning = false; - } else { - button.icon_name = "media-playback-pause"; - spinner.spinning = true; - } -}); diff --git a/src/Library/demos/Spinner/main.json b/src/Library/demos/Spinner/main.json deleted file mode 100644 index 7cb696e8e..000000000 --- a/src/Library/demos/Spinner/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "feedback", - "description": "Display loading state", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Spinner/main.vala b/src/Library/demos/Spinner/main.vala deleted file mode 100644 index 9fa9a994a..000000000 --- a/src/Library/demos/Spinner/main.vala +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env -S vala workbench.vala --pkg gtk4 --pkg libadwaita-1 - -public void main () { - Gtk.init (); - - var button = (Gtk.Button) workbench.builder.get_object ("button"); - var spinner = (Gtk.Spinner) workbench.builder.get_object ("spinner"); - - button.clicked.connect (() => { - if (spinner.spinning) { - button.icon_name = "media-playback-start"; - spinner.spinning = false; - } else { - button.icon_name = "media-playback-pause"; - spinner.spinning = true; - } - }); -} diff --git a/src/Library/demos/Stack/main.blp b/src/Library/demos/Stack/main.blp deleted file mode 100644 index 1b07b8e5c..000000000 --- a/src/Library/demos/Stack/main.blp +++ /dev/null @@ -1,112 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Box root_box { - orientation: vertical; - halign: center; - valign: center; - Stack stack { - interpolate-size: bind interpolate_switch.active; - transition-duration: bind transition_adjustment.value; - transition-type: bind transition_row.selected; - - StackPage page1 { - title: _("Page 1"); - child: Adw.StatusPage { - title: _("Stack"); - description: _("A container which only shows one of its children at a time"); - - Label { - label: _("Documentation"); - margin-top: 24; - styles ["title-2"] - } - - Box { - orientation: horizontal; - halign: center; - margin-top: 24; - - LinkButton { - label: _("Stack"); - uri: "https://docs.gtk.org/gtk4/class.Stack.html"; - } - - LinkButton { - label: _("Stack Sidebar"); - uri: "https://docs.gtk.org/gtk4/class.StackSidebar.html"; - } - - LinkButton { - label: _("Stack Switcher"); - uri: "https://docs.gtk.org/gtk4/class.StackSwitcher.html"; - } - } - }; - } - - StackPage page2 { - title: _("Page 2"); - child: Adw.StatusPage { - Adw.PreferencesGroup { - styles ["boxed-list"] - - Adw.ComboRow navigation_row { - title: _("Navigation Widget"); - model: StringList { - strings ["Switcher", "Sidebar"] - }; - } - - Adw.ComboRow transition_row { - title: _("Transition Type"); - model: StringList { - strings [ - "None", "Cross-fade", - "Slide Right", "Slide Left", "Slide Up", "Slide Down", "Slide Left-Right", "Slide Up-Down", - "Over Up", "Over Down", "Over Left", "Over Right", - "Under Up", "Under Down", "Under Left", "Under Right", - "Over Up-Down", "Over Down-Up" , "Over Left-Right", "Over Right-Left", - "Rotate Left", "Rotate Right", "Rotate Left-Right" - ] - }; - } - - Adw.ActionRow { - title: _("Interpolate Size"); - activatable-widget: interpolate_switch; - - Gtk.Switch interpolate_switch { - valign: center; - } - } - - Adw.ActionRow { - title: _("Transition Duration"); - activatable-widget: transition_spin_button; - - Gtk.SpinButton transition_spin_button { - halign: center; - valign: center; - adjustment: Adjustment transition_adjustment { - step-increment: 10; - lower: 100; - upper: 1000; - value: 200; - }; - } - } - } - }; - } - - StackPage { - title: _("Page 3"); - child: - - Adw.StatusPage { - title: _("Last Page"); - }; - } - } -} diff --git a/src/Library/demos/Stack/main.js b/src/Library/demos/Stack/main.js deleted file mode 100644 index c1f9ddb76..000000000 --- a/src/Library/demos/Stack/main.js +++ /dev/null @@ -1,33 +0,0 @@ -import Gtk from "gi://Gtk"; - -const root_box = workbench.builder.get_object("root_box"); -const stack = workbench.builder.get_object("stack"); -const navigation_row = workbench.builder.get_object("navigation_row"); - -let navigation_widget; -let separator; - -if (navigation_row.get_selected() === 0) { - navigation_widget = new Gtk.StackSwitcher({ stack: stack }); - root_box.prepend(navigation_widget); -} else { - navigation_widget = new Gtk.StackSidebar({ stack: stack }); - root_box.prepend(navigation_widget); -} - -navigation_row.connect("notify::selected-item", () => { - if (navigation_row.get_selected() === 0) { - root_box.remove(navigation_widget); - root_box.remove(separator); - navigation_widget = new Gtk.StackSwitcher({ stack: stack }); - root_box.prepend(navigation_widget); - root_box.orientation = Gtk.Orientation.VERTICAL; - } else { - root_box.remove(navigation_widget); - navigation_widget = new Gtk.StackSidebar({ stack: stack }); - separator = new Gtk.Separator(); - root_box.prepend(separator); - root_box.prepend(navigation_widget); - root_box.orientation = Gtk.Orientation.HORIZONTAL; - } -}); diff --git a/src/Library/demos/Stack/main.json b/src/Library/demos/Stack/main.json deleted file mode 100644 index f6050377e..000000000 --- a/src/Library/demos/Stack/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "navigation", - "description": "A container which only shows one of its children at a time", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Stack/main.vala b/src/Library/demos/Stack/main.vala deleted file mode 100644 index 437df3744..000000000 --- a/src/Library/demos/Stack/main.vala +++ /dev/null @@ -1,56 +0,0 @@ -#! /usr/bin/env -S vala workbench.vala --pkg gtk4 --pkg libadwaita-1 --pkg gio-2.0 - -Gtk.Box root_box; -Gtk.Stack stack; -Adw.ComboRow navigation_row; -Adw.ComboRow transition_row; -Gtk.StackSwitcher? stack_switcher = null; -Gtk.StackSidebar? stack_sidebar = null; -Gtk.Separator? separator = null; - -public void main() { - root_box = (Gtk.Box) workbench.builder.get_object("root_box"); - stack = (Gtk.Stack) workbench.builder.get_object("stack"); - navigation_row = (Adw.ComboRow) workbench.builder.get_object("navigation_row"); - transition_row = (Adw.ComboRow) workbench.builder.get_object("transition_row"); - - on_navigation_row_changed(); - - navigation_row.notify["selected"].connect(on_navigation_row_changed); -} - -public void on_navigation_row_changed() { - // Cast the selected item to Gtk.StringObject if possible, otherwise it is null - var selected_item = navigation_row.get_selected_item() as Gtk.StringObject; - - // Ensure selected_item is not null - if (selected_item == null) { - return; - } - - string item_string = selected_item.get_string(); - - if (item_string == "Switcher") { - if (stack_sidebar != null) { - root_box.remove(stack_sidebar); - root_box.remove(separator); - } - - stack_switcher = new Gtk.StackSwitcher(); - stack_switcher.stack = stack; - root_box.prepend(stack_switcher); - root_box.set_orientation(Gtk.Orientation.VERTICAL); - } else if (item_string == "Sidebar") { - if (stack_switcher != null) { - root_box.remove(stack_switcher); - } - - separator = new Gtk.Separator(Gtk.Orientation.HORIZONTAL); - stack_sidebar = new Gtk.StackSidebar(); - stack_sidebar.stack = stack; - root_box.prepend(separator); - root_box.prepend(stack_sidebar); - root_box.set_orientation(Gtk.Orientation.HORIZONTAL); - } -} - diff --git a/src/Library/demos/Status Page/main.blp b/src/Library/demos/Status Page/main.blp deleted file mode 100644 index 2937f9eff..000000000 --- a/src/Library/demos/Status Page/main.blp +++ /dev/null @@ -1,24 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage status_page { - title: _("Status Page"); - description: _("A page used for empty/error states and similar use-cases."); - icon-name: "loupe-symbolic"; - child: child; -} - -Box child { - margin-top: 18; - orientation: vertical; - halign: center; - - LinkButton { - label: "API Reference"; - uri: "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.3/class.StatusPage.html"; - } - LinkButton { - label: "Human Interface Guidelines"; - uri: "https://developer.gnome.org/hig/patterns/feedback/placeholders.html"; - } -} diff --git a/src/Library/demos/Status Page/main.js b/src/Library/demos/Status Page/main.js deleted file mode 100644 index e4436ccbd..000000000 --- a/src/Library/demos/Status Page/main.js +++ /dev/null @@ -1,4 +0,0 @@ -const status_page = workbench.builder.get_object("status_page"); -const child = workbench.builder.get_object("child"); - -status_page.child = child; diff --git a/src/Library/demos/Status Page/main.json b/src/Library/demos/Status Page/main.json deleted file mode 100644 index 5bdd305e2..000000000 --- a/src/Library/demos/Status Page/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "user_interface", - "description": "A page used for empty/error states and similar use-cases.", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Styling with CSS/main.blp b/src/Library/demos/Styling with CSS/main.blp deleted file mode 100644 index 893cb5574..000000000 --- a/src/Library/demos/Styling with CSS/main.blp +++ /dev/null @@ -1,83 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: "Styling with CSS"; - description: "Change the appearence of widgets"; - - Box { - orientation: vertical; - halign: center; - - Label { - // Set the name property to style using an id selector #css_text - name: "css_text"; - label: _("This widget is styled with an id selector"); - margin-bottom: 12; - } - - Label { - // Set styles to style using class selector .css_text - styles ["css_text"] - label: _("This widget is styled with a class selector"); - margin-bottom: 12; - } - - Label basic_label { - // Open the Code panel to see how - label: _("Classes can be applied programmatically"); - margin-bottom: 12; - } - - Box { - name: "linked_box"; - margin-top: 24; - styles ["linked"] - halign: center; - - Button { - icon-name: "stop-large-symbolic"; - } - - Button { - icon-name: "play-large-symbolic"; - } - - Button { - icon-name: "playlist-symbolic"; - } - } - - Label { - label: _("Documentation"); - margin-top: 24; - styles ["title-2"] - } - - Box { - orientation: horizontal; - halign: center; - margin-top: 24; - - LinkButton { - label: _("Overview"); - uri: "https://docs.gtk.org/gtk4/css-overview.html"; - } - - LinkButton { - label: _("Properties"); - uri: "https://docs.gtk.org/gtk4/css-properties.html"; - } - - LinkButton { - label: _("Style Classes"); - uri: "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.3/style-classes.html"; - } - - LinkButton { - label: _("Named Colors"); - uri: "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.3/named-colors.html"; - } - } - } -} diff --git a/src/Library/demos/Styling with CSS/main.css b/src/Library/demos/Styling with CSS/main.css deleted file mode 100644 index 9cc5c5ea7..000000000 --- a/src/Library/demos/Styling with CSS/main.css +++ /dev/null @@ -1,25 +0,0 @@ -#css_text { - color: @blue_1; /* Adwaita Named Color */ -} - -.css_text { - color: @green_1; /* Adwaita Named Color */ -} - -.my_custom_class { - color: @red_1; - font-weight: bold; - text-decoration: underline; -} - -#linked_box > :hover:first-child { - background-color: @destructive_bg_color; -} - -#linked_box > :hover:nth-child(2) { - background-color: @success_bg_color; -} - -#linked_box > :hover:last-child { - background-color: @accent_bg_color; -} diff --git a/src/Library/demos/Styling with CSS/main.js b/src/Library/demos/Styling with CSS/main.js deleted file mode 100644 index c37bbcf48..000000000 --- a/src/Library/demos/Styling with CSS/main.js +++ /dev/null @@ -1,3 +0,0 @@ -const basic_label = workbench.builder.get_object("basic_label"); - -basic_label.add_css_class("css_text"); diff --git a/src/Library/demos/Styling with CSS/main.json b/src/Library/demos/Styling with CSS/main.json deleted file mode 100644 index 5033e04d4..000000000 --- a/src/Library/demos/Styling with CSS/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "user_interface", - "description": "Change the appearence of widgets", - "panels": ["ui", "style", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Switch/main.blp b/src/Library/demos/Switch/main.blp deleted file mode 100644 index 3765eaba6..000000000 --- a/src/Library/demos/Switch/main.blp +++ /dev/null @@ -1,59 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: "Switch"; - description: _("A simple on/off control"); - - Box { - orientation: vertical; - - Switch switch_on { - active: true; - halign: center; - margin-bottom: 6; - } - - Label label_on { - label: "On"; - margin-bottom: 30; - } - - Switch switch_off { - active: false; - halign: center; - margin-bottom: 6; - } - - Label label_off { - label: "Off"; - margin-bottom: 30; - } - - Switch { - sensitive: false; - halign: center; - margin-bottom: 6; - } - - Label { - label: "Disabled"; - margin-bottom: 30; - } - - LinkButton{ - label: "Tutorial"; - uri: "https://developer.gnome.org/documentation/tutorials/beginners/components/switch.html"; - } - - LinkButton{ - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.Switch.html"; - } - - LinkButton{ - label: "Human Interface Guidelines"; - uri: "https://developer.gnome.org/hig/patterns/controls/switches.html"; - } - } -} diff --git a/src/Library/demos/Switch/main.js b/src/Library/demos/Switch/main.js deleted file mode 100644 index 078540d09..000000000 --- a/src/Library/demos/Switch/main.js +++ /dev/null @@ -1,15 +0,0 @@ -const switch_on = workbench.builder.get_object("switch_on"); -const label_on = workbench.builder.get_object("label_on"); - -const switch_off = workbench.builder.get_object("switch_off"); -const label_off = workbench.builder.get_object("label_off"); - -switch_on.connect("notify::active", () => { - label_on.label = switch_on.active ? "On" : "Off"; - switch_off.active = !switch_on.active; -}); - -switch_off.connect("notify::active", () => { - label_off.label = switch_off.active ? "On" : "Off"; - switch_on.active = !switch_off.active; -}); diff --git a/src/Library/demos/Switch/main.json b/src/Library/demos/Switch/main.json deleted file mode 100644 index c7a366bff..000000000 --- a/src/Library/demos/Switch/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "controls", - "description": "A simple on/off control", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Tab View/main.blp b/src/Library/demos/Tab View/main.blp deleted file mode 100644 index 9a55fde0f..000000000 --- a/src/Library/demos/Tab View/main.blp +++ /dev/null @@ -1,66 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.Window { - default-height: 600; - default-width: 800; - title: _("Tab View Demo"); - Adw.TabOverview overview{ - enable-new-tab: true; - view: tab_view; - Box { - orientation: vertical; - Adw.HeaderBar { - Button button_new_tab{ - icon-name: "tab-new-filled-symbolic"; - } - Button button_overview { - icon-name: "grid-filled-symbolic"; - } - } - Adw.TabBar { - view: tab_view; - } - Adw.TabView tab_view{ - Adw.TabPage main_tab_page{ - title: _("Main Page"); - child: - Adw.StatusPage { - hexpand: true; - vexpand: true; - title: _("Tab View"); - description: _("A dynamic tabbed container"); - - Box { - spacing: 6; - orientation: vertical; - Label { - label: _("API References"); - } - Box{ - halign: center; - LinkButton { - label: "Tab View"; - uri: "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.3/class.TabView.html"; - } - LinkButton { - label: "Tab Bar"; - uri: "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.3/class.TabBar.html"; - } - LinkButton { - label: "Tab Overview"; - uri: "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.3/class.TabOverview.html"; - } - } - LinkButton { - label: "Human Interface Guidelines"; - uri: "https://developer.gnome.org/hig/patterns/nav/tabs.html"; - } - } - }; - } - } - } - } -} - diff --git a/src/Library/demos/Tab View/main.js b/src/Library/demos/Tab View/main.js deleted file mode 100644 index 8dde8a91d..000000000 --- a/src/Library/demos/Tab View/main.js +++ /dev/null @@ -1,39 +0,0 @@ -import Gtk from "gi://Gtk"; -import Adw from "gi://Adw"; - -const tab_view = workbench.builder.get_object("tab_view"); -const button_new_tab = workbench.builder.get_object("button_new_tab"); -const overview = workbench.builder.get_object("overview"); -const button_overview = workbench.builder.get_object("button_overview"); -let tab_count = 1; - -overview.connect("create-tab", () => { - return add_page(); -}); - -button_overview.connect("clicked", () => { - overview.open = true; -}); - -button_new_tab.connect("clicked", () => { - add_page(); -}); - -function add_page() { - const title = `Tab ${tab_count}`; - const page = create_page(title); - const tab_page = tab_view.append(page); - tab_page.title = title; - tab_page.live_thumbnail = true; - - tab_count += 1; - return tab_page; -} - -function create_page(title) { - const page = new Adw.StatusPage({ - title: title, - vexpand: true, - }); - return page; -} diff --git a/src/Library/demos/Tab View/main.json b/src/Library/demos/Tab View/main.json deleted file mode 100644 index 65b9fc6af..000000000 --- a/src/Library/demos/Tab View/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "navigation", - "description": "A dynamic tabbed container", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Text Colors/main.blp b/src/Library/demos/Text Colors/main.blp deleted file mode 100644 index d08f6714d..000000000 --- a/src/Library/demos/Text Colors/main.blp +++ /dev/null @@ -1,27 +0,0 @@ -using Gtk 4.0; - -Box main { - orientation: vertical; - halign: center; - valign: center; - spacing: 12; - - Label label { - label: bind entry.text; - - styles [ - "title-1", - ] - } - - Label { - label: "Colored with Pango attributes"; - } - - Entry entry { - margin-top: 12; - text: "Hello, Rainbow!"; - halign: center; - } -} - diff --git a/src/Library/demos/Text Colors/main.js b/src/Library/demos/Text Colors/main.js deleted file mode 100644 index 7a873e398..000000000 --- a/src/Library/demos/Text Colors/main.js +++ /dev/null @@ -1,52 +0,0 @@ -// Pango is a text layout library. It can be used for e.g. formatting text -// https://gjs-docs.gnome.org/pango10~1.0/ -import Pango from "gi://Pango"; - -const label = workbench.builder.get_object("label"); -label.connect("notify::label", updateAttributes); -updateAttributes(); - -function updateAttributes() { - // A Pango Attribute List is used to style the label - label.attributes = rainbow_attributes(label.label); -} - -// Generates an Attribute List that styles the label in rainbow colors. -// The `str` parameter is needed to detect string length + position of spaces -function rainbow_attributes(str) { - const RAINBOW_COLORS = [ - "#D00", - "#C50", - "#E90", - "#090", - "#24E", - "#55E", - "#C3C", - ]; - - // Create a color array with the length needed to color all the letters - const colorArray = []; - for (let i = 0; i < str.length; i = colorArray.length) { - colorArray.push(...RAINBOW_COLORS); - } - // Independent variable from `i` in the following loop to avoid spaces "consuming" a color - let colorIdx = 0; - - let attrListString = ""; - for (let i = 0; i < str.length; i++) { - // Skip space characters - if (str[i] !== " ") { - const startIdx = i; - const endIdx = [i + 1]; - - const color = colorArray[colorIdx]; - colorIdx++; - // See comment below - attrListString += `${startIdx} ${endIdx} foreground ${color},`; - } - } - - // For more info about the syntax for this function, see: - // https://docs.gtk.org/Pango/method.AttrList.to_string.html - return Pango.attr_list_from_string(attrListString); -} diff --git a/src/Library/demos/Text Colors/main.json b/src/Library/demos/Text Colors/main.json deleted file mode 100644 index 4df9b4f64..000000000 --- a/src/Library/demos/Text Colors/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "user_interface", - "description": "Color text programatically with Pango", - "panels": ["code", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Text Fields/main.blp b/src/Library/demos/Text Fields/main.blp deleted file mode 100644 index 3aaab3788..000000000 --- a/src/Library/demos/Text Fields/main.blp +++ /dev/null @@ -1,291 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.Clamp { - Box { - orientation: vertical; - - Label { - label: "Text Fields"; - margin-top: 12; - margin-bottom: 12; - - styles [ - "title-1", - ] - } - - Label { - label: "Single line widgets to enter text"; - margin-bottom: 12; - } - - LinkButton{ - label: "Human Interface Guidelines"; - uri: "https://developer.gnome.org/hig/patterns/controls/text-fields.html"; - margin-bottom: 6; - } - - Label { - label: "Entry"; - margin-top: 12; - halign: start; - - styles [ - "heading", - ] - } - - Label { - label: "A simple but versatile widget that allows single line text entry and editing."; - margin-top: 12; - margin-bottom: 12; - halign: start; - - styles [ - "dim-label", - ] - } - - FlowBox { - homogeneous: true; - row-spacing: 18; - selection-mode: none; - - Box { - orientation: vertical; - - Label { - label: "Regular"; - margin-bottom: 12; - } - - Entry entry { - input-purpose: free_form; - input-hints: no_spellcheck; - } - } - - Box { - orientation: vertical; - - Label { - label: "Placeholder Text"; - margin-bottom: 12; - } - - Entry entry_placeholder{ - placeholder-text: "Enter text here"; - } - } - - Box { - orientation: vertical; - - Label { - label: "Icons"; - margin-bottom: 12; - } - - Entry entry_icon { - primary-icon-name: "about-symbolic"; - primary-icon-activatable: true; - primary-icon-tooltip-text: "Click on Me"; - secondary-icon-name: "bell-symbolic"; - secondary-icon-tooltip-text: "No Click on Me"; - } - } - - Box { - orientation: vertical; - - Label { - label: "Progress Bar"; - margin-bottom: 12; - - } - - Entry entry_progress { - progress-fraction: 0; - primary-icon-name: "media-playback-start-symbolic"; - primary-icon-tooltip-text: "Play Animation"; - } - } - } - - Box { - halign: center; - margin-top: 18; - margin-bottom: 18; - - LinkButton{ - label: "Tutorial"; - uri: "https://developer.gnome.org/documentation/tutorials/beginners/components/entry.html"; - } - - LinkButton{ - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.Entry.html"; - } - } - - Separator { - margin-bottom: 18; - } - - Label { - label: "Completion Entry"; - halign: start; - - styles [ - "heading", - ] - } - - Label { - label: "An entry widget with support for completion."; - margin-top: 12; - margin-bottom: 12; - halign: start; - - styles [ - "dim-label", - ] - } - - - Entry entry_completion { - margin-bottom: 12; - placeholder-text: "Try typing 'apple'"; - } - - LinkButton { - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.EntryCompletion.html"; - margin-top: 18; - margin-bottom: 18; - } - - Separator { - margin-bottom: 18; - } - - Label { - label: "Password Entry"; - halign: start; - - styles [ - "heading", - ] - } - - Label { - label: "An entry with dedicated control for entering secrets and passwords."; - margin-top: 12; - margin-bottom: 12; - halign: start; - - styles [ - "dim-label", - ] - } - - PasswordEntry entry_password{ - show-peek-icon: true; - placeholder-text: "Enter password"; - margin-bottom: 12; - } - - PasswordEntry entry_confirm_password{ - show-peek-icon: true; - placeholder-text: "Confirm password"; - margin-bottom: 12; - } - - Label label_password { - } - - Box { - halign: center; - margin-top: 6; - margin-bottom: 18; - - LinkButton{ - label: "Tutorial"; - uri: "https://developer.gnome.org/documentation/tutorials/beginners/components/password_entry.html"; - } - - LinkButton{ - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.PasswordEntry.html"; - } - } - - Separator { - margin-bottom: 18; - } - - Label { - label: "Style Classes"; - margin-bottom: 12; - halign: start; - - styles [ - "heading", - ] - } - - Box { - homogeneous: true; - margin-bottom: 18; - - Entry { - placeholder-text: "accent"; - margin-start: 6; - margin-end: 6; - styles ["accent"] - } - - Entry { - placeholder-text: "warning"; - margin-start: 6; - margin-end: 6; - styles ["warning"] - } - } - - Box { - homogeneous: true; - margin-bottom: 18; - - Entry { - placeholder-text: "error"; - margin-start: 6; - margin-end: 6; - styles ["error"] - } - - Entry { - placeholder-text: "success"; - margin-start: 6; - margin-end: 6; - styles ["success"] - } - } - - Box { - margin-bottom: 18; - styles ["linked"] - halign: center; - Entry { - placeholder-text: "Street name and number"; - } - Entry { - placeholder-text: "City"; - } - Entry { - placeholder-text: "Country"; - } - } - } -} diff --git a/src/Library/demos/Text Fields/main.js b/src/Library/demos/Text Fields/main.js deleted file mode 100644 index a599943fa..000000000 --- a/src/Library/demos/Text Fields/main.js +++ /dev/null @@ -1,102 +0,0 @@ -import Adw from "gi://Adw"; -import Gtk from "gi://Gtk"; - -const entry = workbench.builder.get_object("entry"); -const entry_placeholder = workbench.builder.get_object("entry_placeholder"); -const entry_icon = workbench.builder.get_object("entry_icon"); -const entry_progress = workbench.builder.get_object("entry_progress"); - -entry.connect("activate", () => { - console.log(`Regular Entry: "${entry.text}" entered`); -}); - -entry_placeholder.connect("activate", () => { - console.log(`Placeholder Entry: "${entry_placeholder.text}" entered`); -}); - -entry_icon.connect("activate", () => { - console.log(`Icon Entry: "${entry_icon.text}" entered`); -}); - -entry_icon.connect("icon-press", () => { - console.log("Icon Pressed!"); -}); - -entry_icon.connect("icon-release", () => { - console.log("Icon Released!"); -}); - -entry_progress.connect("activate", () => { - console.log(`Progress Bar Entry: "${entry_progress.text}" entered`); -}); - -entry_progress.connect("icon-press", () => { - animation.play(); -}); - -const target = Adw.PropertyAnimationTarget.new( - entry_progress, - "progress-fraction", -); - -const animation = new Adw.TimedAnimation({ - widget: entry_progress, - value_from: 0, - value_to: 1, - duration: 2000, - easing: Adw.Easing["LINEAR"], - target: target, -}); - -animation.connect("done", () => { - animation.reset(); -}); - -const entry_completion = workbench.builder.get_object("entry_completion"); -const completion = new Gtk.EntryCompletion(); - -entry_completion.completion = completion; - -const list_store = Gtk.ListStore.new([String]); -const words = ["a", "app", "apple", "apples", "applets", "application"]; -words.forEach((word) => { - const iter = list_store.append(); - list_store.set_value(iter, 0, word); -}); -completion.model = list_store; - -completion.set_text_column(0); -completion.inline_completion = true; -completion.inline_selection = true; - -const entry_password = workbench.builder.get_object("entry_password"); -const entry_confirm_password = workbench.builder.get_object( - "entry_confirm_password", -); -const label_password = workbench.builder.get_object("label_password"); - -entry_password.connect("activate", () => { - label_password.label = validate_password( - entry_password.text, - entry_confirm_password.text, - ); -}); - -entry_confirm_password.connect("activate", () => { - label_password.label = validate_password( - entry_password.text, - entry_confirm_password.text, - ); -}); - -function validate_password(passwd, confirm_passwd) { - if (passwd && confirm_passwd) { - if (passwd === confirm_passwd) { - return "Password made successfully!"; - } else { - return "Both fields should be matching!"; - } - } else { - return "Both fields are mandatory!"; - } -} diff --git a/src/Library/demos/Text Fields/main.json b/src/Library/demos/Text Fields/main.json deleted file mode 100644 index d413350e5..000000000 --- a/src/Library/demos/Text Fields/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "controls", - "description": "Single line widgets to enter text", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Text Fields/main.vala b/src/Library/demos/Text Fields/main.vala deleted file mode 100644 index fbca42854..000000000 --- a/src/Library/demos/Text Fields/main.vala +++ /dev/null @@ -1,76 +0,0 @@ -#!/usr/bin/env -S vala workbench.vala --pkg gtk4 --pkg libadwaita-1 - -private Gtk.Entry entry; -private Gtk.Entry entry_placeholder; -private Gtk.Entry entry_icon; -private Gtk.Entry entry_progress; -private Gtk.Entry entry_completion; -private Gtk.PasswordEntry entry_password; -private Gtk.PasswordEntry entry_confirm_password; -private Gtk.Label label_password; - -private Adw.PropertyAnimationTarget target; -private Adw.TimedAnimation animation; - -public void main () { - entry = (Gtk.Entry) workbench.builder.get_object ("entry"); - entry_placeholder = (Gtk.Entry) workbench.builder.get_object ("entry_placeholder"); - entry_icon = (Gtk.Entry) workbench.builder.get_object ("entry_icon"); - entry_progress = (Gtk.Entry) workbench.builder.get_object ("entry_progress"); - entry_completion = (Gtk.Entry) workbench.builder.get_object ("entry_completion"); - entry_password = (Gtk.PasswordEntry) workbench.builder.get_object ("entry_password"); - entry_confirm_password = (Gtk.PasswordEntry) workbench.builder.get_object ("entry_confirm_password"); - label_password = (Gtk.Label) workbench.builder.get_object ("label_password"); - - entry.activate.connect(() => stdout.printf (@"Regular Entry: \"$(entry.text)\" entered\n")); - entry_placeholder.activate.connect(() => stdout.printf (@"Placeholder Entry: \"$(entry_placeholder.text)\" entered\n")); - entry_icon.activate.connect(() => stdout.printf (@"Icon Entry: \"$(entry_icon.text)\" entered\n")); - entry_icon.icon_press.connect(() => stdout.printf ("Icon Pressed!\n")); - entry_icon.icon_release.connect(() => stdout.printf ("Icon Released!\n")); - entry_progress.activate.connect(() => stdout.printf (@"Progress Bar Entry: \"$(entry_progress.text)\" entered\n")); - entry_progress.icon_press.connect(() => animation.play()); - - target = new Adw.PropertyAnimationTarget(entry_progress, "progress-fraction"); - - animation = new Adw.TimedAnimation(entry_progress, 0, 1, 2000, target) { - easing = Adw.Easing.LINEAR - }; - - animation.done.connect(() => animation.reset()); - - var completion = new Gtk.EntryCompletion(); - entry_completion.completion = completion; - - var list_store = new Gtk.ListStore(1, typeof(string)); - string[] words = { "a", "app", "apple", "apples", "applets", "application" }; - foreach (var word in words) { - Gtk.TreeIter iter; - list_store.append(out iter); - list_store.set_value(iter, 0, word); - } - - completion.model = list_store; - completion.set_text_column(0); - completion.inline_completion = true; - completion.inline_selection = true; - - entry_password.activate.connect(() => { - label_password.label = validate_password(entry_password.text, entry_confirm_password.text); - }); - - entry_confirm_password.activate.connect(() => { - label_password.label = validate_password(entry_password.text, entry_confirm_password.text); - }); -} - -private string validate_password(string password, string confirm_password) { - if (password == "" && confirm_password == "") { - return "Both fields are mandatory!"; - } - - if (password == confirm_password) { - return "Password made successfully!"; - } else { - return "Both fields should be matching!"; - } -} diff --git a/src/Library/demos/Text View/main.blp b/src/Library/demos/Text View/main.blp deleted file mode 100644 index 48b0ff80d..000000000 --- a/src/Library/demos/Text View/main.blp +++ /dev/null @@ -1,76 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: "Text View"; - description: _("A widget that enables text-editing"); - - Box { - orientation: vertical; - halign: center; - - Frame { - margin-bottom: 12; - - ScrolledWindow { - height-request: 180; - width-request: 600; - - TextView textview { - bottom-margin: 12; - left-margin: 12; - right-margin: 12; - top-margin: 12; - editable: true; - cursor-visible: true; - wrap-mode: char; - } - } - } - - Box { - orientation: horizontal; - margin-top: 12; - margin-bottom: 12; - halign: center; - spacing: 18; - - Button copy { - label: _("Copy"); - } - - Button paste { - label: _("Paste"); - } - - Button cut { - label: _("Cut"); - } - } - - Box { - orientation: horizontal; - halign: center; - spacing: 18; - margin-bottom: 18; - - Button select { - halign: center; - label: _("Select all"); - } - - Button clear { - halign: center; - label: _("Clear all"); - } - } - - LinkButton{ - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.TextView.html"; - } - } -} - - - diff --git a/src/Library/demos/Text View/main.js b/src/Library/demos/Text View/main.js deleted file mode 100644 index 1175c31a1..000000000 --- a/src/Library/demos/Text View/main.js +++ /dev/null @@ -1,60 +0,0 @@ -import Gdk from "gi://Gdk"; - -const textview = workbench.builder.get_object("textview"); -const select = workbench.builder.get_object("select"); -const copy = workbench.builder.get_object("copy"); -const cut = workbench.builder.get_object("cut"); -const clear = workbench.builder.get_object("clear"); -const paste = workbench.builder.get_object("paste"); - -const display = Gdk.Display.get_default(); -const clipboard = display.get_clipboard(); - -const { buffer } = textview; -buffer.set_text( - "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Vel elit scelerisque mauris pellentesque pulvinar. Molestie nunc non blandit massa enim nec dui nunc. Turpis in eu mi bibendum neque egestas congue quisque. Sed velit dignissim sodales ut. Massa tempor nec feugiat nisl pretium fusce id velit. Vitae congue eu consequat ac felis donec et. Ultrices sagittis orci a scelerisque purus semper eget duis at. Habitant morbi tristique senectus et netus et malesuada fames ac. Vitae aliquet nec ullamcorper sit amet risus nullam. Tortor at auctor urna nunc. Eget velit aliquet sagittis id consectetur purus. Libero id faucibus nisl tincidunt eget. Nunc consequat interdum varius sit amet mattis. Enim facilisis gravida neque convallis. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Venenatis tellus in metus vulputate eu scelerisque.Sit amet luctus venenatis lectus magna fringilla urna. Eget nunc lobortis mattis aliquam. Urna duis convallis convallis tellus id interdum velit. Fames ac turpis egestas maecenas. Venenatis lectus magna fringilla urna porttitor rhoncus dolor. Egestas erat imperdiet sed euismod nisi porta lorem mollis aliquam. Eget est lorem ipsum dolor sit amet consectetur. Eget nunc lobortis mattis aliquam faucibus purus in. Iaculis nunc sed augue lacus viverra vitae. Euismod elementum nisi quis eleifend. Et pharetra pharetra massa massa ultricies mi quis. Volutpat odio facilisis mauris sit. Enim ut tellus elementum sagittis vitae et. Volutpat sed cras ornare arcu dui vivamus arcu felis. Arcu vitae elementum curabitur vitae nunc sed. Porttitor rhoncus dolor purus non enim. Scelerisque fermentum dui faucibus in ornare quam viverra. Amet purus gravida quis blandit turpis cursus. Faucibus pulvinar elementum integer enim. Aenean et tortor at risus viverra adipiscing at in.Vitae ultricies leo integer malesuada nunc vel. Quis lectus nulla at volutpat diam ut. Donec ac odio tempor orci dapibus ultrices. Justo eget magna fermentum iaculis eu non diam. Mauris cursus mattis molestie a iaculis at erat pellentesque. Phasellus faucibus scelerisque eleifend donec pretium. Blandit volutpat maecenas volutpat blandit aliquam etiam erat velit scelerisque. Habitant morbi tristique senectus et netus. Nunc faucibus a pellentesque sit amet porttitor eget dolor. Nulla malesuada pellentesque elit eget. Tortor vitae purus faucibus ornare suspendisse sed nisi lacus sed. Sollicitudin ac orci phasellus egestas tellus. In hendrerit gravida rutrum quisque non tellus orci ac. Suspendisse ultrices gravida dictum fusce ut placerat. Varius morbi enim nunc faucibus. Tellus elementum sagittis vitae et leo duis ut diam. Velit dignissim sodales ut eu sem integer. Sapien eget mi proin sed libero enim. Odio euismod lacinia at quis risus. Tellus at urna condimentum mattis pellentesque id.", - -1, -); - -function handleCopy() { - if (buffer.get_has_selection()) { - buffer.copy_clipboard(clipboard); - console.log("Text copied to clipboard"); - } else { - console.log("No text selected to copy"); - } -} - -function handlePaste() { - buffer.paste_clipboard(clipboard, null, true); - console.log("Text pasted"); -} - -function handleCut() { - if (buffer.get_has_selection()) { - buffer.cut_clipboard(clipboard, true); - console.log("Text cut to clipboard"); - } else { - console.log("No text selected to cut"); - } -} - -copy.connect("clicked", handleCopy); -paste.connect("clicked", handlePaste); -cut.connect("clicked", handleCut); -select.connect("clicked", () => { - buffer.select_range(buffer.get_start_iter(), buffer.get_end_iter()); -}); -clear.connect("clicked", () => { - buffer.delete(buffer.get_start_iter(), buffer.get_end_iter()); -}); - -textview.connect("copy-clipboard", () => { - console.log("Text copied to clipboard"); -}); -textview.connect("cut-clipboard", () => { - console.log("Text cut to clipboard"); -}); -textview.connect("paste-clipboard", () => { - console.log("Text pasted"); -}); diff --git a/src/Library/demos/Text View/main.json b/src/Library/demos/Text View/main.json deleted file mode 100644 index cd1540e97..000000000 --- a/src/Library/demos/Text View/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "controls", - "description": "A widget that enables text-editing", - "panels": ["code", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Toasts/main.blp b/src/Library/demos/Toasts/main.blp deleted file mode 100644 index c6ec1fe0a..000000000 --- a/src/Library/demos/Toasts/main.blp +++ /dev/null @@ -1,41 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.ToastOverlay overlay { - Adw.StatusPage { - title: "Toasts"; - description: "In-app notifications"; - - Box { - orientation: vertical; - halign: center; - - Button button_simple { - label: "Simple"; - margin-bottom: 30; - styles ["pill"] - } - - Button button_advanced { - label: "Advanced"; - margin-bottom: 30; - styles ["pill"] - } - - LinkButton { - label: "Tutorial"; - uri: "https://developer.gnome.org/documentation/tutorials/beginners/getting_started/adding_toasts.html"; - } - - LinkButton { - label: "API Reference"; - uri: "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.3/class.Toast.html"; - } - - LinkButton { - label: "Human Interface Guidelines"; - uri: "https://developer.gnome.org/hig/patterns/feedback/toasts.html"; - } - } - } -} diff --git a/src/Library/demos/Toasts/main.js b/src/Library/demos/Toasts/main.js deleted file mode 100644 index b6438e964..000000000 --- a/src/Library/demos/Toasts/main.js +++ /dev/null @@ -1,43 +0,0 @@ -import Adw from "gi://Adw"; -import Gio from "gi://Gio"; -import GLib from "gi://GLib"; - -const overlay = workbench.builder.get_object("overlay"); - -const button_simple = workbench.builder.get_object("button_simple"); -function simple() { - const toast = new Adw.Toast({ - title: "Toasts are delicious!", - timeout: 1, - }); - toast.connect("dismissed", () => { - button_simple.sensitive = true; - }); - overlay.add_toast(toast); - button_simple.sensitive = false; -} -button_simple.connect("clicked", simple); - -function advanced() { - const message_id = "42"; - const toast = new Adw.Toast({ - title: "Message sent", - button_label: "Undo", - action_name: "win.undo", - action_target: GLib.Variant.new_string(message_id), - priority: Adw.ToastPriority.HIGH, - }); - overlay.add_toast(toast); -} - -workbench.builder.get_object("button_advanced").connect("clicked", advanced); - -const action_console = new Gio.SimpleAction({ - name: "undo", - parameter_type: new GLib.VariantType("s"), -}); -action_console.connect("activate", (_self, target) => { - const value = target.unpack(); - console.log(`undo ${value}`); -}); -workbench.window.add_action(action_console); diff --git a/src/Library/demos/Toasts/main.json b/src/Library/demos/Toasts/main.json deleted file mode 100644 index c420ab8ee..000000000 --- a/src/Library/demos/Toasts/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "feedback", - "description": "Toasts, or “in-app notifications” are popup banners that contain a label and sometimes a button.", - "panels": ["code", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Toasts/main.vala b/src/Library/demos/Toasts/main.vala deleted file mode 100644 index f794dc771..000000000 --- a/src/Library/demos/Toasts/main.vala +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env -S vala workbench.vala --pkg gtk4 --pkg libadwaita-1 - -public void main () { - var overlay = workbench.builder.get_object ("overlay") as Adw.ToastOverlay; - - var button_simple = workbench.builder.get_object ("button_simple") as Gtk.Button; - button_simple.clicked.connect (() => { - var toast = new Adw.Toast ("Toasts are delicious!") { - timeout = 1 - }; - - toast.dismissed.connect (() => { - button_simple.sensitive = true; - }); - overlay.add_toast (toast); - button_simple.sensitive = false; - }); - - // Sorry, this example is not available in Vala yet. - // see https://github.com/sonnyp/Workbench/issues/110 - var button_advanced = workbench.builder.get_object("button_advanced") as Gtk.Button; - button_advanced.sensitive = false; -} - diff --git a/src/Library/demos/Toggle Button/main.blp b/src/Library/demos/Toggle Button/main.blp deleted file mode 100644 index c98a6548c..000000000 --- a/src/Library/demos/Toggle Button/main.blp +++ /dev/null @@ -1,90 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: "Toggle Button"; - description: _("Represent active-state visually"); - - Box { - orientation: vertical; - - Box { - orientation: horizontal; - halign: center; - margin-bottom: 6; - styles ["linked"] - - ToggleButton button_no_look { - active: true; - icon-name: "eye-not-looking-symbolic"; - } - - ToggleButton button_look { - active: false; - icon-name: "eye-open-negative-filled-symbolic"; - group: button_no_look; - } - } - - Label { - label: "Grouped"; - margin-bottom: 24; - } - - Box { - orientation: horizontal; - halign: center; - spacing: 6; - margin-bottom: 6; - - ToggleButton button_camera { - active: false; - icon-name: "photo-camera-symbolic"; - halign: center; - } - - ToggleButton button_flashlight { - active: false; - icon-name: "flashlight-symbolic"; - halign: center; - } - } - - Label { - label: "Independent"; - margin-bottom: 24; - } - - ToggleButton button_console { - halign: center; - margin-bottom: 6; - - Adw.ButtonContent { - halign: center; - valign: center; - label: "Console"; - icon-name: "terminal-symbolic"; - } - } - - Label { - label: "With label"; - margin-bottom: 24; - } - - LinkButton{ - label: "Tutorial"; - uri: "https://developer.gnome.org/documentation/tutorials/beginners/components/toggle.html"; - } - - LinkButton{ - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.ToggleButton.html"; - } - - LinkButton{ - label: "Human Interface Guidelines"; - uri: "https://developer.gnome.org/hig/patterns/controls/buttons.html"; - } - } -} diff --git a/src/Library/demos/Toggle Button/main.js b/src/Library/demos/Toggle Button/main.js deleted file mode 100644 index 870047a95..000000000 --- a/src/Library/demos/Toggle Button/main.js +++ /dev/null @@ -1,14 +0,0 @@ -const buttons = { - button_no_look: "Don't look", - button_look: "Look", - button_camera: "Camera", - button_flashlight: "Flashlight", - button_console: "Console", -}; - -for (const [id, name] of Object.entries(buttons)) { - const button = workbench.builder.get_object(id); - button.connect("notify::active", () => { - console.log(`${name} ${button.active ? "On" : "Off"}`); - }); -} diff --git a/src/Library/demos/Toggle Button/main.json b/src/Library/demos/Toggle Button/main.json deleted file mode 100644 index ea926971b..000000000 --- a/src/Library/demos/Toggle Button/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "controls", - "description": "Represent active-state visually", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Tooltip/main.blp b/src/Library/demos/Tooltip/main.blp deleted file mode 100644 index f6fbf6668..000000000 --- a/src/Library/demos/Tooltip/main.blp +++ /dev/null @@ -1,70 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: _("Tooltip"); - description: _("Show additional information about controls or app content"); - - Box { - halign: center; - valign: center; - spacing: 24; - orientation: vertical; - - Box { - halign: center; - spacing: 24; - - Button { - tooltip-text: _("Back"); - icon-name: "go-previous-symbolic"; - } - - Button { - tooltip-text: _("New Tab"); - icon-name: "tab-new-filled-symbolic"; - } - - ToggleButton { - tooltip-text: _("Do Not Disturb"); - icon-name: "bell-large-none-symbolic"; - } - - ToggleButton { - icon-name: "dock-left-symbolic"; - tooltip-text: _("Toggle Sidebar"); - } - } - - Box { - spacing: 24; - - Button { - label: _("Open…"); - tooltip-markup: _("<i>Select a File</i>"); - - styles ["pill"] - } - - Button button { - has-tooltip: true; - label: _("Custom"); - } - } - - Box { - spacing: 6; - orientation: vertical; - - LinkButton { - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.Tooltip.html"; - } - - LinkButton { - label: "Human Interface Guidelines"; - uri: "https://developer.gnome.org/hig/patterns/feedback/tooltips"; - } - } - } -} diff --git a/src/Library/demos/Tooltip/main.js b/src/Library/demos/Tooltip/main.js deleted file mode 100644 index e3cc1935c..000000000 --- a/src/Library/demos/Tooltip/main.js +++ /dev/null @@ -1,14 +0,0 @@ -import Gtk from "gi://Gtk"; - -const button = workbench.builder.get_object("button"); - -button.connect("query-tooltip", (button, x, y, mode, tooltip) => { - const custom_tooltip = new Gtk.Box({ spacing: 6 }); - const label = new Gtk.Label({ label: "This is a custom tooltip" }); - const icon = new Gtk.Image({ icon_name: "penguin-alt-symbolic" }); - custom_tooltip.append(label); - custom_tooltip.append(icon); - - tooltip.set_custom(custom_tooltip); - return true; -}); diff --git a/src/Library/demos/Tooltip/main.json b/src/Library/demos/Tooltip/main.json deleted file mode 100644 index 4b5529e1e..000000000 --- a/src/Library/demos/Tooltip/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "feedback", - "description": "Show additional information about controls or app content", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Video/main.blp b/src/Library/demos/Video/main.blp deleted file mode 100644 index 2a553291b..000000000 --- a/src/Library/demos/Video/main.blp +++ /dev/null @@ -1,26 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage page { - title: "Video"; - description: _("Display video with media controls"); - - Box { - orientation: vertical; - halign: center; - - Video video { - autoplay: true; - loop: true; - width-request: 540; - height-request: 540; - } - - LinkButton { - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.Video.html"; - margin-top: 12; - } - } -} - diff --git a/src/Library/demos/Video/main.js b/src/Library/demos/Video/main.js deleted file mode 100644 index 87e261c27..000000000 --- a/src/Library/demos/Video/main.js +++ /dev/null @@ -1,21 +0,0 @@ -import Gtk from "gi://Gtk"; -import Gio from "gi://Gio"; - -const video = workbench.builder.get_object("video"); - -video.file = Gio.File.new_for_uri( - workbench.resolve("./workbench-video.mp4.png"), -); - -const click_gesture = new Gtk.GestureClick(); - -click_gesture.connect("pressed", () => { - const media_stream = video.media_stream; - if (media_stream.playing) { - media_stream.pause(); - } else { - media_stream.play(); - } -}); - -video.add_controller(click_gesture); diff --git a/src/Library/demos/Video/main.json b/src/Library/demos/Video/main.json deleted file mode 100644 index 4750ebf1f..000000000 --- a/src/Library/demos/Video/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "user_interface", - "description": "Display video with media controls", - "panels": ["code", "ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Video/workbench-video.mp4 b/src/Library/demos/Video/workbench-video.mp4 deleted file mode 100644 index 0c157a8c7..000000000 Binary files a/src/Library/demos/Video/workbench-video.mp4 and /dev/null differ diff --git a/src/Library/demos/View Switcher/main.blp b/src/Library/demos/View Switcher/main.blp deleted file mode 100644 index 6d4fee760..000000000 --- a/src/Library/demos/View Switcher/main.blp +++ /dev/null @@ -1,131 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.Window { - width-request: 360; - height-request: 360; - content: Box { - orientation: vertical; - - Adw.HeaderBar { - centering-policy: strict; - title-widget: Adw.ViewSwitcherTitle switcher_title { - stack: stack; - title: _("AdwViewSwitcher Demo"); - }; - } - - Adw.ViewStack stack { - vexpand: true; - - Adw.ViewStackPage page1 { - name: "page1"; - title: _("Favorites"); - icon-name: "star-filled-rounded-symbolic"; - use-underline: true; - child: Adw.StatusPage{ - title: bind page1.title; - icon-name: bind page1.icon-name; - child: - - Box{ - orientation: vertical; - valign: center; - - LinkButton { - label: "API Reference"; - uri: "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.3/class.ViewSwitcher.html"; - } - LinkButton { - label: "Human Interface Guidelines"; - uri: "https://developer.gnome.org/hig/patterns/nav/view-switchers.html"; - } - }; - }; - } - - Adw.ViewStackPage page2 { - name: "page2"; - title: _("Recents"); - icon-name: "clock-alt-symbolic"; - use-underline: true; - child: Adw.StatusPage { - title: bind page2.title; - icon-name: bind page2.icon-name; - child: - - Box { - orientation: vertical; - valign: center; - - LinkButton { - label: "API Reference"; - uri: "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.3/class.ViewSwitcher.html"; - } - LinkButton { - label: "Human Interface Guidelines"; - uri: "https://developer.gnome.org/hig/patterns/nav/view-switchers.html"; - } - }; - }; - } - - - Adw.ViewStackPage page3 { - name: "page3"; - title: _("Notifications"); - icon-name: "bell-symbolic"; - badge-number: 0; - needs-attention: true; - use-underline: true; - child: - - Adw.StatusPage { - title: bind page3.title; - valign: start; - margin-start: 15; - margin-end: 15; - child: - - Adw.Clamp { - maximum-size: 500; - ListBox notification_list { - halign: baseline; - styles["boxed-list"] - } - }; - }; - } - - Adw.ViewStackPage page4 { - name: "page4"; - title: _("Account"); - icon-name: "person-symbolic"; - use-underline: true; - child: Adw.StatusPage{ - title: bind page4.title; - icon-name: bind page4.icon-name; - child: Box{ - orientation: vertical; - valign: center; - - LinkButton { - label: "API Reference"; - uri: "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.3/class.ViewSwitcher.html"; - } - - LinkButton { - label: "Human Interface Guidelines"; - uri: "https://developer.gnome.org/hig/patterns/nav/view-switchers.html"; - } - }; - }; - } - } - - Adw.ViewSwitcherBar switcher_bar { - stack: stack; - reveal: bind switcher_title.title-visible; - } - }; -} diff --git a/src/Library/demos/View Switcher/main.js b/src/Library/demos/View Switcher/main.js deleted file mode 100644 index b1981216c..000000000 --- a/src/Library/demos/View Switcher/main.js +++ /dev/null @@ -1,37 +0,0 @@ -import Adw from "gi://Adw"; -import Gtk from "gi://Gtk"; - -const notifications_page = workbench.builder.get_object("page3"); -const notification_list = workbench.builder.get_object("notification_list"); - -let notification_count = 5; -notifications_page.badge_number = notification_count; - -for (let i = 0; i < notification_count; i++) { - const notification_row = new Adw.ActionRow({ - selectable: false, - }); - - notification_row.title = "Notification"; - - const button = new Gtk.Button({ - halign: "center", - valign: "center", - margin_top: "10", - margin_bottom: "10", - icon_name: "check-plain-symbolic", - }); - - button.connect("clicked", () => { - notifications_page.badge_number = --notification_count; - notification_list.remove(notification_row); - - if (notifications_page.badge_number === 0) { - notifications_page.needs_attention = false; - } - }); - - notification_row.add_suffix(button); - - notification_list.append(notification_row); -} diff --git a/src/Library/demos/View Switcher/main.json b/src/Library/demos/View Switcher/main.json deleted file mode 100644 index 8ee8a01db..000000000 --- a/src/Library/demos/View Switcher/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "navigation", - "description": "View Switchers allow users to switch between different predefined pages", - "panels": ["code", "ui", "preview"], - "autorun": true -} diff --git a/src/Library/demos/View Switcher/main.vala b/src/Library/demos/View Switcher/main.vala deleted file mode 100644 index 89e32b162..000000000 --- a/src/Library/demos/View Switcher/main.vala +++ /dev/null @@ -1,38 +0,0 @@ -#! /usr/bin/env -S vala workbench.vala --pkg gtk4 --pkg libadwaita-1 - -public void main() { - var notifications_page = workbench.builder.get_object("page3") as Adw.ViewStackPage; - var notification_list = workbench.builder.get_object("notification_list") as Gtk.ListBox; - - int notification_count = 5; - - notifications_page.badge_number = notification_count; - - for (int i = 0; i < notification_count; i++){ - var notification_row = new Adw.ActionRow(){ - title = "Notification", - selectable = false, - }; - - var button = new Gtk.Button(){ - halign = Gtk.Align.CENTER, - valign = Gtk.Align.CENTER, - margin_top = 10, - margin_bottom = 10, - icon_name = "check-plain-symbolic" - }; - - button.clicked.connect( () => { - notifications_page.badge_number = --notification_count; - notification_list.remove(notification_row); - - if (notifications_page.badge_number == 0) - notifications_page.needs_attention = false; - }); - - notification_row.add_suffix(button); - - notification_list.append(notification_row); - } -} - diff --git a/src/Library/demos/Wallpaper/main.blp b/src/Library/demos/Wallpaper/main.blp deleted file mode 100644 index a910b6985..000000000 --- a/src/Library/demos/Wallpaper/main.blp +++ /dev/null @@ -1,25 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: _("Wallpaper"); - description: _("Request to set the user desktop background image"); - margin-top: 48; - - Box { - orientation: vertical; - halign: center; - - Button button { - label: _("Set Wallpaper"); - margin-bottom: 42; - halign: center; - styles ["suggested-action", "pill"] - } - - LinkButton { - label: "API Reference"; - uri: "https://libportal.org/method.Portal.set_wallpaper.html"; - } - } -} diff --git a/src/Library/demos/Wallpaper/main.js b/src/Library/demos/Wallpaper/main.js deleted file mode 100644 index 1b18b310f..000000000 --- a/src/Library/demos/Wallpaper/main.js +++ /dev/null @@ -1,32 +0,0 @@ -import Gio from "gi://Gio"; -import Xdp from "gi://Xdp"; -import XdpGtk from "gi://XdpGtk4"; - -Gio._promisify(Xdp.Portal.prototype, "set_wallpaper", "set_wallpaper_finish"); - -const portal = new Xdp.Portal(); -const parent = XdpGtk.parent_new_gtk(workbench.window); -const button = workbench.builder.get_object("button"); - -const uri = workbench.resolve("./wallpaper.png"); - -async function onClicked() { - const success = await portal.set_wallpaper( - parent, - uri, - Xdp.WallpaperFlags.PREVIEW | - Xdp.WallpaperFlags.BACKGROUND | - Xdp.WallpaperFlags.LOCKSCREEN, - null, - ); - - if (success) { - console.log("Wallpaper set successfully"); - } else { - console.log("Could not set wallpaper"); - } -} - -button.connect("clicked", () => { - onClicked().catch(logError); -}); diff --git a/src/Library/demos/Wallpaper/main.json b/src/Library/demos/Wallpaper/main.json deleted file mode 100644 index 396728682..000000000 --- a/src/Library/demos/Wallpaper/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "platform", - "description": "Request to set the user desktop background image", - "panels": ["code", "preview"], - "autorun": true -} diff --git a/src/Library/demos/Wallpaper/wallpaper.png b/src/Library/demos/Wallpaper/wallpaper.png deleted file mode 100644 index ae33fbced..000000000 Binary files a/src/Library/demos/Wallpaper/wallpaper.png and /dev/null differ diff --git a/src/Library/demos/Web View/main.blp b/src/Library/demos/Web View/main.blp deleted file mode 100644 index e90ed9c65..000000000 --- a/src/Library/demos/Web View/main.blp +++ /dev/null @@ -1,74 +0,0 @@ -using Gtk 4.0; -using Adw 1; -using WebKit 6.0; - -Adw.Clamp { - maximum-size: 700; - - Box { - orientation: vertical; - - Box { - orientation: vertical; - margin-top: 12; - margin-bottom: 12; - spacing: 6; - - Label { - label: "Web View"; - - styles ["title-1"] - } - - Label { - label: "Load and display webpages and HTML"; - } - } - - Box controls { - spacing: 6; - - Button button_back { - icon-name: "arrow1-left-symbolic"; - tooltip-text: _("Back"); - } - - Button button_forward { - icon-name: "arrow1-right-symbolic"; - tooltip-text: _("Forward"); - } - - Entry url_bar { - input-purpose: url; - hexpand: true; - } - - Button button_reload { - icon-name: "refresh-symbolic"; - tooltip-text: _("Reload"); - } - - Button button_stop { - icon-name: "stop-sign-symbolic"; - tooltip-text: _("Stop"); - } - } - - Frame { - margin-top: 18; - margin-bottom: 18; - WebKit.WebView web_view { - zoom-level: 0.8; - vexpand: true; - hexpand: true; - styles ["view"] - } - } - - LinkButton { - margin-bottom: 12; - label: "API Reference"; - uri: "https://webkitgtk.org/reference/webkit2gtk/stable/class.WebView.html"; - } - } -} diff --git a/src/Library/demos/Web View/main.js b/src/Library/demos/Web View/main.js deleted file mode 100644 index 7e6c9e39f..000000000 --- a/src/Library/demos/Web View/main.js +++ /dev/null @@ -1,87 +0,0 @@ -import WebKit from "gi://WebKit"; -import GObject from "gi://GObject"; -import GLib from "gi://GLib"; - -const container = workbench.builder.get_object("container"); -const button_back = workbench.builder.get_object("button_back"); -const button_forward = workbench.builder.get_object("button_forward"); -const button_reload = workbench.builder.get_object("button_reload"); -const button_stop = workbench.builder.get_object("button_stop"); -const url_bar = workbench.builder.get_object("url_bar"); -const web_view = workbench.builder.get_object("web_view"); - -// URL bar displays the current loaded page -web_view.bind_property( - "uri", - url_bar.buffer, - "text", - GObject.BindingFlags.DEFAULT, -); - -web_view.load_uri("https://www.gnome.org/"); - -url_bar.connect("activate", () => { - let url = url_bar.buffer.text; - const scheme = GLib.Uri.peek_scheme(url); - if (scheme == null) { - url = `http://${url}`; - } - web_view.load_uri(url); -}); - -button_forward.connect("clicked", () => { - web_view.go_forward(); -}); - -button_back.connect("clicked", () => { - web_view.go_back(); -}); - -button_reload.connect("clicked", () => { - web_view.reload(); -}); - -button_stop.connect("clicked", () => { - web_view.stop_loading(); -}); - -web_view.connect("load-changed", (view, load_event) => { - switch (load_event) { - case WebKit.LoadEvent.STARTED: - console.log("Page loading started"); - break; - case WebKit.LoadEvent.FINISHED: - console.log("Page loading has finished "); - break; - } -}); - -web_view.connect("load-failed", (view, load_event, fail_url, error) => { - // Dont display error page if it is caused by stop_loading() - if (error.code !== WebKit.NetworkError.CANCELLED) { - web_view.load_alternate_html( - error_page(fail_url, error.message), - fail_url, - null, - ); - } -}); - -web_view.connect("notify::estimated-load-progress", () => { - url_bar.progress_fraction = web_view.estimated_load_progress; - if (url_bar.progress_fraction === 1) { - setTimeout(() => { - url_bar.progress_fraction = 0; - }, 500); - } -}); - -function error_page(fail_url, msg) { - const error = ` - <div style="text-align:center; margin:24px;"> - <h2>An error occurred while loading ${fail_url}</h2> - <p>${msg}</p> - </div> - `; - return error; -} diff --git a/src/Library/demos/Web View/main.json b/src/Library/demos/Web View/main.json deleted file mode 100644 index 4b1763e38..000000000 --- a/src/Library/demos/Web View/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "network", - "description": "Load and display webpages and HTML", - "panels": ["code", "preview"], - "autorun": true -} diff --git a/src/Library/demos/WebSocket Client/main.blp b/src/Library/demos/WebSocket Client/main.blp deleted file mode 100644 index 2890b37bf..000000000 --- a/src/Library/demos/WebSocket Client/main.blp +++ /dev/null @@ -1,55 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Adw.StatusPage { - title: "WebSocket Client"; - description: "Connect to a WebSocket server"; - - Box { - orientation: vertical; - halign: center; - - Entry entry_url { - placeholder-text: "url"; - text: "wss://ws.postman-echo.com/raw"; - margin-bottom: 24; - } - - Button button_connect { - label: "Connect"; - margin-bottom: 24; - } - - Button button_disconnect { - label: "Disconnect"; - sensitive: false; - margin-bottom: 24; - } - - Box { - Entry entry_message { - margin-end: 12; - hexpand: true; - placeholder-text: "message"; - text: "Hello"; - } - - Button button_send { - label: "Send"; - sensitive: false; - } - - margin-bottom: 30; - } - - LinkButton { - label: "GJS Asynchronous Operations"; - uri: "https://gjs.guide/guides/gjs/asynchronous-programming.html#asynchronous-operations"; - } - - LinkButton { - label: "API Reference"; - uri: "https://libsoup.org/libsoup-3.0/class.WebsocketConnection.html"; - } - } -} diff --git a/src/Library/demos/WebSocket Client/main.js b/src/Library/demos/WebSocket Client/main.js deleted file mode 100644 index 285e2d796..000000000 --- a/src/Library/demos/WebSocket Client/main.js +++ /dev/null @@ -1,92 +0,0 @@ -import Soup from "gi://Soup"; -import GLib from "gi://GLib"; -import Gio from "gi://Gio"; - -Gio._promisify( - Soup.Session.prototype, - "websocket_connect_async", - "websocket_connect_finish", -); - -const text_decoder = new TextDecoder("utf-8"); -const text_encoder = new TextEncoder("utf-8"); - -const { builder } = workbench; - -const button_connect = builder.get_object("button_connect"); -const button_disconnect = builder.get_object("button_disconnect"); -const button_send = builder.get_object("button_send"); -const entry_url = builder.get_object("entry_url"); -const entry_message = builder.get_object("entry_message"); - -let connection = null; - -function onOpen() { - console.log("open"); - button_connect.sensitive = false; - button_disconnect.sensitive = true; - button_send.sensitive = true; -} - -function onClosed() { - console.log("closed"); - connection = null; - button_connect.sensitive = true; - button_disconnect.sensitive = false; - button_send.sensitive = false; -} - -function onError(_self, err) { - console.log("error"); - logError(err); -} - -function onMessage(_self, type, message) { - if (type !== Soup.WebsocketDataType.TEXT) return; - const str = text_decoder.decode(message.toArray()); - console.log("received:", str); -} - -function send(message) { - connection.send_message( - Soup.WebsocketDataType.TEXT, - new GLib.Bytes(text_encoder.encode(message)), - ); - console.log("sent:", message); -} - -button_connect.connect("clicked", () => { - connect().catch(logError); -}); - -button_disconnect.connect("clicked", () => { - connection.close(Soup.WebsocketCloseCode.NORMAL, null); -}); - -button_send.connect("clicked", () => { - const message = entry_message.get_text(); - send(message); -}); - -async function connect() { - const session = new Soup.Session(); - const message = new Soup.Message({ - method: "GET", - uri: GLib.Uri.parse(entry_url.get_text(), GLib.UriFlags.NONE), - }); - - // https://gjs-docs.gnome.org/soup30/soup.session#method-websocket_connect_async - connection = await session.websocket_connect_async( - message, - null, - [], - null, - null, - ); - - connection.connect("closed", onClosed); - connection.connect("error", onError); - connection.connect("message", onMessage); - - onOpen(); -} diff --git a/src/Library/demos/WebSocket Client/main.json b/src/Library/demos/WebSocket Client/main.json deleted file mode 100644 index 3512d976a..000000000 --- a/src/Library/demos/WebSocket Client/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "network", - "description": "Using libsoup to establish a WebSocket connection.", - "panels": ["code", "preview"], - "autorun": true -} diff --git a/src/Library/demos/WebSocket Client/main.vala b/src/Library/demos/WebSocket Client/main.vala deleted file mode 100644 index b64bc0781..000000000 --- a/src/Library/demos/WebSocket Client/main.vala +++ /dev/null @@ -1,99 +0,0 @@ -#!/usr/bin/env -S vala workbench.vala --pkg gtk4 --pkg libadwaita-1 --pkg libsoup-3.0 - -private Gtk.Button button_connect; -private Gtk.Button button_disconnect; -private Gtk.Button button_send; -private Soup.WebsocketConnection connection; - -public void main () { - button_connect = workbench.builder.get_object ("button_connect") as Gtk.Button; - button_disconnect = workbench.builder.get_object ("button_disconnect") as Gtk.Button; - button_send = workbench.builder.get_object ("button_send") as Gtk.Button; - var entry_url = workbench.builder.get_object ("entry_url") as Gtk.Entry; - var entry_message = workbench.builder.get_object ("entry_message") as Gtk.Entry; - - button_connect.clicked.connect (() => { - var message_uri = entry_url.get_text (); - stdout.printf ("entry url: " + message_uri + "\n"); - - try { - var uri = GLib.Uri.parse (message_uri, GLib.UriFlags.NONE).to_string (); - var session = new Soup.Session (); - var message = new Soup.Message ( - "GET", - uri - ); - - // https://valadoc.org/libsoup-3.0/Soup.Session.websocket_connect_async.html - session.websocket_connect_async.begin ( - message, - null, - null, - 1, - null, - (obj, res) => { - try { - connection = session.websocket_connect_async.end (res); - } catch (Error err) { - onError (err); - return; - } - - connection.closed.connect (onClosed); - connection.error.connect (onError); - connection.message.connect (onMessage); - - onOpen(); - } - ); - } catch (Error err) { - stderr.printf ("error: " + err.message + "\n"); - return; - } - }); - - button_disconnect.clicked.connect(() => { - connection.close(Soup.WebsocketCloseCode.NORMAL, null); - }); - - button_send.clicked.connect (() => { - var message_text = entry_message.get_text(); - stdout.printf ("preparing to send: " + message_text + "\n"); - send (message_text); - }); -} - -private void onOpen () { - stdout.printf ("open\n"); - button_connect.set_sensitive (false); - button_disconnect.set_sensitive (true); - button_send.set_sensitive (true); -} - -private void onClosed () { - stdout.printf ("closed"); - connection = null; - button_connect.set_sensitive (true); - button_disconnect.set_sensitive (false); - button_send.set_sensitive (false); -} - -private void onError (Error err) { - stdout.printf ("error"); - stderr.printf (err.message); -} - -private void onMessage (int type, Bytes msg) { - if (type != Soup.WebsocketDataType.TEXT) return; - StringBuilder str = new StringBuilder (); - for (int i = 0; i < msg.length; i++) { - str.append_c (((char)msg.get (i))); - } - stdout.printf ("received: " + str.str + "\n"); -} - -private void send (string msg) { - stdout.printf ("sent: " + msg + "\n"); - connection.send_text (msg); -} - diff --git a/src/Library/demos/Welcome/main.blp b/src/Library/demos/Welcome/main.blp deleted file mode 100644 index df398547b..000000000 --- a/src/Library/demos/Welcome/main.blp +++ /dev/null @@ -1,103 +0,0 @@ -using Gtk 4.0; - -Box welcome { - orientation: vertical; - valign: center; - halign: center; - - Image { - name: "logo"; - icon-name: "re.sonny.Workbench"; - pixel-size: 196; - margin-bottom: 30; - styles ["icon-dropshadow"] - } - - Label { - label: "Welcome to Workbench"; - margin-bottom: 30; - styles ["title-1"] - } - - Box subtitle { - orientation: vertical; - halign: center; - margin-bottom: 30; - Label { - label: "Learn and prototype with\nGNOME technologies"; - justify: center; - } - } - - Box { - orientation: vertical; - homogeneous: true; - halign: center; - Box { - margin-bottom: 6; - Image { - icon-name: "update-symbolic"; - margin-end: 12; - icon-size: normal; - } - Label { - label: "Edit Style or UI to update the Preview"; - } - } - - Box { - margin-bottom: 6; - Image { - icon-name: "media-playback-start-symbolic"; - margin-end: 12; - icon-size: normal; - } - Label { - label: "Hit"; - } - ShortcutsShortcut { - accelerator: "<Control>Return"; - margin-start: 12; - } - Label { - label: "to format and run Code"; - } - } - - Box { - margin-bottom: 6; - Image { - icon-name: "media-floppy-symbolic"; - margin-end: 12; - icon-size: normal; - } - Label { - label: "Changes are automatically saved and restored"; - } - } - - Box { - margin-bottom: 6; - Image { - icon-name: "library-symbolic"; - margin-end: 12; - icon-size: normal; - } - Label { - label: "Browse the Library for demos and examples"; - } - } - - Box { - margin-bottom: 6; - Image { - icon-name: "user-bookmarks-symbolic"; - margin-end: 12; - icon-size: normal; - } - Label { - label: "Checkout the Bookmarks menu to learn and get help"; - } - } - } -} diff --git a/src/Library/demos/Welcome/main.css b/src/Library/demos/Welcome/main.css deleted file mode 100644 index 7832a9342..000000000 --- a/src/Library/demos/Welcome/main.css +++ /dev/null @@ -1,35 +0,0 @@ -label { - /* - Replace "inherit" with your favorite color - */ - color: inherit; -} - -#logo { - animation-name: breathing; - animation-duration: 3s; - animation-timing-function: ease-out; - animation-iteration-count: infinite; - animation-direction: normal; - animation-delay: 0s; - animation-fill-mode: none; - animation-play-state: running; -} - -@keyframes breathing { - 0% { - -gtk-icon-transform: scale(0.9); - } - - 25% { - -gtk-icon-transform: scale(1); - } - - 60% { - -gtk-icon-transform: scale(0.9); - } - - 100% { - -gtk-icon-transform: scale(0.9); - } -} diff --git a/src/Library/demos/Welcome/main.js b/src/Library/demos/Welcome/main.js deleted file mode 100644 index c09ef7c82..000000000 --- a/src/Library/demos/Welcome/main.js +++ /dev/null @@ -1,30 +0,0 @@ -import Gtk from "gi://Gtk"; -import Adw from "gi://Adw"; - -const box = workbench.builder.get_object("subtitle"); - -// https://gjs-docs.gnome.org/gtk40/gtk.button -const button = new Gtk.Button({ - label: "Press me", - margin_top: 6, - css_classes: ["suggested-action"], -}); -button.connect("clicked", greet); -box.append(button); - -console.log("Welcome to Workbench!"); - -function greet() { - // https://gjs-docs.gnome.org/adw1~1/adw.messagedialog - const dialog = new Adw.MessageDialog({ - body: "Hello World!", - transient_for: workbench.window, - }); - - dialog.add_response("ok", "OK"); - dialog.connect("response", (self, response) => { - console.log(response); - }); - - dialog.present(); -} diff --git a/src/Library/demos/Welcome/main.json b/src/Library/demos/Welcome/main.json deleted file mode 100644 index 408257580..000000000 --- a/src/Library/demos/Welcome/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "uncategorized", - "description": "The initial welcome demo with instructions on how to use Workbench.", - "panels": ["ui", "preview"], - "autorun": false -} diff --git a/src/Library/demos/Welcome/main.vala b/src/Library/demos/Welcome/main.vala deleted file mode 100644 index fd94651f5..000000000 --- a/src/Library/demos/Welcome/main.vala +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env -S vala workbench.vala --pkg gtk4 --pkg libadwaita-1 - -public void main () { - Gtk.init (); - - var box = workbench.builder.get_object ("subtitle") as Gtk.Box; - - // https://valadoc.org/gtk4/Gtk.Button.html - var button = new Gtk.Button () { - label = "Press me", - margin_top = 6, - css_classes = {"suggested-action"} - }; - button.clicked.connect (greet); - box.append (button); - - stdout.printf ("Welcome to Workbench!\n"); -} - -public void greet () { - // https://valadoc.org/libadwaita-1/Adw.MessageDialog.html - var dialog = new Adw.MessageDialog ( - workbench.window, null, "Hello World!" - ); - - dialog.add_response ("ok", "OK"); - dialog.response.connect ((self, response) => { - stdout.printf ("%s\n", response); - }); - - dialog.present (); -} diff --git a/src/Library/demos/Window/main.blp b/src/Library/demos/Window/main.blp deleted file mode 100644 index 769f97d07..000000000 --- a/src/Library/demos/Window/main.blp +++ /dev/null @@ -1,50 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -Gtk.Window window { - default-width: 800; - default-height: 600; - title: "My App"; - titlebar: Gtk.HeaderBar { - [end] - MenuButton button_menu { - menu-model: menu_app; - icon-name: "open-menu-symbolic"; - primary: true; - } - }; - - Adw.StatusPage { - title: "My App"; - description: "My App is awesome"; - icon-name: "applications-science-symbolic"; - - Box { - orientation: vertical; - - LinkButton { - label: "API Reference"; - uri: "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.3/class.ApplicationWindow.html"; - } - - LinkButton { - label: "Human Interface Guidelines"; - uri: "https://developer.gnome.org/hig/patterns/containers/windows.html"; - } - } - } -} - -menu menu_app { - section { - item { - label: _("Keyboard Shortcuts"); - action: "app.shortcuts"; - } - - item { - label: _("About My App"); - action: "app.about"; - } - } -} diff --git a/src/Library/demos/Window/main.json b/src/Library/demos/Window/main.json deleted file mode 100644 index 8803abc1d..000000000 --- a/src/Library/demos/Window/main.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "category": "user_interface", - "description": "A window containing a status page and menu button", - "panels": ["ui", "preview"], - "autorun": true -} diff --git a/src/Library/library.svg b/src/Library/library.svg new file mode 100644 index 000000000..3498c520c --- /dev/null +++ b/src/Library/library.svg @@ -0,0 +1,757 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="332" + height="200" + viewBox="0 0 332 200" + version="1.1" + id="svg5" + inkscape:version="1.3 (0e150ed6c4, 2023-07-21)" + sodipodi:docname="library.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#000000" + borderopacity="0.25" + inkscape:showpageshadow="false" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="false" + inkscape:deskcolor="#ffffff" + inkscape:document-units="px" + showgrid="false" + inkscape:zoom="1" + inkscape:cx="132" + inkscape:cy="102.5" + inkscape:current-layer="layer1" + showguides="true"> + <inkscape:grid + id="grid1" + units="px" + originx="0" + originy="0" + spacingx="1" + spacingy="1" + empcolor="#0099e5" + empopacity="0.30196078" + color="#0099e5" + opacity="0.14901961" + empspacing="4" + dotted="false" + gridanglex="30" + gridanglez="30" + visible="false" /> + </sodipodi:namedview> + <defs + id="defs2"> + <linearGradient + id="linearGradient1" + inkscape:collect="always"> + <stop + style="stop-color:#813d9c;stop-opacity:1" + offset="0" + id="stop1" /> + <stop + style="stop-color:#33d17a;stop-opacity:1;" + offset="1" + id="stop2" /> + </linearGradient> + <inkscape:path-effect + effect="fillet_chamfer" + id="path-effect211" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /> + <inkscape:path-effect + effect="fillet_chamfer" + id="path-effect157" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /> + <inkscape:path-effect + effect="fillet_chamfer" + id="path-effect102" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /> + <linearGradient + id="linearGradient46" + inkscape:collect="always"> + <stop + style="stop-color:#46311f;stop-opacity:1;" + offset="0" + id="stop46" /> + <stop + style="stop-color:#553d20;stop-opacity:1;" + offset="0.03225805" + id="stop50" /> + <stop + style="stop-color:#63452c;stop-opacity:1;" + offset="0.0645161" + id="stop51" /> + <stop + style="stop-color:#63452c;stop-opacity:1;" + offset="0.93548352" + id="stop49" /> + <stop + style="stop-color:#845e3b;stop-opacity:1;" + offset="0.96774155" + id="stop48" /> + <stop + style="stop-color:#b7865d;stop-opacity:1;" + offset="1" + id="stop47" /> + </linearGradient> + <inkscape:path-effect + effect="fillet_chamfer" + id="path-effect39" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,3.414062,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath31"> + <path + style="opacity:1;fill:#865e3c;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + d="m 104.57142,32 c -2.53257,0 -4.571424,1.784002 -4.571424,4 V 82 H 227.99999 V 36 c 0,-2.215998 -2.03886,-4 -4.57143,-4 z" + id="path32" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath33"> + <path + style="opacity:1;fill:#865e3c;fill-opacity:1;stroke-width:1.99999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + d="m 99.999997,90 v 46 c 0,2.216 2.102573,4 4.714283,4 h 122.57143 c 2.61171,0 4.71428,-1.784 4.71428,-4 V 90 Z" + id="path34" /> + </clipPath> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient46" + id="linearGradient47" + x1="64" + y1="148" + x2="64" + y2="23.999954" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-4,24)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1" + id="linearGradient2" + x1="-2.220446e-16" + y1="195.8401" + x2="331.99982" + y2="4.1599178" + gradientUnits="userSpaceOnUse" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + id="rect90" + style="opacity:0.5;fill:url(#linearGradient2);fill-opacity:1;stroke:none;stroke-width:4.00001;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + d="m 56,12.476317 v 0.04737 A 12.476317,12.476317 45 0 0 68.476317,25 H 111.52368 A 12.476317,12.476317 45 0 1 124,37.476317 v 0.04737 A 12.476317,12.476317 135 0 1 111.52368,50 H 72.476317 A 12.476317,12.476317 135 0 0 60,62.476317 v 0.04737 A 12.476317,12.476317 135 0 1 47.523683,75 H 12.476317 A 12.476317,12.476317 135 0 0 0,87.476317 v 0.04737 A 12.476317,12.476317 45 0 0 12.476317,100 h 3.047366 A 12.476317,12.476317 45 0 1 28,112.47632 v 0.0474 A 12.476317,12.476317 135 0 1 15.523683,125 12.00945,12.00945 132.72695 0 0 4,137.47632 v 0.0474 A 12.476317,12.476317 45 0 0 16.476317,150 H 35.523683 A 12.476317,12.476317 45 0 1 48,162.47632 v 0.0474 A 12.476317,12.476317 135 0 1 35.523683,175 H 32.476317 A 12.476317,12.476317 135 0 0 20,187.47632 v 0.0474 A 12.476317,12.476317 45 0 0 32.476317,200 H 187.52368 A 12.476317,12.476317 135 0 0 200,187.52368 v -0.0474 A 12.476317,12.476317 135 0 1 212.47632,175 h 59.04736 A 12.476317,12.476317 135 0 0 284,162.52368 v -0.0474 A 12.476317,12.476317 135 0 1 296.47632,150 h 7.04736 A 12.476317,12.476317 135 0 0 316,137.52368 v -0.0474 A 12.476317,12.476317 45 0 0 303.52368,125 H 284.47632 A 12.476317,12.476317 45 0 1 272,112.52368 v -0.0474 A 12.476317,12.476317 135 0 1 284.47632,100 h 35.04736 A 12.476317,12.476317 135 0 0 332,87.523683 v -0.04737 A 12.476317,12.476317 45 0 0 319.52368,75 H 308.47632 A 12.476317,12.476317 45 0 1 296,62.523683 v -0.04737 A 12.476317,12.476317 135 0 1 308.47632,50 h 7.04736 A 12.476317,12.476317 135 0 0 328,37.523683 v -0.04737 A 12.476317,12.476317 45 0 0 315.52368,25 H 232.47632 A 12.476317,12.476317 45 0 1 220,12.523683 v -0.04737 A 12.476317,12.476317 45 0 0 207.52368,0 H 68.476317 A 12.476317,12.476317 135 0 0 56,12.476317 Z" + sodipodi:nodetypes="ccccccccccccccccccccccccccccccccc" /> + <rect + style="opacity:1;fill:url(#linearGradient47);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="rect1" + width="176" + height="124" + x="28" + y="48" + ry="12" + rx="12" /> + <rect + style="opacity:1;fill:#9a9996;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="rect35" + width="44" + height="8" + x="123.98968" + y="225.24355" + transform="rotate(-30)" /> + <circle + style="opacity:1;fill:#77767b;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="path35" + cx="216" + cy="138" + r="10" /> + <rect + style="opacity:1;fill:#986a44;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="rect2" + width="128" + height="124" + x="88" + y="48" + ry="12" + rx="12" /> + <path + style="opacity:1;fill:#63452c;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + d="m 96,114 v 46 c 0,2.216 1.784,4 4,4 h 104 c 2.216,0 4,-1.784 4,-4 v -46 z" + id="path30" /> + <path + style="opacity:1;fill:#63452c;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + d="m 100,56 c -2.216,0 -4,1.784002 -4,4 v 46 H 208 V 60 c 0,-2.215998 -1.784,-4 -4,-4 z" + id="rect3" /> + <g + id="g30" + clip-path="url(#clipPath31)" + transform="translate(-4,24)"> + <rect + style="opacity:1;fill:#deddda;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="rect15" + width="56" + height="42" + x="168" + y="40" + ry="6" + rx="6.0000005" /> + <rect + style="opacity:1;fill:#f6f5f4;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="rect9" + width="56" + height="42" + x="166" + y="40" + ry="6" + rx="6.0000005" /> + <rect + style="opacity:1;fill:#241f31;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="rect14" + width="44" + height="34" + x="160" + y="48" + ry="6" + rx="6" /> + <rect + style="opacity:1;fill:#3d3846;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="rect8" + width="44" + height="34" + x="158" + y="48" + ry="6" + rx="6" /> + <rect + style="opacity:1;fill:#5e5c64;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="rect44" + width="16.247879" + height="6" + x="167.75212" + y="62" + rx="3" + ry="3" /> + <rect + style="opacity:1;fill:#5e5c64;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="rect43" + width="16.247879" + height="6" + x="167.75212" + y="71" + rx="3" + ry="3" /> + <rect + style="opacity:1;fill:#5e5c64;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="rect45" + width="20.247879" + height="4" + x="167.75212" + y="54" + rx="2" + ry="2" /> + <rect + style="opacity:1;fill:#deddda;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="rect13" + width="48" + height="46" + x="127.99999" + y="36" + ry="6" + rx="6" /> + <rect + style="opacity:1;fill:#f6f5f4;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="rect7" + width="48" + height="46" + x="125.99999" + y="36" + ry="6" + rx="6" /> + <circle + style="opacity:1;fill:none;fill-opacity:1;stroke:#c0bfbc;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="path42" + cx="150" + cy="63" + r="11" /> + <rect + style="opacity:1;fill:#241f31;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="rect12" + width="40" + height="34" + x="111.99999" + y="48" + ry="6" + rx="6" /> + <rect + style="opacity:1;fill:#3d3846;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="rect6" + width="40" + height="34" + x="109.99999" + y="48" + ry="6" + rx="6" /> + <rect + style="opacity:1;fill:#deddda;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="rect11" + width="44" + height="40" + x="91.999992" + y="42" + ry="6" + rx="6" /> + <rect + style="opacity:1;fill:#f6f5f4;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="rect5" + width="44" + height="40" + x="89.999992" + y="42" + ry="6" + rx="6" /> + <rect + style="opacity:1;fill:#c0bfbc;fill-opacity:1;stroke-width:1.99999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.5762, 3.5762" + id="rect39" + width="28.000002" + height="4" + x="92" + y="56" + ry="2" + rx="2" /> + <rect + style="opacity:1;fill:#3584e4;fill-opacity:1;stroke-width:1.99998;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="rect40" + width="17.999998" + height="6" + x="97" + y="64" + ry="3" + rx="3" /> + <rect + style="opacity:1;fill:#000000;fill-opacity:0.1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.5762, 3.5762" + id="rect34" + width="8" + height="49.999989" + x="94" + y="31.999998" /> + <circle + style="opacity:1;fill:#deddda;fill-opacity:0.2;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="path41" + cx="145" + cy="53" + r="2" /> + <rect + style="opacity:1;fill:#c0bfbc;fill-opacity:1;stroke-width:1.99999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.5762, 3.5762" + id="rect42" + width="28.000002" + height="4" + x="135.99998" + y="42" + ry="2" + rx="2" /> + </g> + <g + id="g32" + clip-path="url(#clipPath33)" + transform="translate(-4,24)"> + <rect + style="opacity:1;fill:#deddda;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="rect27" + width="56" + height="32" + x="168" + y="108" + ry="6" + rx="6.0000005" /> + <rect + style="opacity:1;fill:#f6f5f4;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="rect17" + width="56" + height="32" + x="166" + y="108" + ry="6" + rx="6.0000005" /> + <g + id="g64" + transform="translate(28,6.9999771)"> + <rect + style="fill:#77767b;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="rect52" + width="16" + height="8" + x="172" + y="108" + rx="4" + ry="4" /> + <rect + style="fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="rect51" + width="16" + height="8" + x="172" + y="118" + rx="4" + ry="4" /> + <circle + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="circle52" + cx="176" + cy="112.00001" + r="3" /> + <circle + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="path51" + cx="184" + cy="122.00002" + r="3" /> + </g> + <rect + style="opacity:1;fill:#deddda;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="rect28" + width="44" + height="44" + x="160" + y="96" + ry="5.9999995" + rx="6" /> + <rect + style="opacity:1;fill:#f6f5f4;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="rect19" + width="44" + height="44" + x="158" + y="96" + ry="5.9999995" + rx="6" /> + <rect + style="opacity:1;fill:#9a9996;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="rect65" + width="32" + height="22" + x="164" + y="102" + rx="2" + ry="2" /> + <rect + style="opacity:1;fill:#c0bfbc;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="rect66" + width="21" + height="4" + x="167" + y="128" + rx="2" + ry="2" /> + <rect + style="opacity:1;fill:#deddda;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="rect29" + width="41.999992" + height="40" + x="134" + y="100" + ry="5.9999995" + rx="6" /> + <rect + style="opacity:1;fill:#f6f5f4;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="rect21" + width="41.999992" + height="40" + x="132" + y="100" + ry="5.9999995" + rx="6" /> + <rect + style="opacity:1;fill:#c0bfbc;fill-opacity:1;stroke:none;stroke-width:4.00001;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="rect55" + width="12" + height="12" + x="156" + y="106" + rx="2" + ry="2" /> + <rect + style="opacity:1;fill:#deddda;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="rect30" + width="43.999992" + height="47.999996" + x="110.00001" + y="92.000008" + ry="6" + rx="6" /> + <rect + style="opacity:1;fill:#f6f5f4;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="rect23" + width="43.999992" + height="47.999996" + x="108.00001" + y="92.000008" + ry="6" + rx="6" /> + <rect + style="opacity:1;fill:#c0bfbc;fill-opacity:1;stroke:none;stroke-width:3.99999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="rect54" + width="28" + height="24" + x="116" + y="108" + ry="2" + rx="2" /> + <rect + style="opacity:1;fill:#241f31;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="rect26" + width="54" + height="28" + x="91.999992" + y="112" + ry="6" + rx="6" /> + <rect + style="opacity:1;fill:#3d3846;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="rect25" + width="54" + height="28" + x="89.999992" + y="112" + ry="6" + rx="6" /> + <rect + style="opacity:1;fill:#5e5c64;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="rect61" + width="8" + height="12" + x="108" + y="120" + rx="2" + ry="2" /> + <rect + style="opacity:1;fill:#5e5c64;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="rect64" + width="8.8721447" + height="12" + x="97.127861" + y="120" + rx="2" + ry="2" /> + <rect + style="fill:#000000;fill-opacity:0.1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.5762, 3.5762" + id="rect34-3" + width="7.0000024" + height="49.999989" + x="95" + y="90.000015" /> + <rect + style="opacity:1;fill:#5e5c64;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="rect62" + width="12" + height="12" + x="118" + y="120" + rx="2" + ry="2" /> + <rect + style="opacity:1;fill:#c0bfbc;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="rect53" + width="28" + height="4" + x="116" + y="100" + ry="2" + rx="2" /> + <rect + style="opacity:1;fill:#5e5c64;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="rect63" + width="8" + height="12" + x="132" + y="120" + rx="2" + ry="2" /> + <rect + style="opacity:1;fill:#c0bfbc;fill-opacity:1;stroke:none;stroke-width:4.00001;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="rect68" + width="12" + height="12" + x="156" + y="122" + rx="2" + ry="2" /> + </g> + <rect + style="opacity:1;fill:#9a9996;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="rect36" + width="24" + height="8" + x="-110" + y="256" + transform="rotate(-90)" /> + <path + id="path102" + style="opacity:1;fill:#f26600;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + d="M 255.41992 75.861328 C 255.02655 75.872791 254.60183 76.068099 254.19922 76.492188 C 252.81595 77.949248 252.00056 79.907607 252 82 C 252.00713 84.850974 253.53097 87.482721 256 88.908203 L 256 96 L 260 96 L 261 96 L 261 84.771484 L 260 84.771484 C 258.338 84.771484 257 83.43348 257 81.771484 L 257 78 C 257 76.703697 256.28535 75.83611 255.41992 75.861328 z " /> + <circle + style="opacity:1;fill:#77767b;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="path36" + cx="260" + cy="114" + r="8" /> + <rect + style="fill:#deddda;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="rect15-6" + width="56" + height="42" + x="-287" + y="42" + ry="6" + rx="6.0000005" + transform="scale(-1,1)" /> + <rect + style="fill:#f6f5f4;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + id="rect9-7" + width="56" + height="42" + x="-289" + y="42" + ry="6" + rx="6.0000005" + transform="scale(-1,1)" /> + <rect + style="opacity:1;fill:#c0bfbc;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="rect79" + width="19" + height="4" + x="254" + y="70" + rx="2" + ry="2" /> + <rect + style="opacity:1;fill:#c0bfbc;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="rect80" + width="19" + height="4" + x="254" + y="76" + rx="2" + ry="2" /> + <path + id="path38" + style="opacity:1;fill:#ff7800;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + d="m 263,78 v 3.771484 c 0,1.661997 -1.338,3 -3,3 V 89 96 h 4 v -7.091797 c 2.46903,-1.425484 3.99287,-4.057226 4,-6.908203 -5.6e-4,-2.092395 -0.81599,-4.050284 -2.19926,-5.507346 C 264.51239,75.135571 263,76.114466 263,78 Z" /> + <rect + style="opacity:1;fill:#986a44;fill-opacity:1;stroke:none;stroke-width:3.99999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="rect73" + width="16" + height="13" + x="253" + y="47" + ry="1.9999999" + rx="2" /> + <rect + style="opacity:1;fill:#ff7800;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="rect75" + width="2" + height="7" + x="265" + y="51" + rx="0.98211634" + ry="0.98211634" /> + <rect + style="opacity:1;fill:#33d17a;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="rect76" + width="2" + height="7" + x="255" + y="49" + rx="0.98211634" + ry="0.98211634" /> + <rect + style="opacity:1;fill:#deddda;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="rect77" + width="2" + height="7" + x="260" + y="50" + rx="0.98211634" + ry="0.98211634" /> + <rect + style="opacity:1;fill:#c0bfbc;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="rect78" + width="28" + height="4" + x="247" + y="62" + rx="2" + ry="2" /> + <circle + style="opacity:1;fill:#c0bfbc;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="path80" + cx="250" + cy="72" + r="2" /> + <circle + style="opacity:1;fill:#c0bfbc;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="circle80" + cx="250" + cy="78" + r="2" /> + </g> +</svg> diff --git a/src/PanelCode.js b/src/PanelCode.js index 349facc5a..fb95b424a 100644 --- a/src/PanelCode.js +++ b/src/PanelCode.js @@ -1,25 +1,23 @@ import Gio from "gi://Gio"; import GObject from "gi://GObject"; -import { setup as setupVala } from "./langs/vala/vala.js"; -import { setup as setupJavaScript } from "./langs/javascript/javascript.js"; -import { settings as global_settings } from "./util.js"; +import { makeDropdownFlat, settings as global_settings } from "./util.js"; +import { setupRustProject } from "./langs/rust/rust.js"; +import { setupTypeScriptProject } from "./langs/typescript/typescript.js"; +import { setupJavascriptProject } from "./langs/javascript/javascript.js"; export default function PanelCode({ builder, previewer, - document_vala, - document_javascript, - settings, + session: { settings, file }, + langs, }) { const panel_code = builder.get_object("panel_code"); const button_code = builder.get_object("button_code"); const stack_code = builder.get_object("stack_code"); const dropdown_code_lang = builder.get_object("dropdown_code_lang"); - // TODO: File a bug libadwaita - // flat does nothing on GtkDropdown or GtkComboBox or GtkComboBoxText - dropdown_code_lang.get_first_child().add_css_class("flat"); + makeDropdownFlat(dropdown_code_lang); settings.bind( "show-code", @@ -53,13 +51,26 @@ export default function PanelCode({ panel: panel_code, }; - setupVala({ document: document_vala }); - setupJavaScript({ document: document_javascript }); - function switchLanguage() { - panel.language = dropdown_code_lang.selected_item.string; + panel.language = dropdown_code_lang.selected_item?.string; stack_code.visible_child_name = panel.language; - previewer.useInternal().catch(logError); + previewer.useInternal().catch(console.error); + + if (panel.language.toLowerCase() === "javascript") { + setupJavascriptProject(file, langs.javascript.document).catch( + console.error, + ); + } + + if (panel.language.toLowerCase() === "rust") { + setupRustProject(file).catch(console.error); + } + + if (panel.language.toLowerCase() === "typescript") { + setupTypeScriptProject(file, langs.typescript.document).catch( + console.error, + ); + } } switchLanguage(); diff --git a/src/PanelStyle.js b/src/PanelStyle.js index a99f065f2..6442f41b9 100644 --- a/src/PanelStyle.js +++ b/src/PanelStyle.js @@ -1,9 +1,7 @@ import Gio from "gi://Gio"; import GObject from "gi://GObject"; -import { setup as setupCSS } from "./langs/css/css.js"; - -export default function PanelStyle({ builder, document_css, settings }) { +export default function PanelStyle({ builder, settings }) { const button_style = builder.get_object("button_style"); const panel_style = builder.get_object("panel_style"); settings.bind( @@ -18,5 +16,4 @@ export default function PanelStyle({ builder, document_css, settings }) { "visible", GObject.BindingFlags.SYNC_CREATE, ); - setupCSS({ document: document_css }); } diff --git a/src/PanelUI.js b/src/PanelUI.js index 31dda4051..b123c3c69 100644 --- a/src/PanelUI.js +++ b/src/PanelUI.js @@ -4,19 +4,21 @@ import Gtk from "gi://Gtk"; import { LSPError } from "./lsp/LSP.js"; import { - getLanguage, unstack, listenProperty, - settings as global_settings, + getLanguage, + makeDropdownFlat, } from "./util.js"; -import { - setup as setupBlueprint, - logBlueprintError, -} from "./langs/blueprint/blueprint.js"; +import { logBlueprintError } from "./langs/blueprint/blueprint.js"; +// eslint-disable-next-line no-restricted-globals const { addSignalMethods } = imports.signals; +const lang_blueprint = getLanguage("blueprint"); +const lang_xml = getLanguage("xml"); +export const ui_languages = [lang_blueprint, lang_xml]; + export default function PanelUI({ application, builder, @@ -51,19 +53,14 @@ export default function PanelUI({ const stack_ui = builder.get_object("stack_ui"); const dropdown_ui_lang = builder.get_object("dropdown_ui_lang"); - // TODO: File a bug libadwaita - // flat does nothing on GtkDropdown or GtkComboBox or GtkComboBoxText - dropdown_ui_lang.get_first_child().add_css_class("flat"); - - const blueprint = setupBlueprint({ - document: document_blueprint, - }); + makeDropdownFlat(dropdown_ui_lang); + dropdown_ui_lang.set_selected(settings.get_enum("user-interface-language")); async function convertToXML() { term_console.clear(); settings.set_boolean("show-console", true); - const xml = await blueprint.compile(buffer_blueprint.text); + const xml = await document_blueprint.compile(buffer_blueprint.text); code_view_xml.replaceText(xml); } @@ -71,8 +68,7 @@ export default function PanelUI({ term_console.clear(); settings.set_boolean("show-console", true); - const blp = await blueprint.decompile(buffer_xml.text); - + const blp = await document_blueprint.decompile(buffer_xml.text); code_view_blueprint.replaceText(blp); } @@ -80,19 +76,18 @@ export default function PanelUI({ "button_ui_experimental_blueprint", ); button_ui_experimental_blueprint.connect("clicked", () => { - const modal = builder.get_object("modal_blueprint_experimental"); - modal.set_transient_for(application.get_active_window()); - modal.present(); + const dialog = builder.get_object("dialog_blueprint_experimental"); + dialog.present(application.get_active_window()); }); const button_blueprint_documentation = builder.get_object( "button_blueprint_documentation", ); button_blueprint_documentation.connect("clicked", () => { - Gtk.show_uri( - null, - "https://jwestman.pages.gitlab.gnome.org/blueprint-compiler/", - null, - ); + new Gtk.UriLauncher({ + uri: "https://gnome.pages.gitlab.gnome.org/blueprint-compiler", + }) + .launch(application.get_active_window(), null) + .catch(console.error); }); let handler_id_xml = null; @@ -101,9 +96,9 @@ export default function PanelUI({ // FIXME we should wait for previewer update instead // when loading demo async function update() { - if (lang.id === "blueprint") { - onXML(await blueprint.compile()); - } else if (lang.id === "xml") { + if (lang === lang_blueprint) { + onXML(await document_blueprint.compile()); + } else if (lang === lang_xml) { onXML(buffer_xml.text); } } @@ -114,14 +109,14 @@ export default function PanelUI({ } const onBlueprint = unstack(function onBlueprint() { - return blueprint.compile().then(onXML); - }, logError); + return document_blueprint.compile().then(onXML); + }, console.error); function start() { stop(); - lang = getLanguage(dropdown_ui_lang.selected_item.string); + lang = getLanguage(settings.get_string("user-interface-language")); handler_id_xml = code_view_xml.connect("changed", () => { - if (lang.id !== "xml") return; + if (lang !== lang_xml) return; onXML(code_view_xml.buffer.text); }); handler_id_blueprint = code_view_blueprint.connect("changed", onBlueprint); @@ -138,57 +133,52 @@ export default function PanelUI({ } } - dropdown_ui_lang.set_selected(settings.get_int("ui-language")); const dropdown_selected_signal = listenProperty( dropdown_ui_lang, "selected", (value) => { - onChangeLang(value).catch(logError); + const lang = ui_languages[value]; + onChangeLang(lang).catch(console.error); }, ); - settings.connect("changed::ui-language", () => { - global_settings.set_int( - "recent-ui-language", - settings.get_int("ui-language"), - ); - }); - - async function onChangeLang(value) { - if (value === 0) { + async function onChangeLang(lang) { + if (lang === lang_xml) { try { await convertToXML(); } catch (err) { - logError(err); + console.error(err); + // FIXME: Looks like the block() calls don't work + // and the notify::selected signal is emitted dropdown_selected_signal.block(); - dropdown_ui_lang.set_selected(1); + dropdown_ui_lang.set_selected(ui_languages.indexOf(lang_blueprint)); dropdown_selected_signal.unblock(); return; } - } else if (value === 1) { + } else if (lang === lang_blueprint) { try { await convertToBlueprint(); } catch (err) { if (err instanceof LSPError) { logBlueprintError(err); } else { - logError(err); + console.error(err); } dropdown_selected_signal.block(); - dropdown_ui_lang.set_selected(0); + dropdown_ui_lang.set_selected(ui_languages.indexOf(lang_xml)); dropdown_selected_signal.unblock(); return; } } - settings.set_int("ui-language", dropdown_ui_lang.selected); + settings.set_string("user-interface-language", lang.id); setupLanguage(); } function setupLanguage() { start(); stack_ui.set_visible_child_name(lang.id); - button_ui_experimental_blueprint.visible = lang.id === "blueprint"; + button_ui_experimental_blueprint.visible = lang === lang_blueprint; } setupLanguage(); diff --git a/src/Permissions/Permissions.blp b/src/Permissions/Permissions.blp new file mode 100644 index 000000000..6dfd2f1b9 --- /dev/null +++ b/src/Permissions/Permissions.blp @@ -0,0 +1,157 @@ +using Gtk 4.0; +using Adw 1; + +Adw.Dialog dialog { + content-height: 750; + content-width: 600; + + Adw.ToolbarView { + [top] + Adw.HeaderBar {} + + content: ScrolledWindow { + hscrollbar-policy: never; + + Adw.Clamp { + maximum-size: 520; + tightening-threshold: 400; + margin-start: 12; + margin-end: 12; + margin-bottom: 24; + + Box { + orientation: vertical; + halign: fill; + spacing: 24; + // Gtk.Picture needs to be wrapped in a box to behave properly + Box { + halign: center; + + Picture picture_illustration { + can-shrink: false; + margin-bottom: 24; + } + } + + Label { + label: _("Permissions Needed"); + + styles [ + "title-1", + ] + } + + Label { + label: _( + "Workbench needs additional permissions. Please run the following command in a terminal and restart Workbench." + ); + wrap: true; + justify: center; + } + + Label label_command { + use-markup: true; + wrap: true; + wrap-mode: word_char; + selectable: true; + xalign: 0; + + styles [ + "command_snippet", + ] + } + + Box { + orientation: vertical; + + Box { + margin-bottom: 6; + + Label { + label: _("What it does"); + halign: start; + hexpand: true; + + styles [ + "heading", + ] + } + + Button button_info { + icon-name: "re.sonny.Workbench-external-link-symbolic"; + + styles [ + "flat", + ] + } + } + + ListBox { + selection-mode: none; + + styles [ + "boxed-list", + ] + + Adw.ActionRow { + [prefix] + Image { + icon-name: "re.sonny.Workbench-person-symbolic"; + } + + title: _("--user"); + subtitle: _("Grant for your account only"); + + styles [ + "property", + ] + } + + Adw.ActionRow { + [prefix] + Image { + icon-name: "re.sonny.Workbench-network-wireless-symbolic"; + } + + title: _("--share-network"); + subtitle: _("Network access"); + + styles [ + "property", + ] + } + + Adw.ActionRow { + [prefix] + Image { + icon-name: "re.sonny.Workbench-speakers-symbolic"; + } + + title: _("--socket=pulseaudio"); + subtitle: _("Record and play audio"); + + styles [ + "property", + ] + } + + Adw.ActionRow action_row_device { + [prefix] + Image { + icon-name: "re.sonny.Workbench-gamepad-symbolic"; + } + + // title: _("--device=input"); + subtitle: _("Access to input device such as gamepads"); + + styles [ + "property", + ] + } + } + } + } + } + }; + } +} diff --git a/src/Permissions/Permissions.js b/src/Permissions/Permissions.js new file mode 100644 index 000000000..6bfd3848d --- /dev/null +++ b/src/Permissions/Permissions.js @@ -0,0 +1,78 @@ +import Gio from "gi://Gio"; +import Gtk from "gi://Gtk"; + +import { build } from "../../troll/src/main.js"; + +import Interface from "./Permissions.blp" with { type: "uri" }; + +import illustration from "./permissions.svg"; + +import { + getFlatpakId, + getFlatpakInfo, + isDeviceInputOverrideAvailable, +} from "../flatpak.js"; + +const device = isDeviceInputOverrideAvailable() ? "input" : "all"; + +const action_permissions = new Gio.SimpleAction({ + name: "permissions", + parameter_type: null, +}); + +export function Permissions({ window }) { + const { + dialog, + picture_illustration, + label_command, + button_info, + action_row_device, + } = build(Interface); + + picture_illustration.set_resource(illustration); + + label_command.label = `flatpak override --user --share=network --socket=pulseaudio --device=${device} ${getFlatpakId()}`; + action_row_device.title = `--input=${device}`; + + button_info.connect("clicked", () => { + new Gtk.UriLauncher({ + uri: "https://docs.flatpak.org/en/latest/sandbox-permissions.html", + }) + .launch(window, null) + .catch(console.error); + }); + + action_permissions.connect("activate", () => { + dialog.present(window); + }); + + window.add_action(action_permissions); +} + +const missing_permissions = (() => { + const flatpak_info = getFlatpakInfo(); + const shared = flatpak_info.get_string_list("Context", "shared"); + const sockets = flatpak_info.get_string_list("Context", "sockets"); + const devices = flatpak_info.get_string_list("Context", "devices"); + + return ( + !shared.includes("network") || + !sockets.includes("pulseaudio") || + !devices.includes(device) + ); +})(); + +export function hasNetworkPermission() { + const flatpak_info = getFlatpakInfo(); + const shared = flatpak_info.get_string_list("Context", "shared"); + return shared.includes("network"); +} + +export function needsAdditionalPermissions({ demo }) { + if (!demo["flatpak-finish-args"]) return false; + return missing_permissions; +} + +export function showPermissionsDialog({ window }) { + window.activate_action("permissions", null); +} diff --git a/src/Permissions/permissions.svg b/src/Permissions/permissions.svg new file mode 100644 index 000000000..c1eb540de --- /dev/null +++ b/src/Permissions/permissions.svg @@ -0,0 +1,568 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="332" + height="200" + viewBox="0 0 332 200" + version="1.1" + id="svg5" + inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)" + sodipodi:docname="permissions.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#000000" + borderopacity="0.25" + inkscape:showpageshadow="false" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="false" + inkscape:deskcolor="#ffffff" + inkscape:document-units="px" + showgrid="false" + inkscape:zoom="0.099784977" + inkscape:cx="-661.42221" + inkscape:cy="-65.140066" + inkscape:current-layer="layer1" + showguides="false" + inkscape:window-width="1920" + inkscape:window-height="1011" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1"> + <inkscape:grid + id="grid1" + units="px" + originx="0" + originy="0" + spacingx="1" + spacingy="1" + empcolor="#0099e5" + empopacity="0.30196078" + color="#0099e5" + opacity="0.14901961" + empspacing="4" + dotted="false" + gridanglex="30" + gridanglez="30" + visible="false" /> + </sodipodi:namedview> + <defs + id="defs2"> + <inkscape:path-effect + effect="fillet_chamfer" + id="path-effect65" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,21.13606,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,9.1490264,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /> + <linearGradient + id="linearGradient63" + inkscape:collect="always"> + <stop + style="stop-color:#fbe47c;stop-opacity:0.6635828;" + offset="0" + id="stop63" /> + <stop + style="stop-color:#87e8b5;stop-opacity:0.7638889;" + offset="1" + id="stop64" /> + </linearGradient> + <inkscape:path-effect + effect="fillet_chamfer" + id="path-effect62" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,4,0,1 @ F,0,0,1,0,4,0,1 @ F,0,0,1,0,4,0,1 @ F,0,1,1,0,4,0,1 @ F,0,0,1,0,4,0,1 @ F,0,0,1,0,4,0,1 @ F,0,0,1,0,4,0,1 @ F,0,0,1,0,4,0,1 @ F,0,0,1,0,0,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /> + <inkscape:path-effect + effect="fillet_chamfer" + id="path-effect60" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2,0,1 @ F,0,1,1,0,2,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /> + <inkscape:path-effect + effect="fillet_chamfer" + id="path-effect58" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,6,0,1 @ F,0,1,1,0,6,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /> + <inkscape:path-effect + effect="fillet_chamfer" + id="path-effect56" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,4,0,1 @ F,0,0,1,0,4,0,1 @ F,0,0,1,0,4,0,1 @ F,0,1,1,0,4,0,1 @ F,0,0,1,0,4,0,1 @ F,0,0,1,0,4,0,1 @ F,0,0,1,0,4,0,1 @ F,0,0,1,0,4,0,1 @ F,0,0,1,0,0,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /> + <linearGradient + id="linearGradient26" + inkscape:collect="always"> + <stop + style="stop-color:#2177df;stop-opacity:1;" + offset="0" + id="stop26" /> + <stop + style="stop-color:#1a5fb4;stop-opacity:1;" + offset="0.09090688" + id="stop28" /> + <stop + style="stop-color:#1a5fb4;stop-opacity:1;" + offset="0.9090907" + id="stop29" /> + <stop + style="stop-color:#15498a;stop-opacity:1;" + offset="1" + id="stop27" /> + </linearGradient> + <inkscape:path-effect + effect="fillet_chamfer" + id="path-effect23" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,4,0,1 @ F,0,0,1,0,4,0,1 @ F,0,0,1,0,4,0,1 @ F,0,1,1,0,4,0,1 @ F,0,0,1,0,4,0,1 @ F,0,0,1,0,4,0,1 @ F,0,0,1,0,4,0,1 @ F,0,0,1,0,4,0,1 @ F,0,0,1,0,0,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /> + <linearGradient + id="linearGradient5" + inkscape:collect="always"> + <stop + style="stop-color:#5e5c64;stop-opacity:1;" + offset="0" + id="stop5" /> + <stop + style="stop-color:#4d4c50;stop-opacity:1;" + offset="1" + id="stop6" /> + </linearGradient> + <inkscape:path-effect + effect="fillet_chamfer" + id="path-effect5" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,2,0,1 @ F,0,1,1,0,2,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /> + <inkscape:path-effect + effect="fillet_chamfer" + id="path-effect3" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,6,0,1 @ F,0,1,1,0,6,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /> + <inkscape:path-effect + effect="fillet_chamfer" + id="path-effect2" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,8,0,1 @ F,0,0,1,0,8.2101528,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /> + <inkscape:path-effect + effect="fillet_chamfer" + id="path-effect211" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /> + <inkscape:path-effect + effect="fillet_chamfer" + id="path-effect157" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /> + <inkscape:path-effect + effect="fillet_chamfer" + id="path-effect102" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1 @ F,0,1,1,0,12.476317,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /> + <inkscape:path-effect + effect="fillet_chamfer" + id="path-effect39" + is_visible="true" + lpeversion="1" + nodesatellites_param="F,0,0,1,0,3.414062,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1" + radius="0" + unit="px" + method="auto" + mode="F" + chamfer_steps="1" + flexible="false" + use_knot_distance="true" + apply_no_radius="true" + apply_with_radius="true" + only_selected="false" + hide_knots="false" /> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath31"> + <path + style="opacity:1;fill:#865e3c;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + d="m 104.57142,32 c -2.53257,0 -4.571424,1.784002 -4.571424,4 V 82 H 227.99999 V 36 c 0,-2.215998 -2.03886,-4 -4.57143,-4 z" + id="path32" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath33"> + <path + style="opacity:1;fill:#865e3c;fill-opacity:1;stroke-width:1.99999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.57621, 3.57621" + d="m 99.999997,90 v 46 c 0,2.216 2.102573,4 4.714283,4 h 122.57143 c 2.61171,0 4.71428,-1.784 4.71428,-4 V 90 Z" + id="path34" /> + </clipPath> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5" + id="linearGradient6" + x1="176.92285" + y1="156" + x2="176.92285" + y2="164" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.4984166,0,0,1.4984166,-49.616298,-72.451818)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient26" + id="linearGradient27" + x1="100" + y1="120.00011" + x2="100" + y2="164" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.4984166,0,0,1.4984166,-49.616298,-72.451818)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient63" + id="linearGradient65" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-35.382733,-4.2152026)" + x1="248.07971" + y1="113.07767" + x2="85.016251" + y2="113.07767" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + id="circle65" + style="fill:url(#linearGradient65);stroke:none;stroke-width:1.46117;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1" + d="m 131.16602,27.330078 c -45.029881,-8.12e-4 -81.534017,36.503321 -81.533208,81.533202 2.7e-4,45.02912 36.504089,81.53206 81.533208,81.53125 8.38262,-0.006 16.67054,-1.30441 24.58233,-3.81292 11.09609,-3.51812 26.47255,-2.63586 37.20566,1.85535 9.07487,3.79734 18.86926,5.80785 28.84287,5.84038 41.61705,-7.5e-4 75.35384,-33.73841 75.35351,-75.35546 -7.4e-4,-41.616289 -33.73722,-75.352772 -75.35351,-75.353521 -8.35948,0.02724 -16.6344,1.44503 -24.49097,4.175374 -4.76994,1.657664 -11.30579,0.572701 -15.25124,-2.579772 -14.3779,-11.488134 -32.30568,-17.832988 -50.88865,-17.833883 z" + transform="matrix(-1.0569476,0,0,1.0569476,354.87042,-13.797304)" /> + <path + style="fill:none;fill-opacity:1;stroke:#1a5fb4;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1" + d="M 85.947825,152 H 64 a 4,4 135 0 0 -4,4 4,4 45 0 0 4,4 h 4 a 4,4 45 0 1 4,4 4,4 135 0 1 -4,4 H 56 a 4,4 135 0 0 -4,4 4,4 45 0 0 4,4 l 28,0 a 4,4 135 0 0 4,-4 4,4 135 0 1 4,-4 h 20" + id="path23" + sodipodi:nodetypes="cccccccccc" + transform="matrix(1.4984165,0,0,1.4984165,-49.616294,-72.451812)" /> + <g + id="g21" + transform="matrix(1.4984165,0,0,1.4984165,-291.25069,-41.061959)" + style="fill:#5e5c64"> + <path + id="path16" + style="color:#000000;fill:#5e5c64;stroke-linecap:square;-inkscape-stroke:none" + d="m 296.00007,60.838426 -15.15429,45.460934 a 1.0001,1.0001 0 0 0 -0.002,0.008 l -10.51757,31.55664 -0.72461,2.16992 -0.31641,0.94726 1.89844,0.63282 0.3164,-0.94922 0.61719,-1.85156 23.88281,-19.40625 23.88282,19.40625 0.18554,0.55468 0.5,-0.16601 a 1,1 0 0 0 0.86328,-0.28906 l 0.53321,-0.17774 -0.31446,-0.94726 -10.49414,-31.48047 v -0.004 a 1.0001,1.0001 0 0 0 -0.004,-0.008 l -0.006,-0.0195 a 1,1 0 0 0 -0.004,-0.008 z m 0,6.326172 6.58204,19.748047 h -13.16407 z m -5.23046,21.748047 h 10.46093 l -5.23047,4.40625 z m -2.25586,0.712891 5.93359,5 -10.56836,8.902344 z m 14.97461,0 4.63281,13.904294 -10.56836,-8.904294 z m -7.48829,6.308593 11.45704,9.650391 h -22.91407 z m -11.3789,11.650391 h 22.75781 l -11.37891,9.24609 z m -2.32422,0.6875 12.11719,9.84766 -21.11914,17.16015 z m 27.40625,0 9.00195,27.00781 -21.11914,-17.16015 z" /> + </g> + <circle + style="fill:#deddda;fill-opacity:1;stroke:none;stroke-width:1.49841;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="circle82" + cx="152.28058" + cy="56.836697" + r="15.564472" /> + <path + id="path1" + style="fill:#3d3846;stroke-width:2;stroke-dasharray:2, 2" + d="m 278,104 h 55.8457 l 8.80509,-38.153666 A 4.7730278,4.7730278 51.497589 0 0 338,60 l -44,0 a 7.5166441,7.5166441 141.40213 0 0 -7.32973,5.850797 z" + transform="matrix(1.4984165,0,0,1.4984165,-217.43895,5.4658483)" /> + <path + id="path2" + style="fill:url(#linearGradient6);stroke-width:2.99683;stroke-dasharray:2.99683, 2.99683" + d="m 148.1747,161.30117 c 0,6.62041 5.3669,11.98733 11.98733,11.98733 h 107.57109 c 7.20105,0 13.44901,-4.9706 15.06784,-11.98733 z" + sodipodi:nodetypes="ccccc" /> + <path + id="path3" + style="fill:#77767b;stroke-width:2.99683;stroke-dasharray:2.99683, 2.99683" + d="m 232.08602,161.30117 c 0,6.62041 5.3669,11.98733 11.98733,11.98733 h 23.65977 c 7.20105,0 13.44901,-4.9706 15.06784,-11.98733 z" + sodipodi:nodetypes="ccccc" /> + <path + id="path4" + style="fill:#99c1f1;stroke-width:2;stroke-dasharray:2, 2" + d="m 282,104 h 47.8457 l 8.70812,-38.050404 A 1.5939923,1.5939923 51.445289 0 0 337,64 h -44 a 2.5,2.5 141.34019 0 0 -2.43902,1.95122 z" + sodipodi:nodetypes="ccccc" + transform="matrix(1.4984165,0,0,1.4984165,-217.43895,5.4658483)" /> + <rect + style="fill:url(#linearGradient27);stroke:none;stroke-width:2.99683;stroke-linecap:round;stroke-dasharray:none" + id="rect7" + width="59.936661" + height="65.930313" + x="70.257019" + y="107.35817" + ry="6.3252244" + rx="6.3252244" /> + <rect + style="fill:#62a0ea;fill-opacity:1;stroke:none;stroke-width:2.99683;stroke-linecap:round;stroke-dasharray:none" + id="rect6" + width="47.949329" + height="65.930313" + x="88.238022" + y="107.35818" + ry="6.3252249" + rx="6.3252244" /> + <circle + style="fill:#1a5fb4;fill-opacity:1;stroke:none;stroke-width:2.99683;stroke-linecap:round;stroke-dasharray:none" + id="circle7" + cx="112.21269" + cy="155.30748" + r="11.987332" /> + <circle + style="fill:#1a5fb4;fill-opacity:1;stroke:none;stroke-width:2.99683;stroke-linecap:round;stroke-dasharray:none" + id="circle8" + cx="112.21269" + cy="125.33916" + r="11.987332" /> + <circle + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2.99683;stroke-linecap:round;stroke-dasharray:none" + id="path8" + cx="112.21269" + cy="125.33916" + r="4.4952497" /> + <circle + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2.99683;stroke-linecap:round;stroke-dasharray:none" + id="circle9" + cx="112.21269" + cy="155.30748" + r="4.4952497" /> + <circle + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.49841;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="path22" + cx="152.28058" + cy="54.836697" + r="15.564472" /> + <circle + style="fill:#77767b;fill-opacity:1;stroke:none;stroke-width:2.99683;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1" + id="circle22" + cx="152.28058" + cy="54.836697" + r="3.1248076" /> + <rect + style="fill:#f6f5f4;fill-opacity:1;stroke:none;stroke-width:1.49841;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1" + id="rect24" + width="14.984165" + height="2.9968331" + x="115.20953" + y="177.78374" + ry="1.4984165" + rx="1.4984165" /> + <rect + style="fill:#1a5fb4;fill-opacity:1;stroke:none;stroke-width:1.49841;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1" + id="rect23" + width="13.485737" + height="5.9936943" + x="106.21901" + y="176.28529" + ry="2.9968472" /> + <rect + style="fill:#c0bfbc;fill-opacity:1;stroke:none;stroke-width:1.49841;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1" + id="rect25" + width="1.4984146" + height="2.9968281" + x="122.70161" + y="177.78374" /> + <rect + style="fill:#c0bfbc;fill-opacity:1;stroke:none;stroke-width:1.49841;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1" + id="rect26" + width="1.4984146" + height="2.9968281" + x="125.69843" + y="177.78374" /> + <circle + style="fill:#bf61ca;fill-opacity:0.48627451;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.443622" + id="path71" + cx="150.07011" + cy="33.371632" + r="1.7915844" /> + <circle + style="fill:#bf61ca;fill-opacity:0.48627451;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.443622" + id="circle71" + cx="150.07011" + cy="26.488079" + r="1.7915844" /> + <circle + style="fill:#bf61ca;fill-opacity:0.48627451;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.443622" + id="circle72" + cx="150.07011" + cy="19.604527" + r="1.7915844" /> + <circle + style="fill:#bf61ca;fill-opacity:0.48627451;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.443622" + id="circle77" + cx="150.07011" + cy="12.720974" + r="1.7915844" /> + <circle + style="fill:#c061cb;fill-opacity:0.484565;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.443622" + id="circle78" + cx="154.56282" + cy="30.071247" + r="1.7915844" /> + <circle + style="fill:#c061cb;fill-opacity:0.484565;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.443622" + id="circle79" + cx="154.56282" + cy="23.187695" + r="1.7915844" /> + <circle + style="fill:#c061cb;fill-opacity:0.484565;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.443622" + id="circle80" + cx="154.56282" + cy="16.304142" + r="1.7915844" /> + <circle + style="fill:#c061cb;fill-opacity:0.484565;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.443622" + id="circle81" + cx="154.56282" + cy="9.4205904" + r="1.7915844" /> + <g + fill="#222222" + id="g2" + transform="matrix(1.7236266,0,-0.3679857,1.7236266,234.34039,117.54652)" + style="fill:#62a0ea;stroke-width:0.580172"> + <path + d="M 9.492188,0.140625 C 8.640625,-0.0234375 7.769531,-0.0429688 6.917969,0.0742188 5.21875,0.304688 3.589844,1.082031 2.316406,2.367188 -0.230469,4.933594 -0.734375,8.90625 1.085938,12.03125 c 1.824218,3.121094 5.53125,4.636719 9.019531,3.683594 3.488281,-0.949219 5.90625,-4.132813 5.890625,-7.75 0,-0.550782 -0.453125,-1 -1.003906,-0.996094 -0.550782,0.00391 -0.996094,0.453125 -0.996094,1.003906 0.01563,2.722656 -1.792969,5.097656 -4.417969,5.816406 C 6.953125,14.503906 4.1875,13.371094 2.816406,11.023438 1.445312,8.671875 1.820312,5.707031 3.738281,3.773438 5.652344,1.84375 8.613281,1.4375 10.976562,2.789062 11.453125,3.0625 12.066406,2.898438 12.339844,2.417969 12.613281,1.9375 12.449219,1.328125 11.96875,1.050781 11.183594,0.605469 10.347656,0.300781 9.492188,0.140625 Z m 0,0" + id="path1-6" + style="fill:#62a0ea;stroke-width:0.580172" /> + <path + d="M 15.753906,3.65625 C 15.929688,3.457031 16.015625,3.195312 16,2.933594 15.980469,2.667969 15.859375,2.421875 15.660156,2.246094 15.460938,2.070312 15.199219,1.980469 14.933594,2 14.667969,2.015625 14.421875,2.140625 14.246094,2.339844 L 7.949219,9.535156 5.707031,7.289062 C 5.316406,6.898438 4.683594,6.898438 4.292969,7.289062 4.105469,7.476562 4,7.734375 4,8 4,8.265625 4.105469,8.519531 4.292969,8.707031 l 3,3 C 7.488281,11.902344 7.757812,12.007812 8.035156,12 8.3125,11.988281 8.570312,11.867188 8.753906,11.65625 Z m 0,0" + id="path2-7" + style="fill:#62a0ea;stroke-width:0.580172" /> + </g> + </g> +</svg> diff --git a/src/Previewer/DBusPreviewer.js b/src/Previewer/DBusPreviewer.js index 37c562e4a..d56e9f891 100644 --- a/src/Previewer/DBusPreviewer.js +++ b/src/Previewer/DBusPreviewer.js @@ -1,36 +1,57 @@ import Gio from "gi://Gio"; import previewer_xml from "./previewer.xml" with { type: "string" }; +import { buildRuntimePath } from "../util.js"; + +const PREVIEWER_TYPE_VALA = "vala"; +const PREVIEWER_TYPE_PYTHON = "python"; const nodeInfo = Gio.DBusNodeInfo.new_for_xml(previewer_xml); const interface_info = nodeInfo.interfaces[0]; const guid = Gio.dbus_generate_guid(); +const path = buildRuntimePath(`workbench_preview_dbus_socket_${Date.now()}`); const server = Gio.DBusServer.new_sync( - "unix:abstract=re.sonny.Workbench.vala_previewer", // FIXME: abstract socket sucks + `unix:path=${path}`, Gio.DBusServerFlags.AUTHENTICATION_REQUIRE_SAME_USER, guid, null, null, ); -let proxy = null; -let sub_process = null; - server.start(); -async function startProcess() { - sub_process = Gio.Subprocess.new( - ["workbench-vala-previewer", server.get_client_address()], +let current_proxy = null; +let current_sub_process = null; +let current_type = null; + +async function startProcess(type) { + let executable_name; + switch (type) { + case PREVIEWER_TYPE_VALA: + executable_name = "workbench-previewer-module"; + break; + case PREVIEWER_TYPE_PYTHON: + executable_name = "workbench-python-previewer"; + break; + default: + throw Error(`invalid dbus previewer type: ${type}`); + } + + current_sub_process = Gio.Subprocess.new( + [executable_name, server.get_client_address()], Gio.SubprocessFlags.NONE, ); + current_type = type; const connection = await new Promise((resolve) => { const _handler_id = server.connect( "new-connection", (_self, connection) => { server.disconnect(_handler_id); - resolve(connection); + // FIXME: Just because the connection is established does not mean the Previewer has had time yet + // to expose the object. Add a better way to detect if the object exists yet. + setTimeout(() => resolve(connection), 100); return true; }, ); @@ -42,22 +63,23 @@ async function startProcess() { ); connection.connect("closed", (_self, remote_peer_vanished, error) => { - proxy = null; + current_proxy = null; + current_type = null; console.debug( "connection closed", connection.get_peer_credentials().to_string(), remote_peer_vanished, ); - if (error) logError(error); + if (error) console.error(error); }); - proxy = await Gio.DBusProxy.new( + const proxy = await Gio.DBusProxy.new( connection, Gio.DBusProxyFlags.NONE, interface_info, null, - "/re/sonny/workbench/vala_previewer", // object path - "re.sonny.Workbench.vala_previewer", // interface name + "/re/sonny/workbench/previewer_module", // object path + "re.sonny.Workbench.previewer_module", // interface name null, ); @@ -73,28 +95,31 @@ async function startProcess() { } const dbus_previewer = { - onCssParserError: null, - onWindowOpen: null, - async getProxy() { - proxy ??= startProcess(); - return proxy; + onCssParserError: null, // set in External.js + onWindowOpen: null, // set in External.js + async getProxy(type) { + if (current_type !== type) { + await this.stop(); + current_proxy = startProcess(type); + } + return current_proxy; }, async stop() { - const connection = proxy?.["g-connection"]; + const connection = current_proxy?.["g-connection"]; if (connection) { await connection.close(null); } - if (sub_process) { + if (current_sub_process) { // The vala process is set to exit when the connection close // but let's send a SIGTERM anyway just to be safe - sub_process.send_signal(15); - await sub_process.wait_async(null); + current_sub_process.send_signal(15); + await current_sub_process.wait_async(null); } - sub_process = null; + current_sub_process = null; }, }; diff --git a/src/Previewer/External.js b/src/Previewer/External.js index 658375ce8..cffa533ea 100644 --- a/src/Previewer/External.js +++ b/src/Previewer/External.js @@ -15,11 +15,14 @@ export default function External({ output, builder, onWindowChange }) { .handleDiagnostics([getCssDiagnostic(error)]); }; - async function start() { + async function start(language) { + if (language === "rust") { + language = "vala"; // Rust uses the Vala previewer. + } try { - dbus_proxy = await dbus_previewer.getProxy(); + dbus_proxy = await dbus_previewer.getProxy(language); } catch (err) { - logError(err); + console.error(err); } } @@ -27,10 +30,7 @@ export default function External({ output, builder, onWindowChange }) { updateColorScheme(); stack.set_visible_child_name("close_window"); try { - await dbus_proxy.OpenWindowAsync( - output.get_allocated_width(), - output.get_allocated_height(), - ); + await dbus_proxy.OpenWindowAsync(output.get_width(), output.get_height()); } catch (err) { console.debug(err); } @@ -40,7 +40,7 @@ export default function External({ output, builder, onWindowChange }) { try { await dbus_proxy.CloseWindowAsync(); } catch (err) { - logger.debug(err); + console.debug(err); return; } stack.set_visible_child_name("open_window"); @@ -51,7 +51,7 @@ export default function External({ output, builder, onWindowChange }) { .then(() => { return dbus_previewer.stop(); }) - .catch(logError); + .catch(console.error); } async function updateXML({ xml, target_id, original_id }) { diff --git a/src/Previewer/Internal.js b/src/Previewer/Internal.js index 8fdb813d5..4c7d56cd8 100644 --- a/src/Previewer/Internal.js +++ b/src/Previewer/Internal.js @@ -4,8 +4,10 @@ import Graphene from "gi://Graphene"; import GObject from "gi://GObject"; import Adw from "gi://Adw"; -import { once } from "../../troll/src/util.js"; +import { once } from "../../troll/src/async.js"; +import { build } from "../../troll/src/builder.js"; +// eslint-disable-next-line no-restricted-globals const { addSignalMethods } = imports.signals; export default function Internal({ @@ -18,6 +20,11 @@ export default function Internal({ panel_ui, session, }) { + const inline_css_scope_target = output.get_parent(); + inline_css_scope_target.name = `workbench_output-${session.id}`; + + let css_scope_target = inline_css_scope_target; + const bus = {}; addSignalMethods(bus); @@ -35,7 +42,7 @@ export default function Internal({ await panel_ui.update(); await once(bus, "object_root", { timeout: 5000 }); } catch (err) { - logError(err); + console.error(err); return; } } @@ -79,6 +86,10 @@ export default function Internal({ dropdown_preview_align.selected = 0; preview(object); }, + build(params) { + console.warn("workbench.build is experimental"); + return build(panel_ui.xml, params); + }, }; let obj; @@ -121,8 +132,8 @@ export default function Internal({ const prop_name = prop.get_name(); // AdwWindow and AdwApplicationWindow have child and titlebar properties but do not support setting them // "Using gtk_window_get_titlebar() and gtk_window_set_titlebar() is not supported and will result in a crash." - // https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.Window.html - // https://github.com/sonnyp/Workbench/issues/130 + // https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.6/class.Window.html + // https://github.com/workbenchdev/Workbench/issues/130 if ( (object_preview instanceof Adw.Window || object_preview instanceof Adw.ApplicationWindow) && @@ -168,15 +179,18 @@ export default function Internal({ } if (!object_root.name) { - object_root.name = "workbench_output"; + object_root.name = `workbench_output-${session.id}`; } + css_scope_target = object_root; + return object_root; } function updateBuilderNonRoot(object_preview) { object_root?.destroy(); object_root = null; + css_scope_target = inline_css_scope_target; stack.set_visible_child_name("inline"); preview(object_preview); @@ -194,18 +208,18 @@ export default function Internal({ let style = css; if (!style) return; - // Workaround https://github.com/sonnyp/Workbench/issues/147 + // Workaround https://github.com/workbenchdev/Workbench/issues/147 if (style.match(/#$/g)) return; try { - style = scopeStylesheet(style, object_root?.name); + style = scopeStylesheet(style, css_scope_target.name); } catch (err) { console.debug(err); // logError(err); } css_provider = new Gtk.CssProvider(); - css_provider.load_from_data(style, -1); + css_provider.load_from_string(style); Gtk.StyleContext.add_provider_for_display( output.get_display(), css_provider, @@ -214,7 +228,7 @@ export default function Internal({ } return { - async start() {}, + async start(_language) {}, open, close, stop, @@ -238,14 +252,12 @@ export default function Internal({ // https://github.com/prettier/prettier/issues/9114 // We are not using https://github.com/pazams/postcss-scopify // because it's not compatible with postcss 8 -export function scopeStylesheet(style, id) { +function scopeStylesheet(style, id) { const ast = postcss.parse(style); - id = id || "workbench_output"; - for (const node of ast.nodes) { if (node.selector === "window") { - node.selector = `window#${id}`; - } else if (node.selector) { + node.selector = `#${id}`; + } else if (!node.selector.startsWith(":")) { node.selector = `#${id} ${node.selector}`; } } @@ -260,8 +272,8 @@ export function scopeStylesheet(style, id) { function screenshot({ widget, path }) { const paintable = new Gtk.WidgetPaintable({ widget }); - const width = widget.get_allocated_width(); - const height = widget.get_allocated_height(); + const width = widget.get_width(); + const height = widget.get_height(); const snapshot = Gtk.Snapshot.new(); paintable.snapshot(snapshot, width, height); diff --git a/src/Previewer/Previewer.js b/src/Previewer/Previewer.js index a12dcdc1f..b9c1235e2 100644 --- a/src/Previewer/Previewer.js +++ b/src/Previewer/Previewer.js @@ -3,9 +3,9 @@ import Gdk from "gi://Gdk"; import GObject from "gi://GObject"; import GLib from "gi://GLib"; import Gio from "gi://Gio"; +import { gettext as _ } from "gettext"; import * as xml from "../langs/xml/xml.js"; -import * as postcss from "../lib/postcss.js"; import { encode, @@ -13,6 +13,7 @@ import { data_dir, getNowForFilename, ensureDir, + makeDropdownFlat, } from "../util.js"; import Internal from "./Internal.js"; @@ -44,11 +45,10 @@ export default function Previewer({ let panel_code; let current; + let current_external_language = null; const dropdown_preview_align = builder.get_object("dropdown_preview_align"); - // TODO: File a bug libadwaita - // flat does nothing on GtkDropdown or GtkComboBox or GtkComboBoxText - dropdown_preview_align.get_first_child().add_css_class("flat"); + makeDropdownFlat(dropdown_preview_align); const internal = Internal({ onWindowChange(open) { @@ -74,7 +74,7 @@ export default function Previewer({ stack.set_visible_child_name("close_window"); } else { stack.set_visible_child_name("open_window"); - useInternal().catch(logError); + useInternal().catch(console.error); } }, output, @@ -147,9 +147,7 @@ export default function Previewer({ panel_code.language === "JavaScript" && flags & Gtk.BuilderClosureFlags.SWAPPED ) { - console.warning( - 'Signal flag "swapped" is unsupported in JavaScript.', - ); + console.warn('Signal flag "swapped" is unsupported in JavaScript.'); } return this[function_name] || this.noop; } @@ -176,7 +174,7 @@ export default function Previewer({ tree = xml.parse(text); ({ target_id, text, original_id, template } = targetBuildable(tree)); } catch (err) { - // logError(err); + // console.error(err); console.debug(err); } @@ -191,7 +189,8 @@ export default function Previewer({ if (settings.get_boolean("safe-mode")) { // console.time("detectCrash"); - if (await detectCrash(text, target_id)) return; + const crashed = await detectCrash(text, target_id); + if (crashed) return; // console.timeEnd("detectCrash"); } @@ -210,7 +209,7 @@ export default function Previewer({ console.warn(err.message); return; } - logError(err); + console.error(err); return; } @@ -235,12 +234,13 @@ export default function Previewer({ symbols = null; } - const schedule_update = unstack(update, logError); + const schedule_update = unstack(update, console.error); - async function useExternal() { - if (current !== external) { - await setPreviewer(external); + async function useExternal(language) { + if (current !== external || language !== current_external_language) { + await setPreviewer(external, language); } + current_external_language = language; stack.set_visible_child_name("close_window"); await update(true); } @@ -252,7 +252,7 @@ export default function Previewer({ await update(true); } - async function setPreviewer(previewer) { + async function setPreviewer(previewer, language) { if (handler_id_button_open) { button_open.disconnect(handler_id_button_open); } @@ -262,11 +262,15 @@ export default function Previewer({ try { await current?.closeInspector(); - } catch {} + } catch { + /* */ + } try { await current?.stop(); - } catch {} + } catch { + /* */ + } current = previewer; @@ -275,7 +279,7 @@ export default function Previewer({ await current.open(); stack.set_visible_child_name("close_window"); } catch (err) { - logError(err); + console.error(err); } }); @@ -284,19 +288,19 @@ export default function Previewer({ await current.close(); stack.set_visible_child_name("open_window"); } catch (err) { - logError(err); + console.error(err); } }); try { - await current.start(); + await current.start(language); } catch (err) { - logError(err); + console.error(err); } } builder.get_object("button_screenshot").connect("clicked", () => { - screenshot({ application, window, current }).catch(logError); + screenshot({ application, window, current }).catch(console.error); }); setPreviewer(internal); @@ -326,29 +330,6 @@ export default function Previewer({ }; } -// We are using postcss because it's also a dependency of prettier -// it would be great to keep the ast around and pass that to prettier -// so there is no need to re-parse but that's not supported yet -// https://github.com/prettier/prettier/issues/9114 -// We are not using https://github.com/pazams/postcss-scopify -// because it's not compatible with postcss 8 -export function scopeStylesheet(style) { - const ast = postcss.parse(style); - - for (const node of ast.nodes) { - if (node.selector) { - node.selector = `#workbench_output ${node.selector}`; - } - } - - let str = ""; - postcss.stringify(ast, (s) => { - str += s; - }); - - return str; -} - function getTemplate(tree) { const template = tree.getChild("template"); if (!template) return; @@ -438,7 +419,7 @@ function registerSignals({ tree, scope, symbols, template }) { scope[signal.handler] = makeSignalHandler(signal, { symbols, template }); } } catch (err) { - logError(err); + console.error(err); } } diff --git a/src/Previewer/crasher.vala b/src/Previewer/crasher.vala index d5404db4f..63f0e0e8e 100644 --- a/src/Previewer/crasher.vala +++ b/src/Previewer/crasher.vala @@ -1,15 +1,14 @@ public void main (string[] args) { - Adw.init (); + Adw.init (); - var builder = new Gtk.Builder(); + var builder = new Gtk.Builder (); var output = new Gtk.Window (); - try { - builder.add_from_string(args[1], -1); - var object = builder.get_object(args[2]) as Gtk.Widget; - output.set_child(object); - - // We are only interested in crashes here - // Previewer.js will handle errors - } catch {} + try { + builder.add_from_string (args[1], -1); + var object = builder.get_object (args[2]) as Gtk.Widget; + output.set_child (object); + } catch (Error e) { + GLib.error (e.message); + } } diff --git a/src/Previewer/meson.build b/src/Previewer/meson.build index 1c0f9d083..6b4556e41 100644 --- a/src/Previewer/meson.build +++ b/src/Previewer/meson.build @@ -1,8 +1,9 @@ -executable('workbench-vala-previewer', +executable('workbench-previewer-module', 'previewer.vala', - dependencies: [ dependency('gio-2.0'), dependency('gmodule-2.0'), dependency('libadwaita-1') ], + dependencies: [ dependency('gtksourceview-5'), dependency('gmodule-2.0'), dependency('libadwaita-1'), dependency('glycin-2'), dependency('shumate-1.0'), dependency('webkitgtk-6.0'), libworkbench_vapi ], # vala_args: [ '--gresourcesdir=' + meson.current_build_dir() ], install: true, + link_with: libworkbench, ) executable('workbench-crasher', @@ -11,3 +12,5 @@ executable('workbench-crasher', # vala_args: [ '--gresourcesdir=' + meson.current_build_dir() ], install: true, ) + +install_data('previewer.xml', install_dir: pkgdatadir) diff --git a/src/Previewer/previewer.vala b/src/Previewer/previewer.vala index 6e54adf3c..b33dff6bf 100644 --- a/src/Previewer/previewer.vala +++ b/src/Previewer/previewer.vala @@ -1,235 +1,263 @@ namespace Workbench { - [DBus (name="re.sonny.Workbench.vala_previewer")] - public class Previewer : Object { - construct { - this.notify["ColorScheme"].connect (() => { - this.style_manager.color_scheme = this.ColorScheme; - }); - } + [DBus (name = "re.sonny.Workbench.previewer_module")] + public class Previewer : Object { + construct { + this.notify["ColorScheme"].connect (() => { + this.style_manager.color_scheme = this.ColorScheme; + }); + + // See application.js + var icon_theme = Gtk.IconTheme.get_for_display(Gdk.Display.get_default()); + string[] resource_path = {"/org/gtk/libgtk/icons/", "/org/gnome/Adwaita/icons/", "/re/sonny/Workbench/icons/"}; + icon_theme.resource_path = resource_path; + string [] search_path = {"/usr/share/icons", "/app/share/icons"}; + icon_theme.search_path = search_path; + } - private void ensure_window() { - if (this.window != null) { - return; - } - var window = new Gtk.Window () { - // Ensure the header bar has the same height as the one on Workbench main window - titlebar = new Gtk.HeaderBar (), - title = "Preview", - default_width = 600, - default_height = 800 - }; - this.set_window(window); - } + private void ensure_window () { + if (this.window != null) { + return; + } + var window = new Workbench.PreviewWindow (); + this.set_window (window); + } - private void set_window(Gtk.Window window) { - this.window?.destroy (); - this.window = window; - this.window.close_request.connect (this.on_window_closed); - } + private void set_window (Gtk.Window window) { + this.window?.destroy (); + this.window = window; + this.window.close_request.connect (this.on_window_closed); + } - private bool on_window_closed () { - this.window_open (false); - this.window = null; - return false; - } + private bool on_window_closed () { + this.window_open (false); + this.window = null; + return false; + } - public bool screenshot (string path) { - Gtk.Widget widget = this.target; - var paintable = new Gtk.WidgetPaintable (widget); - int width = widget.get_allocated_width (); - int height = widget.get_allocated_height (); - var snapshot = new Gtk.Snapshot (); - paintable.snapshot (snapshot, width, height); - Gsk.RenderNode? node = snapshot.to_node (); - if (node == null) { - debug (@"Could not get node snapshot, width: $width, height: $height"); - return false; - } - Gsk.Renderer? renderer = widget.get_native ()?.get_renderer (); - var rect = Graphene.Rect () { - origin = Graphene.Point.zero (), - size = Graphene.Size () { - width = width, - height = height + public bool screenshot (string path) { + Gtk.Widget widget = this.target; + var paintable = new Gtk.WidgetPaintable (widget); + int width = widget.get_width (); + int height = widget.get_height (); + var snapshot = new Gtk.Snapshot (); + paintable.snapshot (snapshot, width, height); + Gsk.RenderNode? node = snapshot.to_node (); + if (node == null) { + debug (@"Could not get node snapshot, width: $width, height: $height"); + return false; + } + Gsk.Renderer? renderer = widget.get_native () ? .get_renderer (); + var rect = Graphene.Rect () { + origin = Graphene.Point.zero (), + size = Graphene.Size () { + width = width, + height = height + } + }; + Gdk.Texture texture = renderer.render_texture (node, rect); + texture.save_to_png (path); + return true; } - }; - Gdk.Texture texture = renderer.render_texture (node, rect); - texture.save_to_png (path); - return true; - } - public void update_ui (string content, string target_id, string original_id = "") { - this.builder = new Gtk.Builder.from_string (content, content.length); - - var target = this.builder.get_object (target_id) as Gtk.Widget; - if (target == null) { - stderr.printf (@"Widget with target_id='$target_id' could not be found.\n"); - return; - } - - this.target = target; - - if (original_id != "") { - this.builder.expose_object(original_id, target); - } - - // Not a Root/Window - if (!(target is Gtk.Root)) { - this.ensure_window(); - this.window.child = target; - return; - } - - // Set target as window directly - if (this.window == null || this.window.get_type () != target.get_type ()) { - this.set_window(target as Gtk.Window); - return; - } - - if (target is Adw.Window) { - var child = ((Adw.Window) target).content; - ((Adw.Window) target).content = null; - ((Adw.Window) this.window).content = child; - } else if (target is Adw.ApplicationWindow) { - var child = ((Adw.ApplicationWindow) target).content; - ((Adw.ApplicationWindow) target).content = null; - ((Adw.ApplicationWindow) this.window).content = child; - } else if (target is Gtk.Window) { - var child = ((Gtk.Window) target).child; - ((Gtk.Window) target).child = null; - this.window.child = child; - } - - // Toplevel windows returned by these functions will stay around - // until the user explicitly destroys them with gtk_window_destroy(). - // https://docs.gtk.org/gtk4/class.Builder.html - if (target is Gtk.Window) { - ((Gtk.Window) target).destroy(); - } - } + // This registers GObjects so that they can be found by GtkBuilder + void ensure_types () { + typeof (Shumate.SimpleMap).ensure (); + typeof (WebKit.WebView).ensure (); + } - public void update_css (string content) { - if (this.css != null) - Gtk.StyleContext.remove_provider_for_display (Gdk.Display.get_default (), this.css); - this.css = new Gtk.CssProvider (); - this.css.parsing_error.connect((self, section, error) => { - var start = section.get_start_location(); - var end = section.get_end_location(); - this.css_parser_error(error.message, (int)start.lines, (int)start.line_chars, (int)end.lines, (int)end.line_chars); - }); - this.css.load_from_data (content.data); - Gtk.StyleContext.add_provider_for_display (Gdk.Display.get_default (), this.css , Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); - } + public void update_ui (string content, string target_id, string original_id = "") { + this.ensure_types (); + this.builder = new Gtk.Builder.from_string (content, content.length); + var target = this.builder.get_object (target_id) as Gtk.Widget; + if (target == null) { + stderr.printf (@"Widget with target_id='$target_id' could not be found.\n"); + return; + } + + this.target = target; + + if (original_id != "") { + this.builder.expose_object (original_id, target); + } + + // Not a Root/Window + if (!(target is Gtk.Root)) { + this.ensure_window (); + ((Workbench.PreviewWindow) this.window).set_content (target); + return; + } + + // Set target as window directly + if (this.window == null || this.window.get_type () != target.get_type ()) { + this.set_window (target as Gtk.Window); + return; + } + + if (target is Adw.Window) { + var child = ((Adw.Window) target).content; + ((Adw.Window) target).content = null; + ((Adw.Window) this.window).content = child; + } else if (target is Adw.ApplicationWindow) { + var child = ((Adw.ApplicationWindow) target).content; + ((Adw.ApplicationWindow) target).content = null; + ((Adw.ApplicationWindow) this.window).content = child; + } else if (target is Gtk.Window) { + var child = ((Gtk.Window) target).child; + ((Gtk.Window) target).child = null; + this.window.child = child; + } + + // Toplevel windows returned by these functions will stay around + // until the user explicitly destroys them with gtk_window_destroy(). + // https://docs.gtk.org/gtk4/class.Builder.html + if (target is Gtk.Window) { + ((Gtk.Window) target).destroy (); + } + } - public void run (string filename, string uri) { - if (this.module != null) { - this.module.close (); - } - - this.module = Module.open (filename, ModuleFlags.LAZY); - if (this.module == null) { - stderr.printf ("Module loading failed.\n"); - return; - } - - void* function; - - this.module.symbol ("set_base_uri", out function); - var set_base_uri = (BaseUriFunction) function; - set_base_uri (uri); - - this.module.symbol ("set_builder", out function); - var set_builder = (BuilderFunction) function; - if (this.builder != null) { - set_builder (this.builder); - } - - this.module.symbol ("set_window", out function); - var set_window = (WindowFunction) function; - if (this.window != null) { - set_window (this.window); - } - - this.module.symbol ("main", out function); - if (function == null) { - stderr.printf (@"Function 'main' not found.\n"); - return; - } - var main_function = (MainFunction) function; - main_function (); - } + public void update_css (string content) { + if (this.css != null) + Gtk.StyleContext.remove_provider_for_display (Gdk.Display.get_default (), this.css); + this.css = new Gtk.CssProvider (); + this.css.parsing_error.connect ((self, section, error) => { + var start = section.get_start_location (); + var end = section.get_end_location (); + this.css_parser_error (error.message, (int) start.lines, (int) start.line_chars, (int) end.lines, (int) end.line_chars); + }); + this.css.load_from_string (content); + Gtk.StyleContext.add_provider_for_display ( + Gdk.Display.get_default (), + this.css, + Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); + } - public void close_window () { - if (this.window == null) { - return; - } - this.window.close (); - } + public void run (string filename, string uri) { + if (this.module != null) { + this.module.close (); + } + + this.module = Module.open (filename, ModuleFlags.LAZY); + if (this.module == null) { + stderr.printf ("Module loading failed.\n"); + return; + } + + this.reload_icons (uri); + + void* function; + + this.module.symbol ("set_base_uri", out function); + var set_base_uri = (BaseUriFunction) function; + set_base_uri (uri); + + this.module.symbol ("set_builder", out function); + var set_builder = (BuilderFunction) function; + if (this.builder != null) { + set_builder (this.builder); + } + + this.module.symbol ("set_window", out function); + var set_window = (WindowFunction) function; + if (this.window != null) { + set_window (this.window); + } + + this.module.symbol ("main", out function); + if (function == null) { + stderr.printf (@"Function 'main' not found.\n"); + return; + } + var main_function = (MainFunction) function; + main_function (); + } - public async void open_window (int width, int height) { - this.window.default_width = width; - this.window.default_height = height; - this.window.present (); - this.window_open (true); - } + public async void reload_icons (string uri) { + if (this.resource_icons != null) { + this.resource_icons._unregister (); + this.resource_icons = null; + } + try { + this.resource_icons = Resource.load (File.new_for_uri(uri).get_child("icons.gresource").get_path()); + this.resource_icons._register (); + } catch {} + } - public void enable_inspector (bool enabled) { - Gtk.Window.set_interactive_debugging (enabled); - } + public void close_window () { + if (this.window == null) { + return; + } + this.window.close (); + } - public Adw.ColorScheme ColorScheme { get; set; default = Adw.ColorScheme.DEFAULT; } + public async void open_window (int width, int height) { + this.window.default_width = width; + this.window.default_height = height; + this.window.present (); + this.window_open (true); + } - public signal void window_open (bool open); + public void enable_inspector (bool enabled) { + Gtk.Window.set_interactive_debugging (enabled); + } - public signal void css_parser_error (string message, int start_line, int start_char, int end_line, int end_char); + public Adw.ColorScheme ColorScheme { get; set; default = Adw.ColorScheme.DEFAULT; } - [CCode (has_target=false)] - private delegate void MainFunction (); + public signal void window_open (bool open); - [CCode (has_target=false)] - private delegate void BuilderFunction (Gtk.Builder builder); + public signal void css_parser_error (string message, int start_line, int start_char, int end_line, int end_char); - [CCode (has_target=false)] - private delegate void WindowFunction (Gtk.Window window); + [CCode (has_target = false)] + private delegate void MainFunction (); - [CCode (has_target=false)] - private delegate void BaseUriFunction (string uri); + [CCode (has_target = false)] + private delegate void BuilderFunction (Gtk.Builder builder); - private Gtk.Window? window; - private Gtk.Widget? target; - private Gtk.CssProvider? css = null; - private Module module; - private Gtk.Builder? builder = null; - private Adw.StyleManager style_manager = Adw.StyleManager.get_default (); - } + [CCode (has_target = false)] + private delegate void WindowFunction (Gtk.Window window); - void main (string[] args) { - if (!Module.supported ()) { - stderr.printf ("This system does not support loadable modules.\n"); - Process.exit (1); + [CCode (has_target = false)] + private delegate void BaseUriFunction (string uri); + + private Gtk.Window? window; + private Gtk.Widget? target; + private Gtk.CssProvider? css = null; + private Module module; + private Gtk.Builder? builder = null; + private Adw.StyleManager style_manager = Adw.StyleManager.get_default (); + private GLib.Resource? resource_icons = null; } - var loop = new MainLoop(); + void main (string[] args) { + if (!Module.supported ()) { + stderr.printf ("This system does not support loadable modules.\n"); + Process.exit (1); + } + + var app_id = GLib.Environment.get_variable("FLATPAK_ID"); + var resource = Resource.load (@"/app/share/$app_id/re.sonny.Workbench.libworkbench.gresource"); + GLib.resources_register (resource); - Adw.init(); - var connection = new DBusConnection.for_address_sync( - args[1], - DBusConnectionFlags.AUTHENTICATION_CLIENT, - null, - null - ); + var loop = new MainLoop (); - var previewer = new Previewer (); + Adw.init (); - connection.on_closed.connect(() => { - loop.quit(); - }); + var connection = new DBusConnection.for_address_sync ( + args[1], + DBusConnectionFlags.AUTHENTICATION_CLIENT, + null, + null + ); - connection.register_object ("/re/sonny/workbench/vala_previewer", previewer); + var previewer = new Previewer (); - loop.run(); - } -} + connection.on_closed.connect (() => { + loop.quit (); + }); + connection.register_object ("/re/sonny/workbench/previewer_module", previewer); + + loop.run (); + } +} diff --git a/src/Previewer/previewer.xml b/src/Previewer/previewer.xml index a5cdfedd1..cd194af4e 100644 --- a/src/Previewer/previewer.xml +++ b/src/Previewer/previewer.xml @@ -1,5 +1,5 @@ <node> - <interface name="re.sonny.Workbench.vala_previewer"> + <interface name="re.sonny.Workbench.previewer_module"> <method name="UpdateUi"> <arg type="s" name="content" direction="in"/> <arg type="s" name="target_id" direction="in"/> diff --git a/src/Previewer/utils.js b/src/Previewer/utils.js index be670e3db..c7bf5eea7 100644 --- a/src/Previewer/utils.js +++ b/src/Previewer/utils.js @@ -3,7 +3,8 @@ import Gtk from "gi://Gtk"; import Gio from "gi://Gio"; import Adw from "gi://Adw"; import GIRepository from "gi://GIRepository"; -// const repository = GIRepository.Repository.get_default(); + +const repository = new GIRepository.Repository(); // sort and reverse to make sure GtkSource is before Gtk // and so that GtkSourceCompletionProvider matches GtkSource and not Gtk @@ -14,6 +15,7 @@ export function getObjectClass(class_name) { ); if (!namespace) return null; + // eslint-disable-next-line no-restricted-globals const namespace_repository = imports.gi[namespace]; if (!namespace_repository) return null; @@ -27,6 +29,8 @@ export function isPreviewable(class_name) { const klass = getObjectClass(class_name); if (!klass) return false; + if (GObject.type_is_a(klass, Adw.Dialog)) return false; + // GLib-GObject-ERROR: cannot create instance of abstract (non-instantiatable) type 'GtkWidget' if (GObject.type_test_flags(klass, GObject.TypeFlags.ABSTRACT)) return false; @@ -55,7 +59,7 @@ function getKlass(el) { return getObjectClass(class_name); } -function assertObjectBuildable(el_object, root) { +function assertObjectBuildable(el_object, is_root) { const klass = getKlass(el_object); if (klass) { // GLib-GObject-ERROR: cannot create instance of abstract (non-instantiatable) type 'GtkWidget' @@ -75,9 +79,16 @@ function assertObjectBuildable(el_object, root) { } // Gtk:ERROR:../gtk/gtkwidget.c:2448:gtk_widget_root: assertion failed: (priv->root == NULL) - if (!root && GObject.type_is_a(klass, Gtk.Root)) { + if (!is_root && GObject.type_is_a(klass, Gtk.Root)) { throw new Error( - `${klass.$gtype.name} is a GtkRoot. GtkRoot objects can only appear at the top-level.`, + `${klass.$gtype.name} is a GtkRoot. GtkRoot objects can only be used at the top-level.`, + ); + } + + // Adwaita-Trying to add AdwDialog 0x558667ff74d0 to GtkBox 0x558666bd17c0. Use adw_dialog_present() to show dialogs. + if (!is_root && GObject.type_is_a(klass, Adw.Dialog)) { + throw new Error( + `${klass.$gtype.name} is a AdwDialog. AdwDialog objects can only be used at the top-level.`, ); } @@ -100,14 +111,14 @@ function assertObjectBuildable(el_object, root) { `${klass.$gtype.name} does not support the child property.`, ); } - } - // Gtk-ERROR **: 23:19:54.204: GtkStackPage '<unnamed>' [0x55b094802eb0] is missing a child widget - if (GObject.type_is_a(klass, Gtk.StackPage)) { - const child = getChildProperty(el_object); - // log(child); - if (!child) { - throw new Error(`${klass.$gtype.name} is missing a child widget.`); + // Gtk-ERROR **: 23:19:54.204: GtkStackPage '<unnamed>' [0x55b094802eb0] is missing a child widget + if (GObject.type_is_a(klass, Gtk.StackPage)) { + const child = getChildProperty(el_object); + // log(child); + if (!child) { + throw new Error(`${klass.$gtype.name} is missing a child widget.`); + } } } @@ -141,25 +152,29 @@ export async function detectCrash(str, object_id) { const flags = Gio.SubprocessFlags.NONE; const proc = Gio.Subprocess.new(["workbench-crasher", str, object_id], flags); - const success = await proc.wait_check_async(null).catch((_err) => false); + const success = await proc.wait_check_async(null).catch((_err) => { + return false; + }); return !success; } function getNamespaces() { - const search_paths = GIRepository.Repository.get_search_path(); + const search_paths = repository.get_search_path(); const namespaces = []; for (const search_path of search_paths) { try { namespaces.push(...getSearchPathNamespaces(search_path)); - } catch {} + } catch { + /* */ + } } return namespaces; } function getSearchPathNamespaces(search_path) { const enumerator = Gio.File.new_for_path(search_path).enumerate_children( - "standard::name", + `${Gio.FILE_ATTRIBUTE_STANDARD_NAME},${Gio.FILE_ATTRIBUTE_STANDARD_IS_HIDDEN}`, Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, null, ); @@ -167,6 +182,7 @@ function getSearchPathNamespaces(search_path) { const namespaces = []; for (const file_info of enumerator) { + if (file_info.get_is_hidden()) continue; const name = file_info.get_name(); if (!name.endsWith(".typelib")) continue; const [namespace] = name.split("-"); diff --git a/src/TermConsole.js b/src/TermConsole.js index 2bf4a0d7f..68659dc50 100644 --- a/src/TermConsole.js +++ b/src/TermConsole.js @@ -3,6 +3,7 @@ import GLib from "gi://GLib"; import Gio from "gi://Gio"; import Gdk from "gi://Gdk"; import Adw from "gi://Adw"; +import { buildRuntimePath } from "./util.js"; // https://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797 const ERASE_ENTIRE_SCREEN = "\u001b[2J"; @@ -24,10 +25,13 @@ export default function TermConsole({ // terminal.set_cursor_blink_mode(Vte.CursorBlinkMode.ON); // terminal.set_input_enabled(true); + // See src/workbench + const path = buildRuntimePath("typescript"); + terminal.spawn_async( Vte.PtyFlags.DEFAULT, // pty_flags null, // working_directory - ["/bin/tail", "--line=0", "--follow", "/var/tmp/workbench"], // argv + ["/bin/tail", "--line=0", "--follow", path], // argv [], // envv GLib.SpawnFlags.DEFAULT, // spawn_flags null, @@ -64,17 +68,51 @@ export default function TermConsole({ const action_clear = new Gio.SimpleAction({ name: "clear", - parameter_type: null, }); action_clear.connect("activate", clear); window.add_action(action_clear); application.set_accels_for_action("win.clear", ["<Control>K"]); - style_manager.connect("notify::color-scheme", () => - updateTerminalColors(terminal), - ); + const action_console_copy = new Gio.SimpleAction({ + name: "console_copy", + enabled: false, + }); + action_console_copy.connect("activate", () => { + terminal.copy_clipboard_format(Vte.Format.TEXT); + }); + window.add_action(action_console_copy); + application.set_accels_for_action("win.console_copy", ["<Control><Shift>C"]); + + const action_console_select_all = new Gio.SimpleAction({ + name: "console_select_all", + }); + action_console_select_all.connect("activate", () => { + terminal.select_all(); + }); + window.add_action(action_console_select_all); + application.set_accels_for_action("win.console_select_all", [ + "<Control><Shift>A", + ]); + + terminal.connect("selection_changed", () => { + action_console_copy.enabled = terminal.get_has_selection(); + }); + + terminal.connect("contents_changed", () => { + action_console_copy.enabled = terminal.get_has_selection(); + }); + + style_manager.connect("notify::dark", () => updateTerminalColors(terminal)); updateTerminalColors(terminal); + const gesture_console_click = builder.get_object("gesture_console_click"); + const popover_menu_console = builder.get_object("popover_menu_console"); + gesture_console_click.connect("pressed", (_self, _n_press, x, y) => { + const position = new Gdk.Rectangle({ x, y }); + popover_menu_console.set_pointing_to(position); + popover_menu_console.popup(); + }); + return { clear, scrollToEnd, @@ -88,7 +126,7 @@ function rgba(value) { return rgba; } -// Adapted from https://gitlab.gnome.org/GNOME/console/-/blob/87c6ae3b55dc399f052db251202ce0d6c122e98d/src/kgx-terminal.c#L110 +// Adapted from https://gitlab.gnome.org/GNOME/console/-/blob/1ac7791714d9a4add7211d6f2c35a6dbe90edfd5/src/kgx-terminal.c#L145 function updateTerminalColors(terminal) { const palette = [ rgba("#241f31"), // Black @@ -110,13 +148,15 @@ function updateTerminalColors(terminal) { ]; let fg; - let bg; + const bg = new Gdk.RGBA(); if (style_manager.dark) { fg = new Gdk.RGBA({ red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0 }); - bg = new Gdk.RGBA({ red: 0.05, green: 0.05, blue: 0.05, alpha: 1.0 }); + // bg = new Gdk.RGBA({ red: 0.12, green: 0.12, blue: 0.12, alpha: 1.0 }); + bg.parse("#262626"); } else { fg = new Gdk.RGBA({ red: 0, green: 0, blue: 0, alpha: 0 }); - bg = new Gdk.RGBA({ red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0 }); + // bg = new Gdk.RGBA({ red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0 }); + bg.parse("#fcfcfc"); } terminal.set_colors(fg, bg, palette); diff --git a/src/WorkbenchHoverProvider.js b/src/WorkbenchHoverProvider.js index 2217e4af9..36a7c0f8b 100644 --- a/src/WorkbenchHoverProvider.js +++ b/src/WorkbenchHoverProvider.js @@ -12,8 +12,7 @@ class WorkbenchHoverProvider extends GObject.Object { } findDiagnostics(context) { - const iter = new Gtk.TextIter(); - context.get_iter(iter); + const [, iter] = context.get_iter(); const line = iter.get_line(); // Looks like line_offset starts at 0 @@ -48,7 +47,7 @@ class WorkbenchHoverProvider extends GObject.Object { if (diagnostics.length < 1) return [false, null]; this.showDiagnostics(display, diagnostics); } catch (err) { - logError(err); + console.error(err); return [false, null]; } diff --git a/src/about.js b/src/about.js index 102641cef..06d510814 100644 --- a/src/about.js +++ b/src/about.js @@ -8,7 +8,7 @@ import { getGjsVersion, getGLibVersion, } from "../troll/src/util.js"; -import { getFlatpakInfo } from "./util.js"; +import { getFlatpakInfo } from "./flatpak.js"; export default function About({ application }) { const flatpak_info = getFlatpakInfo(); @@ -23,11 +23,9 @@ GTK ${getGIRepositoryVersion(Gtk)} GLib ${getGLibVersion()} Flatpak ${flatpak_info.get_string("Instance", "flatpak-version")} ${getValaVersion()} -${getBlueprintVersion()} `.trim(); - const dialog = new Adw.AboutWindow({ - transient_for: application.get_active_window(), + const dialog = new Adw.AboutDialog({ application_name: "Workbench", developer_name: "Sonny Piers", copyright: "© 2022 Sonny Piers", @@ -35,22 +33,24 @@ ${getBlueprintVersion()} version: pkg.version, website: "https://workbench.sonny.re", application_icon: pkg.name, - issue_url: "https://github.com/sonnyp/Workbench/issues", - // TRANSLATORS: eg. 'Translator Name <your.email@domain.com>' or 'Translator Name https://website.example' - translator_credits: _("translator-credits"), + issue_url: "https://workbench.sonny.re/feedback", debug_info, developers: [ "Sonny Piers https://sonny.re", "Lorenz Wildberg https://gitlab.gnome.org/lwildberg", "Andy Holmes https://gitlab.gnome.org/andyholmes", + "Julian Hofer https://julianhofer.eu/", + "Marco Köpcke https://github.com/theCapypara", ], designers: [ "Sonny Piers https://sonny.re", "Tobias Bernard <tbernard@gnome.org>", + "Brage Fuglseth https://bragefuglseth.dev", ], artists: [ "Tobias Bernard <tbernard@gnome.org>", "Jakub Steiner https://jimmac.eu", + "Brage Fuglseth https://bragefuglseth.dev", ], }); @@ -70,7 +70,21 @@ ${getBlueprintVersion()} "JCWasmx86 https://github.com/JCWasmx86", "Alex (PaladinDev) https://github.com/SpikedPaladin", "Diego Iván M.E https://github.com/Diego-Ivan", + "Rasmus Thomsen <oss@cogitri.dev>", "Marvin W https://github.com/mar-v-in", + "Saad Khan https://github.com/saadulkh", + "Adeel Ahmed Qureshi https://github.com/itsAdee", + "Muhammad Bilal https://github.com/mbilal234", + "Onkar https://github.com/onkarrai06", + "Sabrina Meindlhumer https://github.com/m-sabrina", + "Urtsi Santsi <urtsi.santsi@proton.me>", + "Roland Lötscher https://github.com/rolandlo", + "Gregor Niehl https://fosstodon.org/@gregorni", + "Jamie Gravendeel https://jamie.garden", + "Bharat Tyagi https://github.com/BharatAtbrat", + "Jan Fooken https://git.janvhs.com", + "Vladimir Vaskov https://github.com/Rirusha", + "Nokse https://github.com/Nokse22", // Add yourself as // "John Doe", // or @@ -78,7 +92,7 @@ ${getBlueprintVersion()} // or // "John Doe https://john.com", ]); - dialog.present(); + dialog.present(application.active_window); return { dialog }; } @@ -87,7 +101,3 @@ function getValaVersion() { const [, data] = GLib.spawn_command_line_sync("valac --version"); return new TextDecoder().decode(data).trim(); } - -function getBlueprintVersion() { - return "Blueprint 0.10.0"; -} diff --git a/src/actions.js b/src/actions.js index 940b0276c..2d14b9898 100644 --- a/src/actions.js +++ b/src/actions.js @@ -1,16 +1,13 @@ import Gtk from "gi://Gtk"; import Gio from "gi://Gio"; import GLib from "gi://GLib"; -import Gdk from "gi://Gdk"; import Xdp from "gi://Xdp"; import XdpGtk from "gi://XdpGtk4"; -import { gettext as _ } from "gettext"; import About from "./about.js"; -import shortcutsWindow from "./shortcutsWindow.js"; +import Window from "./window.js"; import { portal, settings } from "./util.js"; - -import IconLibrary from "./IconLibrary/main.js"; +import { createSession } from "./sessions.js"; export default function Actions({ application }) { const quit = new Gio.SimpleAction({ @@ -32,48 +29,16 @@ export default function Actions({ application }) { }); application.add_action(showAboutDialog); - const showShortCutsWindow = new Gio.SimpleAction({ - name: "shortcuts", - parameter_type: null, - }); - showShortCutsWindow.connect("activate", () => { - shortcutsWindow({ application }); - }); - application.add_action(showShortCutsWindow); - application.set_accels_for_action("app.shortcuts", ["<Control>question"]); - - const action_icon_library = new Gio.SimpleAction({ - name: "icon_library", - }); - let window_icon_browser; - action_icon_library.connect("activate", (_self, _target) => { - window_icon_browser ??= IconLibrary(); - window_icon_browser.present(); - }); - application.add_action(action_icon_library); - const action_open_uri = new Gio.SimpleAction({ name: "open_uri", parameter_type: new GLib.VariantType("s"), }); action_open_uri.connect("activate", (_self, target) => { - // This is not using the portal but we silence the GVFS warnings - // in `log_handler.js` - Gtk.show_uri( - application.get_active_window(), - target.unpack(), - Gdk.CURRENT_TIME, - ); - // an other option is to use libportal: - // const parent = XdpGtk.parent_new_gtk(application.get_active_window()); - // portal - // .open_uri( - // parent, - // target.unpack(), - // Xdp.OpenUriFlags.NONE, - // null, // cancellable - // ) - // .catch(logError); + new Gtk.UriLauncher({ + uri: target.unpack(), + }) + .launch(application.get_active_window(), null) + .catch(console.error); }); application.add_action(action_open_uri); @@ -93,7 +58,7 @@ export default function Actions({ application }) { try { GLib.spawn_command_line_async(`sh -c "/bin/${name} > /dev/null 2>&1"`); } catch (err) { - logError(err); + console.error(err); } }); application.add_action(action_platform_tools); @@ -102,13 +67,22 @@ export default function Actions({ application }) { // application.add_action(settings.create_action("safe-mode")); // application.add_action(settings.create_action("auto-preview")); + const action_new_project = new Gio.SimpleAction({ + name: "new", + }); + action_new_project.connect("activate", (_self, _target) => { + newProject({ application }).catch(console.error); + }); + application.add_action(action_new_project); + application.set_accels_for_action("app.new", ["<Control>N"]); + const action_open_file = new Gio.SimpleAction({ name: "open", parameter_type: new GLib.VariantType("s"), }); action_open_file.connect("activate", (_self, target) => { const hint = target.unpack(); - open({ application, hint }).catch(logError); + open({ application, hint }).catch(console.error); }); application.add_action(action_open_file); application.set_accels_for_action("app.open('project')", ["<Control>O"]); @@ -119,7 +93,7 @@ export default function Actions({ application }) { }); action_show_screenshot.connect("activate", (_self, target) => { const uri = target.unpack(); - showScreenshot({ application, uri }).catch(logError); + showScreenshot({ application, uri }).catch(console.error); }); application.add_action(action_show_screenshot); } @@ -134,11 +108,27 @@ async function showScreenshot({ application, uri }) { ); } +async function newProject({ application }) { + const session = createSession(); + const { load } = Window({ application, session }); + await load(); +} + async function open({ application, hint }) { const file_dialog = new Gtk.FileDialog(); - const file = await file_dialog.select_folder( - application.get_active_window(), - null, - ); + + let file; + try { + file = await file_dialog.select_folder( + application.get_active_window(), + null, + ); + } catch (err) { + if (!err.matches(Gtk.DialogError, Gtk.DialogError.DISMISSED)) { + throw err; + } + return; + } + application.open([file], hint); } diff --git a/src/application.js b/src/application.js index 92d75955b..a5d0c7713 100644 --- a/src/application.js +++ b/src/application.js @@ -1,19 +1,49 @@ import Adw from "gi://Adw"; import Gio from "gi://Gio"; +import Gtk from "gi://Gtk"; +import Gdk from "gi://Gdk"; import Window from "./window.js"; import Actions from "./actions.js"; -import { - settings, - data_dir, - ensureDir, - readDemoFile, - getDemo, -} from "./util.js"; +import { settings, data_dir, ensureDir } from "./util.js"; import { overrides } from "./overrides.js"; -import Library from "./Library/Library.js"; -import DocumentationViewer from "./DocumentationViewer.js"; -import { Session, createSessionFromDemo, getSessions } from "./sessions.js"; +import Library, { getDemo } from "./Library/Library.js"; +import { + Session, + addToRecentProjects, + createSessionFromDemo, + getSessions, +} from "./sessions.js"; +import ShortcutsWindow from "./shortcutsWindow.js"; + +import "./icons/re.sonny.Workbench-beaker.svg" with { type: "icon" }; +import "./icons/re.sonny.Workbench-code-symbolic.svg" with { type: "icon" }; +import "./icons/re.sonny.Workbench-placeholder-symbolic.svg" with { type: "icon" }; +import "./icons/re.sonny.Workbench-preview-symbolic.svg" with { type: "icon" }; +import "./icons/re.sonny.Workbench-ui-symbolic.svg" with { type: "icon" }; +import "./icons/re.sonny.Workbench-screenshot-symbolic.svg" with { type: "icon" }; +import "./icons/re.sonny.Workbench-multitasking-windows-symbolic.svg" with { type: "icon" }; +import "./icons/re.sonny.Workbench-down-symbolic.svg" with { type: "icon" }; +import "./icons/re.sonny.Workbench-eraser4-symbolic.svg" with { type: "icon" }; +import "./icons/re.sonny.Workbench-larger-brush-symbolic.svg" with { type: "icon" }; +import "./icons/re.sonny.Workbench-terminal-symbolic.svg" with { type: "icon" }; +import "./icons/re.sonny.Workbench-test-pass-symbolic.svg" with { type: "icon" }; +import "./icons/re.sonny.Workbench-up-symbolic.svg" with { type: "icon" }; +import "./icons/re.sonny.Workbench-library-symbolic.svg" with { type: "icon" }; +import "./icons/re.sonny.Workbench-gamepad-symbolic.svg" with { type: "icon" }; +import "./icons/re.sonny.Workbench-network-wireless-symbolic.svg" with { type: "icon" }; +import "./icons/re.sonny.Workbench-person-symbolic.svg" with { type: "icon" }; +import "./icons/re.sonny.Workbench-speakers-symbolic.svg" with { type: "icon" }; +import "./icons/re.sonny.Workbench-external-link-symbolic.svg" with { type: "icon" }; + +const icon_theme = Gtk.IconTheme.get_for_display(Gdk.Display.get_default()); +icon_theme.resource_path = [ + "/org/gtk/libgtk/icons/", + "/org/gnome/Adwaita/icons/", + "/re/sonny/Workbench/icons/", +]; +// Remove hosts and useless search paths +icon_theme.search_path = ["/usr/share/icons", "/app/share/icons"]; ensureDir(data_dir); @@ -30,32 +60,54 @@ application.connect("open", (_self, files, hint) => { if (!file || hint !== "project") return; const session = new Session(file); + + addToRecentProjects(file.get_path()); const { load } = Window({ application, session, }); - load({ run: false }).catch(logError); + load().catch(console.error); }); +let proc_biome; + application.connect("startup", () => { + // biome lsp-proxy starts a background server + // it does not get stopped and leaves a process hanging + // so manage it manually instead + // See https://github.com/workbenchdev/Workbench/issues/828 + const subprocess_launcher = Gio.SubprocessLauncher.new( + Gio.SubprocessFlags.STDERR_SILENCE, + ); + proc_biome = subprocess_launcher.spawnv([ + "biome", + "__run_server", + "--config-path", + pkg.pkgdatadir, + ]); + Library({ application, }); - DocumentationViewer({ - application, - }); + ShortcutsWindow({ application }); + + restoreSessions().catch(console.error); +}); - restoreSessions(); +application.connect("shutdown", () => { + proc_biome?.force_exit(); }); application.connect("activate", () => { if (application.is_remote) { - newWindow(); + bootstrap().catch(console.error); } }); -application.set_option_context_description("<https://workbench.sonny.re>"); +application.set_option_context_description( + "<https://apps.gnome.org/Workbench>", +); Actions({ application }); @@ -69,33 +121,38 @@ function setColorScheme() { setColorScheme(); settings.connect("changed::color-scheme", setColorScheme); -// We are not using async otherwise the app segfaults -// does not like opening a window in a promise -// TODO: make a reproducer and file a GJS bug -function restoreSessions() { - const sessions = getSessions(); +async function restoreSessions() { + const sessions = await getSessions(); if (sessions.length < 1) { - newWindow(); + bootstrap().catch(console.error); } else { sessions.forEach((session) => { const { load } = Window({ application, session, }); - load({ run: false }).catch(logError); + load().catch(console.error); }); } } -function newWindow() { - const session = createSessionFromDemo(getDemo("Welcome")); +async function bootstrap() { + const first_run = settings.get_boolean("first-run"); + if (!first_run) { + application.activate_action("library", null); + return; + } + + const demo = getDemo("Welcome"); + const session = await createSessionFromDemo(demo); const { load, window } = Window({ application, session, }); window.maximize(); - load({ run: false }).catch(logError); + load().catch(console.error); + settings.set_boolean("first-run", false); } export default application; diff --git a/src/bin.js b/src/bin.js index 44ee59397..d65906231 100755 --- a/src/bin.js +++ b/src/bin.js @@ -1,10 +1,10 @@ #!@GJS@ -m import { exit, programArgs } from "system"; -import GLib from "gi://GLib"; import { setConsoleLogDomain } from "console"; import Xdp from "gi://Xdp"; +// eslint-disable-next-line no-restricted-globals imports.package.init({ name: "@app_id@", version: "@version@", @@ -13,7 +13,6 @@ imports.package.init({ datadir: "@datadir@", }); setConsoleLogDomain(pkg.name); -GLib.set_application_name("Workbench"); if (!Xdp.Portal.running_under_flatpak()) { console.error( diff --git a/src/cli/README.md b/src/cli/README.md new file mode 100644 index 000000000..5474ea762 --- /dev/null +++ b/src/cli/README.md @@ -0,0 +1,14 @@ +# workbench-cli + +This is sort of a headless Workbench. + +It exposes the formatter and linter used in Workbench for the different languages. + +## Hack + +```sh +# Build +make cli +# Run +foundry run -- workbench-cli ci demos/src/* +``` diff --git a/src/cli/bin.js b/src/cli/bin.js new file mode 100755 index 000000000..b86c58240 --- /dev/null +++ b/src/cli/bin.js @@ -0,0 +1,29 @@ +#!/usr/bin/env -S gjs -m + +import Gio from "gi://Gio"; +import { exit, programArgs } from "system"; +import { setConsoleLogDomain } from "console"; +import GLib from "gi://GLib"; + +// eslint-disable-next-line no-restricted-globals +imports.package.init({ + name: "@app_id@", + version: "@version@", + prefix: "@prefix@", + libdir: "@libdir@", + datadir: "@datadir@", +}); + +const app_id = "@app_id@.cli"; + +setConsoleLogDomain(app_id); +GLib.set_application_name("workbench-cli"); + +const resource = Gio.Resource.load( + `/app/share/${app_id}/${app_id}.src.gresource`, +); +resource._register(); + +const module = await import("resource:///re/sonny/Workbench/cli/main.js"); +const exit_code = await module.main(programArgs); +exit(exit_code); diff --git a/src/cli/blueprint.js b/src/cli/blueprint.js new file mode 100644 index 000000000..1cb6d9d7c --- /dev/null +++ b/src/cli/blueprint.js @@ -0,0 +1,102 @@ +/* eslint-disable no-restricted-globals */ + +import Gtk from "gi://Gtk"; + +import { getLanguage } from "../common.js"; +import { parse } from "../langs/xml/xml.js"; +import { LSPError } from "../lsp/LSP.js"; +import { checkFile, diagnose } from "./util.js"; +import { ignore_codes } from "../langs/blueprint/blueprint.js"; + +const languageId = "blueprint"; + +// No replacements yet +const ignore_messages = [ + "Gtk.ShortcutsShortcut is deprecated\nhint: This widget will be removed in GTK 5", + "Gtk.ShortcutLabel is deprecated\nhint: This widget will be removed in GTK 5", + "Gtk.ShortcutsWindow is deprecated\nhint: This widget will be removed in GTK 5", + "Gtk.ShortcutsGroup is deprecated\nhint: This widget will be removed in GTK 5", + "Gtk.ShortcutsSection is deprecated\nhint: This widget will be removed in GTK 5", +]; + +export default async function blueprint({ file, lspc }) { + print(` ${file.get_path()}`); + + await diagnose({ + file, + lspc, + languageId, + filter(diagnostic) { + if (ignore_codes.includes(diagnostic.code)) return false; + if (ignore_messages.includes(diagnostic.message)) return false; + return true; + }, + }); + + const { xml } = await lspc._request("textDocument/x-blueprint-compile", { + textDocument: { + uri: file.get_uri(), + }, + }); + + print(` ✅ compiles`); + + try { + await lspc._request("x-blueprint/decompile", { + text: xml, + }); + print(" ✅ decompiles"); + } catch (err) { + if (!(err instanceof LSPError)) throw err; + if ( + ![ + // https://gitlab.gnome.org/GNOME/blueprint-compiler/-/work_items/128 + "unsupported XML tag: <condition>", + // https://gitlab.gnome.org/GNOME/blueprint-compiler/-/work_items/139 + "unsupported XML tag: <items>", + ].includes(err.message) + ) { + throw err; + } + } + + await checkFile({ + lspc, + file, + lang: getLanguage(languageId), + uri: file.get_uri(), + }); + + await lspc._notify("textDocument/didClose", { + textDocument: { + uri: file.get_uri(), + }, + }); + + const tree = parse(xml); + const template_el = tree.getChild("template"); + + let template; + const builder = new Gtk.Builder(); + const blueprint_object_ids = []; + + if (template_el) { + template = tree.toString(); + } else { + builder.add_from_string(xml, -1); + print(` ✅ instantiates`); + getXMLObjectIds(tree, blueprint_object_ids); + } + + return { template, builder, blueprint_object_ids }; +} + +function getXMLObjectIds(tree, object_ids) { + for (const object of tree.getChildren("object")) { + if (object.attrs.id) object_ids.push(object.attrs.id); + // <child> or <property name="child"> + for (const child of object.getChildElements()) { + getXMLObjectIds(child, object_ids); + } + } +} diff --git a/src/cli/css.js b/src/cli/css.js new file mode 100644 index 000000000..d1ade3916 --- /dev/null +++ b/src/cli/css.js @@ -0,0 +1,25 @@ +/* eslint-disable no-restricted-globals */ + +import { getLanguage } from "../common.js"; +import { checkFile, diagnose } from "./util.js"; + +const languageId = "css"; + +export default async function css({ file, lspc }) { + print(` ${file.get_path()}`); + + await diagnose({ file, lspc, languageId }); + + await checkFile({ + lspc, + file, + lang: getLanguage(languageId), + uri: file.get_uri(), + }); + + await lspc._notify("textDocument/didClose", { + textDocument: { + uri: file.get_uri(), + }, + }); +} diff --git a/src/cli/format.js b/src/cli/format.js new file mode 100644 index 000000000..f98568513 --- /dev/null +++ b/src/cli/format.js @@ -0,0 +1,52 @@ +import Gio from "gi://Gio"; +import Gtk from "gi://Gtk"; + +import { applyTextEdits } from "../lsp/sourceview.js"; + +export default async function format({ filenames, lang, lspc }) { + const success = true; + + for await (const filename of filenames) { + const file = Gio.File.new_for_path(filename); + const [contents] = await file.load_contents_async(null); + const text = new TextDecoder().decode(contents); + const buffer = new Gtk.TextBuffer({ text }); + + const uri = file.get_uri(); + const languageId = lang.id; + let version = 0; + + await lspc._notify("textDocument/didOpen", { + textDocument: { + uri, + languageId, + version: version++, + text: buffer.text, + }, + }); + + await formatting({ buffer, uri, lang, lspc }); + + await file.replace_contents_async( + new TextEncoder().encode(buffer.text), + null, + false, + Gio.FileCreateFlags.NONE, + null, + ); + } + + return success; +} + +export async function formatting({ buffer, uri, lang, lspc }) { + // https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_formatting + const text_edits = await lspc._request("textDocument/formatting", { + textDocument: { + uri, + }, + options: lang.formatting_options, + }); + + applyTextEdits(text_edits, buffer); +} diff --git a/src/cli/javascript.js b/src/cli/javascript.js new file mode 100644 index 000000000..67e6cf84a --- /dev/null +++ b/src/cli/javascript.js @@ -0,0 +1,56 @@ +/* eslint-disable no-restricted-globals */ + +import { getLanguage } from "../common.js"; +import { checkFile, getCodeObjectIds, diagnose, Interrupt } from "./util.js"; + +const languageId = "javascript"; + +export default async function javascript({ + file, + lspc, + blueprint_object_ids, + demo_dir, + application, + builder, + template, + window, +}) { + print(` ${file.get_path()}`); + + const text = await diagnose({ file, lspc, languageId }); + + await checkFile({ + lspc: lspc, + file: file, + lang: getLanguage("javascript"), + uri: file.get_uri(), + }); + + const js_object_ids = getCodeObjectIds(text); + for (const object_id of js_object_ids) { + if (!blueprint_object_ids.includes(object_id)) { + print(` ❌ Reference to inexistant object id "${object_id}"`); + throw new Interrupt(); + } + } + + globalThis.workbench = { + window, + application, + builder, + template, + resolve(path) { + return demo_dir.resolve_relative_path(path).get_uri(); + }, + preview() {}, + }; + + await import(`file://${file.get_path()}`); + print(" ✅ runs"); + + await lspc._notify("textDocument/didClose", { + textDocument: { + uri: file.get_uri(), + }, + }); +} diff --git a/src/cli/lint.js b/src/cli/lint.js new file mode 100644 index 000000000..e44f7904c --- /dev/null +++ b/src/cli/lint.js @@ -0,0 +1,77 @@ +/* eslint-disable no-restricted-globals */ +import Gtk from "gi://Gtk"; +import Gio from "gi://Gio"; + +import { formatting } from "./format.js"; +import { diagnostic_severities } from "../lsp/LSP.js"; +import { waitForDiagnostics } from "./util.js"; + +export default async function lint({ filenames, lang, lspc, ci }) { + let success = true; + + for await (const filename of filenames) { + const file = Gio.File.new_for_path(filename); + const [contents] = await file.load_contents_async(null); + const text = new TextDecoder().decode(contents); + const buffer = new Gtk.TextBuffer({ text }); + + const uri = file.get_uri(); + const languageId = lang.id; + let version = 0; + + await lspc._notify("textDocument/didOpen", { + textDocument: { + uri, + languageId, + version: version++, + text: buffer.text, + }, + }); + + const diagnostics = await waitForDiagnostics({ uri, lspc }); + + if (diagnostics.length > 0) { + printerr(serializeDiagnostics({ file, diagnostics })); + success = false; + } + + if (ci) { + const buffer_tmp = new Gtk.TextBuffer({ text: buffer.text }); + await formatting({ buffer: buffer_tmp, uri, lang, lspc }); + if (buffer_tmp.text === buffer.text) continue; + + printerr(`\n${file.get_path()}\nFormatting differs\n`); + success = false; + } + } + + return success; +} + +function serializeDiagnostics({ file, diagnostics }) { + return ( + `\n${file.get_path()}\n` + + diagnostics + .map(({ severity, range, message }) => { + return ( + diagnostic_severities[severity] + + " " + + range.start.line + + ":" + + range.start.character + + " " + + message.split("\n")[0] + ); + }) + .join("\n") + + "\n" + ); +} + +// Vala Language Server does not support this +// https://microsoft.github.io/language-server-protocol/specifications/lsp/3.18/specification/#textDocument_pullDiagnostics +// const res = await lspc._request("textDocument/diagnostic", { +// textDocument: { +// uri: file.get_uri(), +// }, +// }); diff --git a/src/cli/main.js b/src/cli/main.js new file mode 100644 index 000000000..4958d3e69 --- /dev/null +++ b/src/cli/main.js @@ -0,0 +1,246 @@ +/* eslint-disable no-restricted-globals */ +// G_MESSAGES_DEBUG=re.sonny.Workbench.cli ./src/cli.js blueprint + +import "../init.js"; + +import GLib from "gi://GLib"; +import Gio from "gi://Gio"; +import Adw from "gi://Adw"; +import GObject from "gi://GObject"; +import Shumate from "gi://Shumate"; +import WebKit from "gi://WebKit"; + +import { createLSPClient, languages, PYTHON_LSP_CONFIG } from "../common.js"; +import lint from "./lint.js"; +import format from "./format.js"; + +import blueprint from "./blueprint.js"; +import css from "./css.js"; +import javascript from "./javascript.js"; +import typescript from "./typescript.js"; +import vala from "./vala.js"; +import python from "./python.js"; +import rust from "./rust.js"; +import { Interrupt } from "./util.js"; +import { isTypeScriptEnabled } from "../Extensions/Extensions.js"; + +GObject.type_ensure(Shumate.SimpleMap); +GObject.type_ensure(WebKit.WebView); + +export async function main([action, ...args]) { + const current_dir = Gio.File.new_for_path(GLib.get_current_dir()); + + if (action === "ci") { + const filenames = args; + try { + await ci({ filenames }); + return 0; + } catch (err) { + if (err instanceof Interrupt) { + return 1; + } else { + throw err; + } + } + } + + const [language_id, ...filenames] = args; + const lang = languages.find((language) => language.id === language_id); + if (!lang) { + printerr(`Unknown language "${language_id}"`); + return 1; + } + + if (lang.id === "vala") { + const file_api = Gio.File.new_for_path(pkg.pkgdatadir).get_child( + "workbench.vala", + ); + file_api.copy( + current_dir.get_child("workbench.vala"), + Gio.FileCopyFlags.OVERWRITE, + null, + null, + ); + } + + const lspc = createLSPClient({ + lang, + root_uri: current_dir.get_uri(), + }); + lspc._start_process(); + await lspc._initialize(); + + if (lang.id === "python") { + await lspc._request("workspace/didChangeConfiguration", { + settings: PYTHON_LSP_CONFIG, + }); + } + + try { + if (action === "lint") { + await lint({ filenames, lang, lspc, ci: false }); + return 0; + } else if (action === "check") { + await lint({ filenames, lang, lspc, ci: true }); + return 0; + } else if (action === "format") { + await format({ filenames, lang, lspc }); + return 0; + } else { + printerr(`Unknown action "${action}"}`); + return 1; + } + } catch (err) { + if (err instanceof Interrupt) { + return 1; + } else { + throw err; + } + } +} + +const application = new Adw.Application(); +const window = new Adw.ApplicationWindow(); + +function createLSPClients({ root_uri }) { + const langs = ["javascript", "blueprint", "css", "vala", "rust", "python"]; + if (isTypeScriptEnabled()) { + langs.push("typescript"); + } + return Object.fromEntries( + langs.map((id) => { + const lang = languages.find((language) => language.id === id); + const lspc = createLSPClient({ + lang, + root_uri, + }); + lspc._start_process(); + return [id, lspc]; + }), + ); +} + +async function ci({ filenames }) { + for (const filename of filenames) { + const demo_dir = Gio.File.new_for_path(filename); + + print(`\n📂${demo_dir.get_path()}`); + + const [compatible, required_runtime_version] = isDemoCompatible(demo_dir); + if (!compatible) { + print( + ` ⚠️ skipped - requires runtime version ${required_runtime_version}`, + ); + continue; + } + + const lsp_clients = createLSPClients({ root_uri: demo_dir.get_uri() }); + await Promise.all( + Object.entries(lsp_clients).map(([, lspc]) => { + return lspc._initialize(); + }), + ); + + let template = null; + let builder = null; + let blueprint_object_ids = null; + + const file_blueprint = demo_dir.get_child("main.blp"); + if (file_blueprint.query_exists(null)) { + ({ template, builder, blueprint_object_ids } = await blueprint({ + file: file_blueprint, + lspc: lsp_clients.blueprint, + })); + } + + const file_css = demo_dir.get_child("main.css"); + if (file_css.query_exists(null)) { + await css({ file: file_css, lspc: lsp_clients.css }); + } + + const file_javascript = demo_dir.get_child("main.js"); + if (file_javascript.query_exists(null)) { + await javascript({ + file: file_javascript, + lspc: lsp_clients.javascript, + blueprint_object_ids, + demo_dir, + application, + builder, + template, + window, + }); + } + + if (isTypeScriptEnabled()) { + const file_typescript = demo_dir.get_child("main.ts"); + if (file_typescript.query_exists(null)) { + await typescript({ + file: file_typescript, + lspc: lsp_clients.typescript, + blueprint_object_ids, + demo_dir, + application, + builder, + template, + window, + }); + } + } + + const file_vala = demo_dir.get_child("main.vala"); + if (file_vala.query_exists(null)) { + await vala({ file: file_vala, lspc: lsp_clients.vala, demo_dir }); + } + + const file_python = demo_dir.get_child("main.py"); + if (file_python.query_exists(null)) { + await python({ file: file_python, lspc: lsp_clients.python }); + } + + const file_rust = demo_dir.get_child("code.rs"); + if (file_rust.query_exists(null)) { + await rust({ file: file_rust, lspc: lsp_clients.rust }); + } + + await Promise.all( + Object.entries(lsp_clients).map(([, lspc]) => { + return lspc.stop(); + }), + ); + } +} + +const key_file = new GLib.KeyFile(); +key_file.load_from_file("/.flatpak-info", GLib.KeyFileFlags.NONE); +// runtime/org.gnome.Sdk/x86_64/master +const [, , , runtime_version] = key_file + .get_string("Application", "runtime") + .split("/"); + +function isDemoCompatible(file) { + let str; + try { + str = new TextDecoder().decode( + file.get_child("main.json").load_contents(null)[1], + ); + } catch (err) { + console.warn(err); + return true; + } + + const demo = JSON.parse(str); + demo.name = file.get_basename(); + + const demo_runtime_version = demo["runtime-version"]; + + if (demo_runtime_version === "master") { + return [runtime_version === "master", demo_runtime_version]; + } else if (runtime_version === "master") { + return [true, demo_runtime_version]; + } else if (!demo_runtime_version) { + return [true, demo_runtime_version]; + } + + return [+runtime_version >= +demo_runtime_version, demo_runtime_version]; +} diff --git a/src/cli/meson.build b/src/cli/meson.build new file mode 100644 index 000000000..d62ee6516 --- /dev/null +++ b/src/cli/meson.build @@ -0,0 +1,36 @@ +bin_conf = configuration_data() +bin_conf.set('GJS', find_program('gjs').full_path()) +bin_conf.set('version', meson.project_version() + version_suffix) +bin_conf.set('app_id', app_id) +bin_conf.set('prefix', prefix) +bin_conf.set('libdir', get_option('prefix') / get_option('libdir')) +bin_conf.set('datadir', datadir) +bin_conf.set('pkgdatadir', pkgdatadir) +bin_conf.set('sourcedir', meson.project_source_root()) + +gjspack = find_program('../../troll/gjspack/bin/gjspack') + +configure_file( + input: 'bin.js', + output: app_id + '.cli', + configuration: bin_conf, + install: true, + install_dir: get_option('bindir') +) +custom_target('workbench-cli', + input: ['main.js'], + output: app_id + '.cli.src.gresource', + command: [ + gjspack, + '--appid=' + app_id + '.cli', + '--prefix', '/re/sonny/Workbench', + '--project-root', meson.project_source_root(), + '--resource-root', meson.project_source_root() / 'src', + '--no-executable', + '@INPUT0@', + '@OUTDIR@', + ], + install: true, + install_dir: datadir / app_id + '.cli', + build_always_stale: true, +) diff --git a/src/cli/python.js b/src/cli/python.js new file mode 100644 index 000000000..cfadbf955 --- /dev/null +++ b/src/cli/python.js @@ -0,0 +1,30 @@ +/* eslint-disable no-restricted-globals */ + +import { PYTHON_LSP_CONFIG, getLanguage } from "../common.js"; + +import { checkFile, diagnose } from "./util.js"; + +const languageId = "python"; + +export default async function python({ file, lspc }) { + print(` ${file.get_path()}`); + + await lspc._request("workspace/didChangeConfiguration", { + settings: PYTHON_LSP_CONFIG, + }); + + await diagnose({ file, lspc, languageId }); + + await checkFile({ + lspc, + file, + lang: getLanguage(languageId), + uri: file.get_uri(), + }); + + await lspc._notify("textDocument/didClose", { + textDocument: { + uri: file.get_uri(), + }, + }); +} diff --git a/src/cli/rust.js b/src/cli/rust.js new file mode 100644 index 000000000..ce4aad08a --- /dev/null +++ b/src/cli/rust.js @@ -0,0 +1,48 @@ +/* eslint-disable no-restricted-globals */ + +import { getLanguage } from "../common.js"; + +import { checkFile } from "./util.js"; + +const languageId = "rust"; + +export default async function rust({ file, lspc }) { + print(` ${file.get_path()}`); + + const uri = file.get_uri(); + let version = 0; + + const [contents] = await file.load_contents_async(null); + const text = new TextDecoder().decode(contents); + + await lspc._notify("textDocument/didOpen", { + textDocument: { + uri, + languageId, + version: version++, + text, + }, + }); + + // FIXME: rust analyzer doesn't publish diagnostics if there are none + // probably we should switch to pulling diagnostics but unknown if supported + // https://microsoft.github.io/language-server-protocol/specifications/lsp/3.18/specification/#textDocument_pullDiagnostics + // await diagnose({ + // file, + // lspc, + // languageId, + // }); + + await checkFile({ + lspc, + file, + lang: getLanguage(languageId), + uri, + }); + + await lspc._notify("textDocument/didClose", { + textDocument: { + uri, + }, + }); +} diff --git a/src/cli/typescript.js b/src/cli/typescript.js new file mode 100644 index 000000000..46ee5489a --- /dev/null +++ b/src/cli/typescript.js @@ -0,0 +1,56 @@ +/* eslint-disable no-restricted-globals */ + +import { getLanguage } from "../common.js"; +import { checkFile, getCodeObjectIds, diagnose, Interrupt } from "./util.js"; + +const languageId = "typescript"; + +export default async function typescript({ + file, + lspc, + blueprint_object_ids, + demo_dir, + application, + builder, + template, + window, +}) { + print(` ${file.get_path()}`); + + const text = await diagnose({ file, lspc, languageId }); + + await checkFile({ + lspc, + file, + lang: getLanguage(languageId), + uri: file.get_uri(), + }); + + const js_object_ids = getCodeObjectIds(text); + for (const object_id of js_object_ids) { + if (!blueprint_object_ids.includes(object_id)) { + print(` ❌ Reference to inexistant object id "${object_id}"`); + throw new Interrupt(); + } + } + + globalThis.workbench = { + window, + application, + builder, + template, + resolve(path) { + return demo_dir.resolve_relative_path(path).get_uri(); + }, + preview() {}, + }; + + await import(`file://${file.get_path()}`); + print(" ✅ runs"); + + await lspc._notify("textDocument/didClose", { + textDocument: { + uri: file.get_uri(), + }, + }); +} diff --git a/src/cli/util.js b/src/cli/util.js new file mode 100644 index 000000000..36682c105 --- /dev/null +++ b/src/cli/util.js @@ -0,0 +1,111 @@ +/* eslint-disable no-restricted-globals */ + +import Gtk from "gi://Gtk"; + +import { diagnostic_severities } from "../lsp/LSP.js"; +import { formatting } from "./format.js"; + +export class Interrupt extends Error { + constructor(...args) { + super(...args); + Error.captureStackTrace?.(this, Interrupt); + } +} + +export async function diagnose({ + file, + lspc, + languageId, + filter = (_diagnostic) => { + return true; + }, +}) { + const [contents] = await file.load_contents_async(null); + const text = new TextDecoder().decode(contents); + + const uri = file.get_uri(); + let version = 0; + + await lspc._notify("textDocument/didOpen", { + textDocument: { + uri, + languageId, + version: version++, + text, + }, + }); + + let diagnostics = await waitForDiagnostics({ + uri, + lspc, + }); + diagnostics = diagnostics.filter(filter); + if (diagnostics.length > 0) { + printerr(serializeDiagnostics({ diagnostics })); + throw new Interrupt(); + } + + print(` ✅ lints`); + + return text; +} + +export function serializeDiagnostics({ diagnostics }) { + return ( + diagnostics + .map(({ severity, range, message }) => { + return ( + " ❌ " + + diagnostic_severities[severity] + + " " + + range.start.line + + ":" + + range.start.character + + " " + + message.split("\n")[0] + ); + }) + .join("\n") + "\n" + ); +} + +export async function checkFile({ lspc, file, lang, uri }) { + const [contents] = await file.load_contents_async(null); + const text = new TextDecoder().decode(contents); + const buffer = new Gtk.TextBuffer({ text }); + + const buffer_tmp = new Gtk.TextBuffer({ text: buffer.text }); + await formatting({ buffer: buffer_tmp, uri, lang, lspc }); + + if (buffer_tmp.text === buffer.text) { + print(` ✅ checks`); + } else { + printerr( + ` ❌ formatting differs - open and run ${file + .get_parent() + .get_basename()} with Workbench to fix`, + ); + throw new Interrupt(); + } +} + +export function getCodeObjectIds(text) { + const object_ids = []; + for (const match of text.matchAll(/get_object\("(.+)"\)/g)) { + object_ids.push(match[1]); + } + return object_ids; +} + +export function waitForDiagnostics({ uri, lspc }) { + return new Promise((resolve) => { + const handler_id = lspc.connect( + "notification::textDocument/publishDiagnostics", + (_self, params) => { + if (uri !== params.uri) return; + lspc.disconnect(handler_id); + resolve(params.diagnostics); + }, + ); + }); +} diff --git a/src/cli/vala.js b/src/cli/vala.js new file mode 100644 index 000000000..e50a6f93a --- /dev/null +++ b/src/cli/vala.js @@ -0,0 +1,72 @@ +/* eslint-disable no-restricted-globals */ + +import Gio from "gi://Gio"; + +import { getLanguage } from "../common.js"; +import { checkFile, diagnose } from "./util.js"; + +const languageId = "vala"; + +export default async function vala({ file, lspc, demo_dir }) { + print(` ${file.get_path()}`); + + const file_api = Gio.File.new_for_path(pkg.pkgdatadir).get_child( + "workbench.vala", + ); + file_api.copy( + demo_dir.get_child("workbench.vala"), + Gio.FileCopyFlags.OVERWRITE, + null, + null, + ); + + await diagnose({ + file, + lspc, + languageId, + filter(diagnostic) { + // FIXME: deprecated features, no replacement? + if (demo_dir.get_basename() === "Text Fields") { + const ignore_for_text_fields = [ + "`Gtk.EntryCompletion' has been deprecated since 4.10", + "`Gtk.Entry.completion' has been deprecated since 4.10", + "`Gtk.ListStore' has been deprecated since 4.10", + "`Gtk.TreeIter' has been deprecated since 4.10", + ]; + return !ignore_for_text_fields.includes(diagnostic.message); + // Gtk.StyleContext class is deprecated but not the following methods + // gtk_style_context_add_provider_for_display + // gtk_style_context_remove_provider_for_display + } else if (demo_dir.get_basename() === "CSS Gradients") { + return ( + diagnostic.message !== + "`Gtk.StyleContext' has been deprecated since 4.10" + ); + } else if (demo_dir.get_basename() === "Drag and Drop") { + // I don't see what else we can use + // var icon = Gtk.DragIcon.get_for_drag(drag); + return !["use `new' operator to create new objects"].includes( + diagnostic.message, + ); + } else if (demo_dir.get_basename() === "Shortcuts Window") { + return ![ + "`Gtk.ShortcutsWindow' has been deprecated since 4.18", + ].includes(diagnostic.message); + } + return true; + }, + }); + + await checkFile({ + lspc, + file, + lang: getLanguage("vala"), + uri: file.get_uri(), + }); + + await lspc._notify("textDocument/didClose", { + textDocument: { + uri: file.get_uri(), + }, + }); +} diff --git a/src/common.js b/src/common.js new file mode 100644 index 000000000..868c4f377 --- /dev/null +++ b/src/common.js @@ -0,0 +1,190 @@ +import LSPClient from "./lsp/LSPClient.js"; + +const formatting_options = { + insertSpaces: true, + trimTrailingWhitespace: true, + insertFinalNewline: true, + trimFinalNewlines: true, +}; + +// See dropdown_code_lang for index +export const languages = [ + { + id: "blueprint", + name: "Blueprint", + panel: "ui", + extensions: [".blp"], + types: [], + document: null, + default_file: "main.blp", + // language_server: [ + // "/home/sonny/Projects/GNOME/blueprint-compiler/blueprint-compiler.py", + // "lsp", + // ], + language_server: ["blueprint-compiler", "lsp"], + formatting_options: { + ...formatting_options, + tabSize: 2, + }, + }, + { + id: "xml", + name: "GTK Builder", + panel: "ui", + extensions: [".ui"], + types: ["application/x-gtk-builder"], + document: null, + default_file: "main.ui", + }, + { + id: "javascript", + name: "JavaScript", + panel: "code", + extensions: [".js", ".mjs"], + types: ["text/javascript", "application/javascript"], + document: null, + default_file: "main.js", + index: 0, + // language_server: ["typescript-language-server", "--stdio"], + language_server: [ + "biome", + "lsp-proxy", + // src/meson.build installs biome.json there + `--config-path=${pkg.pkgdatadir}`, + ], + formatting_options: { + ...formatting_options, + tabSize: 2, + }, + }, + { + id: "css", + name: "CSS", + panel: "style", + extensions: [".css"], + types: ["text/css"], + document: null, + default_file: "main.css", + language_server: ["gtkcsslanguageserver"], + formatting_options: { + ...formatting_options, + tabSize: 2, + }, + }, + { + id: "vala", + name: "Vala", + panel: "code", + extensions: [".vala"], + types: ["text/x-vala"], + document: null, + default_file: "main.vala", + index: 1, + language_server: ["vala-language-server"], + formatting_options: { + ...formatting_options, + tabSize: 4, + }, + }, + { + id: "rust", + name: "Rust", + panel: "code", + extensions: [".rs"], + types: ["text/x-rust"], + document: null, + default_file: "code.rs", + index: 2, + language_server: ["rust-analyzer"], + formatting_options: { + ...formatting_options, + tabSize: 4, + }, + }, + { + id: "python", + name: "Python", + panel: "code", + extensions: [".py"], + types: ["text/x-python"], + document: null, + default_file: "main.py", + index: 3, + language_server: ["pylsp", "-v"], + formatting_options: { + ...formatting_options, + tabSize: 4, + }, + }, + { + id: "typescript", + name: "TypeScript", + panel: "code", + extensions: [".ts", ".mts"], + types: [], + document: null, + default_file: "main.ts", + index: 4, + language_server: ["typescript-language-server", "--stdio"], + formatting_options: { + ...formatting_options, + tabSize: 2, + }, + }, +]; + +export function getLanguage(id) { + return languages.find( + (language) => language.id.toLowerCase() === id.toLowerCase(), + ); +} + +export function createLSPClient({ lang, root_uri, quiet = true }) { + const language_id = lang.id; + + const lspc = new LSPClient(lang.language_server, { + rootUri: root_uri, + languageId: language_id, + quiet, + }); + + if (quiet === false) { + lspc.connect("exit", () => { + console.log(`${language_id} language server exit`); + }); + lspc.connect("output", (_self, message) => { + console.log( + `${language_id} language server OUT:\n${JSON.stringify( + message, + null, + 2, + )}`, + ); + }); + lspc.connect("input", (_self, message) => { + console.log( + `${language_id} language server IN:\n${JSON.stringify( + message, + null, + 2, + )}`, + ); + }); + } + + return lspc; +} + +export const PYTHON_LSP_CONFIG = { + pylsp: { + configurationSources: ["ruff"], + plugins: { + ruff: { + enabled: true, + formatEnabled: true, + executable: `${pkg.prefix}/bin/ruff`, + config: `${pkg.pkgdatadir}/ruff.toml`, + }, + }, + }, +}; diff --git a/src/flatpak.js b/src/flatpak.js new file mode 100644 index 000000000..fc4d5f277 --- /dev/null +++ b/src/flatpak.js @@ -0,0 +1,36 @@ +import GLib from "gi://GLib"; + +let flatpak_info; +export function getFlatpakInfo() { + if (flatpak_info) return flatpak_info; + flatpak_info = new GLib.KeyFile(); + try { + flatpak_info.load_from_file("/.flatpak-info", GLib.KeyFileFlags.NONE); + } catch (err) { + if (!err.matches(GLib.FileError, GLib.FileError.NOENT)) { + console.error(err); + } + return null; + } + return flatpak_info; +} + +export function getFlatpakId() { + return getFlatpakInfo().get_string("Application", "name"); +} + +// https://repology.org/project/flatpak/versions +export function isDeviceInputOverrideAvailable(flatpak_version) { + flatpak_version ??= getFlatpakInfo().get_string( + "Instance", + "flatpak-version", + ); + + // https://github.com/flatpak/flatpak/releases/tag/1.15.6 + return ( + flatpak_version.localeCompare("1.15.6", undefined, { + numeric: true, + sensitivity: "base", + }) > -1 + ); +} diff --git a/src/icons/re.sonny.Workbench-down-symbolic.svg b/src/icons/re.sonny.Workbench-down-symbolic.svg new file mode 100644 index 000000000..652f8c0d3 --- /dev/null +++ b/src/icons/re.sonny.Workbench-down-symbolic.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 2.292969 6.707031 l 5 5 c 0.390625 0.390625 1.023437 0.390625 1.414062 0 l 5 -5 c 0.390625 -0.390625 0.390625 -1.023437 0 -1.414062 s -1.023437 -0.390625 -1.414062 0 l -4.292969 4.292969 l -4.292969 -4.292969 c -0.390625 -0.390625 -1.023437 -0.390625 -1.414062 0 s -0.390625 1.023437 0 1.414062 z m 0 0" fill="#222222" fill-rule="evenodd"/></svg> diff --git a/src/icons/re.sonny.Workbench-eraser4-symbolic.svg b/src/icons/re.sonny.Workbench-eraser4-symbolic.svg new file mode 100644 index 000000000..4f41e12d3 --- /dev/null +++ b/src/icons/re.sonny.Workbench-eraser4-symbolic.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 13.949219 8.359375 s 0 0.019531 0.003906 0.011719 l -5.003906 4.914062 l 0.699219 -0.285156 h -4.621094 l 0.707031 0.292969 l -3.683594 -3.683594 v -0.019531 l 6.554688 -6.554688 h 0.019531 l -0.292969 -0.707031 c 0 0.265625 0.105469 0.519531 0.292969 0.707031 z m -3.617188 -6.03125 c 0 -0.265625 -0.105469 -0.519531 -0.292969 -0.707031 c -0.789062 -0.789063 -2.058593 -0.789063 -2.847656 0 l -6.554687 6.554687 c -0.789063 0.789063 -0.789063 2.058594 0 2.847657 l 3.683593 3.683593 c 0.1875 0.1875 0.441407 0.292969 0.707032 0.292969 h 4.621094 c 0.261718 0 0.511718 -0.101562 0.699218 -0.285156 l 5.015625 -4.921875 c 0.789063 -0.789063 0.789063 -2.058594 0 -2.847657 l -5.324219 -5.324218 z m 0 0"/><path d="m 4.277344 7.007812 l 6.015625 5.992188 c 0.195312 0.195312 0.511719 0.195312 0.707031 0 s 0.195312 -0.511719 0 -0.707031 l -6.015625 -5.996094 c -0.195313 -0.195313 -0.511719 -0.195313 -0.707031 0.003906 c -0.195313 0.195313 -0.195313 0.511719 0 0.707031 z m 0 0"/></g></svg> diff --git a/src/icons/re.sonny.Workbench-external-link-symbolic.svg b/src/icons/re.sonny.Workbench-external-link-symbolic.svg new file mode 100644 index 000000000..e88a887a0 --- /dev/null +++ b/src/icons/re.sonny.Workbench-external-link-symbolic.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 3 2 c -1.660156 0 -3 1.339844 -3 3 v 8 c 0 1.660156 1.339844 3 3 3 h 8 c 1.660156 0 3 -1.339844 3 -3 v -4 c 0 -0.550781 -0.449219 -1 -1 -1 s -1 0.449219 -1 1 v 4 c 0 0.554688 -0.445312 1 -1 1 h -8 c -0.554688 0 -1 -0.445312 -1 -1 v -8 c 0 -0.554688 0.445312 -1 1 -1 h 4 c 0.550781 0 1 -0.449219 1 -1 s -0.449219 -1 -1 -1 z m 7 -2 c -0.550781 0 -1 0.449219 -1 1 s 0.449219 1 1 1 h 2.585938 l -5.292969 5.289062 c -0.390625 0.394532 -0.390625 1.027344 0 1.417969 s 1.023437 0.390625 1.414062 0 l 5.292969 -5.292969 v 2.585938 c 0 0.550781 0.449219 1 1 1 s 1 -0.449219 1 -1 v -5 c 0 -0.085938 -0.011719 -0.171875 -0.035156 -0.257812 c -0.023438 -0.085938 -0.054688 -0.167969 -0.101563 -0.242188 c -0.042969 -0.074219 -0.09375 -0.144531 -0.15625 -0.207031 c -0.015625 -0.011719 -0.03125 -0.023438 -0.046875 -0.035157 c -0.054687 -0.050781 -0.117187 -0.09375 -0.183594 -0.128906 c -0.035156 -0.019531 -0.074218 -0.035156 -0.113281 -0.0468748 c -0.050781 -0.0234374 -0.101562 -0.0390624 -0.15625 -0.0507812 c -0.039062 -0.0117188 -0.082031 -0.015625 -0.121093 -0.0195312 c -0.03125 -0.00781255 -0.058594 -0.00781255 -0.085938 -0.0117188 z m 0 0" fill="#222222"/></svg> diff --git a/src/icons/re.sonny.Workbench-gamepad-symbolic.svg b/src/icons/re.sonny.Workbench-gamepad-symbolic.svg new file mode 100644 index 000000000..ff2aa1e8c --- /dev/null +++ b/src/icons/re.sonny.Workbench-gamepad-symbolic.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 4 2 c -1.597656 0 -2.644531 0.664062 -3 2 l -0.738281 8.324219 c -0.261719 1.59375 1.738281 2.175781 2.738281 1.175781 l 2.75 -4.5 h 4.5 l 2.75 4.5 c 1 1 3 0.527344 2.738281 -1.175781 l -0.738281 -8.324219 c -0.214844 -1.203125 -1.402344 -2.03125 -2.972656 -2.027344 z m 0.25 2 h 0.5 c 0.136719 0 0.25 0.113281 0.25 0.25 v 0.75 h 0.75 c 0.136719 0 0.25 0.113281 0.25 0.25 v 0.5 c 0 0.136719 -0.113281 0.25 -0.25 0.25 h -0.75 v 0.75 c 0 0.136719 -0.113281 0.25 -0.25 0.25 h -0.5 c -0.136719 0 -0.25 -0.113281 -0.25 -0.25 v -0.75 h -0.75 c -0.136719 0 -0.25 -0.113281 -0.25 -0.25 v -0.5 c 0 -0.136719 0.113281 -0.25 0.25 -0.25 h 0.75 v -0.75 c 0 -0.136719 0.113281 -0.25 0.25 -0.25 z m 5.765625 -0.113281 c 0.59375 0 1.078125 0.484375 1.078125 1.082031 s -0.484375 1.082031 -1.078125 1.082031 c -0.597656 0 -1.082031 -0.484375 -1.082031 -1.082031 s 0.484375 -1.082031 1.082031 -1.082031 z m 2.96875 2.019531 c 0.597656 0 1.082031 0.484375 1.082031 1.078125 c 0 0.597656 -0.484375 1.082031 -1.082031 1.082031 c -0.59375 0 -1.078125 -0.484375 -1.078125 -1.082031 c 0 -0.59375 0.484375 -1.078125 1.078125 -1.078125 z m 0 0" fill="#222222"/></svg> diff --git a/src/icons/re.sonny.Workbench-larger-brush-symbolic.svg b/src/icons/re.sonny.Workbench-larger-brush-symbolic.svg new file mode 100644 index 000000000..60f4683dc --- /dev/null +++ b/src/icons/re.sonny.Workbench-larger-brush-symbolic.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 7.996094 0 c -1.109375 0 -2 0.890625 -2 2 v 3.003906 c 0 0.632813 -0.480469 0.996094 -1 0.996094 h -1 c -1.109375 0 -2 0.890625 -2 2 v 1 h 12 v -1 c 0 -1.109375 -0.894532 -2 -2 -2 h -0.976563 c -0.53125 0 -1.023437 -0.359375 -1.023437 -1 v -3 c 0 -1.109375 -0.894532 -2 -2 -2 z m 0 1.40625 c 0.324218 0 0.59375 0.265625 0.59375 0.59375 s -0.269532 0.59375 -0.59375 0.59375 c -0.328125 0 -0.59375 -0.265625 -0.59375 -0.59375 s 0.265625 -0.59375 0.59375 -0.59375 z m 0 0"/><path d="m 2 10 h 12 l -0.800781 5.003906 c -0.199219 0.820313 -0.699219 0.996094 -1.246094 0.996094 h -1.953125 v -3 l -1.125 3 h -1.847656 l -0.027344 -3 l -1.035156 3 h -0.964844 v -1.5 l -1 1.5 h -3 l 0.210938 -1.046875 z m 0 0"/></g></svg> diff --git a/src/icons/re.sonny.Workbench-library-symbolic.svg b/src/icons/re.sonny.Workbench-library-symbolic.svg new file mode 100644 index 000000000..f9f7515fa --- /dev/null +++ b/src/icons/re.sonny.Workbench-library-symbolic.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 1.5 2 h 2 c 0.277344 0 0.5 0.222656 0.5 0.5 v 12 c 0 0.277344 -0.222656 0.5 -0.5 0.5 h -2 c -0.277344 0 -0.5 -0.222656 -0.5 -0.5 v -12 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 z m 0 0"/><path d="m 5.5 4 h 1 c 0.277344 0 0.5 0.222656 0.5 0.5 v 10 c 0 0.277344 -0.222656 0.5 -0.5 0.5 h -1 c -0.277344 0 -0.5 -0.222656 -0.5 -0.5 v -10 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 z m 0 0"/><path d="m 8.5 3 h 1 c 0.277344 0 0.5 0.222656 0.5 0.5 v 11 c 0 0.277344 -0.222656 0.5 -0.5 0.5 h -1 c -0.277344 0 -0.5 -0.222656 -0.5 -0.5 v -11 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 z m 0 0"/><path d="m 10.707031 1.460938 l 0.964844 -0.261719 c 0.265625 -0.070313 0.539063 0.089843 0.613281 0.355469 l 3.363282 12.558593 c 0.070312 0.265625 -0.085938 0.539063 -0.351563 0.609375 l -0.96875 0.261719 c -0.265625 0.070313 -0.539063 -0.089844 -0.613281 -0.355469 l -3.363282 -12.554687 c -0.070312 -0.269531 0.085938 -0.542969 0.355469 -0.613281 z m 0 0"/></g></svg> diff --git a/src/icons/re.sonny.Workbench-multitasking-windows-symbolic.svg b/src/icons/re.sonny.Workbench-multitasking-windows-symbolic.svg new file mode 100644 index 000000000..640a89c80 --- /dev/null +++ b/src/icons/re.sonny.Workbench-multitasking-windows-symbolic.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 2.035156 7.007812 c -0.53125 0 -1.03125 0.421876 -1.03125 1 v 7.011719 h 8.011719 v -3.984375 h -2 v 1.984375 h -4.011719 v -2.996093 h 2.015625 v -3.015626 z m 0 0"/><path d="m 8.019531 1.007812 c -0.53125 0 -1.03125 0.421876 -1.03125 1 v 7.011719 h 8.011719 v -7.042969 c 0 -0.578124 -0.519531 -0.96875 -1.019531 -0.96875 z m 0.96875 3.015626 h 4.011719 v 2.996093 h -4.011719 z m 0 0"/></g></svg> diff --git a/src/icons/re.sonny.Workbench-network-wireless-symbolic.svg b/src/icons/re.sonny.Workbench-network-wireless-symbolic.svg new file mode 100644 index 000000000..f33a9104e --- /dev/null +++ b/src/icons/re.sonny.Workbench-network-wireless-symbolic.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> + <path d="m 8 1.992188 c -2.617188 0 -5.238281 0.933593 -7.195312 2.808593 l -0.496094 0.480469 c -0.3984378 0.378906 -0.410156 1.011719 -0.03125 1.410156 c 0.382812 0.398438 1.015625 0.410156 1.414062 0.03125 l 0.5 -0.476562 c 3.085938 -2.957032 8.53125 -2.957032 11.617188 0 l 0.5 0.476562 c 0.398437 0.378906 1.03125 0.367188 1.414062 -0.03125 c 0.378906 -0.398437 0.367188 -1.03125 -0.03125 -1.410156 l -0.496094 -0.484375 c -1.957031 -1.871094 -4.578124 -2.804687 -7.195312 -2.804687 z m -0.03125 4.007812 c -1.570312 0.011719 -3.128906 0.628906 -4.207031 1.8125 l -0.5 0.550781 c -0.179688 0.195313 -0.277344 0.453125 -0.261719 0.71875 c 0.011719 0.265625 0.128906 0.515625 0.328125 0.695313 c 0.195313 0.179687 0.453125 0.273437 0.71875 0.257812 c 0.265625 -0.011718 0.515625 -0.128906 0.695313 -0.328125 l 0.496093 -0.546875 c 1.277344 -1.402344 4.160157 -1.496094 5.523438 0.003906 l 0.5 0.542969 c 0.175781 0.199219 0.425781 0.316407 0.691406 0.328125 c 0.265625 0.015625 0.523437 -0.078125 0.722656 -0.257812 c 0.195313 -0.179688 0.3125 -0.429688 0.324219 -0.695313 c 0.011719 -0.261719 -0.082031 -0.523437 -0.261719 -0.71875 l -0.5 -0.546875 c -1.121093 -1.234375 -2.703125 -1.828125 -4.269531 -1.816406 z m 0.03125 4 c -0.511719 0 -1.023438 0.195312 -1.414062 0.585938 c -0.78125 0.78125 -0.78125 2.046874 0 2.828124 s 2.046874 0.78125 2.828124 0 s 0.78125 -2.046874 0 -2.828124 c -0.390624 -0.390626 -0.902343 -0.585938 -1.414062 -0.585938 z m 0 0" fill="#2e3436"/> +</svg> diff --git a/src/icons/re.sonny.Workbench-person-symbolic.svg b/src/icons/re.sonny.Workbench-person-symbolic.svg new file mode 100644 index 000000000..4936089f3 --- /dev/null +++ b/src/icons/re.sonny.Workbench-person-symbolic.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 8 1 c -1.65625 0 -3 1.34375 -3 3 s 1.34375 3 3 3 s 3 -1.34375 3 -3 s -1.34375 -3 -3 -3 z m -1.5 7 c -2.492188 0 -4.5 2.007812 -4.5 4.5 v 1.5 c 0 1 1 1 1 1 h 10 s 1 0 1 -1 v -1.5 c 0 -2.492188 -2.007812 -4.5 -4.5 -4.5 z m 0 0" fill="#222222"/></svg> diff --git a/src/icons/re.sonny.Workbench-speakers-symbolic.svg b/src/icons/re.sonny.Workbench-speakers-symbolic.svg new file mode 100644 index 000000000..bf59b480b --- /dev/null +++ b/src/icons/re.sonny.Workbench-speakers-symbolic.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 12.039062 0.00390625 c -0.257812 -0.01171875 -0.523437 0.07421875 -0.726562 0.28124975 l -3.3125 3.292969 v 1.421875 h 1.390625 l 3.304687 -3.296875 c 0.40625 -0.40625 0.363282 -1.042969 0.03125 -1.394531 c -0.175781 -0.183594 -0.429687 -0.292969 -0.6875 -0.30468775 z m -5.039062 1.00390575 c -0.296875 -0.003906 -0.578125 0.125 -0.765625 0.351563 l -3.234375 3.640625 h -1 c -1.09375 0 -2 0.84375 -2 2 v 2 c 0 1.089844 0.910156 2 2 2 h 1 l 3.234375 3.640625 c 0.207031 0.253906 0.488281 0.363281 0.765625 0.359375 z m 1 5.992188 v 2 h 6 c 0.75 0 1 -0.5 1 -1 s -0.25 -1 -1 -1 z m 0 4 v 1.421875 l 3.324219 3.292969 c 0.402343 0.410156 1.0625 0.347656 1.414062 -0.023438 c 0.332031 -0.351562 0.371094 -0.988281 -0.03125 -1.390625 l -3.316406 -3.300781 z m 0 0" fill="#222222"/></svg> diff --git a/src/icons/re.sonny.Workbench-terminal-symbolic.svg b/src/icons/re.sonny.Workbench-terminal-symbolic.svg new file mode 100644 index 000000000..f2bba5b97 --- /dev/null +++ b/src/icons/re.sonny.Workbench-terminal-symbolic.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 4.515625 5.898438 c -0.164063 -0.003907 -0.324219 0.0625 -0.441406 0.175781 c -0.230469 0.234375 -0.230469 0.617187 0 0.851562 l 1.578125 1.574219 l -1.578125 1.574219 c -0.230469 0.234375 -0.230469 0.617187 0 0.851562 c 0.234375 0.230469 0.617187 0.230469 0.851562 0 l 2 -2 c 0.230469 -0.234375 0.230469 -0.617187 0 -0.851562 l -2 -2 c -0.109375 -0.105469 -0.257812 -0.167969 -0.410156 -0.175781 z m 3.484375 4.101562 v 1 h 3 v -1 z m 0 0"/><path d="m 3.039062 0 c -1.667968 0 -3.039062 1.371094 -3.039062 3.039062 v 8.921876 c 0 1.667968 1.371094 3.039062 3.039062 3.039062 h 9.921876 c 1.667968 0 3.039062 -1.371094 3.039062 -3.039062 v -8.921876 c 0 -1.667968 -1.371094 -3.039062 -3.039062 -3.039062 z m 0 2 h 9.921876 c 0.59375 0 1.039062 0.445312 1.039062 1.039062 v 8.921876 c 0 0.59375 -0.445312 1.039062 -1.039062 1.039062 h -9.921876 c -0.59375 0 -1.039062 -0.445312 -1.039062 -1.039062 v -8.921876 c 0 -0.59375 0.445312 -1.039062 1.039062 -1.039062 z m 0 0"/></g></svg> diff --git a/src/icons/re.sonny.Workbench-test-pass-symbolic.svg b/src/icons/re.sonny.Workbench-test-pass-symbolic.svg new file mode 100644 index 000000000..345db1216 --- /dev/null +++ b/src/icons/re.sonny.Workbench-test-pass-symbolic.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 8.234375 1.003906 c -2.15625 -0.070312 -4.277344 0.859375 -5.683594 2.601563 c -1.871093 2.316406 -2.066406 5.582031 -0.484375 8.105469 c 1.582032 2.527343 4.601563 3.777343 7.503906 3.109374 c 2.90625 -0.667968 5.074219 -3.117187 5.390626 -6.082031 c 0.046874 -0.359375 -0.101563 -0.71875 -0.394532 -0.933593 c -0.292968 -0.21875 -0.679687 -0.257813 -1.011718 -0.109376 c -0.332032 0.152344 -0.554688 0.472657 -0.582032 0.835938 c -0.226562 2.121094 -1.769531 3.863281 -3.851562 4.34375 c -2.078125 0.476562 -4.226563 -0.414062 -5.359375 -2.222656 c -1.132813 -1.808594 -0.992188 -4.128906 0.347656 -5.792969 s 3.578125 -2.289063 5.585937 -1.5625 c 0.339844 0.128906 0.71875 0.066406 0.996094 -0.167969 c 0.28125 -0.230468 0.410156 -0.59375 0.34375 -0.949218 c -0.0625 -0.355469 -0.316406 -0.648438 -0.660156 -0.761719 c -0.699219 -0.253907 -1.421875 -0.390625 -2.140625 -0.414063 z m 0 0"/><path d="m 13.167969 2.542969 l -5.292969 5.292969 l -2.417969 -2.417969 l -1.414062 1.414062 l 3.832031 3.832031 l 6.707031 -6.707031 z m 0 0"/></g></svg> diff --git a/src/icons/re.sonny.Workbench-up-symbolic.svg b/src/icons/re.sonny.Workbench-up-symbolic.svg new file mode 100644 index 000000000..ae326a8c7 --- /dev/null +++ b/src/icons/re.sonny.Workbench-up-symbolic.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 2.292969 10.3125 l 5 -5.019531 c 0.1875 -0.1875 0.441406 -0.292969 0.707031 -0.292969 s 0.519531 0.105469 0.707031 0.292969 l 5 5 c 0.390625 0.390625 0.390625 1.023437 0 1.414062 s -1.023437 0.390625 -1.414062 0 l -4.292969 -4.289062 l -4.292969 4.304687 c -0.386719 0.390625 -1.019531 0.390625 -1.414062 0.003906 c -0.390625 -0.390624 -0.390625 -1.023437 -0.003907 -1.414062 z m 0 0" fill="#222222" fill-rule="evenodd"/></svg> diff --git a/src/init.js b/src/init.js index 59ad3a71a..54b35ffdd 100644 --- a/src/init.js +++ b/src/init.js @@ -1,27 +1,29 @@ -import "gi://Gtk?version=4.0"; -import "gi://GtkSource?version=5"; -import "gi://Adw?version=1"; -import "gi://Vte?version=3.91"; -import "gi://Soup?version=3.0"; -import "gi://WebKit?version=6.0"; -import "gi://Pango?version=1.0"; - -import Gtk from "gi://Gtk"; +import "gi://GIRepository?version=3.0"; +import Gtk from "gi://Gtk?version=4.0"; +import Source from "gi://GtkSource"; +import Adw from "gi://Adw"; +import Vte from "gi://Vte"; +import GObject from "gi://GObject"; import Gio from "gi://Gio"; import Xdp from "gi://Xdp"; -import Source from "gi://GtkSource"; -import WebKit from "gi://WebKit"; +Adw.init(); +GObject.type_ensure(Vte.Terminal); + +Gio._promisify(Adw.AlertDialog.prototype, "choose", "choose_finish"); Gio._promisify(Xdp.Portal.prototype, "trash_file", "trash_file_finish"); Gio._promisify(Xdp.Portal.prototype, "open_uri", "open_uri_finish"); Gio._promisify(Xdp.Portal.prototype, "open_file", "open_file_finish"); Gio._promisify(Xdp.Portal.prototype, "open_directory", "open_directory_finish"); Gio._promisify(Xdp.Portal.prototype, "save_files", "save_files_finish"); + Gio._promisify( Gtk.FileDialog.prototype, "select_folder", "select_folder_finish", ); +Gio._promisify(Gtk.UriLauncher.prototype, "launch", "launch_finish"); +Gio._promisify(Gtk.FileLauncher.prototype, "launch", "launch_finish"); Gio._promisify( Gio.InputStream.prototype, @@ -39,8 +41,8 @@ Gio._promisify( Gio._promisify(Gio.OutputStream.prototype, "close_async", "close_finish"); Gio._promisify( Gio.OutputStream.prototype, - "write_bytes_async", - "write_bytes_finish", + "write_all_async", + "write_all_finish", ); Gio._promisify(Gio.Subprocess.prototype, "wait_async", "wait_finish"); @@ -69,12 +71,6 @@ Gio._promisify(Source.FileLoader.prototype, "load_async", "load_finish"); Gio._promisify(Gio.DBusProxy, "new", "new_finish"); Gio._promisify(Gio.DBusConnection.prototype, "close", "close_finish"); -Gio._promisify( - WebKit.WebView.prototype, - "evaluate_javascript", - "evaluate_javascript_finish", -); - Gio._promisify( Gio.File.prototype, "enumerate_children_async", @@ -86,3 +82,11 @@ Gio._promisify( "load_contents_async", "load_contents_finish", ); + +Gio._promisify( + Gio.FileEnumerator.prototype, + "next_files_async", + "next_files_finish", +); + +Gio._promisify(Gio.File.prototype, "copy_async", "copy_finish"); diff --git a/src/langs/blueprint/BlueprintDocument.js b/src/langs/blueprint/BlueprintDocument.js new file mode 100644 index 000000000..89b5e299e --- /dev/null +++ b/src/langs/blueprint/BlueprintDocument.js @@ -0,0 +1,56 @@ +import Document from "../../Document.js"; +import { applyTextEdits } from "../../lsp/sourceview.js"; + +import { setup } from "./blueprint.js"; + +export class BlueprintDocument extends Document { + constructor(...args) { + super(...args); + + this.lspc = setup({ document: this }); + this.code_view.lspc = this.lspc; + } + async update() { + return this.lspc.didChange(); + } + async compile() { + await this.update(); + + let xml = null; + + try { + ({ xml } = await this.lspc.request("textDocument/x-blueprint-compile", { + textDocument: { + uri: this.file.get_uri(), + }, + })); + } catch (err) { + console.debug(err); + } + + return xml; + } + async decompile(text) { + const { blp } = await this.lspc.request("x-blueprint/decompile", { + text, + }); + return blp; + } + async format() { + // https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_formatting + const text_edits = await this.lspc.request("textDocument/formatting", { + textDocument: { + uri: this.file.get_uri(), + }, + options: { + tabSize: 2, + insertSpaces: true, + trimTrailingWhitespace: true, + insertFinalNewline: true, + trimFinalNewlines: true, + }, + }); + + applyTextEdits(text_edits, this.buffer); + } +} diff --git a/src/langs/blueprint/blueprint.js b/src/langs/blueprint/blueprint.js index 4778e154a..7e5682e8d 100644 --- a/src/langs/blueprint/blueprint.js +++ b/src/langs/blueprint/blueprint.js @@ -1,46 +1,69 @@ import GLib from "gi://GLib"; -import LSPClient from "../../lsp/LSPClient.js"; +import { createLSPClient } from "../../common.js"; +import { getLanguage } from "../../util.js"; +import { CompletionItemKind } from "../../lsp/LSP.js"; + +export const ignore_codes = [ + // FIXME: let's add a11y label to all demo images? + "missing_descriptive_text", + // This is potentially confusing to newcomers? + // Should we update all demos to use Adw.Bin instead of Box? + "use_adw_bin", + // The top level widget in Workbench demos has no ID + "unused_widget", + // Fails for: + // adjustment: Adjustment { + // lower: 100; + // upper: 1000; + // value: 200; + // step-increment: 10; + // }; + // TODO: file an issue + "adjustment_prop_order", + // Fails for: + // Label { + // label: "<a href=\"...\">foo<a>" + // use-markup: true + // } + // TODO: file an issue + "use_unicode", + // TODO: many warnings, investigate + "missing_user_facing_text", + // "SVG" or "CSS" is all caps and that's fine + "avoid_all_caps", + // Sometimes we don't want the widget to scroll + // e.g. CSS Gradients demo GtkSource.View + "scrollable_parent", +]; export function setup({ document }) { - const { file, code_view } = document; + const { file, code_view, buffer } = document; const lspc = createLSPClient({ - code_view, - file, + lang: getLanguage("blueprint"), + root_uri: file.get_parent().get_uri(), + quiet: true, }); - - lspc.start().catch(logError); - - return { - lspc, - async update() { - return lspc.didChange(); + lspc.buffer = buffer; + lspc.uri = file.get_uri(); + lspc.connect( + "notification::textDocument/publishDiagnostics", + (_self, params) => { + if (params.uri !== file.get_uri()) { + return; + } + // FIXME: Somehow merge with the similar logic of cli/blueprint.js + const diagnostics = params.diagnostics.filter( + (diag) => !ignore_codes.includes(diag.code), + ); + code_view.handleDiagnostics(diagnostics); }, - async compile() { - await lspc.didChange(); - - let xml = null; + ); - try { - ({ xml } = await lspc.request("textDocument/x-blueprint-compile", { - textDocument: { - uri: file.get_uri(), - }, - })); - } catch (err) { - console.debug(err); - } + lspc.start().catch(console.error); - return xml; - }, - async decompile(text) { - const { blp } = await lspc.request("x-blueprint/decompile", { - text, - }); - return blp; - }, - }; + return lspc; } const SYSLOG_IDENTIFIER = pkg.name; @@ -59,40 +82,19 @@ export function logBlueprintInfo(info) { }); } -function createLSPClient({ code_view, file }) { - const bin = "/app/bin/blueprint-compiler"; - const uri = file.get_uri(); - // const bin = GLib.build_filenamev([ - // pkg.sourcedir, - // "blueprint-compiler/blueprint-compiler.py", - // ]); - - const lspc = new LSPClient([bin, "lsp"], { - rootUri: file.get_parent().get_uri(), - uri, - languageId: "blueprint", - buffer: code_view.buffer, - }); - - lspc.connect("exit", () => { - console.debug("blueprint language server exit"); - }); - lspc.connect("output", (_self, message) => { - console.debug(`blueprint language server OUT:\n${JSON.stringify(message)}`); - }); - lspc.connect("input", (_self, message) => { - console.debug(`blueprint language server IN:\n${JSON.stringify(message)}`); - }); - - lspc.connect( - "notification::textDocument/publishDiagnostics", - (_self, params) => { - if (params.uri !== uri) { - return; - } - code_view.handleDiagnostics(params.diagnostics); - }, - ); - - return lspc; +export function sortBlueprintProposals(a, b) { + if (a.kind === b.kind) return 0; + + if (a.kind === CompletionItemKind.Property) return -1; + if (b.kind === CompletionItemKind.Property) return 1; + if (a.kind === CompletionItemKind.Snippet) return -1; + if (b.kind === CompletionItemKind.Snippet) return 1; + if (a.kind === CompletionItemKind.Keyword) return -1; + if (b.kind === CompletionItemKind.Keyword) return 1; + if (a.kind === CompletionItemKind.Event) return -1; + if (b.kind === CompletionItemKind.Event) return 1; + if (a.kind === CompletionItemKind.Class) return -1; + if (b.kind === CompletionItemKind.Class) return 1; + + return a.sortText.localeCompare(b.sortText); } diff --git a/src/langs/css/CssDocument.js b/src/langs/css/CssDocument.js new file mode 100644 index 000000000..733d0cd77 --- /dev/null +++ b/src/langs/css/CssDocument.js @@ -0,0 +1,34 @@ +import Document from "../../Document.js"; +import { applyTextEdits } from "../../lsp/sourceview.js"; +import { setup } from "./css.js"; + +export class CssDocument extends Document { + constructor(...args) { + super(...args); + + this.lspc = setup({ document: this }); + this.code_view.lspc = this.lspc; + } + + async format() { + // https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_formatting + const text_edits = await this.lspc.request("textDocument/formatting", { + textDocument: { + uri: this.file.get_uri(), + }, + options: { + tabSize: 2, + insertSpaces: true, + trimTrailingWhitespace: true, + insertFinalNewline: true, + trimFinalNewlines: true, + }, + }); + + // GTKCssLanguageServer doesn't support diff - it just returns one edit + // we don't want to loose the cursor position so we use this + const state = this.code_view.saveState(); + applyTextEdits(text_edits, this.buffer); + await this.code_view.restoreState(state); + } +} diff --git a/src/langs/css/css.js b/src/langs/css/css.js index 951228b1b..4081dfe4c 100644 --- a/src/langs/css/css.js +++ b/src/langs/css/css.js @@ -1,54 +1,31 @@ -import LSPClient from "../../lsp/LSPClient.js"; +import { createLSPClient } from "../../common.js"; +import { getLanguage } from "../../util.js"; export function setup({ document }) { - const { file, code_view } = document; + const { file, buffer, code_view } = document; const lspc = createLSPClient({ - code_view, - file, + lang: getLanguage("css"), + root_uri: file.get_parent().get_uri(), + quiet: true, }); - - lspc.start().catch(logError); - code_view.buffer.connect("modified-changed", () => { - if (!code_view.buffer.get_modified()) return; - lspc.didChange().catch(logError); - }); -} - -function createLSPClient({ code_view, file }) { - const uri = file.get_uri(); - - const lspc = new LSPClient(["gtkcsslanguageserver"], { - rootUri: file.get_parent().get_uri(), - uri, - languageId: "css", - buffer: code_view.buffer, - }); - - lspc.connect("exit", () => { - console.debug("gtkcsslanguageserver language server exit"); - }); - lspc.connect("output", (_self, message) => { - console.debug( - `gtkcsslanguageserver language server OUT:\n${JSON.stringify(message)}`, - ); - }); - lspc.connect("input", (_self, message) => { - console.debug( - `gtkcsslanguageserver language server IN:\n${JSON.stringify(message)}`, - ); - }); - - // https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_publishDiagnostics + lspc.buffer = buffer; + lspc.uri = file.get_uri(); lspc.connect( "notification::textDocument/publishDiagnostics", (_self, params) => { - if (params.uri !== uri) { + if (params.uri !== file.get_uri()) { return; } code_view.handleDiagnostics(params.diagnostics); }, ); + lspc.start().catch(console.error); + buffer.connect("modified-changed", () => { + if (!buffer.get_modified()) return; + lspc.didChange().catch(console.error); + }); + return lspc; } diff --git a/src/langs/css/meson.build b/src/langs/css/meson.build new file mode 100644 index 000000000..d4b75b7c8 --- /dev/null +++ b/src/langs/css/meson.build @@ -0,0 +1,15 @@ +gjspack = find_program(meson.project_source_root() / 'troll/gjspack/bin/gjspack') +custom_target('prettier', + input: ['prettier.js'], + output: ['prettier', 'prettier.src.gresource'], + command: [ + gjspack, + '--resource-root', meson.project_source_root() / 'src', + '@INPUT0@', + '@OUTDIR@', + ], + install: true, + install_dir: get_option('bindir'), + build_always_stale: true, +) + diff --git a/src/langs/css/prettier.js b/src/langs/css/prettier.js new file mode 100755 index 000000000..79a9febdd --- /dev/null +++ b/src/langs/css/prettier.js @@ -0,0 +1,29 @@ +#!/usr/bin/env -S gjs -m + +// Shim to Node.js prettier CLI for GTKCssLanguageServer +// ./src/langs/css/prettier.js --stdin-filepath src/style.css +// or +// ./troll/gjspack/bin/gjspack src/langs/css/prettier.js src/langs/css && ./src/langs/css/prettier --stdin-filepath src/style.css + +import { exit } from "system"; +import Gio from "gi://Gio"; + +import { format } from "../../lib/prettier.js"; +import prettier_postcss from "../../lib/prettier-postcss.js"; + +const idx = ARGV.indexOf("--stdin-filepath"); +if (idx < 0) exit(1); +const filename = ARGV[idx + 1]; +if (!filename) exit(1); + +const file = Gio.File.new_for_path(filename); +const [, contents] = file.load_contents(null); +const text = new TextDecoder().decode(contents); + +const formatted = await format(text, { + parser: "css", + plugins: [prettier_postcss], +}); + +const stream = new Gio.UnixOutputStream({ fd: 1 }); +stream.write_all(formatted, null); diff --git a/src/langs/javascript/Builder.js b/src/langs/javascript/Builder.js new file mode 100644 index 000000000..7912a0774 --- /dev/null +++ b/src/langs/javascript/Builder.js @@ -0,0 +1,38 @@ +import Gio from "gi://Gio"; +import GLib from "gi://GLib"; + +import { buildRuntimePath } from "../../util.js"; + +export default function JavascriptBuilder() { + async function run(text) { + // We have to create a new file each time + // because gjs doesn't appear to use etag for module caching + // ?foo=Date.now() also does not work as expected + // https://gitlab.gnome.org/GNOME/gjs/-/issues/618 + const path = buildRuntimePath(`workbench-${Date.now()}`); + const file_javascript = Gio.File.new_for_path(path); + await file_javascript.replace_contents_async( + new GLib.Bytes(text), + null, + false, + Gio.FileCreateFlags.NONE, + null, + ); + + let exports; + try { + exports = await import(`file://${file_javascript.get_path()}`); + } catch (err) { + console.error(err); + return false; + } finally { + file_javascript + .delete_async(GLib.PRIORITY_DEFAULT, null) + .catch(console.error); + } + + return exports; + } + + return { run }; +} diff --git a/src/langs/javascript/JavaScriptDocument.js b/src/langs/javascript/JavaScriptDocument.js new file mode 100644 index 000000000..7bc14f468 --- /dev/null +++ b/src/langs/javascript/JavaScriptDocument.js @@ -0,0 +1,35 @@ +import { setup } from "./javascript.js"; + +import Document from "../../Document.js"; +import { applyTextEdits } from "../../lsp/sourceview.js"; + +export class JavaScriptDocument extends Document { + constructor(...args) { + super(...args); + + this.lspc = setup({ document: this }); + this.code_view.lspc = this.lspc; + } + + async format() { + // https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_formatting + const text_edits = await this.lspc.request("textDocument/formatting", { + textDocument: { + uri: this.file.get_uri(), + }, + options: { + tabSize: 2, + insertSpaces: true, + trimTrailingWhitespace: true, + insertFinalNewline: true, + trimFinalNewlines: true, + }, + }); + + // Biome doesn't support diff - it just returns one edit + // we don't want to loose the cursor position so we use this + const state = this.code_view.saveState(); + applyTextEdits(text_edits, this.buffer); + await this.code_view.restoreState(state); + } +} diff --git a/src/langs/javascript/biome.json b/src/langs/javascript/biome.json new file mode 100644 index 000000000..ca5b2788e --- /dev/null +++ b/src/langs/javascript/biome.json @@ -0,0 +1,20 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.3.3/schema.json", + "javascript": { + "globals": ["workbench"] + }, + "formatter": { + "indentStyle": "space", + "indentWidth": 2 + }, + "linter": { + "rules": { + "recommended": false, + "correctness": { + "noUndeclaredVariables": "error", + "noUnusedVariables": "warn", + "noUnusedImports": "warn" + } + } + } +} diff --git a/src/langs/javascript/javascript.js b/src/langs/javascript/javascript.js index b09af6cea..972c33b5b 100644 --- a/src/langs/javascript/javascript.js +++ b/src/langs/javascript/javascript.js @@ -1,85 +1,53 @@ import Gio from "gi://Gio"; -import LSPClient from "../../lsp/LSPClient.js"; +import { createLSPClient } from "../../common.js"; +import { getLanguage, copy } from "../../util.js"; export function setup({ document }) { - const { file, code_view } = document; + const { file, buffer, code_view } = document; const lspc = createLSPClient({ - code_view, - file, + lang: getLanguage("javascript"), + root_uri: file.get_parent().get_uri(), + quiet: true, }); - - lspc.start().catch(logError); - code_view.buffer.connect("modified-changed", () => { - if (!code_view.buffer.get_modified()) return; - lspc.didChange().catch(logError); - }); -} - -function createLSPClient({ file, code_view }) { - const uri = file.get_uri(); - - const lspc = new LSPClient(["rome", "lsp-proxy"], { - rootUri: file.get_parent().get_uri(), - uri, - languageId: "javascript", - buffer: code_view.buffer, - }); - lspc.capabilities.workspace = { configuration: true }; - - lspc.connect("exit", () => { - console.debug("rome language server exit"); - }); - lspc.connect("output", (_self, message) => { - console.debug(`rome language server OUT:\n${JSON.stringify(message)}`); - }); - lspc.connect("input", (_self, message) => { - console.debug(`rome language server IN:\n${JSON.stringify(message)}`); - }); - - // https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#workspace_configuration - lspc.connect("request::workspace/configuration", (_self, { id, params }) => { - lspc - .send({ - id, - result: params.items.map((item) => { - return item.section === "rome" - ? { - formatter: { - enabled: true, - indentStyle: "space", - indentSize: 2, - }, - linter: { - enabled: true, - rules: { - recommended: true, - correctness: { - noUnusedVariables: "warn", - }, - style: { - useBlockStatements: "warn", - }, - }, - }, - } - : undefined; - }), - }) - .catch(logError); - }); - - // https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_publishDiagnostics + lspc.buffer = buffer; + lspc.uri = file.get_uri(); lspc.connect( "notification::textDocument/publishDiagnostics", (_self, params) => { - if (params.uri !== uri) { + if (params.uri !== file.get_uri()) { return; } code_view.handleDiagnostics(params.diagnostics); }, ); + lspc.start().catch(console.error); + + buffer.connect("modified-changed", () => { + if (!buffer.get_modified()) return; + lspc.didChange().catch(console.error); + }); + return lspc; } + +const javascript_template_dir = Gio.File.new_for_path( + pkg.pkgdatadir, +).resolve_relative_path("langs/javascript/template"); + +export async function setupJavascriptProject(destination, document) { + const destination_file = await copy( + "jsconfig.json", + javascript_template_dir, + destination, + Gio.FileCopyFlags.NONE, + ); + + // Notify the language server that the jsconfig file was created + // to initialize diagnostics and type checkings + await document.lspc.notify("workspace/didCreateFile", { + files: [{ uri: destination_file.get_uri() }], + }); +} diff --git a/src/langs/javascript/meson.build b/src/langs/javascript/meson.build new file mode 100644 index 000000000..a3ddb85bb --- /dev/null +++ b/src/langs/javascript/meson.build @@ -0,0 +1,6 @@ +configure_file( + input: 'template/jsconfig.json', + output: 'jsconfig.json', + install_dir: pkgdatadir / 'langs/javascript/template/', + configuration: bin_conf, +) diff --git a/src/langs/javascript/template/jsconfig.json b/src/langs/javascript/template/jsconfig.json new file mode 100644 index 000000000..835b0797c --- /dev/null +++ b/src/langs/javascript/template/jsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "checkJs": true, + "module": "ESNext", + "moduleResolution": "Bundler", + // TODO: should probably be fixed to ES2023, or whatever standard is + // currently supported by the latest GJS + "target": "ESNext", + "outDir": "compiled_javascript", + "baseUrl": ".", + "paths": { + "*": ["*", "@pkgdatadir@/langs/typescript/gi-types/*"] + }, + "skipLibCheck": true + }, + "include": [ + "main.js", + "@pkgdatadir@/langs/typescript/types/ambient.d.ts", + "@pkgdatadir@/langs/typescript/gi-types/gi.d.ts" + ] +} diff --git a/src/langs/python/Builder.js b/src/langs/python/Builder.js new file mode 100644 index 000000000..a84e8368e --- /dev/null +++ b/src/langs/python/Builder.js @@ -0,0 +1,17 @@ +import dbus_previewer from "../../Previewer/DBusPreviewer.js"; + +export default function PythonBuilder({ session }) { + async function run() { + try { + const proxy = await dbus_previewer.getProxy("python"); + await proxy.RunAsync(session.file.get_path(), session.file.get_uri()); + } catch (err) { + console.error(err); + return false; + } + + return true; + } + + return { run }; +} diff --git a/src/langs/python/PythonDocument.js b/src/langs/python/PythonDocument.js new file mode 100644 index 000000000..1e2080c3f --- /dev/null +++ b/src/langs/python/PythonDocument.js @@ -0,0 +1,35 @@ +import { setup } from "./python.js"; + +import Document from "../../Document.js"; +import { applyTextEdits } from "../../lsp/sourceview.js"; + +export class PythonDocument extends Document { + constructor(...args) { + super(...args); + + this.lspc = setup({ document: this }); + this.code_view.lspc = this.lspc; + } + + async format() { + // https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_formatting + const text_edits = await this.lspc.request("textDocument/formatting", { + textDocument: { + uri: this.file.get_uri(), + }, + options: { + tabSize: 4, + insertSpaces: true, + trimTrailingWhitespace: true, + insertFinalNewline: true, + trimFinalNewlines: true, + }, + }); + + // lsp Ruff doesn't support diff - it just returns one edit + // we don't want to loose the cursor position so we use this + const state = this.code_view.saveState(); + applyTextEdits(text_edits, this.buffer); + await this.code_view.restoreState(state); + } +} diff --git a/src/langs/python/gdbus_ext.py b/src/langs/python/gdbus_ext.py new file mode 100644 index 000000000..1a54536f7 --- /dev/null +++ b/src/langs/python/gdbus_ext.py @@ -0,0 +1,866 @@ +# This has been contributed to PyGObject: https://gitlab.gnome.org/GNOME/pygobject/-/merge_requests/263 +# Once merged & released, this file can be removed and replaced. +######################################################################################################################## +# Copyright 2023 Marco Köpcke +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see <http://www.gnu.org/licenses/>. +""" +This module adds a convenient API to turn Python objects into implementations for D-Bus objects. +The API is inspired by `Gtk.Template` and `GObject.Object`'s properties. + +The module exports a single class `DBusTemplate`, more information can be found in the docstring of that type. +""" + +from __future__ import annotations + +import os +import traceback +from functools import partial, partialmethod, update_wrapper +from typing import ( + Optional, + Union, + Callable, + Protocol, + Tuple, + ClassVar, + Set, + Dict, + List, + Any, + Iterable, +) + +from gi.repository import Gio, GLib + + +class DBusHandlerStandIn: + """ + Instances of this class replace decorated methods in a class temporarily, until collected in + `DBusTemplate.__call__`. + + There the methods are either replaced again with their original methods, a partial method adding extra behaviour. + In the case of properties however, this "stand in" (which is then of subclass `DBusProperty`) is kept and acts + as a descriptor for the property. + """ + + def __init__( + self, + typ: str, + name: str, + func: Callable, + interface: Optional[str], + ): + self.type = typ + self.name = name + self.func = func + # The interface if not set is auto-detected in `DBusTemplate.__call__` (if possible). + # For `DBusProperty` it is then also set on the class. + self.interface = interface + + +class DBusProperty(DBusHandlerStandIn): + """ + Descriptor for D-Bus properties. Generated by decorating a class method with `Property`. The `setter` method + can be used to create a setter, the same way it works with regular Python properties. + """ + + def __init__( + self, + name: str, + func: Callable, + interface: Optional[str], + emit_changed: bool, + emit_with_value: bool, + setter_func: Optional[Callable] = None, + ): + super().__init__("property", name, func, interface) + self.emit_changed = emit_changed + self.emit_with_value = emit_with_value + self.setter_func = setter_func + + def __repr__(self): + return f"<D-Bus Property {self.interface or '<uninitialized>'}.{self.name}>" + + def __get__(self, instance: Optional[IsDecorated], klass): + if instance is None: + return self + + return self.func(instance) + + def __set__(self, instance: Optional[IsDecorated], value): + if instance is None: + raise TypeError + + if self.setter_func is not None: + self.setter_func(instance, value) + else: + raise TypeError("this property is read-only") + + properties = instance.__giodbustemplate__properties__ + prop_info = properties[self.interface][self.name][0] + if self.emit_changed: + if self.emit_with_value: + emit_properties_changed( + instance, + self.interface, + {self.name: GLib.Variant(prop_info.signature, value)}, + [], + ) + else: + emit_properties_changed(instance, self.interface, {}, [self.name]) + + def getter(self, fget): + """Set the getter function to fget. For use as a decorator.""" + if fget.__doc__: + self.__doc__ = fget.__doc__ + self.func = fget + return self + + def setter(self, fset): + """Set the setter function to fset. For use as a decorator.""" + self.setter_func = fset + return self + + +_NotUnique = None +_InterfacesType = List[Gio.DBusInterfaceInfo] +# outer key: interface name; inner key: method name +_MethodsType = Dict[str, Dict[str, Tuple[Gio.DBusMethodInfo, Callable]]] +# outer key: interface name; inner key: property name; tuple members: info, getter, setter +_PropertiesType = Dict[ + str, + Dict[str, Tuple[Gio.DBusPropertyInfo, DBusProperty]], +] +_UniqueElementsType = Dict[str, Union[Gio.DBusInterfaceInfo, _NotUnique]] +_OpenPropsType = Dict[Tuple[str, str], DBusHandlerStandIn] + + +def to_pascal_case(input_str): + def _capitalize_parts(words): + for word in words: + if len(word) < 2: + yield word.capitalize() + else: + yield word[0].capitalize() + word[1:] + + return "".join(_capitalize_parts(input_str.split("_"))) + + +def generate_name( + maybe_name: Optional[str], func, remove_prefix: Optional[str] = None +) -> str: + """Generates the name of a D-Bus method/signal/property by using the given name or a functions __name__.""" + if maybe_name is not None: + return maybe_name + if hasattr(func, "__name__"): + basename = func.__name__ + if remove_prefix is not None and basename.startswith(remove_prefix): + basename = basename[len(remove_prefix) :] + return to_pascal_case(basename) + raise NameError("the method decorated has no name and no name was given") + + +class Method: + """ + Decorator that declares a D-Bus method and defines a handler method for it. + + The method will be passed all the arguments used. + It must return None when no out arguments are defined. + If one out argument is defined it may either return a tuple with one element or the output argument directly. + If more out arguments are defined, it must return them all in a tuple. + + The decorated method must not have kwargs or keyword-only arguments. + """ + + def __init__(self, name: Optional[str] = None, interface: Optional[str] = None): + """ + :param Optional[str] name: + Name of the method. If not set the name is generated to be the + PascalCase version of the decorated method name. + + :param Optional[str] interface: + Name of the interface that this method is defined on. + This will usually be auto-detected based on the method name, however if + there is a conflict it needs to be set manually. + """ + self._name = name + self._interface = interface + + def __call__(self, func): + return DBusHandlerStandIn( + "method", generate_name(self._name, func), func, self._interface + ) + + +class Signal: + """ + Decorator that declares a signal and defines an emitter for a D-Bus signal. + + If `name` is not set, the name is generated to be the PascalCase version of the decorated + method name. + + The decorated method gets all the arguments that are supposed to be sent in. It + may return a tuple to override the arguments to send (it must be the same number and + compatible types). Otherwise, it must just return None. + + The decorated method must not have kwargs or keyword-only arguments. + """ + + def __init__(self, name: Optional[str] = None, interface: Optional[str] = None): + """ + :param Optional[str] name: + Name of the signal. If not set the name is generated to be the + PascalCase version of the decorated method name. + + :param Optional[str] interface: + Name of the interface that this signal is defined on. + This will usually be auto-detected based on the method name, however if + there is a conflict it needs to be set manually. + """ + self._name = name + self._interface = interface + + def __call__(self, func): + return DBusHandlerStandIn( + "signal", generate_name(self._name, func), func, self._interface + ) + + +class Property: + """ + Decorator that declares a property. + + Decorated methods handle getting a property. You can then use `@property_name.setter` (where property_name is + the original method name) on another method to declare it as the setter for that property. + + When a property value changes via a setter, a `PropertiesChanged` signal is sent + (unless disabled via `emit_changed`). + When the property is changed internally, `DBusTemplate.properties_changed` can be used to emit + this signal manually. + + The decorated method must not have kwargs or keyword-only arguments. + """ + + def __init__( + self, + name: Optional[str] = None, + interface: Optional[str] = None, + *, + emit_changed: bool = True, + emit_with_value: bool = True, + ): + """ + :param Optional[str] name: + Name of the method. If not set the name is generated to be the + PascalCase version of the decorated method name. + + :param Optional[str] interface: + Name of the interface that this method is defined on. + This will usually be auto-detected based on the method name, however if + there is a conflict it needs to be set manually. + + :param bool emit_changed: + If set to `False`, updates to this property will not be sent via `PropertiesChanged`. + + :param bool emit_with_value: + If set to `False`, the value will not be included in `PropertiesChanged` (it will be sent + as part of `invalidated_properties`). + """ + self._name = name + self._interface = interface + self._emit_changed = emit_changed + self._emit_with_value = emit_with_value + + def __call__(self, func): + return DBusProperty( + generate_name(self._name, func), + func, + self._interface, + self._emit_changed, + self._emit_with_value, + ) + + +class IsDecorated(Protocol): + __giodbustemplate__interfaces__: ClassVar[_InterfacesType] + __giodbustemplate__methods__: ClassVar[_MethodsType] + __giodbustemplate__properties__: ClassVar[_PropertiesType] + + __giodbustemplate__connection__: Gio.DBusConnection + __giodbustemplate__path__: str + + +def on_method_call( + obj: IsDecorated, + _connection: Gio.DBusConnection, + _sender: str, + _object_path: str, + interface_name: str, + method_name: str, + parameters: GLib.Variant, + invocation: Gio.DBusMethodInvocation, +): + """Handle an incoming method call from D-Bus. Function is of type `GDBusInterfaceMethodCallFunc`.""" + methods = obj.__class__.__giodbustemplate__methods__ + method_info, method_func = methods[interface_name][method_name] + args = list(parameters.unpack()) + + try: + result = method_func(obj, *args) + except Exception as e: + invocation.return_dbus_error(interface_name, str(e)) + traceback.print_exc() + return + + if not isinstance(result, tuple): + result = (result,) + + out_args = "(" + "".join((arg.signature for arg in method_info.out_args)) + ")" + + if out_args != "()": + variant = GLib.Variant(out_args, result) + invocation.return_value(variant) + else: + invocation.return_value(None) + + +def on_get_property( + obj: IsDecorated, + _connection: Gio.DBusConnection, + _sender: str, + _object_path: str, + interface_name: str, + property_name: str, +): + """Handle a D-Bus request to get a property. Function is of type `GDBusInterfaceGetPropertyFunc`.""" + properties = obj.__class__.__giodbustemplate__properties__ + prop_info, prop = properties[interface_name][property_name] + value = prop.__get__(obj, obj.__class__) + return GLib.Variant(prop_info.signature, value) + + +def on_set_property( + obj: IsDecorated, + _connection: Gio.DBusConnection, + _sender: str, + _object_path: str, + interface_name: str, + property_name: str, + value: GLib.Variant, +): + """Handle a D-Bus request to set a property. Function is of type `GDBusInterfaceSetPropertyFunc`.""" + properties = obj.__class__.__giodbustemplate__properties__ + _prop_info, prop = properties[interface_name][property_name] + prop.__set__(obj, value.unpack()) + return True # if setting failed, the setter would have raised an exception. + + +def handle_signal_method( + obj: IsDecorated, + info: Gio.DBusSignalInfo, + func: Callable, + interface_name: str, + *original_arguments, +): + """ + Partial method that replaces class methods decorated with `Signal`. Calls the original method and emits the + signal. + """ + maybe_new_values = func(obj, *original_arguments) + if maybe_new_values is not None: + if not isinstance(maybe_new_values, tuple): + maybe_new_values = (maybe_new_values,) + if len(maybe_new_values) != len(original_arguments): + raise AssertionError("signal emitter returned invalid number of arguments.") + values = maybe_new_values + else: + values = original_arguments + + parameters = [] + for value, arg in zip(values, info.args): + parameters.append(GLib.Variant(arg.signature, value)) + variant = GLib.Variant.new_tuple(*parameters) + + emit_signal(obj, info.name, interface_name, obj.__giodbustemplate__path__, variant) + + +def emit_signal( + obj: IsDecorated, + signal_name: str, + interface_name: str, + path: str, + parameters: GLib.Variant, +): + obj.__giodbustemplate__connection__.emit_signal( + None, path, interface_name, signal_name, parameters + ) + + +def emit_properties_changed( + obj: IsDecorated, + interface: str, + changed_properties: Dict[str, GLib.Variant], + invalidated_properties: List[str], +): + emit_signal( + obj, + "PropertiesChanged", + "org.freedesktop.DBus.Properties", + obj.__giodbustemplate__path__, + GLib.Variant.new_tuple( + GLib.Variant("s", interface), + GLib.Variant("a{sv}", changed_properties), + GLib.Variant("as", invalidated_properties), + ), + ) + + +def process_standin( + standin: DBusHandlerStandIn, + unassigned: Set[Tuple[str, str]], + unique: _UniqueElementsType, + infos: Dict[str, Dict[str, Any]], + # not set for signals, we don't need to record them in the class, the partials themselves contain everything needed: + runtime_def=None, +) -> str: + """Process a "stand in" in a `DBusTemplate` decorated class.""" + if standin.interface is not None: + interface_name = standin.interface + else: + if standin.name not in unique: + raise TypeError( + f"D-Bus {standin.type} {standin.name} not defined in any interface" + ) + if unique[standin.name] is None: + raise TypeError( + f"Interface for D-Bus {standin.type} {standin.name} could not be auto-detected since the {standin.type} is defined in multiple interfaces. Specify the interface name manually" + ) + interface_name = unique[standin.name].name + + if interface_name not in infos: + raise TypeError(f"D-Bus interface {interface_name} not defined") + + if standin.name not in infos[interface_name]: + raise TypeError( + f"D-Bus {standin.type} {standin.name} not defined for interface {interface_name}" + ) + + ident = (interface_name, standin.name) + + if ident not in unassigned: + raise TypeError( + f"D-Bus {standin.type} {standin.name} has a handler method but is either not in the XML or there are multiple handlers defined for it in class" + ) + + if runtime_def is not None: + if interface_name not in runtime_def: + runtime_def[interface_name] = {} + + info = infos[interface_name][standin.name] + if standin.type == "property": + assert isinstance(standin, DBusProperty) + runtime_def[interface_name][standin.name] = (info, standin) + else: + runtime_def[interface_name][standin.name] = ( + info, + standin.func, + ) + unassigned.remove(ident) + + return interface_name + + +def collect_unassigned(infos: dict[str, dict[str, Any]]): + for intf_name, objs in infos.items(): + for obj_name in objs.keys(): + yield intf_name, obj_name + + +class DBusTemplate: + """ + Decorator to turn instances of Python classes into D-Bus objects. + + When a class is decorated, the XML D-Bus introspection is checked for properties, signals and methods. + + - For each method in the interfaces the class must have a matching decorated `DBusTemplate.Method` method. + - For each signal in the interfaces the class must have a matching decorated `DBusTemplate.Signal` method. + - For each property in the interfaces the class must have both a matching decorated `DBusTemplate.PropertyGet` + and optionally a `DBusTemplate.PropertySet` method. If no setter is defined, a default one is generated, + which will just raise a type error. Useful for read-only properties. + + If any of these is not the case or if the class as any additional methods, signals or properties defined + a TypeError is raised. + + The XML introspection file should not contain definitions of the `org.freedesktop.DBus.Properties`, + `org.freedesktop.Peer` or `org.freedesktop.DBus.Introspectable` interfaces. Implementations for these are + always provided. + + The decorated class and objects created by it must have a `__dict__`. + + Use `DBusTemplate.register_object` to register an object decorated this way on a connection. + + Full usage example: + + .. code-block:: python + + EXAMPLE_XML = ''' + <node> + <interface name='org.example.Example'> + <method name='MethodNoArgs'/> + <method name='MethodWithArg'> + <arg direction='in' name='Argument' type='s'/> + <arg direction='out' name='ReturnValue' type='b'/> + </method> + <property name='ExamplePropertyReadOnly' type='b' access='read' /> + <property name='ExamplePropertyReadWrite' type='b' access='readwrite' /> + </interface> + <interface name='org.example.AnotherExample'> + <property name='ExamplePropertyReadWrite' type='b' access='readwrite' /> + <signal name='SomethingHappened'> + <arg name='Events' type='as'/> + </signal> + </interface> + </node> + ''' + + @Gio.DBusTemplate(string=EXAMPLE_XML) + class Example: + def connect_with_dbus(self, connection: Gio.DBusConnection): + Gio.DBusTemplate.register_object( + connection, + "org.example.Example", + "/org/example/Example", + self, + ) + + @Gio.DBusTemplate.Method() + def method_no_args(self): + ... + + @Gio.DBusTemplate.Method() + def method_with_arg(self, argument: str): + return argument == "example" + + @Gio.DBusTemplate.Property() + def example_property_read_only(self): + return True + + # In this example, this property is defined in multiple interfaces, so it's interface name must be provided. + @Gio.DBusTemplate.Property(interface="org.example.Example") + def example_property_read_write(self): + return self._prop + + @example_property_read_write.setter + def example_property_read_write(self, value): + self._prop = value + + @Gio.DBusTemplate.Property( + interface="org.example.AnotherExample", name="ExamplePropertyReadWrite" + ) + def example_property_read_write2(self): + return not self._prop + + @example_property_read_write2.setter + def example_property_read_write2(self, value): + self._prop = not value + + # Calling this method will emit the signal. + @Gio.DBusTemplate.Signal() + def something_happened(self, events: list[str]): + ... + + def some_external_event(self): + # Let's say some external event changed the internal read-only property + # org.example.Example.ExamplePropertyReadOnly. + # A property change signal can then be manually emitted. Note that this does not need to be done, if using + # property setters. + Gio.DBusTemplate.properties_changed( + self, "org.example.Example", ("ExamplePropertyReadOnly",) + ) + + def get_bus_cb(_source, res): + connection = Gio.bus_get_finish(res) + obj = Example() + obj.connect_with_dbus(connection) + + + if __name__ == "__main__": + loop = GLib.MainLoop() + Gio.bus_get(Gio.BusType.SESSION, None, get_bus_cb) + loop.run() + """ + + Method = Method + Signal = Signal + Property = Property + + @classmethod + def register_object(cls, connection: Gio.DBusConnection, name: str, path: str, obj): + """ + Register an object of a class decorated with `DBusTemplate` on the given `DBusConnection`. + + :param Gio.DBusConnection connection: + The connection to register the object on. An object can only be registered on one connection. + + :param str name: + The name of the object. + + :param str path: + The path of the object. + + :param object obj: + The object to register. This must be an instance of a class decorated with `DBusTemplate`. + """ + if not hasattr(obj.__class__, "__giodbustemplate__interfaces__"): + raise TypeError( + "register_object must be called for object decorated with DBusTemplate" + ) + + if hasattr(obj, "__giodbustemplate__connection__"): + raise TypeError("register_object can only be called once for an object") + + setattr(obj, "__giodbustemplate__connection__", connection) + setattr(obj, "__giodbustemplate__path__", path) + + Gio.bus_own_name_on_connection( + connection, name, Gio.BusNameOwnerFlags.NONE, None, None + ) + + for interface in obj.__class__.__giodbustemplate__interfaces__: + connection.register_object( + object_path=path, + interface_info=interface, + method_call_closure=partial(on_method_call, obj), + get_property_closure=partial(on_get_property, obj), + set_property_closure=partial(on_set_property, obj), + ) + + @classmethod + def properties_changed(cls, obj, interface: str, properties: Iterable[str]): + """ + Mark the given properties as modified on `obj`, where `obj` is an object of a class annotated with `DBusTemplate`. + This will emit a `org.freedesktop.DBus.Properties.PropertiesChanged`. + + This must not be called when the setter of a property was already called to modify that property, as doing this + will already emit the signal. + This can be useful for when read-only properties have changed or you can not call the usual property setter for + other reasons. + + The `emit_changed` and `emit_with_value` settings of properties are still taken into consideration. This means + that if `emit_changed` is set to `False` for a property, it will not be included in the `PropertiesChanged` + signal evocation, even if it is included in `properties`. + + :param object obj: + The object that the properties belong to. This must be an instance of a class decorated with `DBusTemplate` + which was previously registered with `DBusTemplate.register_object`. + + :param str interface: + Name of the interface the properties are defined on. + + :param Iterable[str] properties: + Property names to consider. + """ + if not hasattr(obj, "__giodbustemplate__connection__"): + raise TypeError( + "properties_changed must be called for object decorated and registered with DBusTemplate" + ) + + infos = obj.__class__.__giodbustemplate__properties__ + if interface not in infos: + raise TypeError( + f"The object does not implement D-Bus interface {interface}" + ) + info = infos[interface] + + properties_with_values = {} + invalidated_properties = [] + for prop_name in properties: + if prop_name not in info: + raise TypeError( + f"The D-Bus interface {interface} does not define a property {prop_name}" + ) + if info[prop_name][1].emit_changed: + if info[prop_name][1].emit_with_value: + properties_with_values[prop_name] = on_get_property( + obj, + obj.__giodbustemplate__connection__, + "", + obj.__giodbustemplate__path__, + interface, + prop_name, + ) + else: + invalidated_properties.append(prop_name) + + emit_properties_changed( + obj, interface, properties_with_values, invalidated_properties + ) + + def __init__( + self, + *, + # Introspection XML + # One of these must be defined: + string: Optional[str] = None, + filename: Optional[str] = None, + ): + """ + Create an instance of the decorator. See class docstring. + + One of the arguments must be provided. Behaviour is undefined if both are provided. + + :param Optional[str] string: + String containing the XML introspection for the implemented interfaces. + + :param Optional[str] filename: + Path to a file containing the XML introspection for the implemented interfaces. + """ + self.string = string + self.filename = filename + + if self.string is None and self.filename is None: + raise TypeError("Requires one of the following arguments: string, filename") + + def __call__(self, cls): + if self.string is not None: + xml_data = self.string + else: + assert self.filename is not None + file_ = Gio.File.new_for_path(os.fspath(self.filename)) + xml_data = str(file_.load_contents()[1], "utf-8") + + # These dicts are for looking up infos during class traversal + infos_methods: Dict[str, Dict[str, Gio.DBusMethodInfo]] = {} + infos_signals: Dict[str, Dict[str, Gio.DBusSignalInfo]] = {} + infos_properties: Dict[str, Dict[str, Gio.DBusPropertyInfo]] = {} + + # These dicts contain the names of methods signals and properties of all that are defined. + # Those that are only defined within a single interface have that interface's info as value. + # They are allowed to have the interface name omitted in the method/signal/property decorators, + # they will be automatically assigned. The others have None as value. + unique_methods: _UniqueElementsType = {} + unique_signals: _UniqueElementsType = {} + unique_properties: _UniqueElementsType = {} + + # The definitions we later actually need to store on the class. + def_interfaces: _InterfacesType = [] + def_methods: _MethodsType = {} + def_properties: _PropertiesType = {} + + # Collect interface infos + for interface in Gio.DBusNodeInfo.new_for_xml(xml_data).interfaces: + infos_methods[interface.name] = {} + infos_signals[interface.name] = {} + infos_properties[interface.name] = {} + + for method in interface.methods: + infos_methods[interface.name][method.name] = method + if method.name not in unique_methods: + unique_methods[method.name] = interface + else: + unique_methods[method.name] = _NotUnique + + for signal in interface.signals: + infos_signals[interface.name][signal.name] = signal + if signal.name not in unique_signals: + unique_signals[signal.name] = interface + else: + unique_signals[signal.name] = _NotUnique + + for prop in interface.properties: + infos_properties[interface.name][prop.name] = prop + if prop.name not in unique_properties: + unique_properties[prop.name] = interface + else: + unique_properties[prop.name] = _NotUnique + + def_interfaces.append(interface) + + # Keep sets of all methods, signals and properties we have not yet found in the class. + unassigned_methods = set(collect_unassigned(infos_methods)) + unassigned_signals = set(collect_unassigned(infos_signals)) + unassigned_properties = set(collect_unassigned(infos_properties)) + + # Collect methods, signals, property handler methods in cls + for attr_name, member in cls.__dict__.items(): + if isinstance(member, DBusHandlerStandIn): + if member.type == "method": + process_standin( + member, + unassigned_methods, + unique_methods, + infos_methods, + def_methods, + ) + # Replace method again with actual method + setattr(cls, attr_name, member.func) + elif member.type == "signal": + interface_name = process_standin( + member, + unassigned_signals, + unique_signals, + infos_signals, + ) + # For signals, we replace the method itself with a special proxy partial method + setattr( + cls, + attr_name, + update_wrapper( + partialmethod( + handle_signal_method, + infos_signals[interface_name][member.name], + member.func, + interface_name, + ), + member.func, + ), + ) + else: + assert member.type == "property" + interface_name = process_standin( + member, + unassigned_properties, + unique_properties, + infos_properties, + def_properties, + ) + # We don't replace the standin, the standin is a descriptor that will handle everything. + member.interface = interface_name + + if len(unassigned_methods) > 0: + interface_name, method_name = next(iter(unassigned_methods)) + raise TypeError( + f"Missing handler for interface method '{method_name}' from interface '{interface_name}'" + ) + if len(unassigned_signals) > 0: + interface_name, signal_name = next(iter(unassigned_signals)) + raise TypeError( + f"Missing handler for interface signal '{signal_name}' from interface '{interface_name}'" + ) + if len(unassigned_properties) > 0: + interface_name, prop_name = next(iter(unassigned_properties)) + raise TypeError( + f"Missing handlers for interface property '{prop_name}' from interface '{interface_name}'" + ) + + # Store the definitions we need at runtime + setattr(cls, "__giodbustemplate__interfaces__", def_interfaces) + setattr(cls, "__giodbustemplate__methods__", def_methods) + setattr(cls, "__giodbustemplate__properties__", def_properties) + # __giodbustemplate__connection__ and __giodbustemplate__path__ are + # set on an object of this class by register_object. + return cls + + +__all__ = ["DBusTemplate"] diff --git a/src/langs/python/meson.build b/src/langs/python/meson.build new file mode 100644 index 000000000..0c1f17c38 --- /dev/null +++ b/src/langs/python/meson.build @@ -0,0 +1,14 @@ +bin_conf = configuration_data() +bin_conf.set('pkgdatadir', pkgdatadir) + +install_data('gdbus_ext.py', install_dir: pkgdatadir) +install_data('python-previewer.py', install_dir: pkgdatadir) +install_data('ruff.toml', install_dir: pkgdatadir) + +configure_file( + input: 'workbench-python-previewer', + output: 'workbench-python-previewer', + configuration: bin_conf, + install: true, + install_dir: get_option('bindir') +) diff --git a/src/langs/python/python-previewer.py b/src/langs/python/python-previewer.py new file mode 100644 index 000000000..d1eac2a60 --- /dev/null +++ b/src/langs/python/python-previewer.py @@ -0,0 +1,338 @@ +#!/usr/bin/env python +""" +This is the previewer for Python demos. It connects via DBus back to +Workbench and loads demos, providing them with a "workbench" module for +the Workbench API. +""" + +from __future__ import annotations + +import importlib.util +import os +import sys +from types import ModuleType +from typing import cast + +import gi + +from gdbus_ext import DBusTemplate + +gi.require_version("Gdk", "4.0") +gi.require_version("Gtk", "4.0") +gi.require_version("Adw", "1") +gi.require_version("Graphene", "1.0") +gi.require_version("Gsk", "4.0") +gi.require_version("GtkSource", "5") +gi.require_version("Shumate", "1.0") +gi.require_version("WebKit", "6.0") +gi.require_version("Workbench", "0") + +from gi.repository import ( + GObject, + GLib, + Gdk, + Gtk, + Adw, + Graphene, + Gio, + GtkSource, + Shumate, + WebKit, + Workbench, +) +from gi.repository.Gio import DBusConnection, DBusConnectionFlags + +# Make sure all libraries are properly initialized +Gtk.init() +Adw.init() +GtkSource.init() +GObject.type_ensure(WebKit.WebView) +GObject.type_ensure(Shumate.SimpleMap) + +resource = Gio.Resource.load( + f'/app/share/{os.environ["FLATPAK_ID"]}/re.sonny.Workbench.libworkbench.gresource' +) +Gio.resources_register(resource) + +# Table of Contents +# ================= +# +# 1. DBus object for Workbench communication +# 2. Python loader to load modules by URI +# 3. API for demos +# 4. main entrypoint + + +# 1. DBus object for Workbench communication +# ------------------------------------------ + + +@DBusTemplate(filename=sys.argv[1]) +class Previewer: + window: Gtk.Window | None + builder: Gtk.Builder | None + target: Gtk.Widget | None + css: Gtk.CssProvider | None + uri = str | None + style_manager: Adw.StyleManager + resource_icons: GLib.Resource | None + + def __init__(self): + self.style_manager = Adw.StyleManager.get_default() + self.css = None + self.window = None + self.builder = None + self.target = None + self.uri = None + self.resource_icons = None + + # see application.js + icon_theme = Gtk.IconTheme.get_for_display(Gdk.Display.get_default()) + icon_theme.set_resource_path( + [ + "/org/gtk/libgtk/icons/", + "/org/gnome/Adwaita/icons/", + "/re/sonny/Workbench/icons/", + ] + ) + icon_theme.set_search_path(["/usr/share/icons", "/app/share/icons"]) + + @DBusTemplate.Method() + def update_ui(self, content: str, target_id: str, original_id: str = ""): + self.builder = Gtk.Builder.new_from_string(content, len(content)) + target = self.builder.get_object(target_id) + if target is None: + print( + f"Widget with target_id='{target_id}' could not be found.", + file=sys.stderr, + ) + return + + self.target = cast(Gtk.Widget, target) + + if original_id != "": + self.builder.expose_object(original_id, target) + + # Not a Root/Window + if not isinstance(self.target, Gtk.Root): + self.ensure_window() + self.window.set_content(self.target) + return + + # Set target as window directly + if self.window is None or self.window.__class__ != self.target.__class__: + self.set_window(cast(Gtk.Window, self.target)) + return + + if isinstance(self.target, Adw.Window) or isinstance( + self.target, Adw.ApplicationWindow + ): + child = self.target.get_content() + self.target.set_content(None) + # self.window is also either Adw.Window or Adw.ApplicationWindow. + self.window.set_content(child) # type: ignore + elif isinstance(self.target, Gtk.Window): + child = self.target.get_child() + self.target.set_child(None) + self.window.set_child(child) + + # Toplevel windows returned by these functions will stay around + # until the user explicitly destroys them with gtk_window_destroy(). + # https://docs.gtk.org/gtk4/class.Builder.html + if isinstance(self.target, Gtk.Window): + self.target.destroy() + + @DBusTemplate.Method() + def update_css(self, content: str): + if self.css is not None: + Gtk.StyleContext.remove_provider_for_display( + Gdk.Display.get_default(), self.css + ) + self.css = Gtk.CssProvider() + self.css.connect("parsing-error", self.on_css_parsing_error) + self.css.load_from_string(content) + Gtk.StyleContext.add_provider_for_display( + Gdk.Display.get_default(), self.css, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION + ) + + @DBusTemplate.Method() + def run(self, filename: str, uri: str): + # TODO: + # Once https://peps.python.org/pep-0554/ is part of Python's stdlib (and that release is part of a + # GNOME Flatpak Platform), we should use subintepreters to sandbox the demos. + # This will also allow us to destroy the interpreter and thus (hopefully) properly unload the module. + self.uri = uri + + self.reload_icons(uri) + + module_name = "__workbench__module__" + if module_name in sys.modules: + # this will NOT unload the previous module, unless it can be GC. + del sys.modules[module_name] + spec = importlib.util.spec_from_file_location( + module_name, os.path.join(filename, "main.py") + ) + assert spec is not None + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + + def reload_icons(self, uri: str): + if self.resource_icons is not None: + self.resource_icons._unregister() + self.resource_icons = None + + try: + self.resource_icons = Gio.Resource.load( + Gio.File.new_for_uri(uri).get_child("icons.gresource").get_path() + ) + self.resource_icons._register() + except Exception: + pass + + @DBusTemplate.Method() + def close_window(self): + if self.window is not None: + self.window.close() + + @DBusTemplate.Method() + def open_window(self, width: int, height: int): + self.window.set_default_size(width, height) + self.window.present() + self.window_open(True) + + @DBusTemplate.Method() + def screenshot(self, path: str) -> bool: + paintable = Gtk.WidgetPaintable(widget=self.target) + width = self.target.get_width() + height = self.target.get_height() + snapshot = Gtk.Snapshot() + paintable.snapshot(snapshot, width, height) + node = snapshot.to_node() + if node is None: + print(f"Could not get node snapshot, width: {width}, height: {height}") + return False + renderer = self.target.get_native().get_renderer() + # For some unholy reason PyGObject has no high level constructor for Graphene types. + rect = Graphene.rect_alloc() + rect.origin = Graphene.Point.zero() + size = Graphene.Size.alloc() + size.width = float(width) + size.height = float(height) + rect.size = size + texture = renderer.render_texture(node, rect) + texture.save_to_png(path) + return True + + @DBusTemplate.Method() + def enable_inspector(self, enabled: bool): + Gtk.Window.set_interactive_debugging(enabled) + + @DBusTemplate.Signal() + def window_open(self, open: bool): ... + + @DBusTemplate.Signal() + def css_parser_error( + self, + message: str, + start_line: int, + start_char: int, + end_line: int, + end_char: int, + ): ... + + @DBusTemplate.Property() + def color_scheme(self) -> int: + return int(self.style_manager.get_color_scheme()) + + @color_scheme.setter + def color_scheme(self, value: int): + self.style_manager.set_color_scheme(Adw.ColorScheme(value)) + + def ensure_window(self): + if self.window is not None: + return + new_window = Workbench.PreviewWindow() + self.set_window(new_window) + + def set_window(self, the_window: Gtk.Window): + if self.window is not None: + self.window.destroy() + self.window = the_window + self.window.connect("close-request", self.on_window_closed) + + def on_window_closed(self, *_args): + self.window_open(False) + self.window = None + return False + + def on_css_parsing_error(self, _css, section: Gtk.CssSection, error: GLib.Error): + start = section.get_start_location() + end = section.get_end_location() + self.css_parser_error( + error.message, start.lines, start.line_chars, end.lines, end.line_chars + ) + + def resolve(self, path: str): + return Gio.File.new_for_uri(self.uri).resolve_relative_path(path).get_uri() + + +# 3. API for demos +# ---------------- + + +class WorkbenchModule(ModuleType): + def __init__(self, previewer: Previewer): + super().__init__( + "workbench", + """The workbench API. Use `window`, `builder` and `resolve` to interact with Workbench.""", + ) + self._previewer = previewer + + def __getattr__(self, name): + # Getting `window` or `builder` will transparently forward to calls + # `window`/`builder` attributes of the previewer. + + # We do this to make the API in the demos a bit simpler. Just using a normal module's dict and + # setting window/builder to the fields in previewer may later lead to problems + # when the values for those are replaced on the previewer. However, if we switch to subinterpreters, + # we can just generate this module in Previewer.run directly, then we can just + # put the window, builder and resolve reference in a normal module dict directly. + if name == "window": + return self._previewer.window + if name == "builder": + return self._previewer.builder + if name == "resolve": + return self._previewer.resolve + raise KeyError + + +# This module only exposes no attributes. This is to make sure demos +# don't get weird ideas of trying to interact with the previewer. +__all__ = [] + + +# 3. main entrypoint +# ------------------ + +if __name__ == "__main__": + loop = GLib.MainLoop() + + connection = DBusConnection.new_for_address_sync( + sys.argv[2], DBusConnectionFlags.AUTHENTICATION_CLIENT + ) + + previewer = Previewer() + + # Add a workbench module as API to the global modules. + # We will not need to do this anymore when switching to subinterpreters. + sys.modules["workbench"] = WorkbenchModule(previewer) + + DBusTemplate.register_object( + connection, + "re.sonny.Workbench.previewer_module", + "/re/sonny/workbench/previewer_module", + previewer, + ) + + connection.set_exit_on_close(True) + loop.run() diff --git a/src/langs/python/python.js b/src/langs/python/python.js new file mode 100644 index 000000000..15eab2859 --- /dev/null +++ b/src/langs/python/python.js @@ -0,0 +1,37 @@ +import { PYTHON_LSP_CONFIG, createLSPClient } from "../../common.js"; +import { getLanguage } from "../../util.js"; + +export function setup({ document }) { + const { file, buffer, code_view } = document; + + const lspc = createLSPClient({ + lang: getLanguage("python"), + root_uri: file.get_parent().get_uri(), + quiet: true, + }); + + lspc.request("workspace/didChangeConfiguration", { + settings: PYTHON_LSP_CONFIG, + }); + + lspc.buffer = buffer; + lspc.uri = file.get_uri(); + lspc.connect( + "notification::textDocument/publishDiagnostics", + (_self, params) => { + if (params.uri !== file.get_uri()) { + return; + } + code_view.handleDiagnostics(params.diagnostics); + }, + ); + + lspc.start().catch(console.error); + + buffer.connect("modified-changed", () => { + if (!buffer.get_modified()) return; + lspc.didChange().catch(console.error); + }); + + return lspc; +} diff --git a/src/langs/python/ruff.toml b/src/langs/python/ruff.toml new file mode 100644 index 000000000..4b045a8c6 --- /dev/null +++ b/src/langs/python/ruff.toml @@ -0,0 +1,6 @@ +[lint] +ignore = [ + "E402", # Module level import not at top of file -> gi imports may come after gi.require_version. + "E501", # Line too long. This is probably better enforced manually where it makes sense. +] +select = [ "W", "E", "F", "ARG"] diff --git a/src/langs/python/workbench-python-previewer b/src/langs/python/workbench-python-previewer new file mode 100755 index 000000000..fc016c35f --- /dev/null +++ b/src/langs/python/workbench-python-previewer @@ -0,0 +1,2 @@ +#!/bin/sh +PYTHONPATH="@pkgdatadir@" python "@pkgdatadir@/python-previewer.py" "@pkgdatadir@/previewer.xml" "$@" diff --git a/src/langs/rust/Compiler.js b/src/langs/rust/Compiler.js new file mode 100644 index 000000000..1daf8ca27 --- /dev/null +++ b/src/langs/rust/Compiler.js @@ -0,0 +1,108 @@ +import Gio from "gi://Gio"; +import GLib from "gi://GLib"; +import dbus_previewer from "../../Previewer/DBusPreviewer.js"; +import { decode, encode } from "../../util.js"; +import { installRustLibraries } from "./rust.js"; + +export default function Compiler({ session }) { + const { file } = session; + const cacheDir = GLib.get_user_cache_dir(); + const targetPath = `${cacheDir}/rust_build_cache`; + const rustcVersionFile = Gio.File.new_for_path( + `${targetPath}/rustc_version.txt`, + ); + + let rustcVersion; + let savedRustcVersion; + + async function compile() { + await installRustLibraries(file); + + rustcVersion ||= await getRustcVersion(); + savedRustcVersion ||= await getSavedRustcVersion({ rustcVersionFile }); + + if (rustcVersion !== savedRustcVersion) { + await cargoClean({ file, targetPath }); + await saveRustcVersion({ targetPath, rustcVersion, rustcVersionFile }); + } + + const cargo_launcher = new Gio.SubprocessLauncher(); + cargo_launcher.set_cwd(file.get_path()); + + const cargo = cargo_launcher.spawnv([ + "cargo", + "build", + "--locked", + "--target-dir", + targetPath, + ]); + await cargo.wait_async(null); + + const result = cargo.get_successful(); + cargo_launcher.close(); + return result; + } + + async function run() { + try { + const proxy = await dbus_previewer.getProxy("vala"); // rust uses the Vala previewer. + const sharedLibrary = `${targetPath}/debug/libdemo.so`; + await proxy.RunAsync(sharedLibrary, session.file.get_uri()); + } catch (err) { + console.error(err); + return false; + } + + return true; + } + + return { compile, run }; +} + +async function getRustcVersion() { + const cargo_launcher = Gio.SubprocessLauncher.new( + Gio.SubprocessFlags.STDOUT_PIPE, + ); + const rustcVersionProcess = cargo_launcher.spawnv(["rustc", "--version"]); + const stdout = rustcVersionProcess.communicate_utf8(null, null)[1]; + return stdout; +} + +async function saveRustcVersion({ + targetPath, + rustcVersionFile, + rustcVersion, +}) { + GLib.mkdir_with_parents(targetPath, 0o755); + await rustcVersionFile.replace_contents_async( + encode(rustcVersion), + null, + false, + Gio.FileCreateFlags.NONE, + null, + ); +} + +async function getSavedRustcVersion({ rustcVersionFile }) { + try { + const [contents] = await rustcVersionFile.load_contents_async(null); + return decode(contents); + } catch (err) { + if (!err.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND)) { + throw err; + } + return null; + } +} + +async function cargoClean({ file, targetPath }) { + const cargo_launcher = new Gio.SubprocessLauncher(); + cargo_launcher.set_cwd(file.get_path()); + const cargoCleanProcess = cargo_launcher.spawnv([ + "cargo", + "clean", + "--target-dir", + targetPath, + ]); + await cargoCleanProcess.wait_async(null); +} diff --git a/src/langs/rust/README.md b/src/langs/rust/README.md new file mode 100644 index 000000000..93c381c08 --- /dev/null +++ b/src/langs/rust/README.md @@ -0,0 +1,10 @@ +# Rust + +## Update Cargo.toml + +```sh +cargo install cargo-edit +cd template +cargo upgrade +cargo check +``` diff --git a/src/langs/rust/RustDocument.js b/src/langs/rust/RustDocument.js new file mode 100644 index 000000000..1a43fcacf --- /dev/null +++ b/src/langs/rust/RustDocument.js @@ -0,0 +1,31 @@ +import { setup } from "./rust.js"; + +import Document from "../../Document.js"; +import { applyTextEdits } from "../../lsp/sourceview.js"; + +export class RustDocument extends Document { + constructor(...args) { + super(...args); + + this.lspc = setup({ document: this }); + this.code_view.lspc = this.lspc; + } + + async format() { + // https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_formatting + const text_edits = await this.lspc.request("textDocument/formatting", { + textDocument: { + uri: this.file.get_uri(), + }, + options: { + tabSize: 4, + insertSpaces: true, + trimTrailingWhitespace: true, + insertFinalNewline: true, + trimFinalNewlines: true, + }, + }); + + applyTextEdits(text_edits, this.buffer); + } +} diff --git a/src/langs/rust/rust.js b/src/langs/rust/rust.js new file mode 100644 index 000000000..774b9f052 --- /dev/null +++ b/src/langs/rust/rust.js @@ -0,0 +1,60 @@ +import Gio from "gi://Gio"; + +import { createLSPClient } from "../../common.js"; +import { getLanguage, copy } from "../../util.js"; +import { isRustAvailable } from "../../Extensions/Extensions.js"; + +export function setup({ document }) { + if (!isRustAvailable()) return; + + const { file, buffer, code_view } = document; + + const lspc = createLSPClient({ + lang: getLanguage("rust"), + root_uri: file.get_parent().get_uri(), + quiet: true, + }); + lspc.buffer = buffer; + lspc.uri = file.get_uri(); + lspc.connect( + "notification::textDocument/publishDiagnostics", + (_self, params) => { + if (params.uri !== file.get_uri()) { + return; + } + code_view.handleDiagnostics(params.diagnostics); + }, + ); + + lspc.start().catch(console.error); + + buffer.connect("modified-changed", () => { + if (!buffer.get_modified()) return; + lspc.didChange().catch(console.error); + }); + + return lspc; +} + +const rust_template_dir = Gio.File.new_for_path( + pkg.pkgdatadir, +).resolve_relative_path("langs/rust/template"); + +export async function setupRustProject(destination) { + return Promise.all([ + copy("Cargo.toml", rust_template_dir, destination, Gio.FileCopyFlags.NONE), + copy("Cargo.lock", rust_template_dir, destination, Gio.FileCopyFlags.NONE), + ]); +} + +export async function installRustLibraries(destination) { + return Promise.all([ + copy("lib.rs", rust_template_dir, destination, Gio.FileCopyFlags.OVERWRITE), + copy( + "workbench.rs", + rust_template_dir, + destination, + Gio.FileCopyFlags.OVERWRITE, + ), + ]); +} diff --git a/src/langs/rust/template/Cargo.lock b/src/langs/rust/template/Cargo.lock new file mode 100644 index 000000000..c6401f3c4 --- /dev/null +++ b/src/langs/rust/template/Cargo.lock @@ -0,0 +1,1946 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aho-corasick" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +dependencies = [ + "memchr", +] + +[[package]] +name = "anyhow" +version = "1.0.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247" + +[[package]] +name = "ashpd" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd884d7c72877a94102c3715f3b1cd09ff4fac28221add3e57cfbe25c236d093" +dependencies = [ + "async-fs", + "async-net", + "enumflags2", + "futures-channel", + "futures-util", + "gdk4-wayland", + "gdk4-x11", + "glib", + "gtk4", + "rand", + "serde", + "serde_repr", + "url", + "zbus", +] + +[[package]] +name = "async-broadcast" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "258b52a1aa741b9f09783b2d86cf0aeeb617bbf847f6933340a39644227acbdb" +dependencies = [ + "event-listener 5.2.0", + "event-listener-strategy 0.5.0", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-channel" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3" +dependencies = [ + "concurrent-queue", + "event-listener 5.2.0", + "event-listener-strategy 0.5.0", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c" +dependencies = [ + "async-lock 3.3.0", + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "slab", +] + +[[package]] +name = "async-fs" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc19683171f287921f2405677dd2ed2549c3b3bda697a563ebc3a121ace2aba1" +dependencies = [ + "async-lock 3.3.0", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-io" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcccb0f599cfa2f8ace422d3555572f47424da5648a4382a9dd0310ff8210884" +dependencies = [ + "async-lock 3.3.0", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix", + "slab", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "async-lock" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" +dependencies = [ + "event-listener 2.5.3", +] + +[[package]] +name = "async-lock" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" +dependencies = [ + "event-listener 4.0.3", + "event-listener-strategy 0.4.0", + "pin-project-lite", +] + +[[package]] +name = "async-net" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b948000fad4873c1c9339d60f2623323a0cfd3816e5181033c6a5cb68b2accf7" +dependencies = [ + "async-io", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-process" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "451e3cf68011bd56771c79db04a9e333095ab6349f7e47592b788e9b98720cc8" +dependencies = [ + "async-channel", + "async-io", + "async-lock 3.3.0", + "async-signal", + "blocking", + "cfg-if", + "event-listener 5.2.0", + "futures-lite", + "rustix", + "windows-sys 0.52.0", +] + +[[package]] +name = "async-recursion" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "async-signal" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5" +dependencies = [ + "async-io", + "async-lock 2.8.0", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix", + "signal-hook-registry", + "slab", + "windows-sys 0.48.0", +] + +[[package]] +name = "async-task" +version = "4.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" + +[[package]] +name = "async-trait" +version = "0.1.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "461abc97219de0eaaf81fe3ef974a540158f3d079c2ab200f891f1a2ef201e85" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "bitflags" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blocking" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" +dependencies = [ + "async-channel", + "async-lock 3.3.0", + "async-task", + "fastrand", + "futures-io", + "futures-lite", + "piper", + "tracing", +] + +[[package]] +name = "cairo-rs" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2650f66005301bd33cc486dec076e1293c4cecf768bc7ba9bf5d2b1be339b99c" +dependencies = [ + "bitflags", + "cairo-sys-rs", + "glib", + "libc", + "thiserror", +] + +[[package]] +name = "cairo-sys-rs" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3bb3119664efbd78b5e6c93957447944f16bdbced84c17a9f41c7829b81e64" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "cfg-expr" +version = "0.15.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa50868b64a9a6fda9d593ce778849ea8715cd2a3d2cc17ffdb4a2f2f2f1961d" +dependencies = [ + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + +[[package]] +name = "concurrent-queue" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "demo" +version = "1.0.0" +dependencies = [ + "ashpd", + "async-channel", + "gtk4", + "libadwaita", + "libc", + "libshumate", + "rand", + "soup3", + "url", + "webkit6", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "endi" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" + +[[package]] +name = "enumflags2" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3278c9d5fb675e0a51dabcf4c0d355f692b064171535ba72361be1528a9d8e8d" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b5fb89194fa3cad959b833185b3063ba881dbfc7030680b314250779fb4cc91" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" +dependencies = [ + "event-listener 4.0.3", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "feedafcaa9b749175d5ac357452a9d41ea2911da598fde46ce1fe02c37751291" +dependencies = [ + "event-listener 5.2.0", + "pin-project-lite", +] + +[[package]] +name = "fastrand" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" + +[[package]] +name = "field-offset" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" +dependencies = [ + "memoffset", + "rustc_version", +] + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-executor" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-lite" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445ba825b27408685aaecefd65178908c36c6e96aaf6d8599419d46e624192ba" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "gdk-pixbuf" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6a23f8a0b5090494fd04924662d463f8386cc678dd3915015a838c1a3679b92" +dependencies = [ + "gdk-pixbuf-sys", + "gio", + "glib", + "libc", +] + +[[package]] +name = "gdk-pixbuf-sys" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dcbd04c1b2c4834cc008b4828bc917d062483b88d26effde6342e5622028f96" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gdk4" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9100b25604183f2fd97f55ef087fae96ab4934d7215118a35303e422688e6e4b" +dependencies = [ + "cairo-rs", + "gdk-pixbuf", + "gdk4-sys", + "gio", + "glib", + "libc", + "pango", +] + +[[package]] +name = "gdk4-sys" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0b76874c40bb8d1c7d03a7231e23ac75fa577a456cd53af32ec17ec8f121626" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdk4-wayland" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13fc91be838be766ff038221e068e05e4083f3b6cf48ef1f5251ba28f98f80bf" +dependencies = [ + "gdk4", + "gdk4-wayland-sys", + "gio", + "glib", + "libc", +] + +[[package]] +name = "gdk4-wayland-sys" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5cdc6c5cb3f64ba9b810782077939a0fc8d82e809f0147054bbe41910ac2b51" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gdk4-x11" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bff98d3e61807ecc1ddd15cf746b9de14fb6499fc259ca9e8d87d92e8901c7db" +dependencies = [ + "gdk4", + "gdk4-x11-sys", + "gio", + "glib", + "libc", +] + +[[package]] +name = "gdk4-x11-sys" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30406b31a7c355c73c504c9b31d35806397944165730eca7db46f0409abf8f8f" +dependencies = [ + "gdk4-sys", + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "gio" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eae10b27b6dd27e22ed0d812c6387deba295e6fc004a8b379e459b663b05a02" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "gio-sys", + "glib", + "libc", + "pin-project-lite", + "smallvec", + "thiserror", +] + +[[package]] +name = "gio-sys" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcf8e1d9219bb294636753d307b030c1e8a032062cba74f493c431a5c8b81ce4" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", + "windows-sys 0.52.0", +] + +[[package]] +name = "glib" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab9e86540b5d8402e905ad4ce7d6aa544092131ab564f3102175af176b90a053" +dependencies = [ + "bitflags", + "futures-channel", + "futures-core", + "futures-executor", + "futures-task", + "futures-util", + "gio-sys", + "glib-macros", + "glib-sys", + "gobject-sys", + "libc", + "memchr", + "smallvec", + "thiserror", +] + +[[package]] +name = "glib-macros" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f5897ca27a83e4cdc7b4666850bade0a2e73e17689aabafcc9acddad9d823b8" +dependencies = [ + "heck", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "glib-sys" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "630f097773d7c7a0bb3258df4e8157b47dc98bbfa0e60ad9ab56174813feced4" +dependencies = [ + "libc", + "system-deps", +] + +[[package]] +name = "gobject-sys" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c85e2b1080b9418dd0c58b498da3a5c826030343e0ef07bde6a955d28de54979" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "graphene-rs" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99e4d388e96c5f29e2b2f67045d229ddf826d0a8d6d282f94ed3b34452222c91" +dependencies = [ + "glib", + "graphene-sys", + "libc", +] + +[[package]] +name = "graphene-sys" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "236ed66cc9b18d8adf233716f75de803d0bf6fc806f60d14d948974a12e240d0" +dependencies = [ + "glib-sys", + "libc", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gsk4" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c65036fc8f99579e8cb37b12487969b707ab23ec8ab953682ff347cbd15d396e" +dependencies = [ + "cairo-rs", + "gdk4", + "glib", + "graphene-rs", + "gsk4-sys", + "libc", + "pango", +] + +[[package]] +name = "gsk4-sys" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd24c814379f9c3199dc53e52253ee8d0f657eae389ab282c330505289d24738" +dependencies = [ + "cairo-sys-rs", + "gdk4-sys", + "glib-sys", + "gobject-sys", + "graphene-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "gtk4" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa82753b8c26277e4af1446c70e35b19aad4fb794a7b143859e7eeb9a4025d83" +dependencies = [ + "cairo-rs", + "field-offset", + "futures-channel", + "gdk-pixbuf", + "gdk4", + "gio", + "glib", + "graphene-rs", + "gsk4", + "gtk4-macros", + "gtk4-sys", + "libc", + "pango", +] + +[[package]] +name = "gtk4-macros" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40300bf071d2fcd4c94eacc09e84ec6fe73129d2ceb635cf7e55b026b5443567" +dependencies = [ + "anyhow", + "proc-macro-crate", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "gtk4-sys" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0db1b104138f087ccdc81d2c332de5dd049b89de3d384437cc1093b17cd2da18" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk4-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "graphene-sys", + "gsk4-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "hashbrown" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "indexmap" +version = "2.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "javascriptcore6" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d95a69260c40bbf52066f2c6fa520c00c1ec8ab8208636cf3070c0157c5221f8" +dependencies = [ + "glib", + "javascriptcore6-sys", + "libc", +] + +[[package]] +name = "javascriptcore6-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc104f99c5adcd7ed53dd491121c111e05e3e8d40020d3519e98c346ca64186b" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "libadwaita" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91b4990248b9e1ec5e72094a2ccaea70ec3809f88f6fd52192f2af306b87c5d9" +dependencies = [ + "gdk-pixbuf", + "gdk4", + "gio", + "glib", + "gtk4", + "libadwaita-sys", + "libc", + "pango", +] + +[[package]] +name = "libadwaita-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23a748e4e92be1265cd9e93d569c0b5dfc7814107985aa6743d670ab281ea1a8" +dependencies = [ + "gdk4-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "gtk4-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "libc" +version = "0.2.153" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" + +[[package]] +name = "libshumate" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd77c1202aaccef5460f4ca95b3b3c117f85986c942127e4e518c47058a6eaf6" +dependencies = [ + "gdk-pixbuf", + "gdk4", + "gio", + "glib", + "gtk4", + "libc", + "libshumate-sys", +] + +[[package]] +name = "libshumate-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef5765221e416ebe7b5e9c5bd7e8dd09ca9e920b012474ca8f3da18f8e13c4a5" +dependencies = [ + "gdk-pixbuf-sys", + "gdk4-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "gtk4-sys", + "libc", + "system-deps", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" + +[[package]] +name = "memchr" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" + +[[package]] +name = "memoffset" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "nix" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" +dependencies = [ + "bitflags", + "cfg-if", + "cfg_aliases", + "libc", + "memoffset", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "ordered-stream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "pango" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7809e8af4df8d024a066106b72ca6bc7253a484ae3867041a96103ef8a13188d" +dependencies = [ + "gio", + "glib", + "libc", + "pango-sys", +] + +[[package]] +name = "pango-sys" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52ef6a881c19fbfe3b1484df5cad411acaaba29dbec843941c3110d19f340ea" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "parking" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project-lite" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + +[[package]] +name = "polling" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24f040dee2588b4963afb4e420540439d126f73fdacf4a9c486a96d840bac3c9" +dependencies = [ + "cfg-if", + "concurrent-queue", + "pin-project-lite", + "rustix", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.1", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "regex" +version = "1.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "0.38.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "semver" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" + +[[package]] +name = "serde" +version = "1.0.197" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.197" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "serde_repr" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "serde_spanned" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +dependencies = [ + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" + +[[package]] +name = "soup3" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb6bbb0e56d089517432ca8aac0879e5f343b309783384a7fdbdd6d5232e681" +dependencies = [ + "futures-channel", + "gio", + "glib", + "libc", + "soup3-sys", +] + +[[package]] +name = "soup3-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9c6d7beef555a91c6129f5e71ecf4b6e9eac8b48914098d713b1537ebbf6917" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.53" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "system-deps" +version = "6.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8e9199467bcbc77c6a13cc6e32a6af21721ab8c96aa0261856c4fda5a4433f0" +dependencies = [ + "cfg-expr", + "heck", + "pkg-config", + "toml", + "version-compare", +] + +[[package]] +name = "target-lexicon" +version = "0.12.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" + +[[package]] +name = "tempfile" +version = "3.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +dependencies = [ + "cfg-if", + "fastrand", + "rustix", + "windows-sys 0.52.0", +] + +[[package]] +name = "thiserror" +version = "1.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "toml" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af06656561d28735e9c1cd63dfd57132c8155426aa6af24f36a00a351f88c48e" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.22.7", +] + +[[package]] +name = "toml_datetime" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18769cd1cec395d70860ceb4d932812a0b4d06b1a4bb336745a4d21b9496e992" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.6.5", +] + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "uds_windows" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +dependencies = [ + "memoffset", + "tempfile", + "winapi", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "url" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "version-compare" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "webkit6" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d82bda18116290a9effc1e0f8dbd00236807bf4a9b990b9484bad5ba852fc06" +dependencies = [ + "gdk4", + "gio", + "glib", + "gtk4", + "javascriptcore6", + "libc", + "soup3", + "webkit6-sys", +] + +[[package]] +name = "webkit6-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c459941f1b22750cbda435ede3f94ed8e8dd8c8608d324ecb0b9a8556b49abd" +dependencies = [ + "gdk4-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "gtk4-sys", + "javascriptcore6-sys", + "libc", + "soup3-sys", + "system-deps", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.4", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +dependencies = [ + "windows_aarch64_gnullvm 0.52.4", + "windows_aarch64_msvc 0.52.4", + "windows_i686_gnu 0.52.4", + "windows_i686_msvc 0.52.4", + "windows_x86_64_gnu 0.52.4", + "windows_x86_64_gnullvm 0.52.4", + "windows_x86_64_msvc 0.52.4", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8" +dependencies = [ + "memchr", +] + +[[package]] +name = "xdg-home" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21e5a325c3cb8398ad6cf859c1135b25dd29e186679cf2da7581d9679f63b38e" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "zbus" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9ff46f2a25abd690ed072054733e0bc3157e3d4c45f41bd183dce09c2ff8ab9" +dependencies = [ + "async-broadcast", + "async-executor", + "async-fs", + "async-io", + "async-lock 3.3.0", + "async-process", + "async-recursion", + "async-task", + "async-trait", + "blocking", + "derivative", + "enumflags2", + "event-listener 5.2.0", + "futures-core", + "futures-sink", + "futures-util", + "hex", + "nix", + "ordered-stream", + "rand", + "serde", + "serde_repr", + "sha1", + "static_assertions", + "tracing", + "uds_windows", + "windows-sys 0.52.0", + "xdg-home", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e0e3852c93dcdb49c9462afe67a2a468f7bd464150d866e861eaf06208633e0" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "regex", + "syn 1.0.109", + "zvariant_utils", +] + +[[package]] +name = "zbus_names" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" +dependencies = [ + "serde", + "static_assertions", + "zvariant", +] + +[[package]] +name = "zvariant" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c1b3ca6db667bfada0f1ebfc94b2b1759ba25472ee5373d4551bb892616389a" +dependencies = [ + "endi", + "enumflags2", + "serde", + "static_assertions", + "url", + "zvariant_derive", +] + +[[package]] +name = "zvariant_derive" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7a4b236063316163b69039f77ce3117accb41a09567fd24c168e43491e521bc" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00bedb16a193cc12451873fee2a1bc6550225acece0e36f333e68326c73c8172" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] diff --git a/src/langs/rust/template/Cargo.toml b/src/langs/rust/template/Cargo.toml new file mode 100644 index 000000000..a8ea5e7fc --- /dev/null +++ b/src/langs/rust/template/Cargo.toml @@ -0,0 +1,43 @@ +[package] +name = "demo" +version = "1.0.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +async-channel = "2.2.0" +libc = "0.2" +rand = "0.8.5" +url = "2.5.0" + +[dependencies.soup3] +version = "0.6.0" +features = ["v3_4"] + +[dependencies.webkit6] +version = "0.3.0" +features = ["v2_42"] + +[dependencies.gtk] +version = "0.8.1" +package = "gtk4" +features = ["gnome_46"] + +[dependencies.adw] +version = "0.6.0" +package = "libadwaita" +features = ["v1_5"] + +[dependencies.ashpd] +version = "0.8.1" +features = ["gtk4"] + +[dependencies.shumate] +version = "0.5.0" +package = "libshumate" +features = ["v1_2"] + +[lib] +crate-type = ["cdylib"] +path = "lib.rs" diff --git a/src/langs/rust/template/lib.rs b/src/langs/rust/template/lib.rs new file mode 100644 index 000000000..7697992ac --- /dev/null +++ b/src/langs/rust/template/lib.rs @@ -0,0 +1,52 @@ +#[rustfmt::skip] +mod code; +pub(crate) mod workbench; + +use std::ffi::{c_char, CStr}; + +use glib::translate::FromGlibPtrFull; +use gtk::glib; +use libc::{c_int, EXIT_FAILURE, EXIT_SUCCESS}; + +static mut BUILDER: Option<gtk::Builder> = None; +static mut WINDOW: Option<adw::Window> = None; +static mut URI: Option<String> = None; + +#[no_mangle] +extern "C" fn main() -> c_int { + code::main(); + EXIT_SUCCESS +} + +#[no_mangle] +extern "C" fn set_builder(builder_ptr: *mut gtk::ffi::GtkBuilder) -> c_int { + unsafe { + let builder = gtk::Builder::from_glib_full(builder_ptr); + BUILDER = Some(builder.clone()); + } + EXIT_SUCCESS +} + +#[no_mangle] +extern "C" fn set_window(window_ptr: *mut adw::ffi::AdwWindow) -> c_int { + unsafe { + let window = adw::Window::from_glib_full(window_ptr); + WINDOW = Some(window.clone()); + } + EXIT_SUCCESS +} + +#[no_mangle] +extern "C" fn set_base_uri(c_string: *const c_char) -> c_int { + unsafe { + if c_string.is_null() { + return EXIT_FAILURE; + } + + let c_str = CStr::from_ptr(c_string); + if let Ok(str_slice) = c_str.to_str() { + URI = Some(str_slice.to_string()); + } + } + EXIT_SUCCESS +} diff --git a/src/langs/rust/template/meson.build b/src/langs/rust/template/meson.build new file mode 100644 index 000000000..d6da0ccd6 --- /dev/null +++ b/src/langs/rust/template/meson.build @@ -0,0 +1,2 @@ +install_data(['Cargo.lock', 'Cargo.toml', 'lib.rs', 'workbench.rs'], + install_dir : pkgdatadir / 'langs/rust/template') diff --git a/src/langs/rust/template/workbench.rs b/src/langs/rust/template/workbench.rs new file mode 100644 index 000000000..546fda5be --- /dev/null +++ b/src/langs/rust/template/workbench.rs @@ -0,0 +1,35 @@ +use std::path::Path; + +use gtk::gio; +use gtk::prelude::*; + +#[allow(dead_code)] +pub(crate) fn builder() -> &'static gtk::Builder { + unsafe { + crate::BUILDER + .as_ref() + .expect("Builder instance should already be initialized.") + } +} + +#[allow(dead_code)] +pub(crate) fn window() -> &'static adw::Window { + unsafe { + crate::WINDOW + .as_ref() + .expect("Window instance should already be initialized.") + } +} + +#[allow(dead_code)] +pub(crate) fn resolve(path: impl AsRef<Path>) -> String { + unsafe { + let uri = crate::URI + .as_ref() + .expect("URI instance should already be initialized."); + gio::File::for_uri(uri) + .resolve_relative_path(path) + .uri() + .to_string() + } +} diff --git a/src/langs/typescript/Compiler.js b/src/langs/typescript/Compiler.js new file mode 100644 index 000000000..ec47b4739 --- /dev/null +++ b/src/langs/typescript/Compiler.js @@ -0,0 +1,55 @@ +import Gio from "gi://Gio"; +import GLib from "gi://GLib"; + +import { buildRuntimePath, copy } from "../../util.js"; + +export default function Compiler({ session }) { + const { file } = session; + + async function compile() { + const tsc_launcher = new Gio.SubprocessLauncher(); + tsc_launcher.set_cwd(file.get_path()); + + const tsc = tsc_launcher.spawnv(["tsc", "--project", file.get_path()]); + await tsc.wait_async(null); + + const result = tsc.get_successful(); + tsc_launcher.close(); + return result; + } + + async function run() { + // We have to create a new file each time + // because gjs doesn't appear to use etag for module caching + // ?foo=Date.now() also does not work as expected + // https://gitlab.gnome.org/GNOME/gjs/-/issues/618 + const path = buildRuntimePath(`workbench-${Date.now()}`); + const compiled_dir = Gio.File.new_for_path(path); + if (!compiled_dir.query_exists(null)) { + await compiled_dir.make_directory_async(GLib.PRIORITY_DEFAULT, null); + } + await copy( + "main.js", + file.get_child("compiled_javascript"), + compiled_dir, + Gio.FileCopyFlags.NONE, + ); + const compiled_file = compiled_dir.get_child("main.js"); + + let exports; + try { + exports = await import(`file://${compiled_file.get_path()}`); + } catch (err) { + console.error(err); + return false; + } finally { + compiled_file + .delete_async(GLib.PRIORITY_DEFAULT, null) + .catch(console.error); + } + + return exports; + } + + return { compile, run }; +} diff --git a/src/langs/typescript/TypeScriptDocument.js b/src/langs/typescript/TypeScriptDocument.js new file mode 100644 index 000000000..2b742ac3b --- /dev/null +++ b/src/langs/typescript/TypeScriptDocument.js @@ -0,0 +1,31 @@ +import { setup } from "./typescript.js"; + +import Document from "../../Document.js"; +import { applyTextEdits } from "../../lsp/sourceview.js"; + +export class TypeScriptDocument extends Document { + constructor(...args) { + super(...args); + + this.lspc = setup({ document: this }); + this.code_view.lspc = this.lspc; + } + + async format() { + // https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_formatting + const text_edits = await this.lspc.request("textDocument/formatting", { + textDocument: { + uri: this.file.get_uri(), + }, + options: { + tabSize: 2, + insertSpaces: true, + trimTrailingWhitespace: true, + insertFinalNewline: true, + trimFinalNewlines: true, + }, + }); + + applyTextEdits(text_edits, this.buffer); + } +} diff --git a/src/langs/typescript/meson.build b/src/langs/typescript/meson.build new file mode 100644 index 000000000..9ff964ba7 --- /dev/null +++ b/src/langs/typescript/meson.build @@ -0,0 +1,17 @@ +configure_file( + input: 'template/tsconfig.json', + output: 'tsconfig.json', + install_dir: pkgdatadir / 'langs/typescript/template/', + configuration: bin_conf, +) + +install_data( + ['types/ambient.d.ts'], + install_dir: pkgdatadir / 'langs/typescript', + preserve_path: true, +) + +install_subdir( + meson.project_source_root() / 'gi-types', + install_dir: pkgdatadir / 'langs/typescript', +) diff --git a/src/langs/typescript/template/tsconfig.json b/src/langs/typescript/template/tsconfig.json new file mode 100644 index 000000000..2fc945907 --- /dev/null +++ b/src/langs/typescript/template/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "module": "ESNext", + "moduleResolution": "Bundler", + // TODO: should probably be fixed to ES2023, or whatever standard is + // currently supported by the latest GJS + "target": "ESNext", + "outDir": "compiled_javascript", + "baseUrl": ".", + "paths": { + "*": ["*", "@pkgdatadir@/langs/typescript/gi-types/*"] + }, + "skipLibCheck": true + }, + "include": [ + "main.ts", + "@pkgdatadir@/langs/typescript/types/ambient.d.ts", + "@pkgdatadir@/langs/typescript/gi-types/gi.d.ts" + ] +} diff --git a/src/langs/typescript/types/ambient.d.ts b/src/langs/typescript/types/ambient.d.ts new file mode 100644 index 000000000..e1d519f27 --- /dev/null +++ b/src/langs/typescript/types/ambient.d.ts @@ -0,0 +1,50 @@ +// import Adw from "gi://Adw"; +// import Gtk from "gi://Gtk?version=4.0"; +// import GObject from "gi://GObject"; + +// additional type declarations for GJS + +// additional GJS log utils +declare function print(...args: any[]): void; +declare function log(...args: any[]): void; + +// GJS pkg global +declare const pkg: { + version: string; + name: string; +}; + +// old GJS global imports +// used like: imports.format.printf("..."); +declare module imports { + // format import + const format: { + format(this: String, ...args: any[]): string; + printf(fmt: string, ...args: any[]): string; + vprintf(fmt: string, args: any[]): string; + }; +} + +// gettext import +declare module "gettext" { + export function gettext(id: string): string; + export function ngettext( + singular: string, + plural: string, + n: number, + ): string; +} + +// TODO: uncomment correct typings after we switch to `ts-for-gir` +// declare const workbench: { +// window: Adw.ApplicationWindow; +// application: Adw.Application; +// builder: Gtk.Builder; +// template: string; +// resolve(path: string): string; +// preview(object: Gtk.Widget): void; +// build(params: Record<string, Function | GObject.Object>): void; +// }; + +// global workbench object +declare const workbench: any; diff --git a/src/langs/typescript/typescript.js b/src/langs/typescript/typescript.js new file mode 100644 index 000000000..ecc296792 --- /dev/null +++ b/src/langs/typescript/typescript.js @@ -0,0 +1,56 @@ +import Gio from "gi://Gio"; + +import { createLSPClient } from "../../common.js"; +import { getLanguage, copy } from "../../util.js"; +import { isTypeScriptAvailable } from "../../Extensions/Extensions.js"; + +export function setup({ document }) { + if (!isTypeScriptAvailable()) return; + + const { file, buffer, code_view } = document; + + const lspc = createLSPClient({ + lang: getLanguage("typescript"), + root_uri: file.get_parent().get_uri(), + quiet: true, + }); + lspc.buffer = buffer; + lspc.uri = file.get_uri(); + lspc.connect( + "notification::textDocument/publishDiagnostics", + (_self, params) => { + if (params.uri !== file.get_uri()) { + return; + } + code_view.handleDiagnostics(params.diagnostics); + }, + ); + + lspc.start().catch(console.error); + + buffer.connect("modified-changed", () => { + if (!buffer.get_modified()) return; + lspc.didChange().catch(console.error); + }); + + return lspc; +} + +const typescript_template_dir = Gio.File.new_for_path( + pkg.pkgdatadir, +).resolve_relative_path("langs/typescript/template"); + +export async function setupTypeScriptProject(destination, document) { + const destination_file = await copy( + "tsconfig.json", + typescript_template_dir, + destination, + Gio.FileCopyFlags.NONE, + ); + + // Notify the language server that the tsconfig file was created + // to initialized diagnostics and type checkings + await document.lspc.notify("workspace/didCreateFile", { + files: [{ uri: destination_file.get_uri() }], + }); +} diff --git a/src/langs/vala/Compiler.js b/src/langs/vala/Compiler.js index 9e7e4a4c9..6590493f8 100644 --- a/src/langs/vala/Compiler.js +++ b/src/langs/vala/Compiler.js @@ -2,7 +2,7 @@ import Gio from "gi://Gio"; import dbus_previewer from "../../Previewer/DBusPreviewer.js"; import { decode } from "../../util.js"; -export default function Compiler({ session }) { +export default function ValaCompiler({ session }) { const { file } = session; const module_file = file.get_child("libworkbenchcode.so"); @@ -48,10 +48,10 @@ export default function Compiler({ session }) { async function run() { try { - const proxy = await dbus_previewer.getProxy(); + const proxy = await dbus_previewer.getProxy("vala"); await proxy.RunAsync(module_file.get_path(), session.file.get_uri()); } catch (err) { - logError(err); + console.error(err); return false; } diff --git a/src/langs/vala/ValaDocument.js b/src/langs/vala/ValaDocument.js new file mode 100644 index 000000000..010fee6d4 --- /dev/null +++ b/src/langs/vala/ValaDocument.js @@ -0,0 +1,35 @@ +import { setup as setupVala } from "./vala.js"; + +import Document from "../../Document.js"; +import { applyTextEdits } from "../../lsp/sourceview.js"; + +export class ValaDocument extends Document { + constructor(...args) { + super(...args); + + this.lspc = setupVala({ document: this }); + this.code_view.lspc = this.lspc; + } + + async format() { + // https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_formatting + const text_edits = await this.lspc.request("textDocument/formatting", { + textDocument: { + uri: this.file.get_uri(), + }, + options: { + tabSize: 4, + insertSpaces: true, + trimTrailingWhitespace: true, + insertFinalNewline: true, + trimFinalNewlines: true, + }, + }); + + // vala language server doesn't support diff - it just returns one edit + // we don't want to loose the cursor position so we use this + const state = this.code_view.saveState(); + applyTextEdits(text_edits, this.buffer); + await this.code_view.restoreState(state); + } +} diff --git a/src/langs/vala/vala.js b/src/langs/vala/vala.js index 80e43f0d4..319a98dc7 100644 --- a/src/langs/vala/vala.js +++ b/src/langs/vala/vala.js @@ -1,15 +1,17 @@ import Gio from "gi://Gio"; -import GLib from "gi://GLib"; -import LSPClient from "../../lsp/LSPClient.js"; +import { isValaAvailable } from "../../Extensions/Extensions.js"; +import { createLSPClient } from "../../common.js"; +import { getLanguage } from "../../util.js"; export function setup({ document }) { - const { file, code_view } = document; + if (!isValaAvailable()) return; - const api_file = Gio.File.new_for_path( - GLib.build_filenamev([pkg.pkgdatadir, "workbench.vala"]), - ); + const { file, buffer, code_view } = document; + const api_file = Gio.File.new_for_path(pkg.pkgdatadir).get_child( + "workbench.vala", + ); api_file.copy( file.get_parent().get_child("workbench.vala"), Gio.FileCopyFlags.OVERWRITE, @@ -18,51 +20,27 @@ export function setup({ document }) { ); const lspc = createLSPClient({ - code_view, - file, - }); - - lspc.start().catch(logError); - code_view.buffer.connect("modified-changed", () => { - if (!code_view.buffer.get_modified()) return; - lspc.didChange().catch(logError); + lang: getLanguage("vala"), + root_uri: file.get_parent().get_uri(), + quiet: true, }); -} - -function createLSPClient({ code_view, file }) { - const uri = file.get_uri(); - - const lspc = new LSPClient( - [ - // "/usr/lib/sdk/vala/bin/vala-language-server", - "vala-language-server", - ], - { - rootUri: file.get_parent().get_uri(), - uri, - languageId: "vala", - buffer: code_view.buffer, - }, - ); - lspc.connect("exit", () => { - console.debug("vala language server exit"); - }); - lspc.connect("output", (_self, message) => { - console.debug(`vala language server OUT:\n${JSON.stringify(message)}`); - }); - lspc.connect("input", (_self, message) => { - console.debug(`vala language server IN:\n${JSON.stringify(message)}`); - }); - + lspc.buffer = buffer; + lspc.uri = file.get_uri(); lspc.connect( "notification::textDocument/publishDiagnostics", (_self, params) => { - if (params.uri !== uri) { + if (params.uri !== file.get_uri()) { return; } code_view.handleDiagnostics(params.diagnostics); }, ); + lspc.start().catch(console.error); + buffer.connect("modified-changed", () => { + if (!buffer.get_modified()) return; + lspc.didChange().catch(console.error); + }); + return lspc; } diff --git a/src/langs/vala/workbench.vala b/src/langs/vala/workbench.vala index dfb3a301b..ba62a6d93 100644 --- a/src/langs/vala/workbench.vala +++ b/src/langs/vala/workbench.vala @@ -3,7 +3,7 @@ namespace workbench { public static Gtk.Window window; public static string uri; public string resolve (string path) { - return File.new_for_uri(workbench.uri).resolve_relative_path(path).get_uri(); + return File.new_for_uri (workbench.uri).resolve_relative_path (path).get_uri (); } } diff --git a/src/langs/xml/XmlDocument.js b/src/langs/xml/XmlDocument.js new file mode 100644 index 000000000..2da75a175 --- /dev/null +++ b/src/langs/xml/XmlDocument.js @@ -0,0 +1,9 @@ +import * as xml from "../../langs/xml/xml.js"; +import Document from "../../Document.js"; + +export class XmlDocument extends Document { + async format() { + const code = xml.format(this.buffer.text, 2); + this.code_view.replaceText(code, false); + } +} diff --git a/src/langs/xml/ltx.js b/src/langs/xml/ltx.js index de068df69..b10a3a82a 100644 --- a/src/langs/xml/ltx.js +++ b/src/langs/xml/ltx.js @@ -1,4 +1,4 @@ -import { escapeXML, escapeXMLText, parse, Element } from "ltx"; +import { escapeXML, escapeXMLText, parse, Element, createElement } from "ltx"; import SaxLtx from "ltx/src/parsers/ltx.js"; -export { escapeXML, escapeXMLText, SaxLtx, parse, Element }; +export { escapeXML, escapeXMLText, SaxLtx, parse, Element, createElement }; diff --git a/src/langs/xml/xml.js b/src/langs/xml/xml.js index 696a75791..dd677708a 100644 --- a/src/langs/xml/xml.js +++ b/src/langs/xml/xml.js @@ -5,6 +5,7 @@ import { SaxLtx, parse, Element, + createElement, } from "../../lib/ltx.js"; // adapted from ltx.stringify to work without Element and ignore whitespace @@ -85,4 +86,4 @@ function format(str, indent = 2) { return s; } -export { parse, Element, format }; +export { parse, Element, format, createElement }; diff --git a/src/lib/README.md b/src/lib/README.md new file mode 100644 index 000000000..beb4cfcd4 --- /dev/null +++ b/src/lib/README.md @@ -0,0 +1,9 @@ +# lib + +npm / Node.js libraries "compiled" to run with GJS. + +To rebuild them run + +```sh +../../node_modules/.bin/rollup -c rollup.config.js +``` diff --git a/src/lib/ltx.js b/src/lib/ltx.js index 122d4e665..5c7fdb62a 100644 --- a/src/lib/ltx.js +++ b/src/lib/ltx.js @@ -1228,4 +1228,49 @@ function parse(data, options) { } } -export { Element, SaxLtx, escapeXML, escapeXMLText, parse }; +function append(el, child) { + if (Array.isArray(child)) { + for (const c of child) append(el, c); + return; + } + + if (child === "" || child == null || child === true || child === false) { + return; + } + + el.cnode(child); +} + +/** + * JSX compatible API, use this function as pragma + * https://facebook.github.io/jsx/ + * + * @param {string} name name of the element + * @param {object} attrs object of attribute key/value pairs + * @return {Element} Element + */ +function createElement(name, attrs, ...children) { + if (typeof attrs === "object" && attrs !== null) { + // __self and __source are added by babel in development + // https://github.com/facebook/react/pull/4596 + // https://babeljs.io/docs/en/babel-preset-react#development + // https://babeljs.io/docs/en/babel-plugin-transform-react-jsx-source + delete attrs.__source; + delete attrs.__self; + + for (const [key, value] of Object.entries(attrs)) { + if (value == null) delete attrs[key]; + else attrs[key] = value.toString(10); + } + } + + const el = new Element(name, attrs); + + for (const child of children) { + append(el, child); + } + + return el; +} + +export { Element, SaxLtx, createElement, escapeXML, escapeXMLText, parse }; diff --git a/src/lib/postcss.js b/src/lib/postcss.js index e8f3f7d56..3dd2fd86a 100644 --- a/src/lib/postcss.js +++ b/src/lib/postcss.js @@ -50,7 +50,7 @@ const AT = '@'.charCodeAt(0); const RE_AT_END = /[\t\n\f\r "#'()/;[\\\]{}]/g; const RE_WORD_END = /[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g; -const RE_BAD_BRACKET = /.[\n"'(/\\]/; +const RE_BAD_BRACKET = /.[\r\n"'(/\\]/; const RE_HEX_ESCAPE = /[\da-f]/i; var tokenize = function tokenizer(input, options = {}) { @@ -287,8 +287,8 @@ var tokenize = function tokenizer(input, options = {}) { return { back, - nextToken, endOfFile, + nextToken, position } }; @@ -304,21 +304,21 @@ function registerInput(dependant) { } const HIGHLIGHT_THEME = { - 'brackets': pico$1.cyan, - 'at-word': pico$1.cyan, - 'comment': pico$1.gray, - 'string': pico$1.green, - 'class': pico$1.yellow, - 'hash': pico$1.magenta, - 'call': pico$1.cyan, + ';': pico$1.yellow, + ':': pico$1.yellow, '(': pico$1.cyan, ')': pico$1.cyan, - '{': pico$1.yellow, - '}': pico$1.yellow, '[': pico$1.yellow, ']': pico$1.yellow, - ':': pico$1.yellow, - ';': pico$1.yellow + '{': pico$1.yellow, + '}': pico$1.yellow, + 'at-word': pico$1.cyan, + 'brackets': pico$1.cyan, + 'call': pico$1.cyan, + 'class': pico$1.yellow, + 'comment': pico$1.gray, + 'hash': pico$1.magenta, + 'string': pico$1.green }; function getTokenType([type, value], processor) { @@ -426,7 +426,7 @@ class CssSyntaxError$4 extends Error { let mark, aside; if (color) { - let { bold, red, gray } = pico.createColors(true); + let { bold, gray, red } = pico.createColors(true); mark = text => bold(red(text)); aside = text => gray(text); } else { @@ -468,17 +468,17 @@ symbols.isClean = Symbol('isClean'); symbols.my = Symbol('my'); const DEFAULT_RAW = { - colon: ': ', - indent: ' ', - beforeDecl: '\n', - beforeRule: '\n', - beforeOpen: ' ', + after: '\n', beforeClose: '\n', beforeComment: '\n', - after: '\n', - emptyBody: '', + beforeDecl: '\n', + beforeOpen: ' ', + beforeRule: '\n', + colon: ': ', commentLeft: ' ', commentRight: ' ', + emptyBody: '', + indent: ' ', semicolon: false }; @@ -491,54 +491,6 @@ class Stringifier$2 { this.builder = builder; } - stringify(node, semicolon) { - /* c8 ignore start */ - if (!this[node.type]) { - throw new Error( - 'Unknown AST node type ' + - node.type + - '. ' + - 'Maybe you need to change PostCSS stringifier.' - ) - } - /* c8 ignore stop */ - this[node.type](node, semicolon); - } - - document(node) { - this.body(node); - } - - root(node) { - this.body(node); - if (node.raws.after) this.builder(node.raws.after); - } - - comment(node) { - let left = this.raw(node, 'left', 'commentLeft'); - let right = this.raw(node, 'right', 'commentRight'); - this.builder('/*' + left + node.text + right + '*/', node); - } - - decl(node, semicolon) { - let between = this.raw(node, 'between', 'colon'); - let string = node.prop + between + this.rawValue(node, 'value'); - - if (node.important) { - string += node.raws.important || ' !important'; - } - - if (semicolon) string += ';'; - this.builder(string, node); - } - - rule(node) { - this.block(node, this.rawValue(node, 'selector')); - if (node.raws.ownSemicolon) { - this.builder(node.raws.ownSemicolon, node, 'end'); - } - } - atrule(node, semicolon) { let name = '@' + node.name; let params = node.params ? this.rawValue(node, 'params') : ''; @@ -557,20 +509,33 @@ class Stringifier$2 { } } - body(node) { - let last = node.nodes.length - 1; - while (last > 0) { - if (node.nodes[last].type !== 'comment') break - last -= 1; + beforeAfter(node, detect) { + let value; + if (node.type === 'decl') { + value = this.raw(node, null, 'beforeDecl'); + } else if (node.type === 'comment') { + value = this.raw(node, null, 'beforeComment'); + } else if (detect === 'before') { + value = this.raw(node, null, 'beforeRule'); + } else { + value = this.raw(node, null, 'beforeClose'); } - let semicolon = this.raw(node, 'semicolon'); - for (let i = 0; i < node.nodes.length; i++) { - let child = node.nodes[i]; - let before = this.raw(child, 'before'); - if (before) this.builder(before); - this.stringify(child, last !== i || semicolon); + let buf = node.parent; + let depth = 0; + while (buf && buf.type !== 'root') { + depth += 1; + buf = buf.parent; + } + + if (value.includes('\n')) { + let indent = this.raw(node, null, 'indent'); + if (indent.length) { + for (let step = 0; step < depth; step++) value += indent; + } } + + return value } block(node, start) { @@ -589,6 +554,44 @@ class Stringifier$2 { this.builder('}', node, 'end'); } + body(node) { + let last = node.nodes.length - 1; + while (last > 0) { + if (node.nodes[last].type !== 'comment') break + last -= 1; + } + + let semicolon = this.raw(node, 'semicolon'); + for (let i = 0; i < node.nodes.length; i++) { + let child = node.nodes[i]; + let before = this.raw(child, 'before'); + if (before) this.builder(before); + this.stringify(child, last !== i || semicolon); + } + } + + comment(node) { + let left = this.raw(node, 'left', 'commentLeft'); + let right = this.raw(node, 'right', 'commentRight'); + this.builder('/*' + left + node.text + right + '*/', node); + } + + decl(node, semicolon) { + let between = this.raw(node, 'between', 'colon'); + let string = node.prop + between + this.rawValue(node, 'value'); + + if (node.important) { + string += node.raws.important || ' !important'; + } + + if (semicolon) string += ';'; + this.builder(string, node); + } + + document(node) { + this.body(node); + } + raw(node, own, detect) { let value; if (!detect) detect = own; @@ -643,42 +646,20 @@ class Stringifier$2 { return value } - rawSemicolon(root) { - let value; - root.walk(i => { - if (i.nodes && i.nodes.length && i.last.type === 'decl') { - value = i.raws.semicolon; - if (typeof value !== 'undefined') return false - } - }); - return value - } - - rawEmptyBody(root) { - let value; - root.walk(i => { - if (i.nodes && i.nodes.length === 0) { - value = i.raws.after; - if (typeof value !== 'undefined') return false - } - }); - return value - } - - rawIndent(root) { - if (root.raws.indent) return root.raws.indent + rawBeforeClose(root) { let value; root.walk(i => { - let p = i.parent; - if (p && p !== root && p.parent && p.parent === root) { - if (typeof i.raws.before !== 'undefined') { - let parts = i.raws.before.split('\n'); - value = parts[parts.length - 1]; - value = value.replace(/\S/g, ''); + if (i.nodes && i.nodes.length > 0) { + if (typeof i.raws.after !== 'undefined') { + value = i.raws.after; + if (value.includes('\n')) { + value = value.replace(/[^\n]+$/, ''); + } return false } } }); + if (value) value = value.replace(/\S/g, ''); return value } @@ -720,6 +701,17 @@ class Stringifier$2 { return value } + rawBeforeOpen(root) { + let value; + root.walk(i => { + if (i.type !== 'decl') { + value = i.raws.between; + if (typeof value !== 'undefined') return false + } + }); + return value + } + rawBeforeRule(root) { let value; root.walk(i => { @@ -737,71 +729,53 @@ class Stringifier$2 { return value } - rawBeforeClose(root) { + rawColon(root) { let value; - root.walk(i => { - if (i.nodes && i.nodes.length > 0) { - if (typeof i.raws.after !== 'undefined') { - value = i.raws.after; - if (value.includes('\n')) { - value = value.replace(/[^\n]+$/, ''); - } - return false - } + root.walkDecls(i => { + if (typeof i.raws.between !== 'undefined') { + value = i.raws.between.replace(/[^\s:]/g, ''); + return false } }); - if (value) value = value.replace(/\S/g, ''); return value } - rawBeforeOpen(root) { + rawEmptyBody(root) { let value; root.walk(i => { - if (i.type !== 'decl') { - value = i.raws.between; + if (i.nodes && i.nodes.length === 0) { + value = i.raws.after; if (typeof value !== 'undefined') return false } }); return value } - rawColon(root) { + rawIndent(root) { + if (root.raws.indent) return root.raws.indent let value; - root.walkDecls(i => { - if (typeof i.raws.between !== 'undefined') { - value = i.raws.between.replace(/[^\s:]/g, ''); - return false + root.walk(i => { + let p = i.parent; + if (p && p !== root && p.parent && p.parent === root) { + if (typeof i.raws.before !== 'undefined') { + let parts = i.raws.before.split('\n'); + value = parts[parts.length - 1]; + value = value.replace(/\S/g, ''); + return false + } } }); return value } - beforeAfter(node, detect) { + rawSemicolon(root) { let value; - if (node.type === 'decl') { - value = this.raw(node, null, 'beforeDecl'); - } else if (node.type === 'comment') { - value = this.raw(node, null, 'beforeComment'); - } else if (detect === 'before') { - value = this.raw(node, null, 'beforeRule'); - } else { - value = this.raw(node, null, 'beforeClose'); - } - - let buf = node.parent; - let depth = 0; - while (buf && buf.type !== 'root') { - depth += 1; - buf = buf.parent; - } - - if (value.includes('\n')) { - let indent = this.raw(node, null, 'indent'); - if (indent.length) { - for (let step = 0; step < depth; step++) value += indent; + root.walk(i => { + if (i.nodes && i.nodes.length && i.last.type === 'decl') { + value = i.raws.semicolon; + if (typeof value !== 'undefined') return false } - } - + }); return value } @@ -814,6 +788,32 @@ class Stringifier$2 { return value } + + root(node) { + this.body(node); + if (node.raws.after) this.builder(node.raws.after); + } + + rule(node) { + this.block(node, this.rawValue(node, 'selector')); + if (node.raws.ownSemicolon) { + this.builder(node.raws.ownSemicolon, node, 'end'); + } + } + + stringify(node, semicolon) { + /* c8 ignore start */ + if (!this[node.type]) { + throw new Error( + 'Unknown AST node type ' + + node.type + + '. ' + + 'Maybe you need to change PostCSS stringifier.' + ) + } + /* c8 ignore stop */ + this[node.type](node, semicolon); + } } var stringifier = Stringifier$2; @@ -883,42 +883,23 @@ class Node$5 { } } - error(message, opts = {}) { - if (this.source) { - let { start, end } = this.rangeBy(opts); - return this.source.input.error( - message, - { line: start.line, column: start.column }, - { line: end.line, column: end.column }, - opts - ) + addToError(error) { + error.postcssNode = this; + if (error.stack && this.source && /\n\s{4}at /.test(error.stack)) { + let s = this.source; + error.stack = error.stack.replace( + /\n\s{4}at /, + `$&${s.input.from}:${s.start.line}:${s.start.column}$&` + ); } - return new CssSyntaxError$3(message) - } - - warn(result, text, opts) { - let data = { node: this }; - for (let i in opts) data[i] = opts[i]; - return result.warn(text, data) + return error } - remove() { - if (this.parent) { - this.parent.removeChild(this); - } - this.parent = undefined; + after(add) { + this.parent.insertAfter(this, add); return this } - toString(stringifier = stringify$4) { - if (stringifier.stringify) stringifier = stringifier.stringify; - let result = ''; - stringifier(this, i => { - result += i; - }); - return result - } - assign(overrides = {}) { for (let name in overrides) { this[name] = overrides[name]; @@ -926,6 +907,17 @@ class Node$5 { return this } + before(add) { + this.parent.insertBefore(this, add); + return this + } + + cleanRaws(keepBetween) { + delete this.raws.before; + delete this.raws.after; + if (!keepBetween) delete this.raws.between; + } + clone(overrides = {}) { let cloned = cloneNode(this); for (let name in overrides) { @@ -934,39 +926,70 @@ class Node$5 { return cloned } - cloneBefore(overrides = {}) { + cloneAfter(overrides = {}) { let cloned = this.clone(overrides); - this.parent.insertBefore(this, cloned); + this.parent.insertAfter(this, cloned); return cloned } - cloneAfter(overrides = {}) { + cloneBefore(overrides = {}) { let cloned = this.clone(overrides); - this.parent.insertAfter(this, cloned); + this.parent.insertBefore(this, cloned); return cloned } - replaceWith(...nodes) { - if (this.parent) { - let bookmark = this; - let foundSelf = false; - for (let node of nodes) { - if (node === this) { - foundSelf = true; - } else if (foundSelf) { - this.parent.insertAfter(bookmark, node); - bookmark = node; + error(message, opts = {}) { + if (this.source) { + let { end, start } = this.rangeBy(opts); + return this.source.input.error( + message, + { column: start.column, line: start.line }, + { column: end.column, line: end.line }, + opts + ) + } + return new CssSyntaxError$3(message) + } + + getProxyProcessor() { + return { + get(node, prop) { + if (prop === 'proxyOf') { + return node + } else if (prop === 'root') { + return () => node.root().toProxy() } else { - this.parent.insertBefore(bookmark, node); + return node[prop] } - } + }, - if (!foundSelf) { - this.remove(); + set(node, prop, value) { + if (node[prop] === value) return true + node[prop] = value; + if ( + prop === 'prop' || + prop === 'value' || + prop === 'name' || + prop === 'params' || + prop === 'important' || + /* c8 ignore next */ + prop === 'text' + ) { + node.markDirty(); + } + return true } } + } - return this + markDirty() { + if (this[isClean$2]) { + this[isClean$2] = false; + let next = this; + while ((next = next.parent)) { + next[isClean$2] = false; + } + } } next() { @@ -975,91 +998,20 @@ class Node$5 { return this.parent.nodes[index + 1] } - prev() { - if (!this.parent) return undefined - let index = this.parent.index(this); - return this.parent.nodes[index - 1] - } - - before(add) { - this.parent.insertBefore(this, add); - return this - } - - after(add) { - this.parent.insertAfter(this, add); - return this - } - - root() { - let result = this; - while (result.parent && result.parent.type !== 'document') { - result = result.parent; - } - return result - } - - raw(prop, defaultType) { - let str = new Stringifier(); - return str.raw(this, prop, defaultType) - } - - cleanRaws(keepBetween) { - delete this.raws.before; - delete this.raws.after; - if (!keepBetween) delete this.raws.between; - } - - toJSON(_, inputs) { - let fixed = {}; - let emitInputs = inputs == null; - inputs = inputs || new Map(); - let inputsNextIndex = 0; - - for (let name in this) { - if (!Object.prototype.hasOwnProperty.call(this, name)) { - /* c8 ignore next 2 */ - continue - } - if (name === 'parent' || name === 'proxyCache') continue - let value = this[name]; - - if (Array.isArray(value)) { - fixed[name] = value.map(i => { - if (typeof i === 'object' && i.toJSON) { - return i.toJSON(null, inputs) - } else { - return i - } - }); - } else if (typeof value === 'object' && value.toJSON) { - fixed[name] = value.toJSON(null, inputs); - } else if (name === 'source') { - let inputId = inputs.get(value.input); - if (inputId == null) { - inputId = inputsNextIndex; - inputs.set(value.input, inputsNextIndex); - inputsNextIndex++; - } - fixed[name] = { - inputId, - start: value.start, - end: value.end - }; - } else { - fixed[name] = value; - } - } - - if (emitInputs) { - fixed.inputs = [...inputs.keys()].map(input => input.toJSON()); + positionBy(opts, stringRepresentation) { + let pos = this.source.start; + if (opts.index) { + pos = this.positionInside(opts.index, stringRepresentation); + } else if (opts.word) { + stringRepresentation = this.toString(); + let index = stringRepresentation.indexOf(opts.word); + if (index !== -1) pos = this.positionInside(index, stringRepresentation); } - - return fixed + return pos } - positionInside(index) { - let string = this.toString(); + positionInside(index, stringRepresentation) { + let string = stringRepresentation || this.toString(); let column = this.source.start.column; let line = this.source.start.line; @@ -1072,46 +1024,42 @@ class Node$5 { } } - return { line, column } + return { column, line } } - positionBy(opts) { - let pos = this.source.start; - if (opts.index) { - pos = this.positionInside(opts.index); - } else if (opts.word) { - let index = this.toString().indexOf(opts.word); - if (index !== -1) pos = this.positionInside(index); - } - return pos + prev() { + if (!this.parent) return undefined + let index = this.parent.index(this); + return this.parent.nodes[index - 1] } rangeBy(opts) { let start = { - line: this.source.start.line, - column: this.source.start.column + column: this.source.start.column, + line: this.source.start.line }; let end = this.source.end ? { - line: this.source.end.line, - column: this.source.end.column + 1 - } + column: this.source.end.column + 1, + line: this.source.end.line + } : { - line: start.line, - column: start.column + 1 - }; + column: start.column + 1, + line: start.line + }; if (opts.word) { - let index = this.toString().indexOf(opts.word); + let stringRepresentation = this.toString(); + let index = stringRepresentation.indexOf(opts.word); if (index !== -1) { - start = this.positionInside(index); - end = this.positionInside(index + opts.word.length); + start = this.positionInside(index, stringRepresentation); + end = this.positionInside(index + opts.word.length, stringRepresentation); } } else { if (opts.start) { start = { - line: opts.start.line, - column: opts.start.column + column: opts.start.column, + line: opts.start.line }; } else if (opts.index) { start = this.positionInside(opts.index); @@ -1119,10 +1067,10 @@ class Node$5 { if (opts.end) { end = { - line: opts.end.line, - column: opts.end.column + column: opts.end.column, + line: opts.end.line }; - } else if (opts.endIndex) { + } else if (typeof opts.endIndex === 'number') { end = this.positionInside(opts.endIndex); } else if (opts.index) { end = this.positionInside(opts.index + 1); @@ -1133,41 +1081,102 @@ class Node$5 { end.line < start.line || (end.line === start.line && end.column <= start.column) ) { - end = { line: start.line, column: start.column + 1 }; + end = { column: start.column + 1, line: start.line }; } - return { start, end } + return { end, start } } - getProxyProcessor() { - return { - set(node, prop, value) { - if (node[prop] === value) return true - node[prop] = value; - if ( - prop === 'prop' || - prop === 'value' || - prop === 'name' || - prop === 'params' || - prop === 'important' || - /* c8 ignore next */ - prop === 'text' - ) { - node.markDirty(); - } - return true - }, + raw(prop, defaultType) { + let str = new Stringifier(); + return str.raw(this, prop, defaultType) + } - get(node, prop) { - if (prop === 'proxyOf') { - return node - } else if (prop === 'root') { - return () => node.root().toProxy() + remove() { + if (this.parent) { + this.parent.removeChild(this); + } + this.parent = undefined; + return this + } + + replaceWith(...nodes) { + if (this.parent) { + let bookmark = this; + let foundSelf = false; + for (let node of nodes) { + if (node === this) { + foundSelf = true; + } else if (foundSelf) { + this.parent.insertAfter(bookmark, node); + bookmark = node; } else { - return node[prop] + this.parent.insertBefore(bookmark, node); + } + } + + if (!foundSelf) { + this.remove(); + } + } + + return this + } + + root() { + let result = this; + while (result.parent && result.parent.type !== 'document') { + result = result.parent; + } + return result + } + + toJSON(_, inputs) { + let fixed = {}; + let emitInputs = inputs == null; + inputs = inputs || new Map(); + let inputsNextIndex = 0; + + for (let name in this) { + if (!Object.prototype.hasOwnProperty.call(this, name)) { + /* c8 ignore next 2 */ + continue + } + if (name === 'parent' || name === 'proxyCache') continue + let value = this[name]; + + if (Array.isArray(value)) { + fixed[name] = value.map(i => { + if (typeof i === 'object' && i.toJSON) { + return i.toJSON(null, inputs) + } else { + return i + } + }); + } else if (typeof value === 'object' && value.toJSON) { + fixed[name] = value.toJSON(null, inputs); + } else if (name === 'source') { + let inputId = inputs.get(value.input); + if (inputId == null) { + inputId = inputsNextIndex; + inputs.set(value.input, inputsNextIndex); + inputsNextIndex++; } + fixed[name] = { + end: value.end, + inputId, + start: value.start + }; + } else { + fixed[name] = value; } } + + if (emitInputs) { + fixed.inputs = [...inputs.keys()].map(input => input.toJSON()); + } + + return fixed } toProxy() { @@ -1177,26 +1186,19 @@ class Node$5 { return this.proxyCache } - addToError(error) { - error.postcssNode = this; - if (error.stack && this.source && /\n\s{4}at /.test(error.stack)) { - let s = this.source; - error.stack = error.stack.replace( - /\n\s{4}at /, - `$&${s.input.from}:${s.start.line}:${s.start.column}$&` - ); - } - return error + toString(stringifier = stringify$4) { + if (stringifier.stringify) stringifier = stringifier.stringify; + let result = ''; + stringifier(this, i => { + result += i; + }); + return result } - markDirty() { - if (this[isClean$2]) { - this[isClean$2] = false; - let next = this; - while ((next = next.parent)) { - next[isClean$2] = false; - } - } + warn(result, text, opts) { + let data = { node: this }; + for (let i in opts) data[i] = opts[i]; + return result.warn(text, data) } get proxyOf() { @@ -1287,22 +1289,37 @@ class PreviousMap$2 { return this.consumerCache } - withContent() { - return !!( - this.consumer().sourcesContent && - this.consumer().sourcesContent.length > 0 - ) - } + decodeInline(text) { + let baseCharsetUri = /^data:application\/json;charset=utf-?8;base64,/; + let baseUri = /^data:application\/json;base64,/; + let charsetUri = /^data:application\/json;charset=utf-?8,/; + let uri = /^data:application\/json,/; - startWith(string, start) { - if (!string) return false - return string.substr(0, start.length) === start + if (charsetUri.test(text) || uri.test(text)) { + return decodeURIComponent(text.substr(RegExp.lastMatch.length)) + } + + if (baseCharsetUri.test(text) || baseUri.test(text)) { + return fromBase64(text.substr(RegExp.lastMatch.length)) + } + + let encoding = text.match(/data:application\/json;([^,]+),/)[1]; + throw new Error('Unsupported source map encoding ' + encoding) } getAnnotationURL(sourceMapString) { return sourceMapString.replace(/^\/\*\s*# sourceMappingURL=/, '').trim() } + isMap(map) { + if (typeof map !== 'object') return false + return ( + typeof map.mappings === 'string' || + typeof map._mappings === 'string' || + Array.isArray(map.sections) + ) + } + loadAnnotation(css) { let comments = css.match(/\/\*\s*# sourceMappingURL=/gm); if (!comments) return @@ -1317,24 +1334,6 @@ class PreviousMap$2 { } } - decodeInline(text) { - let baseCharsetUri = /^data:application\/json;charset=utf-?8;base64,/; - let baseUri = /^data:application\/json;base64,/; - let charsetUri = /^data:application\/json;charset=utf-?8,/; - let uri = /^data:application\/json,/; - - if (charsetUri.test(text) || uri.test(text)) { - return decodeURIComponent(text.substr(RegExp.lastMatch.length)) - } - - if (baseCharsetUri.test(text) || baseUri.test(text)) { - return fromBase64(text.substr(RegExp.lastMatch.length)) - } - - let encoding = text.match(/data:application\/json;([^,]+),/)[1]; - throw new Error('Unsupported source map encoding ' + encoding) - } - loadFile(path) { this.root = dirname$1(path); if (existsSync(path)) { @@ -1380,12 +1379,15 @@ class PreviousMap$2 { } } - isMap(map) { - if (typeof map !== 'object') return false - return ( - typeof map.mappings === 'string' || - typeof map._mappings === 'string' || - Array.isArray(map.sections) + startWith(string, start) { + if (!string) return false + return string.substr(0, start.length) === start + } + + withContent() { + return !!( + this.consumer().sourcesContent && + this.consumer().sourcesContent.length > 0 ) } } @@ -1395,7 +1397,7 @@ PreviousMap$2.default = PreviousMap$2; let { SourceMapConsumer: SourceMapConsumer$1, SourceMapGenerator: SourceMapGenerator$1 } = require$$2; let { fileURLToPath, pathToFileURL: pathToFileURL$1 } = require$$2; -let { resolve: resolve$1, isAbsolute } = require$$2; +let { isAbsolute, resolve: resolve$1 } = require$$2; let { nanoid } = nonSecure; let terminalHighlight = terminalHighlight_1; @@ -1453,55 +1455,13 @@ class Input$5 { if (this.map) this.map.file = this.from; } - fromOffset(offset) { - let lastLine, lineToIndex; - if (!this[fromOffsetCache]) { - let lines = this.css.split('\n'); - lineToIndex = new Array(lines.length); - let prevIndex = 0; - - for (let i = 0, l = lines.length; i < l; i++) { - lineToIndex[i] = prevIndex; - prevIndex += lines[i].length + 1; - } - - this[fromOffsetCache] = lineToIndex; - } else { - lineToIndex = this[fromOffsetCache]; - } - lastLine = lineToIndex[lineToIndex.length - 1]; - - let min = 0; - if (offset >= lastLine) { - min = lineToIndex.length - 1; - } else { - let max = lineToIndex.length - 2; - let mid; - while (min < max) { - mid = min + ((max - min) >> 1); - if (offset < lineToIndex[mid]) { - max = mid - 1; - } else if (offset >= lineToIndex[mid + 1]) { - min = mid + 1; - } else { - min = mid; - break - } - } - } - return { - line: min + 1, - col: offset - lineToIndex[min] + 1 - } - } - error(message, line, column, opts = {}) { let result, endLine, endColumn; if (line && typeof line === 'object') { let start = line; let end = column; - if (typeof line.offset === 'number') { + if (typeof start.offset === 'number') { let pos = this.fromOffset(start.offset); line = pos.line; column = pos.col; @@ -1529,10 +1489,10 @@ class Input$5 { message, origin.endLine === undefined ? origin.line - : { line: origin.line, column: origin.column }, + : { column: origin.column, line: origin.line }, origin.endLine === undefined ? origin.column - : { line: origin.endLine, column: origin.endColumn }, + : { column: origin.endColumn, line: origin.endLine }, origin.source, origin.file, opts.plugin @@ -1540,15 +1500,15 @@ class Input$5 { } else { result = new CssSyntaxError$2( message, - endLine === undefined ? line : { line, column }, - endLine === undefined ? column : { line: endLine, column: endColumn }, + endLine === undefined ? line : { column, line }, + endLine === undefined ? column : { column: endColumn, line: endLine }, this.css, this.file, opts.plugin ); } - result.input = { line, column, endLine, endColumn, source: this.css }; + result.input = { column, endColumn, endLine, line, source: this.css }; if (this.file) { if (pathToFileURL$1) { result.input.url = pathToFileURL$1(this.file).toString(); @@ -1559,16 +1519,65 @@ class Input$5 { return result } - origin(line, column, endLine, endColumn) { - if (!this.map) return false - let consumer = this.map.consumer(); + fromOffset(offset) { + let lastLine, lineToIndex; + if (!this[fromOffsetCache]) { + let lines = this.css.split('\n'); + lineToIndex = new Array(lines.length); + let prevIndex = 0; - let from = consumer.originalPositionFor({ line, column }); - if (!from.source) return false + for (let i = 0, l = lines.length; i < l; i++) { + lineToIndex[i] = prevIndex; + prevIndex += lines[i].length + 1; + } - let to; - if (typeof endLine === 'number') { - to = consumer.originalPositionFor({ line: endLine, column: endColumn }); + this[fromOffsetCache] = lineToIndex; + } else { + lineToIndex = this[fromOffsetCache]; + } + lastLine = lineToIndex[lineToIndex.length - 1]; + + let min = 0; + if (offset >= lastLine) { + min = lineToIndex.length - 1; + } else { + let max = lineToIndex.length - 2; + let mid; + while (min < max) { + mid = min + ((max - min) >> 1); + if (offset < lineToIndex[mid]) { + max = mid - 1; + } else if (offset >= lineToIndex[mid + 1]) { + min = mid + 1; + } else { + min = mid; + break + } + } + } + return { + col: offset - lineToIndex[min] + 1, + line: min + 1 + } + } + + mapResolve(file) { + if (/^\w+:\/\//.test(file)) { + return file + } + return resolve$1(this.map.consumer().sourceRoot || this.map.root || '.', file) + } + + origin(line, column, endLine, endColumn) { + if (!this.map) return false + let consumer = this.map.consumer(); + + let from = consumer.originalPositionFor({ column, line }); + if (!from.source) return false + + let to; + if (typeof endLine === 'number') { + to = consumer.originalPositionFor({ column: endColumn, line: endLine }); } let fromUrl; @@ -1583,11 +1592,11 @@ class Input$5 { } let result = { - url: fromUrl.toString(), - line: from.line, column: from.column, + endColumn: to && to.column, endLine: to && to.line, - endColumn: to && to.column + line: from.line, + url: fromUrl.toString() }; if (fromUrl.protocol === 'file:') { @@ -1605,17 +1614,6 @@ class Input$5 { return result } - mapResolve(file) { - if (/^\w+:\/\//.test(file)) { - return file - } - return resolve$1(this.map.consumer().sourceRoot || this.map.root || '.', file) - } - - get from() { - return this.file || this.id - } - toJSON() { let json = {}; for (let name of ['hasBOM', 'css', 'file', 'id']) { @@ -1631,6 +1629,10 @@ class Input$5 { } return json } + + get from() { + return this.file || this.id + } } var input = Input$5; @@ -1641,7 +1643,7 @@ if (terminalHighlight && terminalHighlight.registerInput) { } let { SourceMapConsumer, SourceMapGenerator } = require$$2; -let { dirname, resolve, relative, sep } = require$$2; +let { dirname, relative, resolve, sep } = require$$2; let { pathToFileURL } = require$$2; let Input$4 = input; @@ -1656,100 +1658,31 @@ class MapGenerator$2 { this.root = root; this.opts = opts; this.css = cssString; - } - - isMap() { - if (typeof this.opts.map !== 'undefined') { - return !!this.opts.map - } - return this.previous().length > 0 - } - - previous() { - if (!this.previousMaps) { - this.previousMaps = []; - if (this.root) { - this.root.walk(node => { - if (node.source && node.source.input.map) { - let map = node.source.input.map; - if (!this.previousMaps.includes(map)) { - this.previousMaps.push(map); - } - } - }); - } else { - let input = new Input$4(this.css, this.opts); - if (input.map) this.previousMaps.push(input.map); - } - } - - return this.previousMaps - } - - isInline() { - if (typeof this.mapOpts.inline !== 'undefined') { - return this.mapOpts.inline - } - - let annotation = this.mapOpts.annotation; - if (typeof annotation !== 'undefined' && annotation !== true) { - return false - } - - if (this.previous().length) { - return this.previous().some(i => i.inline) - } - return true - } + this.originalCSS = cssString; + this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute; - isSourcesContent() { - if (typeof this.mapOpts.sourcesContent !== 'undefined') { - return this.mapOpts.sourcesContent - } - if (this.previous().length) { - return this.previous().some(i => i.withContent()) - } - return true + this.memoizedFileURLs = new Map(); + this.memoizedPaths = new Map(); + this.memoizedURLs = new Map(); } - clearAnnotation() { - if (this.mapOpts.annotation === false) return + addAnnotation() { + let content; - if (this.root) { - let node; - for (let i = this.root.nodes.length - 1; i >= 0; i--) { - node = this.root.nodes[i]; - if (node.type !== 'comment') continue - if (node.text.indexOf('# sourceMappingURL=') === 0) { - this.root.removeChild(i); - } - } - } else if (this.css) { - this.css = this.css.replace(/(\n)?\/\*#[\S\s]*?\*\/$/gm, ''); + if (this.isInline()) { + content = + 'data:application/json;base64,' + this.toBase64(this.map.toString()); + } else if (typeof this.mapOpts.annotation === 'string') { + content = this.mapOpts.annotation; + } else if (typeof this.mapOpts.annotation === 'function') { + content = this.mapOpts.annotation(this.opts.to, this.root); + } else { + content = this.outputFile() + '.map'; } - } + let eol = '\n'; + if (this.css.includes('\r\n')) eol = '\r\n'; - setSourcesContent() { - let already = {}; - if (this.root) { - this.root.walk(node => { - if (node.source) { - let from = node.source.input.from; - if (from && !already[from]) { - already[from] = true; - this.map.setSourceContent( - this.toUrl(this.path(from)), - node.source.input.css - ); - } - } - }); - } else if (this.css) { - let from = this.opts.from - ? this.toUrl(this.path(this.opts.from)) - : '<no source>'; - this.map.setSourceContent(from, this.css); - } + this.css += eol + '/*# sourceMappingURL=' + content + ' */'; } applyPrevMaps() { @@ -1761,7 +1694,7 @@ class MapGenerator$2 { if (this.mapOpts.sourcesContent === false) { map = new SourceMapConsumer(prev.text); if (map.sourcesContent) { - map.sourcesContent = map.sourcesContent.map(() => null); + map.sourcesContent = null; } } else { map = prev.consumer(); @@ -1771,53 +1704,33 @@ class MapGenerator$2 { } } - isAnnotation() { - if (this.isInline()) { - return true - } - if (typeof this.mapOpts.annotation !== 'undefined') { - return this.mapOpts.annotation - } - if (this.previous().length) { - return this.previous().some(i => i.annotation) - } - return true - } - - toBase64(str) { - if (Buffer) { - return Buffer.from(str).toString('base64') - } else { - return window.btoa(unescape(encodeURIComponent(str))) - } - } - - addAnnotation() { - let content; + clearAnnotation() { + if (this.mapOpts.annotation === false) return - if (this.isInline()) { - content = - 'data:application/json;base64,' + this.toBase64(this.map.toString()); - } else if (typeof this.mapOpts.annotation === 'string') { - content = this.mapOpts.annotation; - } else if (typeof this.mapOpts.annotation === 'function') { - content = this.mapOpts.annotation(this.opts.to, this.root); - } else { - content = this.outputFile() + '.map'; + if (this.root) { + let node; + for (let i = this.root.nodes.length - 1; i >= 0; i--) { + node = this.root.nodes[i]; + if (node.type !== 'comment') continue + if (node.text.indexOf('# sourceMappingURL=') === 0) { + this.root.removeChild(i); + } + } + } else if (this.css) { + this.css = this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm, ''); } - let eol = '\n'; - if (this.css.includes('\r\n')) eol = '\r\n'; - - this.css += eol + '/*# sourceMappingURL=' + content + ' */'; } - outputFile() { - if (this.opts.to) { - return this.path(this.opts.to) - } else if (this.opts.from) { - return this.path(this.opts.from) + generate() { + this.clearAnnotation(); + if (pathAvailable && sourceMapAvailable && this.isMap()) { + return this.generateMap() } else { - return 'to.css' + let result = ''; + this.stringify(this.root, i => { + result += i; + }); + return [result] } } @@ -1827,15 +1740,20 @@ class MapGenerator$2 { } else if (this.previous().length === 1) { let prev = this.previous()[0].consumer(); prev.file = this.outputFile(); - this.map = SourceMapGenerator.fromSourceMap(prev); + this.map = SourceMapGenerator.fromSourceMap(prev, { + ignoreInvalidMapping: true + }); } else { - this.map = new SourceMapGenerator({ file: this.outputFile() }); + this.map = new SourceMapGenerator({ + file: this.outputFile(), + ignoreInvalidMapping: true + }); this.map.addMapping({ + generated: { column: 0, line: 1 }, + original: { column: 0, line: 1 }, source: this.opts.from ? this.toUrl(this.path(this.opts.from)) - : '<no source>', - generated: { line: 1, column: 0 }, - original: { line: 1, column: 0 } + : '<no source>' }); } @@ -1850,56 +1768,21 @@ class MapGenerator$2 { } } - path(file) { - if (file.indexOf('<') === 0) return file - if (/^\w+:\/\//.test(file)) return file - if (this.mapOpts.absolute) return file - - let from = this.opts.to ? dirname(this.opts.to) : '.'; - - if (typeof this.mapOpts.annotation === 'string') { - from = dirname(resolve(from, this.mapOpts.annotation)); - } - - file = relative(from, file); - return file - } - - toUrl(path) { - if (sep === '\\') { - path = path.replace(/\\/g, '/'); - } - return encodeURI(path).replace(/[#?]/g, encodeURIComponent) - } - - sourcePath(node) { - if (this.mapOpts.from) { - return this.toUrl(this.mapOpts.from) - } else if (this.mapOpts.absolute) { - if (pathToFileURL) { - return pathToFileURL(node.source.input.from).toString() - } else { - throw new Error( - '`map.absolute` option is not available in this PostCSS build' - ) - } - } else { - return this.toUrl(this.path(node.source.input.from)) - } - } - generateString() { this.css = ''; - this.map = new SourceMapGenerator({ file: this.outputFile() }); + this.map = new SourceMapGenerator({ + file: this.outputFile(), + ignoreInvalidMapping: true + }); let line = 1; let column = 1; let noSource = '<no source>'; let mapping = { - source: '', - generated: { line: 0, column: 0 }, - original: { line: 0, column: 0 } + generated: { column: 0, line: 0 }, + original: { column: 0, line: 0 }, + source: '' }; let lines, last; @@ -1933,7 +1816,9 @@ class MapGenerator$2 { if (node && type !== 'start') { let p = node.parent || { raws: {} }; - if (node.type !== 'decl' || node !== p.last || p.raws.semicolon) { + let childless = + node.type === 'decl' || (node.type === 'atrule' && !node.nodes); + if (!childless || node !== p.last || p.raws.semicolon) { if (node.source && node.source.end) { mapping.source = this.sourcePath(node); mapping.original.line = node.source.end.line; @@ -1954,17 +1839,171 @@ class MapGenerator$2 { }); } - generate() { - this.clearAnnotation(); - if (pathAvailable && sourceMapAvailable && this.isMap()) { - return this.generateMap() - } else { - let result = ''; - this.stringify(this.root, i => { - result += i; + isAnnotation() { + if (this.isInline()) { + return true + } + if (typeof this.mapOpts.annotation !== 'undefined') { + return this.mapOpts.annotation + } + if (this.previous().length) { + return this.previous().some(i => i.annotation) + } + return true + } + + isInline() { + if (typeof this.mapOpts.inline !== 'undefined') { + return this.mapOpts.inline + } + + let annotation = this.mapOpts.annotation; + if (typeof annotation !== 'undefined' && annotation !== true) { + return false + } + + if (this.previous().length) { + return this.previous().some(i => i.inline) + } + return true + } + + isMap() { + if (typeof this.opts.map !== 'undefined') { + return !!this.opts.map + } + return this.previous().length > 0 + } + + isSourcesContent() { + if (typeof this.mapOpts.sourcesContent !== 'undefined') { + return this.mapOpts.sourcesContent + } + if (this.previous().length) { + return this.previous().some(i => i.withContent()) + } + return true + } + + outputFile() { + if (this.opts.to) { + return this.path(this.opts.to) + } else if (this.opts.from) { + return this.path(this.opts.from) + } else { + return 'to.css' + } + } + + path(file) { + if (this.mapOpts.absolute) return file + if (file.charCodeAt(0) === 60 /* `<` */) return file + if (/^\w+:\/\//.test(file)) return file + let cached = this.memoizedPaths.get(file); + if (cached) return cached + + let from = this.opts.to ? dirname(this.opts.to) : '.'; + + if (typeof this.mapOpts.annotation === 'string') { + from = dirname(resolve(from, this.mapOpts.annotation)); + } + + let path = relative(from, file); + this.memoizedPaths.set(file, path); + + return path + } + + previous() { + if (!this.previousMaps) { + this.previousMaps = []; + if (this.root) { + this.root.walk(node => { + if (node.source && node.source.input.map) { + let map = node.source.input.map; + if (!this.previousMaps.includes(map)) { + this.previousMaps.push(map); + } + } + }); + } else { + let input = new Input$4(this.originalCSS, this.opts); + if (input.map) this.previousMaps.push(input.map); + } + } + + return this.previousMaps + } + + setSourcesContent() { + let already = {}; + if (this.root) { + this.root.walk(node => { + if (node.source) { + let from = node.source.input.from; + if (from && !already[from]) { + already[from] = true; + let fromUrl = this.usesFileUrls + ? this.toFileUrl(from) + : this.toUrl(this.path(from)); + this.map.setSourceContent(fromUrl, node.source.input.css); + } + } }); - return [result] + } else if (this.css) { + let from = this.opts.from + ? this.toUrl(this.path(this.opts.from)) + : '<no source>'; + this.map.setSourceContent(from, this.css); + } + } + + sourcePath(node) { + if (this.mapOpts.from) { + return this.toUrl(this.mapOpts.from) + } else if (this.usesFileUrls) { + return this.toFileUrl(node.source.input.from) + } else { + return this.toUrl(this.path(node.source.input.from)) + } + } + + toBase64(str) { + if (Buffer) { + return Buffer.from(str).toString('base64') + } else { + return window.btoa(unescape(encodeURIComponent(str))) + } + } + + toFileUrl(path) { + let cached = this.memoizedFileURLs.get(path); + if (cached) return cached + + if (pathToFileURL) { + let fileURL = pathToFileURL(path).toString(); + this.memoizedFileURLs.set(path, fileURL); + + return fileURL + } else { + throw new Error( + '`map.absolute` option is not available in this PostCSS build' + ) + } + } + + toUrl(path) { + let cached = this.memoizedURLs.get(path); + if (cached) return cached + + if (sep === '\\') { + path = path.replace(/\\/g, '/'); } + + let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent); + this.memoizedURLs.set(path, url); + + return url } } @@ -1987,7 +2026,7 @@ let Declaration$4 = declaration; let Comment$4 = comment$1; let Node$2 = node_1; -let parse$5, Rule$5, AtRule$5; +let parse$5, Rule$5, AtRule$5, Root$7; function cleanSource(nodes) { return nodes.map(i => { @@ -2007,12 +2046,24 @@ function markDirtyUp(node) { } class Container$8 extends Node$2 { - push(child) { - child.parent = this; - this.proxyOf.nodes.push(child); + append(...children) { + for (let child of children) { + let nodes = this.normalize(child, this.last); + for (let node of nodes) this.proxyOf.nodes.push(node); + } + + this.markDirty(); + return this } + cleanRaws(keepBetween) { + super.cleanRaws(keepBetween); + if (this.nodes) { + for (let node of this.nodes) node.cleanRaws(keepBetween); + } + } + each(callback) { if (!this.proxyOf.nodes) return undefined let iterator = this.getIterator(); @@ -2030,109 +2081,166 @@ class Container$8 extends Node$2 { return result } - walk(callback) { - return this.each((child, i) => { - let result; - try { - result = callback(child, i); - } catch (e) { - throw child.addToError(e) - } - if (result !== false && child.walk) { - result = child.walk(callback); - } + every(condition) { + return this.nodes.every(condition) + } - return result - }) + getIterator() { + if (!this.lastEach) this.lastEach = 0; + if (!this.indexes) this.indexes = {}; + + this.lastEach += 1; + let iterator = this.lastEach; + this.indexes[iterator] = 0; + + return iterator } - walkDecls(prop, callback) { - if (!callback) { - callback = prop; - return this.walk((child, i) => { - if (child.type === 'decl') { - return callback(child, i) + getProxyProcessor() { + return { + get(node, prop) { + if (prop === 'proxyOf') { + return node + } else if (!node[prop]) { + return node[prop] + } else if ( + prop === 'each' || + (typeof prop === 'string' && prop.startsWith('walk')) + ) { + return (...args) => { + return node[prop]( + ...args.map(i => { + if (typeof i === 'function') { + return (child, index) => i(child.toProxy(), index) + } else { + return i + } + }) + ) + } + } else if (prop === 'every' || prop === 'some') { + return cb => { + return node[prop]((child, ...other) => + cb(child.toProxy(), ...other) + ) + } + } else if (prop === 'root') { + return () => node.root().toProxy() + } else if (prop === 'nodes') { + return node.nodes.map(i => i.toProxy()) + } else if (prop === 'first' || prop === 'last') { + return node[prop].toProxy() + } else { + return node[prop] } - }) - } - if (prop instanceof RegExp) { - return this.walk((child, i) => { - if (child.type === 'decl' && prop.test(child.prop)) { - return callback(child, i) + }, + + set(node, prop, value) { + if (node[prop] === value) return true + node[prop] = value; + if (prop === 'name' || prop === 'params' || prop === 'selector') { + node.markDirty(); } - }) - } - return this.walk((child, i) => { - if (child.type === 'decl' && child.prop === prop) { - return callback(child, i) + return true } - }) + } } - walkRules(selector, callback) { - if (!callback) { - callback = selector; - - return this.walk((child, i) => { - if (child.type === 'rule') { - return callback(child, i) - } - }) - } - if (selector instanceof RegExp) { - return this.walk((child, i) => { - if (child.type === 'rule' && selector.test(child.selector)) { - return callback(child, i) - } - }) - } - return this.walk((child, i) => { - if (child.type === 'rule' && child.selector === selector) { - return callback(child, i) - } - }) + index(child) { + if (typeof child === 'number') return child + if (child.proxyOf) child = child.proxyOf; + return this.proxyOf.nodes.indexOf(child) } - walkAtRules(name, callback) { - if (!callback) { - callback = name; - return this.walk((child, i) => { - if (child.type === 'atrule') { - return callback(child, i) - } - }) - } - if (name instanceof RegExp) { - return this.walk((child, i) => { - if (child.type === 'atrule' && name.test(child.name)) { - return callback(child, i) - } - }) - } - return this.walk((child, i) => { - if (child.type === 'atrule' && child.name === name) { - return callback(child, i) + insertAfter(exist, add) { + let existIndex = this.index(exist); + let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse(); + existIndex = this.index(exist); + for (let node of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node); + + let index; + for (let id in this.indexes) { + index = this.indexes[id]; + if (existIndex < index) { + this.indexes[id] = index + nodes.length; } - }) + } + + this.markDirty(); + + return this } - walkComments(callback) { - return this.walk((child, i) => { - if (child.type === 'comment') { - return callback(child, i) + insertBefore(exist, add) { + let existIndex = this.index(exist); + let type = existIndex === 0 ? 'prepend' : false; + let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse(); + existIndex = this.index(exist); + for (let node of nodes) this.proxyOf.nodes.splice(existIndex, 0, node); + + let index; + for (let id in this.indexes) { + index = this.indexes[id]; + if (existIndex <= index) { + this.indexes[id] = index + nodes.length; } - }) + } + + this.markDirty(); + + return this } - append(...children) { - for (let child of children) { - let nodes = this.normalize(child, this.last); - for (let node of nodes) this.proxyOf.nodes.push(node); + normalize(nodes, sample) { + if (typeof nodes === 'string') { + nodes = cleanSource(parse$5(nodes).nodes); + } else if (typeof nodes === 'undefined') { + nodes = []; + } else if (Array.isArray(nodes)) { + nodes = nodes.slice(0); + for (let i of nodes) { + if (i.parent) i.parent.removeChild(i, 'ignore'); + } + } else if (nodes.type === 'root' && this.type !== 'document') { + nodes = nodes.nodes.slice(0); + for (let i of nodes) { + if (i.parent) i.parent.removeChild(i, 'ignore'); + } + } else if (nodes.type) { + nodes = [nodes]; + } else if (nodes.prop) { + if (typeof nodes.value === 'undefined') { + throw new Error('Value field is missed in node creation') + } else if (typeof nodes.value !== 'string') { + nodes.value = String(nodes.value); + } + nodes = [new Declaration$4(nodes)]; + } else if (nodes.selector) { + nodes = [new Rule$5(nodes)]; + } else if (nodes.name) { + nodes = [new AtRule$5(nodes)]; + } else if (nodes.text) { + nodes = [new Comment$4(nodes)]; + } else { + throw new Error('Unknown node type in node creation') } - this.markDirty(); + let processed = nodes.map(i => { + /* c8 ignore next */ + if (!i[my$1]) Container$8.rebuild(i); + i = i.proxyOf; + if (i.parent) i.parent.removeChild(i); + if (i[isClean$1]) markDirtyUp(i); + if (typeof i.raws.before === 'undefined') { + if (sample && typeof sample.raws.before !== 'undefined') { + i.raws.before = sample.raws.before.replace(/\S/g, ''); + } + } + i.parent = this.proxyOf; + return i + }); - return this + return processed } prepend(...children) { @@ -2150,46 +2258,15 @@ class Container$8 extends Node$2 { return this } - cleanRaws(keepBetween) { - super.cleanRaws(keepBetween); - if (this.nodes) { - for (let node of this.nodes) node.cleanRaws(keepBetween); - } - } - - insertBefore(exist, add) { - exist = this.index(exist); - - let type = exist === 0 ? 'prepend' : false; - let nodes = this.normalize(add, this.proxyOf.nodes[exist], type).reverse(); - for (let node of nodes) this.proxyOf.nodes.splice(exist, 0, node); - - let index; - for (let id in this.indexes) { - index = this.indexes[id]; - if (exist <= index) { - this.indexes[id] = index + nodes.length; - } - } - - this.markDirty(); - + push(child) { + child.parent = this; + this.proxyOf.nodes.push(child); return this } - insertAfter(exist, add) { - exist = this.index(exist); - - let nodes = this.normalize(add, this.proxyOf.nodes[exist]).reverse(); - for (let node of nodes) this.proxyOf.nodes.splice(exist + 1, 0, node); - - let index; - for (let id in this.indexes) { - index = this.indexes[id]; - if (exist < index) { - this.indexes[id] = index + nodes.length; - } - } + removeAll() { + for (let node of this.proxyOf.nodes) node.parent = undefined; + this.proxyOf.nodes = []; this.markDirty(); @@ -2214,15 +2291,6 @@ class Container$8 extends Node$2 { return this } - removeAll() { - for (let node of this.proxyOf.nodes) node.parent = undefined; - this.proxyOf.nodes = []; - - this.markDirty(); - - return this - } - replaceValues(pattern, opts, callback) { if (!callback) { callback = opts; @@ -2241,139 +2309,112 @@ class Container$8 extends Node$2 { return this } - every(condition) { - return this.nodes.every(condition) - } - some(condition) { return this.nodes.some(condition) } - index(child) { - if (typeof child === 'number') return child - if (child.proxyOf) child = child.proxyOf; - return this.proxyOf.nodes.indexOf(child) - } + walk(callback) { + return this.each((child, i) => { + let result; + try { + result = callback(child, i); + } catch (e) { + throw child.addToError(e) + } + if (result !== false && child.walk) { + result = child.walk(callback); + } - get first() { - if (!this.proxyOf.nodes) return undefined - return this.proxyOf.nodes[0] + return result + }) } - get last() { - if (!this.proxyOf.nodes) return undefined - return this.proxyOf.nodes[this.proxyOf.nodes.length - 1] + walkAtRules(name, callback) { + if (!callback) { + callback = name; + return this.walk((child, i) => { + if (child.type === 'atrule') { + return callback(child, i) + } + }) + } + if (name instanceof RegExp) { + return this.walk((child, i) => { + if (child.type === 'atrule' && name.test(child.name)) { + return callback(child, i) + } + }) + } + return this.walk((child, i) => { + if (child.type === 'atrule' && child.name === name) { + return callback(child, i) + } + }) } - normalize(nodes, sample) { - if (typeof nodes === 'string') { - nodes = cleanSource(parse$5(nodes).nodes); - } else if (Array.isArray(nodes)) { - nodes = nodes.slice(0); - for (let i of nodes) { - if (i.parent) i.parent.removeChild(i, 'ignore'); - } - } else if (nodes.type === 'root' && this.type !== 'document') { - nodes = nodes.nodes.slice(0); - for (let i of nodes) { - if (i.parent) i.parent.removeChild(i, 'ignore'); - } - } else if (nodes.type) { - nodes = [nodes]; - } else if (nodes.prop) { - if (typeof nodes.value === 'undefined') { - throw new Error('Value field is missed in node creation') - } else if (typeof nodes.value !== 'string') { - nodes.value = String(nodes.value); + walkComments(callback) { + return this.walk((child, i) => { + if (child.type === 'comment') { + return callback(child, i) } - nodes = [new Declaration$4(nodes)]; - } else if (nodes.selector) { - nodes = [new Rule$5(nodes)]; - } else if (nodes.name) { - nodes = [new AtRule$5(nodes)]; - } else if (nodes.text) { - nodes = [new Comment$4(nodes)]; - } else { - throw new Error('Unknown node type in node creation') - } + }) + } - let processed = nodes.map(i => { - /* c8 ignore next */ - if (!i[my$1]) Container$8.rebuild(i); - i = i.proxyOf; - if (i.parent) i.parent.removeChild(i); - if (i[isClean$1]) markDirtyUp(i); - if (typeof i.raws.before === 'undefined') { - if (sample && typeof sample.raws.before !== 'undefined') { - i.raws.before = sample.raws.before.replace(/\S/g, ''); + walkDecls(prop, callback) { + if (!callback) { + callback = prop; + return this.walk((child, i) => { + if (child.type === 'decl') { + return callback(child, i) + } + }) + } + if (prop instanceof RegExp) { + return this.walk((child, i) => { + if (child.type === 'decl' && prop.test(child.prop)) { + return callback(child, i) } + }) + } + return this.walk((child, i) => { + if (child.type === 'decl' && child.prop === prop) { + return callback(child, i) } - i.parent = this.proxyOf; - return i - }); - - return processed + }) } - getProxyProcessor() { - return { - set(node, prop, value) { - if (node[prop] === value) return true - node[prop] = value; - if (prop === 'name' || prop === 'params' || prop === 'selector') { - node.markDirty(); - } - return true - }, + walkRules(selector, callback) { + if (!callback) { + callback = selector; - get(node, prop) { - if (prop === 'proxyOf') { - return node - } else if (!node[prop]) { - return node[prop] - } else if ( - prop === 'each' || - (typeof prop === 'string' && prop.startsWith('walk')) - ) { - return (...args) => { - return node[prop]( - ...args.map(i => { - if (typeof i === 'function') { - return (child, index) => i(child.toProxy(), index) - } else { - return i - } - }) - ) - } - } else if (prop === 'every' || prop === 'some') { - return cb => { - return node[prop]((child, ...other) => - cb(child.toProxy(), ...other) - ) - } - } else if (prop === 'root') { - return () => node.root().toProxy() - } else if (prop === 'nodes') { - return node.nodes.map(i => i.toProxy()) - } else if (prop === 'first' || prop === 'last') { - return node[prop].toProxy() - } else { - return node[prop] + return this.walk((child, i) => { + if (child.type === 'rule') { + return callback(child, i) } - } + }) } + if (selector instanceof RegExp) { + return this.walk((child, i) => { + if (child.type === 'rule' && selector.test(child.selector)) { + return callback(child, i) + } + }) + } + return this.walk((child, i) => { + if (child.type === 'rule' && child.selector === selector) { + return callback(child, i) + } + }) } - getIterator() { - if (!this.lastEach) this.lastEach = 0; - if (!this.indexes) this.indexes = {}; - - this.lastEach += 1; - let iterator = this.lastEach; - this.indexes[iterator] = 0; + get first() { + if (!this.proxyOf.nodes) return undefined + return this.proxyOf.nodes[0] + } - return iterator + get last() { + if (!this.proxyOf.nodes) return undefined + return this.proxyOf.nodes[this.proxyOf.nodes.length - 1] } } @@ -2389,6 +2430,10 @@ Container$8.registerAtRule = dependant => { AtRule$5 = dependant; }; +Container$8.registerRoot = dependant => { + Root$7 = dependant; +}; + var container = Container$8; Container$8.default = Container$8; @@ -2402,6 +2447,8 @@ Container$8.rebuild = node => { Object.setPrototypeOf(node, Declaration$4.prototype); } else if (node.type === 'comment') { Object.setPrototypeOf(node, Comment$4.prototype); + } else if (node.type === 'root') { + Object.setPrototypeOf(node, Root$7.prototype); } node[my$1] = true; @@ -2477,8 +2524,8 @@ class Warning$3 { toString() { if (this.node) { return this.node.error(this.text, { - plugin: this.plugin, index: this.index, + plugin: this.plugin, word: this.word }).message } @@ -2570,16 +2617,6 @@ class Root$6 extends Container$5 { if (!this.nodes) this.nodes = []; } - removeChild(child, ignore) { - let index = this.index(child); - - if (!ignore && index === 0 && this.nodes.length > 1) { - this.nodes[1].raws.before = this.nodes[index].raws.before; - } - - return super.removeChild(child) - } - normalize(child, sample, type) { let nodes = super.normalize(child); @@ -2600,6 +2637,16 @@ class Root$6 extends Container$5 { return nodes } + removeChild(child, ignore) { + let index = this.index(child); + + if (!ignore && index === 0 && this.nodes.length > 1) { + this.nodes[1].raws.before = this.nodes[index].raws.before; + } + + return super.removeChild(child) + } + toResult(opts = {}) { let lazy = new LazyResult$3(new Processor$3(), this, opts); return lazy.stringify() @@ -2617,14 +2664,26 @@ Root$6.registerProcessor = dependant => { var root$1 = Root$6; Root$6.default = Root$6; +Container$5.registerRoot(Root$6); + let list$3 = { + comma(string) { + return list$3.split(string, [','], true) + }, + + space(string) { + let spaces = [' ', '\n', '\t']; + return list$3.split(string, spaces) + }, + split(string, separators, last) { let array = []; let current = ''; let split = false; let func = 0; - let quote = false; + let inQuote = false; + let prevQuote = ''; let escape = false; for (let letter of string) { @@ -2632,12 +2691,13 @@ let list$3 = { escape = false; } else if (letter === '\\') { escape = true; - } else if (quote) { - if (letter === quote) { - quote = false; + } else if (inQuote) { + if (letter === prevQuote) { + inQuote = false; } } else if (letter === '"' || letter === "'") { - quote = letter; + inQuote = true; + prevQuote = letter; } else if (letter === '(') { func += 1; } else if (letter === ')') { @@ -2657,15 +2717,6 @@ let list$3 = { if (last || current !== '') array.push(current.trim()); return array - }, - - space(string) { - let spaces = [' ', '\n', '\t']; - return list$3.split(string, spaces) - }, - - comma(string) { - return list$3.split(string, [','], true) } }; @@ -2726,152 +2777,168 @@ class Parser$1 { this.current = this.root; this.spaces = ''; this.semicolon = false; - this.customProperty = false; this.createTokenizer(); - this.root.source = { input, start: { offset: 0, line: 1, column: 1 } }; + this.root.source = { input, start: { column: 1, line: 1, offset: 0 } }; } - createTokenizer() { - this.tokenizer = tokenizer(this.input); - } + atrule(token) { + let node = new AtRule$3(); + node.name = token[1].slice(1); + if (node.name === '') { + this.unnamedAtrule(node, token); + } + this.init(node, token[2]); + + let type; + let prev; + let shift; + let last = false; + let open = false; + let params = []; + let brackets = []; - parse() { - let token; while (!this.tokenizer.endOfFile()) { token = this.tokenizer.nextToken(); + type = token[0]; - switch (token[0]) { - case 'space': - this.spaces += token[1]; - break - - case ';': - this.freeSemicolon(token); - break - - case '}': - this.end(token); - break + if (type === '(' || type === '[') { + brackets.push(type === '(' ? ')' : ']'); + } else if (type === '{' && brackets.length > 0) { + brackets.push('}'); + } else if (type === brackets[brackets.length - 1]) { + brackets.pop(); + } - case 'comment': - this.comment(token); + if (brackets.length === 0) { + if (type === ';') { + node.source.end = this.getPosition(token[2]); + node.source.end.offset++; + this.semicolon = true; break - - case 'at-word': - this.atrule(token); + } else if (type === '{') { + open = true; break - - case '{': - this.emptyRule(token); + } else if (type === '}') { + if (params.length > 0) { + shift = params.length - 1; + prev = params[shift]; + while (prev && prev[0] === 'space') { + prev = params[--shift]; + } + if (prev) { + node.source.end = this.getPosition(prev[3] || prev[2]); + node.source.end.offset++; + } + } + this.end(token); break + } else { + params.push(token); + } + } else { + params.push(token); + } - default: - this.other(token); - break + if (this.tokenizer.endOfFile()) { + last = true; + break } } - this.endFile(); - } - - comment(token) { - let node = new Comment$3(); - this.init(node, token[2]); - node.source.end = this.getPosition(token[3] || token[2]); - let text = token[1].slice(2, -2); - if (/^\s*$/.test(text)) { - node.text = ''; - node.raws.left = text; - node.raws.right = ''; + node.raws.between = this.spacesAndCommentsFromEnd(params); + if (params.length) { + node.raws.afterName = this.spacesAndCommentsFromStart(params); + this.raw(node, 'params', params); + if (last) { + token = params[params.length - 1]; + node.source.end = this.getPosition(token[3] || token[2]); + node.source.end.offset++; + this.spaces = node.raws.between; + node.raws.between = ''; + } } else { - let match = text.match(/^(\s*)([^]*\S)(\s*)$/); - node.text = match[2]; - node.raws.left = match[1]; - node.raws.right = match[3]; + node.raws.afterName = ''; + node.params = ''; } - } - emptyRule(token) { - let node = new Rule$3(); - this.init(node, token[2]); - node.selector = ''; - node.raws.between = ''; - this.current = node; + if (open) { + node.nodes = []; + this.current = node; + } } - other(start) { - let end = false; - let type = null; - let colon = false; - let bracket = null; - let brackets = []; - let customProperty = start[1].startsWith('--'); + checkMissedSemicolon(tokens) { + let colon = this.colon(tokens); + if (colon === false) return - let tokens = []; - let token = start; - while (token) { + let founded = 0; + let token; + for (let j = colon - 1; j >= 0; j--) { + token = tokens[j]; + if (token[0] !== 'space') { + founded += 1; + if (founded === 2) break + } + } + // If the token is a word, e.g. `!important`, `red` or any other valid property's value. + // Then we need to return the colon after that word token. [3] is the "end" colon of that word. + // And because we need it after that one we do +1 to get the next one. + throw this.input.error( + 'Missed semicolon', + token[0] === 'word' ? token[3] + 1 : token[2] + ) + } + + colon(tokens) { + let brackets = 0; + let token, type, prev; + for (let [i, element] of tokens.entries()) { + token = element; type = token[0]; - tokens.push(token); - if (type === '(' || type === '[') { - if (!bracket) bracket = token; - brackets.push(type === '(' ? ')' : ']'); - } else if (customProperty && colon && type === '{') { - if (!bracket) bracket = token; - brackets.push('}'); - } else if (brackets.length === 0) { - if (type === ';') { - if (colon) { - this.decl(tokens, customProperty); - return - } else { - break - } - } else if (type === '{') { - this.rule(tokens); - return - } else if (type === '}') { - this.tokenizer.back(tokens.pop()); - end = true; - break - } else if (type === ':') { - colon = true; + if (type === '(') { + brackets += 1; + } + if (type === ')') { + brackets -= 1; + } + if (brackets === 0 && type === ':') { + if (!prev) { + this.doubleColon(token); + } else if (prev[0] === 'word' && prev[1] === 'progid') { + continue + } else { + return i } - } else if (type === brackets[brackets.length - 1]) { - brackets.pop(); - if (brackets.length === 0) bracket = null; } - token = this.tokenizer.nextToken(); + prev = token; } + return false + } - if (this.tokenizer.endOfFile()) end = true; - if (brackets.length > 0) this.unclosedBracket(bracket); + comment(token) { + let node = new Comment$3(); + this.init(node, token[2]); + node.source.end = this.getPosition(token[3] || token[2]); + node.source.end.offset++; - if (end && colon) { - if (!customProperty) { - while (tokens.length) { - token = tokens[tokens.length - 1][0]; - if (token !== 'space' && token !== 'comment') break - this.tokenizer.back(tokens.pop()); - } - } - this.decl(tokens, customProperty); + let text = token[1].slice(2, -2); + if (/^\s*$/.test(text)) { + node.text = ''; + node.raws.left = text; + node.raws.right = ''; } else { - this.unknownWord(tokens); + let match = text.match(/^(\s*)([^]*\S)(\s*)$/); + node.text = match[2]; + node.raws.left = match[1]; + node.raws.right = match[3]; } } - rule(tokens) { - tokens.pop(); - - let node = new Rule$3(); - this.init(node, tokens[0][2]); - - node.raws.between = this.spacesAndCommentsFromEnd(tokens); - this.raw(node, 'selector', tokens); - this.current = node; + createTokenizer() { + this.tokenizer = tokenizer(this.input); } decl(tokens, customProperty) { @@ -2887,6 +2954,7 @@ class Parser$1 { node.source.end = this.getPosition( last[3] || last[2] || findLastWithPosition(tokens) ); + node.source.end.offset++; while (tokens[0][0] !== 'word') { if (tokens.length === 1) this.unknownWord(tokens); @@ -2978,87 +3046,20 @@ class Parser$1 { } } - atrule(token) { - let node = new AtRule$3(); - node.name = token[1].slice(1); - if (node.name === '') { - this.unnamedAtrule(node, token); - } - this.init(node, token[2]); - - let type; - let prev; - let shift; - let last = false; - let open = false; - let params = []; - let brackets = []; - - while (!this.tokenizer.endOfFile()) { - token = this.tokenizer.nextToken(); - type = token[0]; - - if (type === '(' || type === '[') { - brackets.push(type === '(' ? ')' : ']'); - } else if (type === '{' && brackets.length > 0) { - brackets.push('}'); - } else if (type === brackets[brackets.length - 1]) { - brackets.pop(); - } - - if (brackets.length === 0) { - if (type === ';') { - node.source.end = this.getPosition(token[2]); - this.semicolon = true; - break - } else if (type === '{') { - open = true; - break - } else if (type === '}') { - if (params.length > 0) { - shift = params.length - 1; - prev = params[shift]; - while (prev && prev[0] === 'space') { - prev = params[--shift]; - } - if (prev) { - node.source.end = this.getPosition(prev[3] || prev[2]); - } - } - this.end(token); - break - } else { - params.push(token); - } - } else { - params.push(token); - } - - if (this.tokenizer.endOfFile()) { - last = true; - break - } - } - - node.raws.between = this.spacesAndCommentsFromEnd(params); - if (params.length) { - node.raws.afterName = this.spacesAndCommentsFromStart(params); - this.raw(node, 'params', params); - if (last) { - token = params[params.length - 1]; - node.source.end = this.getPosition(token[3] || token[2]); - this.spaces = node.raws.between; - node.raws.between = ''; - } - } else { - node.raws.afterName = ''; - node.params = ''; - } + doubleColon(token) { + throw this.input.error( + 'Double colon', + { offset: token[2] }, + { offset: token[2] + token[1].length } + ) + } - if (open) { - node.nodes = []; - this.current = node; - } + emptyRule(token) { + let node = new Rule$3(); + this.init(node, token[2]); + node.selector = ''; + node.raws.between = ''; + this.current = node; } end(token) { @@ -3072,6 +3073,7 @@ class Parser$1 { if (this.current.parent) { this.current.source.end = this.getPosition(token[2]); + this.current.source.end.offset++; this.current = this.current.parent; } else { this.unexpectedClose(token); @@ -3084,6 +3086,7 @@ class Parser$1 { this.current.raws.semicolon = this.semicolon; } this.current.raws.after = (this.current.raws.after || '') + this.spaces; + this.root.source.end = this.getPosition(this.tokenizer.position()); } freeSemicolon(token) { @@ -3102,23 +3105,128 @@ class Parser$1 { getPosition(offset) { let pos = this.input.fromOffset(offset); return { - offset, + column: pos.col, line: pos.line, - column: pos.col + offset } } init(node, offset) { this.current.push(node); node.source = { - start: this.getPosition(offset), - input: this.input + input: this.input, + start: this.getPosition(offset) }; node.raws.before = this.spaces; this.spaces = ''; if (node.type !== 'comment') this.semicolon = false; } + other(start) { + let end = false; + let type = null; + let colon = false; + let bracket = null; + let brackets = []; + let customProperty = start[1].startsWith('--'); + + let tokens = []; + let token = start; + while (token) { + type = token[0]; + tokens.push(token); + + if (type === '(' || type === '[') { + if (!bracket) bracket = token; + brackets.push(type === '(' ? ')' : ']'); + } else if (customProperty && colon && type === '{') { + if (!bracket) bracket = token; + brackets.push('}'); + } else if (brackets.length === 0) { + if (type === ';') { + if (colon) { + this.decl(tokens, customProperty); + return + } else { + break + } + } else if (type === '{') { + this.rule(tokens); + return + } else if (type === '}') { + this.tokenizer.back(tokens.pop()); + end = true; + break + } else if (type === ':') { + colon = true; + } + } else if (type === brackets[brackets.length - 1]) { + brackets.pop(); + if (brackets.length === 0) bracket = null; + } + + token = this.tokenizer.nextToken(); + } + + if (this.tokenizer.endOfFile()) end = true; + if (brackets.length > 0) this.unclosedBracket(bracket); + + if (end && colon) { + if (!customProperty) { + while (tokens.length) { + token = tokens[tokens.length - 1][0]; + if (token !== 'space' && token !== 'comment') break + this.tokenizer.back(tokens.pop()); + } + } + this.decl(tokens, customProperty); + } else { + this.unknownWord(tokens); + } + } + + parse() { + let token; + while (!this.tokenizer.endOfFile()) { + token = this.tokenizer.nextToken(); + + switch (token[0]) { + case 'space': + this.spaces += token[1]; + break + + case ';': + this.freeSemicolon(token); + break + + case '}': + this.end(token); + break + + case 'comment': + this.comment(token); + break + + case 'at-word': + this.atrule(token); + break + + case '{': + this.emptyRule(token); + break + + default: + this.other(token); + break + } + } + this.endFile(); + } + + precheckMissedSemicolon(/* tokens */) { + // Hook for Safe Parser + } + raw(node, prop, tokens, customProperty) { let token, type; let length = tokens.length; @@ -3149,11 +3257,22 @@ class Parser$1 { } if (!clean) { let raw = tokens.reduce((all, i) => all + i[1], ''); - node.raws[prop] = { value, raw }; + node.raws[prop] = { raw, value }; } node[prop] = value; } + rule(tokens) { + tokens.pop(); + + let node = new Rule$3(); + this.init(node, tokens[0][2]); + + node.raws.between = this.spacesAndCommentsFromEnd(tokens); + this.raw(node, 'selector', tokens); + this.current = node; + } + spacesAndCommentsFromEnd(tokens) { let lastTokenType; let spaces = ''; @@ -3165,6 +3284,8 @@ class Parser$1 { return spaces } + // Errors + spacesAndCommentsFromStart(tokens) { let next; let spaces = ''; @@ -3193,38 +3314,13 @@ class Parser$1 { result += tokens[i][1]; } tokens.splice(from, tokens.length - from); - return result - } - - colon(tokens) { - let brackets = 0; - let token, type, prev; - for (let [i, element] of tokens.entries()) { - token = element; - type = token[0]; - - if (type === '(') { - brackets += 1; - } - if (type === ')') { - brackets -= 1; - } - if (brackets === 0 && type === ':') { - if (!prev) { - this.doubleColon(token); - } else if (prev[0] === 'word' && prev[1] === 'progid') { - continue - } else { - return i - } - } - - prev = token; - } - return false + return result } - // Errors + unclosedBlock() { + let pos = this.current.source.start; + throw this.input.error('Unclosed block', pos.line, pos.column) + } unclosedBracket(bracket) { throw this.input.error( @@ -3234,14 +3330,6 @@ class Parser$1 { ) } - unknownWord(tokens) { - throw this.input.error( - 'Unknown word', - { offset: tokens[0][2] }, - { offset: tokens[0][2] + tokens[0][1].length } - ) - } - unexpectedClose(token) { throw this.input.error( 'Unexpected }', @@ -3250,16 +3338,11 @@ class Parser$1 { ) } - unclosedBlock() { - let pos = this.current.source.start; - throw this.input.error('Unclosed block', pos.line, pos.column) - } - - doubleColon(token) { + unknownWord(tokens) { throw this.input.error( - 'Double colon', - { offset: token[2] }, - { offset: token[2] + token[1].length } + 'Unknown word', + { offset: tokens[0][2] }, + { offset: tokens[0][2] + tokens[0][1].length } ) } @@ -3270,32 +3353,6 @@ class Parser$1 { { offset: token[2] + token[1].length } ) } - - precheckMissedSemicolon(/* tokens */) { - // Hook for Safe Parser - } - - checkMissedSemicolon(tokens) { - let colon = this.colon(tokens); - if (colon === false) return - - let founded = 0; - let token; - for (let j = colon - 1; j >= 0; j--) { - token = tokens[j]; - if (token[0] !== 'space') { - founded += 1; - if (founded === 2) break - } - } - // If the token is a word, e.g. `!important`, `red` or any other valid property's value. - // Then we need to return the colon after that word token. [3] is the "end" colon of that word. - // And because we need it after that one we do +1 to get the next one. - throw this.input.error( - 'Missed semicolon', - token[0] === 'word' ? token[3] + 1 : token[2] - ) - } } var parser = Parser$1; @@ -3352,37 +3409,37 @@ let parse$3 = parse_1; let Root$4 = root$1; const TYPE_TO_CLASS_NAME = { - document: 'Document', - root: 'Root', atrule: 'AtRule', - rule: 'Rule', + comment: 'Comment', decl: 'Declaration', - comment: 'Comment' + document: 'Document', + root: 'Root', + rule: 'Rule' }; const PLUGIN_PROPS = { - postcssPlugin: true, - prepare: true, - Once: true, - Document: true, - Root: true, - Declaration: true, - Rule: true, AtRule: true, - Comment: true, - DeclarationExit: true, - RuleExit: true, AtRuleExit: true, + Comment: true, CommentExit: true, - RootExit: true, + Declaration: true, + DeclarationExit: true, + Document: true, DocumentExit: true, - OnceExit: true + Once: true, + OnceExit: true, + postcssPlugin: true, + prepare: true, + Root: true, + RootExit: true, + Rule: true, + RuleExit: true }; const NOT_VISITORS = { + Once: true, postcssPlugin: true, - prepare: true, - Once: true + prepare: true }; const CHILDREN = 0; @@ -3419,269 +3476,96 @@ function getEvents(node) { function toStack(node) { let events; - if (node.type === 'document') { - events = ['Document', CHILDREN, 'DocumentExit']; - } else if (node.type === 'root') { - events = ['Root', CHILDREN, 'RootExit']; - } else { - events = getEvents(node); - } - - return { - node, - events, - eventIndex: 0, - visitors: [], - visitorIndex: 0, - iterator: 0 - } -} - -function cleanMarks(node) { - node[isClean] = false; - if (node.nodes) node.nodes.forEach(i => cleanMarks(i)); - return node -} - -let postcss$1 = {}; - -class LazyResult$2 { - constructor(processor, css, opts) { - this.stringified = false; - this.processed = false; - - let root; - if ( - typeof css === 'object' && - css !== null && - (css.type === 'root' || css.type === 'document') - ) { - root = cleanMarks(css); - } else if (css instanceof LazyResult$2 || css instanceof Result$3) { - root = cleanMarks(css.root); - if (css.map) { - if (typeof opts.map === 'undefined') opts.map = {}; - if (!opts.map.inline) opts.map.inline = false; - opts.map.prev = css.map; - } - } else { - let parser = parse$3; - if (opts.syntax) parser = opts.syntax.parse; - if (opts.parser) parser = opts.parser; - if (parser.parse) parser = parser.parse; - - try { - root = parser(css, opts); - } catch (error) { - this.processed = true; - this.error = error; - } - - if (root && !root[my]) { - /* c8 ignore next 2 */ - Container$2.rebuild(root); - } - } - - this.result = new Result$3(processor, root, opts); - this.helpers = { ...postcss$1, result: this.result, postcss: postcss$1 }; - this.plugins = this.processor.plugins.map(plugin => { - if (typeof plugin === 'object' && plugin.prepare) { - return { ...plugin, ...plugin.prepare(this.result) } - } else { - return plugin - } - }); - } - - get [Symbol.toStringTag]() { - return 'LazyResult' - } - - get processor() { - return this.result.processor - } - - get opts() { - return this.result.opts - } - - get css() { - return this.stringify().css - } - - get content() { - return this.stringify().content - } - - get map() { - return this.stringify().map - } - - get root() { - return this.sync().root - } - - get messages() { - return this.sync().messages - } - - warnings() { - return this.sync().warnings() - } - - toString() { - return this.css - } - - then(onFulfilled, onRejected) { - if (process.env.NODE_ENV !== 'production') { - if (!('from' in this.opts)) { - warnOnce$1( - 'Without `from` option PostCSS could generate wrong source map ' + - 'and will not find Browserslist config. Set it to CSS file path ' + - 'or to `undefined` to prevent this warning.' - ); - } - } - return this.async().then(onFulfilled, onRejected) - } - - catch(onRejected) { - return this.async().catch(onRejected) - } - - finally(onFinally) { - return this.async().then(onFinally, onFinally) - } - - async() { - if (this.error) return Promise.reject(this.error) - if (this.processed) return Promise.resolve(this.result) - if (!this.processing) { - this.processing = this.runAsync(); - } - return this.processing - } - - sync() { - if (this.error) throw this.error - if (this.processed) return this.result - this.processed = true; - - if (this.processing) { - throw this.getAsyncError() - } - - for (let plugin of this.plugins) { - let promise = this.runOnRoot(plugin); - if (isPromise(promise)) { - throw this.getAsyncError() - } - } - - this.prepareVisitors(); - if (this.hasListener) { - let root = this.result.root; - while (!root[isClean]) { - root[isClean] = true; - this.walkSync(root); - } - if (this.listeners.OnceExit) { - if (root.type === 'document') { - for (let subRoot of root.nodes) { - this.visitSync(this.listeners.OnceExit, subRoot); - } - } else { - this.visitSync(this.listeners.OnceExit, root); - } - } - } - - return this.result + if (node.type === 'document') { + events = ['Document', CHILDREN, 'DocumentExit']; + } else if (node.type === 'root') { + events = ['Root', CHILDREN, 'RootExit']; + } else { + events = getEvents(node); } - stringify() { - if (this.error) throw this.error - if (this.stringified) return this.result - this.stringified = true; - - this.sync(); + return { + eventIndex: 0, + events, + iterator: 0, + node, + visitorIndex: 0, + visitors: [] + } +} - let opts = this.result.opts; - let str = stringify$3; - if (opts.syntax) str = opts.syntax.stringify; - if (opts.stringifier) str = opts.stringifier; - if (str.stringify) str = str.stringify; +function cleanMarks(node) { + node[isClean] = false; + if (node.nodes) node.nodes.forEach(i => cleanMarks(i)); + return node +} - let map = new MapGenerator$1(str, this.result.root, this.result.opts); - let data = map.generate(); - this.result.css = data[0]; - this.result.map = data[1]; +let postcss$1 = {}; - return this.result - } +class LazyResult$2 { + constructor(processor, css, opts) { + this.stringified = false; + this.processed = false; - walkSync(node) { - node[isClean] = true; - let events = getEvents(node); - for (let event of events) { - if (event === CHILDREN) { - if (node.nodes) { - node.each(child => { - if (!child[isClean]) this.walkSync(child); - }); - } - } else { - let visitors = this.listeners[event]; - if (visitors) { - if (this.visitSync(visitors, node.toProxy())) return - } + let root; + if ( + typeof css === 'object' && + css !== null && + (css.type === 'root' || css.type === 'document') + ) { + root = cleanMarks(css); + } else if (css instanceof LazyResult$2 || css instanceof Result$3) { + root = cleanMarks(css.root); + if (css.map) { + if (typeof opts.map === 'undefined') opts.map = {}; + if (!opts.map.inline) opts.map.inline = false; + opts.map.prev = css.map; } - } - } + } else { + let parser = parse$3; + if (opts.syntax) parser = opts.syntax.parse; + if (opts.parser) parser = opts.parser; + if (parser.parse) parser = parser.parse; - visitSync(visitors, node) { - for (let [plugin, visitor] of visitors) { - this.result.lastPlugin = plugin; - let promise; try { - promise = visitor(node, this.helpers); - } catch (e) { - throw this.handleError(e, node.proxyOf) - } - if (node.type !== 'root' && node.type !== 'document' && !node.parent) { - return true + root = parser(css, opts); + } catch (error) { + this.processed = true; + this.error = error; } - if (isPromise(promise)) { - throw this.getAsyncError() + + if (root && !root[my]) { + /* c8 ignore next 2 */ + Container$2.rebuild(root); } } - } - runOnRoot(plugin) { - this.result.lastPlugin = plugin; - try { - if (typeof plugin === 'object' && plugin.Once) { - if (this.result.root.type === 'document') { - let roots = this.result.root.nodes.map(root => - plugin.Once(root, this.helpers) - ); + this.result = new Result$3(processor, root, opts); + this.helpers = { ...postcss$1, postcss: postcss$1, result: this.result }; + this.plugins = this.processor.plugins.map(plugin => { + if (typeof plugin === 'object' && plugin.prepare) { + return { ...plugin, ...plugin.prepare(this.result) } + } else { + return plugin + } + }); + } - if (isPromise(roots[0])) { - return Promise.all(roots) - } + async() { + if (this.error) return Promise.reject(this.error) + if (this.processed) return Promise.resolve(this.result) + if (!this.processing) { + this.processing = this.runAsync(); + } + return this.processing + } - return roots - } + catch(onRejected) { + return this.async().catch(onRejected) + } - return plugin.Once(this.result.root, this.helpers) - } else if (typeof plugin === 'function') { - return plugin(this.result.root, this.result) - } - } catch (error) { - throw this.handleError(error) - } + finally(onFinally) { + return this.async().then(onFinally, onFinally) } getAsyncError() { @@ -3727,6 +3611,44 @@ class LazyResult$2 { return error } + prepareVisitors() { + this.listeners = {}; + let add = (plugin, type, cb) => { + if (!this.listeners[type]) this.listeners[type] = []; + this.listeners[type].push([plugin, cb]); + }; + for (let plugin of this.plugins) { + if (typeof plugin === 'object') { + for (let event in plugin) { + if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) { + throw new Error( + `Unknown event ${event} in ${plugin.postcssPlugin}. ` + + `Try to update PostCSS (${this.processor.version} now).` + ) + } + if (!NOT_VISITORS[event]) { + if (typeof plugin[event] === 'object') { + for (let filter in plugin[event]) { + if (filter === '*') { + add(plugin, event, plugin[event][filter]); + } else { + add( + plugin, + event + '-' + filter.toLowerCase(), + plugin[event][filter] + ); + } + } + } else if (typeof plugin[event] === 'function') { + add(plugin, event, plugin[event]); + } + } + } + } + } + this.hasListener = Object.keys(this.listeners).length > 0; + } + async runAsync() { this.plugin = 0; for (let i = 0; i < this.plugins.length; i++) { @@ -3780,46 +3702,126 @@ class LazyResult$2 { } } - this.processed = true; - return this.stringify() + this.processed = true; + return this.stringify() + } + + runOnRoot(plugin) { + this.result.lastPlugin = plugin; + try { + if (typeof plugin === 'object' && plugin.Once) { + if (this.result.root.type === 'document') { + let roots = this.result.root.nodes.map(root => + plugin.Once(root, this.helpers) + ); + + if (isPromise(roots[0])) { + return Promise.all(roots) + } + + return roots + } + + return plugin.Once(this.result.root, this.helpers) + } else if (typeof plugin === 'function') { + return plugin(this.result.root, this.result) + } + } catch (error) { + throw this.handleError(error) + } + } + + stringify() { + if (this.error) throw this.error + if (this.stringified) return this.result + this.stringified = true; + + this.sync(); + + let opts = this.result.opts; + let str = stringify$3; + if (opts.syntax) str = opts.syntax.stringify; + if (opts.stringifier) str = opts.stringifier; + if (str.stringify) str = str.stringify; + + let map = new MapGenerator$1(str, this.result.root, this.result.opts); + let data = map.generate(); + this.result.css = data[0]; + this.result.map = data[1]; + + return this.result + } + + sync() { + if (this.error) throw this.error + if (this.processed) return this.result + this.processed = true; + + if (this.processing) { + throw this.getAsyncError() + } + + for (let plugin of this.plugins) { + let promise = this.runOnRoot(plugin); + if (isPromise(promise)) { + throw this.getAsyncError() + } + } + + this.prepareVisitors(); + if (this.hasListener) { + let root = this.result.root; + while (!root[isClean]) { + root[isClean] = true; + this.walkSync(root); + } + if (this.listeners.OnceExit) { + if (root.type === 'document') { + for (let subRoot of root.nodes) { + this.visitSync(this.listeners.OnceExit, subRoot); + } + } else { + this.visitSync(this.listeners.OnceExit, root); + } + } + } + + return this.result } - prepareVisitors() { - this.listeners = {}; - let add = (plugin, type, cb) => { - if (!this.listeners[type]) this.listeners[type] = []; - this.listeners[type].push([plugin, cb]); - }; - for (let plugin of this.plugins) { - if (typeof plugin === 'object') { - for (let event in plugin) { - if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) { - throw new Error( - `Unknown event ${event} in ${plugin.postcssPlugin}. ` + - `Try to update PostCSS (${this.processor.version} now).` - ) - } - if (!NOT_VISITORS[event]) { - if (typeof plugin[event] === 'object') { - for (let filter in plugin[event]) { - if (filter === '*') { - add(plugin, event, plugin[event][filter]); - } else { - add( - plugin, - event + '-' + filter.toLowerCase(), - plugin[event][filter] - ); - } - } - } else if (typeof plugin[event] === 'function') { - add(plugin, event, plugin[event]); - } - } - } + then(onFulfilled, onRejected) { + if (process.env.NODE_ENV !== 'production') { + if (!('from' in this.opts)) { + warnOnce$1( + 'Without `from` option PostCSS could generate wrong source map ' + + 'and will not find Browserslist config. Set it to CSS file path ' + + 'or to `undefined` to prevent this warning.' + ); + } + } + return this.async().then(onFulfilled, onRejected) + } + + toString() { + return this.css + } + + visitSync(visitors, node) { + for (let [plugin, visitor] of visitors) { + this.result.lastPlugin = plugin; + let promise; + try { + promise = visitor(node, this.helpers); + } catch (e) { + throw this.handleError(e, node.proxyOf) + } + if (node.type !== 'root' && node.type !== 'document' && !node.parent) { + return true + } + if (isPromise(promise)) { + throw this.getAsyncError() } } - this.hasListener = Object.keys(this.listeners).length > 0; } visitTick(stack) { @@ -3878,6 +3880,61 @@ class LazyResult$2 { } stack.pop(); } + + walkSync(node) { + node[isClean] = true; + let events = getEvents(node); + for (let event of events) { + if (event === CHILDREN) { + if (node.nodes) { + node.each(child => { + if (!child[isClean]) this.walkSync(child); + }); + } + } else { + let visitors = this.listeners[event]; + if (visitors) { + if (this.visitSync(visitors, node.toProxy())) return + } + } + } + } + + warnings() { + return this.sync().warnings() + } + + get content() { + return this.stringify().content + } + + get css() { + return this.stringify().css + } + + get map() { + return this.stringify().map + } + + get messages() { + return this.sync().messages + } + + get opts() { + return this.result.opts + } + + get processor() { + return this.result.processor + } + + get root() { + return this.sync().root + } + + get [Symbol.toStringTag]() { + return 'LazyResult' + } } LazyResult$2.registerPostcss = dependant => { @@ -3927,33 +3984,76 @@ class NoWorkResult$1 { if (generatedMap) { this.result.map = generatedMap; } + } else { + map.clearAnnotation(); + this.result.css = map.css; } } - get [Symbol.toStringTag]() { - return 'NoWorkResult' + async() { + if (this.error) return Promise.reject(this.error) + return Promise.resolve(this.result) } - get processor() { - return this.result.processor + catch(onRejected) { + return this.async().catch(onRejected) } - get opts() { - return this.result.opts + finally(onFinally) { + return this.async().then(onFinally, onFinally) } - get css() { - return this.result.css + sync() { + if (this.error) throw this.error + return this.result + } + + then(onFulfilled, onRejected) { + if (process.env.NODE_ENV !== 'production') { + if (!('from' in this._opts)) { + warnOnce( + 'Without `from` option PostCSS could generate wrong source map ' + + 'and will not find Browserslist config. Set it to CSS file path ' + + 'or to `undefined` to prevent this warning.' + ); + } + } + + return this.async().then(onFulfilled, onRejected) + } + + toString() { + return this._css + } + + warnings() { + return [] } get content() { return this.result.css } + get css() { + return this.result.css + } + get map() { return this.result.map } + get messages() { + return [] + } + + get opts() { + return this.result.opts + } + + get processor() { + return this.result.processor + } + get root() { if (this._root) { return this._root @@ -3976,48 +4076,8 @@ class NoWorkResult$1 { } } - get messages() { - return [] - } - - warnings() { - return [] - } - - toString() { - return this._css - } - - then(onFulfilled, onRejected) { - if (process.env.NODE_ENV !== 'production') { - if (!('from' in this._opts)) { - warnOnce( - 'Without `from` option PostCSS could generate wrong source map ' + - 'and will not find Browserslist config. Set it to CSS file path ' + - 'or to `undefined` to prevent this warning.' - ); - } - } - - return this.async().then(onFulfilled, onRejected) - } - - catch(onRejected) { - return this.async().catch(onRejected) - } - - finally(onFinally) { - return this.async().then(onFinally, onFinally) - } - - async() { - if (this.error) return Promise.reject(this.error) - return Promise.resolve(this.result) - } - - sync() { - if (this.error) throw this.error - return this.result + get [Symbol.toStringTag]() { + return 'NoWorkResult' } } @@ -4031,28 +4091,10 @@ let Root$3 = root$1; class Processor$2 { constructor(plugins = []) { - this.version = '8.4.14'; + this.version = '8.4.39'; this.plugins = this.normalize(plugins); } - use(plugin) { - this.plugins = this.plugins.concat(this.normalize([plugin])); - return this - } - - process(css, opts = {}) { - if ( - this.plugins.length === 0 && - typeof opts.parser === 'undefined' && - typeof opts.stringifier === 'undefined' && - typeof opts.syntax === 'undefined' - ) { - return new NoWorkResult(this, css, opts) - } else { - return new LazyResult$1(this, css, opts) - } - } - normalize(plugins) { let normalized = []; for (let i of plugins) { @@ -4082,6 +4124,24 @@ class Processor$2 { } return normalized } + + process(css, opts = {}) { + if ( + !this.plugins.length && + !opts.parser && + !opts.stringifier && + !opts.syntax + ) { + return new NoWorkResult(this, css, opts) + } else { + return new LazyResult$1(this, css, opts) + } + } + + use(plugin) { + this.plugins = this.plugins.concat(this.normalize([plugin])); + return this + } } var processor = Processor$2; diff --git a/src/lib/prettier-babel.js b/src/lib/prettier-babel.js deleted file mode 100644 index 70b0a78dd..000000000 --- a/src/lib/prettier-babel.js +++ /dev/null @@ -1,29 +0,0 @@ -var b=(h,u)=>()=>(u||h((u={exports:{}}).exports,u),u.exports);var J=b((pf,Gr)=>{var vt=function(h){return h&&h.Math==Math&&h};Gr.exports=vt(typeof globalThis=="object"&&globalThis)||vt(typeof window=="object"&&window)||vt(typeof self=="object"&&self)||vt(typeof global=="object"&&global)||function(){return this}()||Function("return this")();});var be=b((ff,Xr)=>{Xr.exports=function(h){try{return !!h()}catch{return !0}};});var Me=b((df,Jr)=>{var Yh=be();Jr.exports=!Yh(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!=7});});var St=b((mf,Yr)=>{var $h=be();Yr.exports=!$h(function(){var h=function(){}.bind();return typeof h!="function"||h.hasOwnProperty("prototype")});});var Nt=b((yf,$r)=>{var Qh=St(),wt=Function.prototype.call;$r.exports=Qh?wt.bind(wt):function(){return wt.apply(wt,arguments)};});var ti=b(ei=>{var Qr={}.propertyIsEnumerable,Zr=Object.getOwnPropertyDescriptor,Zh=Zr&&!Qr.call({1:2},1);ei.f=Zh?function(u){var p=Zr(this,u);return !!p&&p.enumerable}:Qr;});var ds=b((gf,si)=>{si.exports=function(h,u){return {enumerable:!(h&1),configurable:!(h&2),writable:!(h&4),value:u}};});var le=b((Af,ai)=>{var ri=St(),ii=Function.prototype,el=ii.bind,ms=ii.call,tl=ri&&el.bind(ms,ms);ai.exports=ri?function(h){return h&&tl(h)}:function(h){return h&&function(){return ms.apply(h,arguments)}};});var It=b((Pf,oi)=>{var ni=le(),sl=ni({}.toString),rl=ni("".slice);oi.exports=function(h){return rl(sl(h),8,-1)};});var li=b((Tf,hi)=>{var il=J(),al=le(),nl=be(),ol=It(),ys=il.Object,hl=al("".split);hi.exports=nl(function(){return !ys("z").propertyIsEnumerable(0)})?function(h){return ol(h)=="String"?hl(h,""):ys(h)}:ys;});var xs=b((Ef,ui)=>{var ll=J(),ul=ll.TypeError;ui.exports=function(h){if(h==null)throw ul("Can't call method on "+h);return h};});var kt=b((bf,ci)=>{var cl=li(),pl=xs();ci.exports=function(h){return cl(pl(h))};});var ue=b((Cf,pi)=>{pi.exports=function(h){return typeof h=="function"};});var Re=b((vf,fi)=>{var fl=ue();fi.exports=function(h){return typeof h=="object"?h!==null:fl(h)};});var rt=b((Sf,di)=>{var gs=J(),dl=ue(),ml=function(h){return dl(h)?h:void 0};di.exports=function(h,u){return arguments.length<2?ml(gs[h]):gs[h]&&gs[h][u]};});var yi=b((wf,mi)=>{var yl=le();mi.exports=yl({}.isPrototypeOf);});var gi=b((Nf,xi)=>{var xl=rt();xi.exports=xl("navigator","userAgent")||"";});var vi=b((If,Ci)=>{var bi=J(),As=gi(),Ai=bi.process,Pi=bi.Deno,Ti=Ai&&Ai.versions||Pi&&Pi.version,Ei=Ti&&Ti.v8,fe,Dt;Ei&&(fe=Ei.split("."),Dt=fe[0]>0&&fe[0]<4?1:+(fe[0]+fe[1]));!Dt&&As&&(fe=As.match(/Edge\/(\d+)/),(!fe||fe[1]>=74)&&(fe=As.match(/Chrome\/(\d+)/),fe&&(Dt=+fe[1])));Ci.exports=Dt;});var Ps=b((kf,wi)=>{var Si=vi(),gl=be();wi.exports=!!Object.getOwnPropertySymbols&&!gl(function(){var h=Symbol();return !String(h)||!(Object(h)instanceof Symbol)||!Symbol.sham&&Si&&Si<41});});var Ts=b((Df,Ni)=>{var Al=Ps();Ni.exports=Al&&!Symbol.sham&&typeof Symbol.iterator=="symbol";});var Es=b((Ff,Ii)=>{var Pl=J(),Tl=rt(),El=ue(),bl=yi(),Cl=Ts(),vl=Pl.Object;Ii.exports=Cl?function(h){return typeof h=="symbol"}:function(h){var u=Tl("Symbol");return El(u)&&bl(u.prototype,vl(h))};});var Di=b((Lf,ki)=>{var Sl=J(),wl=Sl.String;ki.exports=function(h){try{return wl(h)}catch{return "Object"}};});var Ft=b((Of,Fi)=>{var Nl=J(),Il=ue(),kl=Di(),Dl=Nl.TypeError;Fi.exports=function(h){if(Il(h))return h;throw Dl(kl(h)+" is not a function")};});var Oi=b((Bf,Li)=>{var Fl=Ft();Li.exports=function(h,u){var p=h[u];return p==null?void 0:Fl(p)};});var Mi=b((Mf,Bi)=>{var Ll=J(),bs=Nt(),Cs=ue(),vs=Re(),Ol=Ll.TypeError;Bi.exports=function(h,u){var p,d;if(u==="string"&&Cs(p=h.toString)&&!vs(d=bs(p,h))||Cs(p=h.valueOf)&&!vs(d=bs(p,h))||u!=="string"&&Cs(p=h.toString)&&!vs(d=bs(p,h)))return d;throw Ol("Can't convert object to primitive value")};});var ji=b((Rf,Ri)=>{Ri.exports=!1;});var Lt=b((jf,Ui)=>{var qi=J(),Bl=Object.defineProperty;Ui.exports=function(h,u){try{Bl(qi,h,{value:u,configurable:!0,writable:!0});}catch{qi[h]=u;}return u};});var Ot=b((qf,zi)=>{var Ml=J(),Rl=Lt(),_i="__core-js_shared__",jl=Ml[_i]||Rl(_i,{});zi.exports=jl;});var Ss=b((Uf,Vi)=>{var ql=ji(),Ki=Ot();(Vi.exports=function(h,u){return Ki[h]||(Ki[h]=u!==void 0?u:{})})("versions",[]).push({version:"3.22.2",mode:ql?"pure":"global",copyright:"\xA9 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.22.2/LICENSE",source:"https://github.com/zloirock/core-js"});});var ws=b((_f,Hi)=>{var Ul=J(),_l=xs(),zl=Ul.Object;Hi.exports=function(h){return zl(_l(h))};});var Ie=b((zf,Wi)=>{var Kl=le(),Vl=ws(),Hl=Kl({}.hasOwnProperty);Wi.exports=Object.hasOwn||function(u,p){return Hl(Vl(u),p)};});var Ns=b((Kf,Gi)=>{var Wl=le(),Gl=0,Xl=Math.random(),Jl=Wl(1 .toString);Gi.exports=function(h){return "Symbol("+(h===void 0?"":h)+")_"+Jl(++Gl+Xl,36)};});var it=b((Vf,Qi)=>{var Yl=J(),$l=Ss(),Xi=Ie(),Ql=Ns(),Ji=Ps(),$i=Ts(),Xe=$l("wks"),je=Yl.Symbol,Yi=je&&je.for,Zl=$i?je:je&&je.withoutSetter||Ql;Qi.exports=function(h){if(!Xi(Xe,h)||!(Ji||typeof Xe[h]=="string")){var u="Symbol."+h;Ji&&Xi(je,h)?Xe[h]=je[h]:$i&&Yi?Xe[h]=Yi(u):Xe[h]=Zl(u);}return Xe[h]};});var sa=b((Hf,ta)=>{var eu=J(),tu=Nt(),Zi=Re(),ea=Es(),su=Oi(),ru=Mi(),iu=it(),au=eu.TypeError,nu=iu("toPrimitive");ta.exports=function(h,u){if(!Zi(h)||ea(h))return h;var p=su(h,nu),d;if(p){if(u===void 0&&(u="default"),d=tu(p,h,u),!Zi(d)||ea(d))return d;throw au("Can't convert object to primitive value")}return u===void 0&&(u="number"),ru(h,u)};});var Is=b((Wf,ra)=>{var ou=sa(),hu=Es();ra.exports=function(h){var u=ou(h,"string");return hu(u)?u:u+""};});var na=b((Gf,aa)=>{var lu=J(),ia=Re(),ks=lu.document,uu=ia(ks)&&ia(ks.createElement);aa.exports=function(h){return uu?ks.createElement(h):{}};});var Ds=b((Xf,oa)=>{var cu=Me(),pu=be(),fu=na();oa.exports=!cu&&!pu(function(){return Object.defineProperty(fu("div"),"a",{get:function(){return 7}}).a!=7});});var Fs=b(la=>{var du=Me(),mu=Nt(),yu=ti(),xu=ds(),gu=kt(),Au=Is(),Pu=Ie(),Tu=Ds(),ha=Object.getOwnPropertyDescriptor;la.f=du?ha:function(u,p){if(u=gu(u),p=Au(p),Tu)try{return ha(u,p)}catch{}if(Pu(u,p))return xu(!mu(yu.f,u,p),u[p])};});var ca=b((Yf,ua)=>{var Eu=Me(),bu=be();ua.exports=Eu&&bu(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!=42});});var Ls=b(($f,fa)=>{var pa=J(),Cu=Re(),vu=pa.String,Su=pa.TypeError;fa.exports=function(h){if(Cu(h))return h;throw Su(vu(h)+" is not an object")};});var js=b(ma=>{var wu=J(),Nu=Me(),Iu=Ds(),ku=ca(),Bt=Ls(),da=Is(),Du=wu.TypeError,Os=Object.defineProperty,Fu=Object.getOwnPropertyDescriptor,Bs="enumerable",Ms="configurable",Rs="writable";ma.f=Nu?ku?function(u,p,d){if(Bt(u),p=da(p),Bt(d),typeof u=="function"&&p==="prototype"&&"value"in d&&Rs in d&&!d[Rs]){var m=Fu(u,p);m&&m[Rs]&&(u[p]=d.value,d={configurable:Ms in d?d[Ms]:m[Ms],enumerable:Bs in d?d[Bs]:m[Bs],writable:!1});}return Os(u,p,d)}:Os:function(u,p,d){if(Bt(u),p=da(p),Bt(d),Iu)try{return Os(u,p,d)}catch{}if("get"in d||"set"in d)throw Du("Accessors not supported");return "value"in d&&(u[p]=d.value),u};});var Mt=b((Zf,ya)=>{var Lu=Me(),Ou=js(),Bu=ds();ya.exports=Lu?function(h,u,p){return Ou.f(h,u,Bu(1,p))}:function(h,u,p){return h[u]=p,h};});var Rt=b((ed,xa)=>{var Mu=le(),Ru=ue(),qs=Ot(),ju=Mu(Function.toString);Ru(qs.inspectSource)||(qs.inspectSource=function(h){return ju(h)});xa.exports=qs.inspectSource;});var Pa=b((td,Aa)=>{var qu=J(),Uu=ue(),_u=Rt(),ga=qu.WeakMap;Aa.exports=Uu(ga)&&/native code/.test(_u(ga));});var ba=b((sd,Ea)=>{var zu=Ss(),Ku=Ns(),Ta=zu("keys");Ea.exports=function(h){return Ta[h]||(Ta[h]=Ku(h))};});var Us=b((rd,Ca)=>{Ca.exports={};});var ka=b((id,Ia)=>{var Vu=Pa(),Na=J(),_s=le(),Hu=Re(),Wu=Mt(),zs=Ie(),Ks=Ot(),Gu=ba(),Xu=Us(),va="Object already initialized",Hs=Na.TypeError,Ju=Na.WeakMap,jt,at,qt,Yu=function(h){return qt(h)?at(h):jt(h,{})},$u=function(h){return function(u){var p;if(!Hu(u)||(p=at(u)).type!==h)throw Hs("Incompatible receiver, "+h+" required");return p}};Vu||Ks.state?(ke=Ks.state||(Ks.state=new Ju),Sa=_s(ke.get),Vs=_s(ke.has),wa=_s(ke.set),jt=function(h,u){if(Vs(ke,h))throw new Hs(va);return u.facade=h,wa(ke,h,u),u},at=function(h){return Sa(ke,h)||{}},qt=function(h){return Vs(ke,h)}):(qe=Gu("state"),Xu[qe]=!0,jt=function(h,u){if(zs(h,qe))throw new Hs(va);return u.facade=h,Wu(h,qe,u),u},at=function(h){return zs(h,qe)?h[qe]:{}},qt=function(h){return zs(h,qe)});var ke,Sa,Vs,wa,qe;Ia.exports={set:jt,get:at,has:qt,enforce:Yu,getterFor:$u};});var La=b((ad,Fa)=>{var Ws=Me(),Qu=Ie(),Da=Function.prototype,Zu=Ws&&Object.getOwnPropertyDescriptor,Gs=Qu(Da,"name"),ec=Gs&&function(){}.name==="something",tc=Gs&&(!Ws||Ws&&Zu(Da,"name").configurable);Fa.exports={EXISTS:Gs,PROPER:ec,CONFIGURABLE:tc};});var ja=b((nd,Ra)=>{var sc=J(),Oa=ue(),rc=Ie(),Ba=Mt(),ic=Lt(),ac=Rt(),Ma=ka(),nc=La().CONFIGURABLE,oc=Ma.get,hc=Ma.enforce,lc=String(String).split("String");(Ra.exports=function(h,u,p,d){var m=d?!!d.unsafe:!1,x=d?!!d.enumerable:!1,A=d?!!d.noTargetGet:!1,g=d&&d.name!==void 0?d.name:u,E;if(Oa(p)&&(String(g).slice(0,7)==="Symbol("&&(g="["+String(g).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),(!rc(p,"name")||nc&&p.name!==g)&&Ba(p,"name",g),E=hc(p),E.source||(E.source=lc.join(typeof g=="string"?g:""))),h===sc){x?h[u]=p:ic(u,p);return}else m?!A&&h[u]&&(x=!0):delete h[u];x?h[u]=p:Ba(h,u,p);})(Function.prototype,"toString",function(){return Oa(this)&&oc(this).source||ac(this)});});var Xs=b((od,qa)=>{var uc=Math.ceil,cc=Math.floor;qa.exports=function(h){var u=+h;return u!==u||u===0?0:(u>0?cc:uc)(u)};});var _a=b((hd,Ua)=>{var pc=Xs(),fc=Math.max,dc=Math.min;Ua.exports=function(h,u){var p=pc(h);return p<0?fc(p+u,0):dc(p,u)};});var Ka=b((ld,za)=>{var mc=Xs(),yc=Math.min;za.exports=function(h){return h>0?yc(mc(h),9007199254740991):0};});var Ut=b((ud,Va)=>{var xc=Ka();Va.exports=function(h){return xc(h.length)};});var Ga=b((cd,Wa)=>{var gc=kt(),Ac=_a(),Pc=Ut(),Ha=function(h){return function(u,p,d){var m=gc(u),x=Pc(m),A=Ac(d,x),g;if(h&&p!=p){for(;x>A;)if(g=m[A++],g!=g)return !0}else for(;x>A;A++)if((h||A in m)&&m[A]===p)return h||A||0;return !h&&-1}};Wa.exports={includes:Ha(!0),indexOf:Ha(!1)};});var Ya=b((pd,Ja)=>{var Tc=le(),Js=Ie(),Ec=kt(),bc=Ga().indexOf,Cc=Us(),Xa=Tc([].push);Ja.exports=function(h,u){var p=Ec(h),d=0,m=[],x;for(x in p)!Js(Cc,x)&&Js(p,x)&&Xa(m,x);for(;u.length>d;)Js(p,x=u[d++])&&(~bc(m,x)||Xa(m,x));return m};});var Qa=b((fd,$a)=>{$a.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"];});var en=b(Za=>{var vc=Ya(),Sc=Qa(),wc=Sc.concat("length","prototype");Za.f=Object.getOwnPropertyNames||function(u){return vc(u,wc)};});var sn=b(tn=>{tn.f=Object.getOwnPropertySymbols;});var an=b((yd,rn)=>{var Nc=rt(),Ic=le(),kc=en(),Dc=sn(),Fc=Ls(),Lc=Ic([].concat);rn.exports=Nc("Reflect","ownKeys")||function(u){var p=kc.f(Fc(u)),d=Dc.f;return d?Lc(p,d(u)):p};});var hn=b((xd,on)=>{var nn=Ie(),Oc=an(),Bc=Fs(),Mc=js();on.exports=function(h,u,p){for(var d=Oc(u),m=Mc.f,x=Bc.f,A=0;A<d.length;A++){var g=d[A];!nn(h,g)&&!(p&&nn(p,g))&&m(h,g,x(u,g));}};});var un=b((gd,ln)=>{var Rc=be(),jc=ue(),qc=/#|\.prototype\./,nt=function(h,u){var p=_c[Uc(h)];return p==Kc?!0:p==zc?!1:jc(u)?Rc(u):!!u},Uc=nt.normalize=function(h){return String(h).replace(qc,".").toLowerCase()},_c=nt.data={},zc=nt.NATIVE="N",Kc=nt.POLYFILL="P";ln.exports=nt;});var $s=b((Ad,cn)=>{var Ys=J(),Vc=Fs().f,Hc=Mt(),Wc=ja(),Gc=Lt(),Xc=hn(),Jc=un();cn.exports=function(h,u){var p=h.target,d=h.global,m=h.stat,x,A,g,E,F,D;if(d?A=Ys:m?A=Ys[p]||Gc(p,{}):A=(Ys[p]||{}).prototype,A)for(g in u){if(F=u[g],h.noTargetGet?(D=Vc(A,g),E=D&&D.value):E=A[g],x=Jc(d?g:p+(m?".":"#")+g,h.forced),!x&&E!==void 0){if(typeof F==typeof E)continue;Xc(F,E);}(h.sham||E&&E.sham)&&Hc(F,"sham",!0),Wc(A,g,F,h);}};});var pn=b(()=>{var Yc=$s(),$c=J();Yc({global:!0},{globalThis:$c});});var Qs=b((Ed,fn)=>{var Qc=It();fn.exports=Array.isArray||function(u){return Qc(u)=="Array"};});var yn=b((bd,mn)=>{var dn=le(),Zc=Ft(),ep=St(),tp=dn(dn.bind);mn.exports=function(h,u){return Zc(h),u===void 0?h:ep?tp(h,u):function(){return h.apply(u,arguments)}};});var An=b((Cd,gn)=>{var sp=J(),rp=Qs(),ip=Ut(),ap=yn(),np=sp.TypeError,xn=function(h,u,p,d,m,x,A,g){for(var E=m,F=0,D=A?ap(A,g):!1,C,M;F<d;){if(F in p){if(C=D?D(p[F],F,u):p[F],x>0&&rp(C))M=ip(C),E=xn(h,u,C,M,E,x-1)-1;else {if(E>=9007199254740991)throw np("Exceed the acceptable array length");h[E]=C;}E++;}F++;}return E};gn.exports=xn;});var En=b((vd,Tn)=>{var op=it(),hp=op("toStringTag"),Pn={};Pn[hp]="z";Tn.exports=String(Pn)==="[object z]";});var Cn=b((Sd,bn)=>{var lp=J(),up=En(),cp=ue(),_t=It(),pp=it(),fp=pp("toStringTag"),dp=lp.Object,mp=_t(function(){return arguments}())=="Arguments",yp=function(h,u){try{return h[u]}catch{}};bn.exports=up?_t:function(h){var u,p,d;return h===void 0?"Undefined":h===null?"Null":typeof(p=yp(u=dp(h),fp))=="string"?p:mp?_t(u):(d=_t(u))=="Object"&&cp(u.callee)?"Arguments":d};});var kn=b((wd,In)=>{var xp=le(),gp=be(),vn=ue(),Ap=Cn(),Pp=rt(),Tp=Rt(),Sn=function(){},Ep=[],wn=Pp("Reflect","construct"),Zs=/^\s*(?:class|function)\b/,bp=xp(Zs.exec),Cp=!Zs.exec(Sn),ot=function(u){if(!vn(u))return !1;try{return wn(Sn,Ep,u),!0}catch{return !1}},Nn=function(u){if(!vn(u))return !1;switch(Ap(u)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return !1}try{return Cp||!!bp(Zs,Tp(u))}catch{return !0}};Nn.sham=!0;In.exports=!wn||gp(function(){var h;return ot(ot.call)||!ot(Object)||!ot(function(){h=!0;})||h})?Nn:ot;});var On=b((Nd,Ln)=>{var vp=J(),Dn=Qs(),Sp=kn(),wp=Re(),Np=it(),Ip=Np("species"),Fn=vp.Array;Ln.exports=function(h){var u;return Dn(h)&&(u=h.constructor,Sp(u)&&(u===Fn||Dn(u.prototype))?u=void 0:wp(u)&&(u=u[Ip],u===null&&(u=void 0))),u===void 0?Fn:u};});var Mn=b((Id,Bn)=>{var kp=On();Bn.exports=function(h,u){return new(kp(h))(u===0?0:u)};});pn();var Dp=$s(),Fp=An(),Lp=Ft(),Op=ws(),Bp=Ut(),Mp=Mn();Dp({target:"Array",proto:!0},{flatMap:function(u){var p=Op(this),d=Bp(p),m;return Lp(u),m=Mp(p,0),m.length=Fp(m,p,p,d,0,1,u,arguments.length>1?arguments[1]:void 0),m}});var Rn,jn,qn,Un,_n;function ht(h,u){return u||(u=h.slice(0)),Object.freeze(Object.defineProperties(h,{raw:{value:Object.freeze(u)}}))}var rr=Object.defineProperty,Rp=Object.getOwnPropertyDescriptor,ir=Object.getOwnPropertyNames,jp=Object.prototype.hasOwnProperty,zn=(h,u)=>function(){return h&&(u=(0, h[ir(h)[0]])(h=0)),u},W=(h,u)=>function(){return u||(0, h[ir(h)[0]])((u={exports:{}}).exports,u),u.exports},qp=(h,u)=>{for(var p in u)rr(h,p,{get:u[p],enumerable:!0});},Up=(h,u,p,d)=>{if(u&&typeof u=="object"||typeof u=="function")for(let m of ir(u))!jp.call(h,m)&&m!==p&&rr(h,m,{get:()=>u[m],enumerable:!(d=Rp(u,m))||d.enumerable});return h},_p=h=>Up(rr({},"__esModule",{value:!0}),h),H=zn({"<define:process>"(){}}),zp=W({"src/utils/try-combinations.js"(h,u){H();function p(){let d;for(var m=arguments.length,x=new Array(m),A=0;A<m;A++)x[A]=arguments[A];for(let[g,E]of x.entries())try{return {result:E()}}catch(F){g===0&&(d=F);}return {error:d}}u.exports=p;}}),Kn=W({"src/language-js/utils/get-shebang.js"(h,u){H();function p(d){if(!d.startsWith("#!"))return "";let m=d.indexOf(` -`);return m===-1?d:d.slice(0,m)}u.exports=p;}}),Kp=W({"src/utils/text/skip-inline-comment.js"(h,u){H();function p(d,m){if(m===!1)return !1;if(d.charAt(m)==="/"&&d.charAt(m+1)==="*"){for(let x=m+2;x<d.length;++x)if(d.charAt(x)==="*"&&d.charAt(x+1)==="/")return x+2}return m}u.exports=p;}}),Vp=W({"src/utils/text/skip-newline.js"(h,u){H();function p(d,m,x){let A=x&&x.backwards;if(m===!1)return !1;let g=d.charAt(m);if(A){if(d.charAt(m-1)==="\r"&&g===` -`)return m-2;if(g===` -`||g==="\r"||g==="\u2028"||g==="\u2029")return m-1}else {if(g==="\r"&&d.charAt(m+1)===` -`)return m+2;if(g===` -`||g==="\r"||g==="\u2028"||g==="\u2029")return m+1}return m}u.exports=p;}}),Vn=W({"src/utils/text/skip.js"(h,u){H();function p(g){return (E,F,D)=>{let C=D&&D.backwards;if(F===!1)return !1;let{length:M}=E,L=F;for(;L>=0&&L<M;){let k=E.charAt(L);if(g instanceof RegExp){if(!g.test(k))return L}else if(!g.includes(k))return L;C?L--:L++;}return L===-1||L===M?L:!1}}var d=p(/\s/),m=p(" "),x=p(",; "),A=p(/[^\n\r]/);u.exports={skipWhitespace:d,skipSpaces:m,skipToLineEnd:x,skipEverythingButNewLine:A};}}),Hp=W({"src/utils/text/skip-trailing-comment.js"(h,u){H();var{skipEverythingButNewLine:p}=Vn();function d(m,x){return x===!1?!1:m.charAt(x)==="/"&&m.charAt(x+1)==="/"?p(m,x):x}u.exports=d;}}),Wp=W({"src/utils/text/get-next-non-space-non-comment-character-index-with-start-index.js"(h,u){H();var p=Kp(),d=Vp(),m=Hp(),{skipSpaces:x}=Vn();function A(g,E){let F=null,D=E;for(;D!==F;)F=D,D=x(g,D),D=p(g,D),D=m(g,D),D=d(g,D);return D}u.exports=A;}}),Hn={};qp(Hn,{EOL:()=>sr,arch:()=>Gp,cpus:()=>Qn,default:()=>ro,endianness:()=>Wn,freemem:()=>Yn,getNetworkInterfaces:()=>so,hostname:()=>Gn,loadavg:()=>Xn,networkInterfaces:()=>to,platform:()=>Xp,release:()=>eo,tmpDir:()=>er,tmpdir:()=>tr,totalmem:()=>$n,type:()=>Zn,uptime:()=>Jn});function Wn(){if(typeof zt>"u"){var h=new ArrayBuffer(2),u=new Uint8Array(h),p=new Uint16Array(h);if(u[0]=1,u[1]=2,p[0]===258)zt="BE";else if(p[0]===513)zt="LE";else throw new Error("unable to figure out endianess")}return zt}function Gn(){return typeof globalThis.location<"u"?globalThis.location.hostname:""}function Xn(){return []}function Jn(){return 0}function Yn(){return Number.MAX_VALUE}function $n(){return Number.MAX_VALUE}function Qn(){return []}function Zn(){return "Browser"}function eo(){return typeof globalThis.navigator<"u"?globalThis.navigator.appVersion:""}function to(){}function so(){}function Gp(){return "javascript"}function Xp(){return "browser"}function er(){return "/tmp"}var zt,tr,sr,ro,Jp=zn({"node-modules-polyfills:os"(){H(),tr=er,sr=` -`,ro={EOL:sr,tmpdir:tr,tmpDir:er,networkInterfaces:to,getNetworkInterfaces:so,release:eo,type:Zn,cpus:Qn,totalmem:$n,freemem:Yn,uptime:Jn,loadavg:Xn,hostname:Gn,endianness:Wn};}}),Yp=W({"node-modules-polyfills-commonjs:os"(h,u){H();var p=(Jp(),_p(Hn));if(p&&p.default){u.exports=p.default;for(let d in p)u.exports[d]=p[d];}else p&&(u.exports=p);}}),$p=W({"node_modules/detect-newline/index.js"(h,u){H();var p=d=>{if(typeof d!="string")throw new TypeError("Expected a string");let m=d.match(/(?:\r?\n)/g)||[];if(m.length===0)return;let x=m.filter(g=>g===`\r -`).length,A=m.length-x;return x>A?`\r -`:` -`};u.exports=p,u.exports.graceful=d=>typeof d=="string"&&p(d)||` -`;}}),Qp=W({"node_modules/jest-docblock/build/index.js"(h){H(),Object.defineProperty(h,"__esModule",{value:!0}),h.extract=L,h.parse=G,h.parseWithComments=Z,h.print=B,h.strip=k;function u(){let l=Yp();return u=function(){return l},l}function p(){let l=d($p());return p=function(){return l},l}function d(l){return l&&l.__esModule?l:{default:l}}var m=/\*\/$/,x=/^\/\*\*/,A=/^\s*(\/\*\*?(.|\r?\n)*?\*\/)/,g=/(^|\s+)\/\/([^\r\n]*)/g,E=/^(\r?\n)+/,F=/(?:^|\r?\n) *(@[^\r\n]*?) *\r?\n *(?![^@\r\n]*\/\/[^]*)([^@\r\n\s][^@\r\n]+?) *\r?\n/g,D=/(?:^|\r?\n) *@(\S+) *([^\r\n]*)/g,C=/(\r?\n|^) *\* ?/g,M=[];function L(l){let Y=l.match(A);return Y?Y[0].trimLeft():""}function k(l){let Y=l.match(A);return Y&&Y[0]?l.substring(Y[0].length):l}function G(l){return Z(l).pragmas}function Z(l){let Y=(0, p().default)(l)||u().EOL;l=l.replace(x,"").replace(m,"").replace(C,"$1");let ie="";for(;ie!==l;)ie=l,l=l.replace(F,"".concat(Y,"$1 $2").concat(Y));l=l.replace(E,"").trimRight();let Q=Object.create(null),Ce=l.replace(D,"").replace(E,"").trimRight(),ee;for(;ee=D.exec(l);){let U=ee[2].replace(g,"");typeof Q[ee[1]]=="string"||Array.isArray(Q[ee[1]])?Q[ee[1]]=M.concat(Q[ee[1]],U):Q[ee[1]]=U;}return {comments:Ce,pragmas:Q}}function B(l){let{comments:Y="",pragmas:ie={}}=l,Q=(0, p().default)(Y)||u().EOL,Ce="/**",ee=" *",U=" */",O=Object.keys(ie),P=O.map(V=>j(V,ie[V])).reduce((V,$)=>V.concat($),[]).map(V=>ee+" "+V+Q).join("");if(!Y){if(O.length===0)return "";if(O.length===1&&!Array.isArray(ie[O[0]])){let V=ie[O[0]];return "".concat(Ce," ").concat(j(O[0],V)[0]).concat(U)}}let De=Y.split(Q).map(V=>"".concat(ee," ").concat(V)).join(Q)+Q;return Ce+Q+(Y?De:"")+(Y&&O.length?ee+Q:"")+P+U}function j(l,Y){return M.concat(Y).map(ie=>"@".concat(l," ").concat(ie).trim())}}}),Zp=W({"src/common/end-of-line.js"(h,u){H();function p(A){let g=A.indexOf("\r");return g>=0?A.charAt(g+1)===` -`?"crlf":"cr":"lf"}function d(A){switch(A){case"cr":return "\r";case"crlf":return `\r -`;default:return ` -`}}function m(A,g){let E;switch(g){case` -`:E=/\n/g;break;case"\r":E=/\r/g;break;case`\r -`:E=/\r\n/g;break;default:throw new Error('Unexpected "eol" '.concat(JSON.stringify(g),"."))}let F=A.match(E);return F?F.length:0}function x(A){return A.replace(/\r\n?/g,` -`)}u.exports={guessEndOfLine:p,convertEndOfLineToChars:d,countEndOfLineChars:m,normalizeEndOfLine:x};}}),ef=W({"src/language-js/pragma.js"(h,u){H();var{parseWithComments:p,strip:d,extract:m,print:x}=Qp(),{normalizeEndOfLine:A}=Zp(),g=Kn();function E(C){let M=g(C);M&&(C=C.slice(M.length+1));let L=m(C),{pragmas:k,comments:G}=p(L);return {shebang:M,text:C,pragmas:k,comments:G}}function F(C){let M=Object.keys(E(C).pragmas);return M.includes("prettier")||M.includes("format")}function D(C){let{shebang:M,text:L,pragmas:k,comments:G}=E(C),Z=d(L),B=x({pragmas:Object.assign({format:""},k),comments:G.trimStart()});return (M?"".concat(M,` -`):"")+A(B)+(Z.startsWith(` -`)?` -`:` - -`)+Z}u.exports={hasPragma:F,insertPragma:D};}}),io=W({"src/utils/is-non-empty-array.js"(h,u){H();function p(d){return Array.isArray(d)&&d.length>0}u.exports=p;}}),ao=W({"src/language-js/loc.js"(h,u){H();var p=io();function d(E,F){let{ignoreDecorators:D}=F||{};if(!D){let C=E.declaration&&E.declaration.decorators||E.decorators;if(p(C))return d(C[0])}return E.range?E.range[0]:E.start}function m(E){return E.range?E.range[1]:E.end}function x(E,F){let D=d(E);return Number.isInteger(D)&&D===d(F)}function A(E,F){let D=m(E);return Number.isInteger(D)&&D===m(F)}function g(E,F){return x(E,F)&&A(E,F)}u.exports={locStart:d,locEnd:m,hasSameLocStart:x,hasSameLoc:g};}}),no=W({"src/language-js/parse/utils/create-parser.js"(h,u){H();var{hasPragma:p}=ef(),{locStart:d,locEnd:m}=ao();function x(A){return A=typeof A=="function"?{parse:A}:A,Object.assign({astFormat:"estree",hasPragma:p,locStart:d,locEnd:m},A)}u.exports=x;}}),ar=W({"src/common/parser-create-error.js"(h,u){H();function p(d,m){let x=new SyntaxError(d+" ("+m.start.line+":"+m.start.column+")");return x.loc=m,x}u.exports=p;}}),oo=W({"src/language-js/parse/utils/create-babel-parse-error.js"(h,u){H();var p=ar();function d(m){let{message:x,loc:A}=m;return p(x.replace(/ \(.*\)/,""),{start:{line:A?A.line:0,column:A?A.column+1:0}})}u.exports=d;}}),tf=W({"src/language-js/utils/is-ts-keyword-type.js"(h,u){H();function p(d){let{type:m}=d;return m.startsWith("TS")&&m.endsWith("Keyword")}u.exports=p;}}),sf=W({"src/language-js/utils/is-block-comment.js"(h,u){H();var p=new Set(["Block","CommentBlock","MultiLine"]),d=m=>p.has(m==null?void 0:m.type);u.exports=d;}}),rf=W({"src/language-js/utils/is-type-cast-comment.js"(h,u){H();var p=sf();function d(m){return p(m)&&m.value[0]==="*"&&/@type\b/.test(m.value)}u.exports=d;}}),af=W({"src/utils/get-last.js"(h,u){H();var p=d=>d[d.length-1];u.exports=p;}}),ho=W({"src/language-js/parse/postprocess/visit-node.js"(h,u){H();function p(d,m){if(Array.isArray(d)){for(let x=0;x<d.length;x++)d[x]=p(d[x],m);return d}if(d&&typeof d=="object"&&typeof d.type=="string"){let x=Object.keys(d);for(let A=0;A<x.length;A++)d[x[A]]=p(d[x[A]],m);return m(d)||d}return d}u.exports=p;}}),lo=W({"src/language-js/parse/postprocess/throw-syntax-error.js"(h,u){H();var p=ar();function d(m,x){let{start:A,end:g}=m.loc;throw p(x,{start:{line:A.line,column:A.column+1},end:{line:g.line,column:g.column+1}})}u.exports=d;}}),nf=W({"src/language-js/parse/postprocess/typescript.js"(h,u){H();var p=ho(),d=lo();function m(g,E,F){let D=g.decorators;if(!Array.isArray(D))return;let C=E.decorators;(!Array.isArray(C)||C.length!==D.length||D.some(M=>{let L=F.get(M);return !L||!C.includes(L)}))&&d(E,"Leading decorators must be attached to a class declaration");}function x(g,E){g.kind!==167||g.modifiers&&!g.modifiers.some(C=>C.kind===126)||g.initializer&&E.value===null&&d(E,"Abstract property cannot have an initializer");}function A(g,E){let{esTreeNodeToTSNodeMap:F,tsNodeToESTreeNodeMap:D}=E.tsParseResult;p(g,C=>{let M=F.get(C);if(!M)return;let L=D.get(M);L===C&&(m(M,L,D),x(M,L));});}u.exports={throwErrorForInvalidNodes:A};}}),of=W({"src/language-js/parse/postprocess/index.js"(h,u){H();var{locStart:p,locEnd:d}=ao(),m=tf(),x=rf(),A=af(),g=ho(),{throwErrorForInvalidNodes:E}=nf(),F=lo();function D(k,G){if(G.parser==="typescript"&&/@|abstract/.test(G.originalText)&&E(k,G),G.parser!=="typescript"&&G.parser!=="flow"&&G.parser!=="acorn"&&G.parser!=="espree"&&G.parser!=="meriyah"){let B=new Set;k=g(k,j=>{j.leadingComments&&j.leadingComments.some(x)&&B.add(p(j));}),k=g(k,j=>{if(j.type==="ParenthesizedExpression"){let{expression:l}=j;if(l.type==="TypeCastExpression")return l.range=j.range,l;let Y=p(j);if(!B.has(Y))return l.extra=Object.assign(Object.assign({},l.extra),{},{parenthesized:!0}),l}});}return k=g(k,B=>{switch(B.type){case"ChainExpression":return C(B.expression);case"LogicalExpression":{if(M(B))return L(B);break}case"VariableDeclaration":{let j=A(B.declarations);j&&j.init&&Z(B,j);break}case"TSParenthesizedType":return m(B.typeAnnotation)||B.typeAnnotation.type==="TSThisType"||(B.typeAnnotation.range=[p(B),d(B)]),B.typeAnnotation;case"TSTypeParameter":if(typeof B.name=="string"){let j=p(B);B.name={type:"Identifier",name:B.name,range:[j,j+B.name.length]};}break;case"ObjectExpression":if(G.parser==="typescript"){let j=B.properties.find(l=>l.type==="Property"&&l.value.type==="TSEmptyBodyFunctionExpression");j&&F(j.value,"Unexpected token.");}break;case"SequenceExpression":{let j=A(B.expressions);B.range=[p(B),Math.min(d(j),d(B))];break}case"TopicReference":G.__isUsingHackPipeline=!0;break;case"ExportAllDeclaration":{let{exported:j}=B;if(G.parser==="meriyah"&&j&&j.type==="Identifier"){let l=G.originalText.slice(p(j),d(j));(l.startsWith('"')||l.startsWith("'"))&&(B.exported=Object.assign(Object.assign({},B.exported),{},{type:"Literal",value:B.exported.name,raw:l}));}break}}}),k;function Z(B,j){G.originalText[d(j)]!==";"&&(B.range=[p(B),d(j)]);}}function C(k){switch(k.type){case"CallExpression":k.type="OptionalCallExpression",k.callee=C(k.callee);break;case"MemberExpression":k.type="OptionalMemberExpression",k.object=C(k.object);break;case"TSNonNullExpression":k.expression=C(k.expression);break}return k}function M(k){return k.type==="LogicalExpression"&&k.right.type==="LogicalExpression"&&k.operator===k.right.operator}function L(k){return M(k)?L({type:"LogicalExpression",operator:k.operator,left:L({type:"LogicalExpression",operator:k.operator,left:k.left,right:k.right.left,range:[p(k.left),d(k.right.left)]}),right:k.right.right,range:[p(k),d(k)]}):k}u.exports=D;}}),uo=W({"node_modules/@babel/parser/lib/index.js"(h){H(),Object.defineProperty(h,"__esModule",{value:!0});function u(t,e){if(t==null)return {};var s={},r=Object.keys(t),i,a;for(a=0;a<r.length;a++)i=r[a],!(e.indexOf(i)>=0)&&(s[i]=t[i]);return s}var p=class{constructor(t,e,s){this.line=void 0,this.column=void 0,this.index=void 0,this.line=t,this.column=e,this.index=s;}},d=class{constructor(t,e){this.start=void 0,this.end=void 0,this.filename=void 0,this.identifierName=void 0,this.start=t,this.end=e;}};function m(t,e){let{line:s,column:r,index:i}=t;return new p(s,r+e,i+e)}var x=Object.freeze({SyntaxError:"BABEL_PARSER_SYNTAX_ERROR",SourceTypeModuleError:"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED"}),A=function(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:t.length-1;return {get(){return t.reduce((s,r)=>s[r],this)},set(s){t.reduce((r,i,a)=>a===e?r[i]=s:r[i],this);}}},g=(t,e,s)=>Object.keys(s).map(r=>[r,s[r]]).filter(r=>{let[,i]=r;return !!i}).map(r=>{let[i,a]=r;return [i,typeof a=="function"?{value:a,enumerable:!1}:typeof a.reflect=="string"?Object.assign({},a,A(a.reflect.split("."))):a]}).reduce((r,i)=>{let[a,n]=i;return Object.defineProperty(r,a,Object.assign({configurable:!0},n))},Object.assign(new t,e)),E=t=>({ImportMetaOutsideModule:t(`import.meta may appear only with 'sourceType: "module"'`,{code:x.SourceTypeModuleError}),ImportOutsideModule:t(`'import' and 'export' may appear only with 'sourceType: "module"'`,{code:x.SourceTypeModuleError})}),F={ArrayPattern:"array destructuring pattern",AssignmentExpression:"assignment expression",AssignmentPattern:"assignment expression",ArrowFunctionExpression:"arrow function expression",ConditionalExpression:"conditional expression",ForOfStatement:"for-of statement",ForInStatement:"for-in statement",ForStatement:"for-loop",FormalParameters:"function parameter list",Identifier:"identifier",ObjectPattern:"object destructuring pattern",ParenthesizedExpression:"parenthesized expression",RestElement:"rest element",UpdateExpression:{true:"prefix operation",false:"postfix operation"},VariableDeclarator:"variable declaration",YieldExpression:"yield expression"},D=t=>{let{type:e,prefix:s}=t;return e==="UpdateExpression"?F.UpdateExpression[String(s)]:F[e]},C=t=>({AccessorIsGenerator:t(e=>{let{kind:s}=e;return "A ".concat(s,"ter cannot be a generator.")}),ArgumentsInClass:t("'arguments' is only allowed in functions and class methods."),AsyncFunctionInSingleStatementContext:t("Async functions can only be declared at the top level or inside a block."),AwaitBindingIdentifier:t("Can not use 'await' as identifier inside an async function."),AwaitBindingIdentifierInStaticBlock:t("Can not use 'await' as identifier inside a static block."),AwaitExpressionFormalParameter:t("'await' is not allowed in async function parameters."),AwaitNotInAsyncContext:t("'await' is only allowed within async functions and at the top levels of modules."),AwaitNotInAsyncFunction:t("'await' is only allowed within async functions."),BadGetterArity:t("A 'get' accesor must not have any formal parameters."),BadSetterArity:t("A 'set' accesor must have exactly one formal parameter."),BadSetterRestParameter:t("A 'set' accesor function argument must not be a rest parameter."),ConstructorClassField:t("Classes may not have a field named 'constructor'."),ConstructorClassPrivateField:t("Classes may not have a private field named '#constructor'."),ConstructorIsAccessor:t("Class constructor may not be an accessor."),ConstructorIsAsync:t("Constructor can't be an async function."),ConstructorIsGenerator:t("Constructor can't be a generator."),DeclarationMissingInitializer:t(e=>{let{kind:s}=e;return "Missing initializer in ".concat(s," declaration.")}),DecoratorBeforeExport:t("Decorators must be placed *before* the 'export' keyword. You can set the 'decoratorsBeforeExport' option to false to use the 'export @decorator class {}' syntax."),DecoratorConstructor:t("Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?"),DecoratorExportClass:t("Using the export keyword between a decorator and a class is not allowed. Please use `export @dec class` instead."),DecoratorSemicolon:t("Decorators must not be followed by a semicolon."),DecoratorStaticBlock:t("Decorators can't be used with a static block."),DeletePrivateField:t("Deleting a private field is not allowed."),DestructureNamedImport:t("ES2015 named imports do not destructure. Use another statement for destructuring after the import."),DuplicateConstructor:t("Duplicate constructor in the same class."),DuplicateDefaultExport:t("Only one default export allowed per module."),DuplicateExport:t(e=>{let{exportName:s}=e;return "`".concat(s,"` has already been exported. Exported identifiers must be unique.")}),DuplicateProto:t("Redefinition of __proto__ property."),DuplicateRegExpFlags:t("Duplicate regular expression flag."),ElementAfterRest:t("Rest element must be last element."),EscapedCharNotAnIdentifier:t("Invalid Unicode escape."),ExportBindingIsString:t(e=>{let{localName:s,exportName:r}=e;return "A string literal cannot be used as an exported binding without `from`.\n- Did you mean `export { '".concat(s,"' as '").concat(r,"' } from 'some-module'`?")}),ExportDefaultFromAsIdentifier:t("'from' is not allowed as an identifier after 'export default'."),ForInOfLoopInitializer:t(e=>{let{type:s}=e;return "'".concat(s==="ForInStatement"?"for-in":"for-of","' loop variable declaration may not have an initializer.")}),ForOfAsync:t("The left-hand side of a for-of loop may not be 'async'."),ForOfLet:t("The left-hand side of a for-of loop may not start with 'let'."),GeneratorInSingleStatementContext:t("Generators can only be declared at the top level or inside a block."),IllegalBreakContinue:t(e=>{let{type:s}=e;return "Unsyntactic ".concat(s==="BreakStatement"?"break":"continue",".")}),IllegalLanguageModeDirective:t("Illegal 'use strict' directive in function with non-simple parameter list."),IllegalReturn:t("'return' outside of function."),ImportBindingIsString:t(e=>{let{importName:s}=e;return 'A string literal cannot be used as an imported binding.\n- Did you mean `import { "'.concat(s,'" as foo }`?')}),ImportCallArgumentTrailingComma:t("Trailing comma is disallowed inside import(...) arguments."),ImportCallArity:t(e=>{let{maxArgumentCount:s}=e;return "`import()` requires exactly ".concat(s===1?"one argument":"one or two arguments",".")}),ImportCallNotNewExpression:t("Cannot use new with import(...)."),ImportCallSpreadArgument:t("`...` is not allowed in `import()`."),IncompatibleRegExpUVFlags:t("The 'u' and 'v' regular expression flags cannot be enabled at the same time."),InvalidBigIntLiteral:t("Invalid BigIntLiteral."),InvalidCodePoint:t("Code point out of bounds."),InvalidCoverInitializedName:t("Invalid shorthand property initializer."),InvalidDecimal:t("Invalid decimal."),InvalidDigit:t(e=>{let{radix:s}=e;return "Expected number in radix ".concat(s,".")}),InvalidEscapeSequence:t("Bad character escape sequence."),InvalidEscapeSequenceTemplate:t("Invalid escape sequence in template."),InvalidEscapedReservedWord:t(e=>{let{reservedWord:s}=e;return "Escape sequence in keyword ".concat(s,".")}),InvalidIdentifier:t(e=>{let{identifierName:s}=e;return "Invalid identifier ".concat(s,".")}),InvalidLhs:t(e=>{let{ancestor:s}=e;return "Invalid left-hand side in ".concat(D(s),".")}),InvalidLhsBinding:t(e=>{let{ancestor:s}=e;return "Binding invalid left-hand side in ".concat(D(s),".")}),InvalidNumber:t("Invalid number."),InvalidOrMissingExponent:t("Floating-point numbers require a valid exponent after the 'e'."),InvalidOrUnexpectedToken:t(e=>{let{unexpected:s}=e;return "Unexpected character '".concat(s,"'.")}),InvalidParenthesizedAssignment:t("Invalid parenthesized assignment pattern."),InvalidPrivateFieldResolution:t(e=>{let{identifierName:s}=e;return "Private name #".concat(s," is not defined.")}),InvalidPropertyBindingPattern:t("Binding member expression."),InvalidRecordProperty:t("Only properties and spread elements are allowed in record definitions."),InvalidRestAssignmentPattern:t("Invalid rest operator's argument."),LabelRedeclaration:t(e=>{let{labelName:s}=e;return "Label '".concat(s,"' is already declared.")}),LetInLexicalBinding:t("'let' is not allowed to be used as a name in 'let' or 'const' declarations."),LineTerminatorBeforeArrow:t("No line break is allowed before '=>'."),MalformedRegExpFlags:t("Invalid regular expression flag."),MissingClassName:t("A class name is required."),MissingEqInAssignment:t("Only '=' operator can be used for specifying default value."),MissingSemicolon:t("Missing semicolon."),MissingPlugin:t(e=>{let{missingPlugin:s}=e;return "This experimental syntax requires enabling the parser plugin: ".concat(s.map(r=>JSON.stringify(r)).join(", "),".")}),MissingOneOfPlugins:t(e=>{let{missingPlugin:s}=e;return "This experimental syntax requires enabling one of the following parser plugin(s): ".concat(s.map(r=>JSON.stringify(r)).join(", "),".")}),MissingUnicodeEscape:t("Expecting Unicode escape sequence \\uXXXX."),MixingCoalesceWithLogical:t("Nullish coalescing operator(??) requires parens when mixing with logical operators."),ModuleAttributeDifferentFromType:t("The only accepted module attribute is `type`."),ModuleAttributeInvalidValue:t("Only string literals are allowed as module attribute values."),ModuleAttributesWithDuplicateKeys:t(e=>{let{key:s}=e;return 'Duplicate key "'.concat(s,'" is not allowed in module attributes.')}),ModuleExportNameHasLoneSurrogate:t(e=>{let{surrogateCharCode:s}=e;return "An export name cannot include a lone surrogate, found '\\u".concat(s.toString(16),"'.")}),ModuleExportUndefined:t(e=>{let{localName:s}=e;return "Export '".concat(s,"' is not defined.")}),MultipleDefaultsInSwitch:t("Multiple default clauses."),NewlineAfterThrow:t("Illegal newline after throw."),NoCatchOrFinally:t("Missing catch or finally clause."),NumberIdentifier:t("Identifier directly after number."),NumericSeparatorInEscapeSequence:t("Numeric separators are not allowed inside unicode escape sequences or hex escape sequences."),ObsoleteAwaitStar:t("'await*' has been removed from the async functions proposal. Use Promise.all() instead."),OptionalChainingNoNew:t("Constructors in/after an Optional Chain are not allowed."),OptionalChainingNoTemplate:t("Tagged Template Literals are not allowed in optionalChain."),OverrideOnConstructor:t("'override' modifier cannot appear on a constructor declaration."),ParamDupe:t("Argument name clash."),PatternHasAccessor:t("Object pattern can't contain getter or setter."),PatternHasMethod:t("Object pattern can't contain methods."),PrivateInExpectedIn:t(e=>{let{identifierName:s}=e;return "Private names are only allowed in property accesses (`obj.#".concat(s,"`) or in `in` expressions (`#").concat(s," in obj`).")}),PrivateNameRedeclaration:t(e=>{let{identifierName:s}=e;return "Duplicate private name #".concat(s,".")}),RecordExpressionBarIncorrectEndSyntaxType:t("Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'."),RecordExpressionBarIncorrectStartSyntaxType:t("Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'."),RecordExpressionHashIncorrectStartSyntaxType:t("Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'."),RecordNoProto:t("'__proto__' is not allowed in Record expressions."),RestTrailingComma:t("Unexpected trailing comma after rest element."),SloppyFunction:t("In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement."),StaticPrototype:t("Classes may not have static property named prototype."),SuperNotAllowed:t("`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?"),SuperPrivateField:t("Private fields can't be accessed on super."),TrailingDecorator:t("Decorators must be attached to a class element."),TupleExpressionBarIncorrectEndSyntaxType:t("Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'."),TupleExpressionBarIncorrectStartSyntaxType:t("Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'."),TupleExpressionHashIncorrectStartSyntaxType:t("Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'."),UnexpectedArgumentPlaceholder:t("Unexpected argument placeholder."),UnexpectedAwaitAfterPipelineBody:t('Unexpected "await" after pipeline body; await must have parentheses in minimal proposal.'),UnexpectedDigitAfterHash:t("Unexpected digit after hash token."),UnexpectedImportExport:t("'import' and 'export' may only appear at the top level."),UnexpectedKeyword:t(e=>{let{keyword:s}=e;return "Unexpected keyword '".concat(s,"'.")}),UnexpectedLeadingDecorator:t("Leading decorators must be attached to a class declaration."),UnexpectedLexicalDeclaration:t("Lexical declaration cannot appear in a single-statement context."),UnexpectedNewTarget:t("`new.target` can only be used in functions or class properties."),UnexpectedNumericSeparator:t("A numeric separator is only allowed between two digits."),UnexpectedPrivateField:t("Unexpected private name."),UnexpectedReservedWord:t(e=>{let{reservedWord:s}=e;return "Unexpected reserved word '".concat(s,"'.")}),UnexpectedSuper:t("'super' is only allowed in object methods and classes."),UnexpectedToken:t(e=>{let{expected:s,unexpected:r}=e;return "Unexpected token".concat(r?" '".concat(r,"'."):"").concat(s?', expected "'.concat(s,'"'):"")}),UnexpectedTokenUnaryExponentiation:t("Illegal expression. Wrap left hand side or entire exponentiation in parentheses."),UnsupportedBind:t("Binding should be performed on object property."),UnsupportedDecoratorExport:t("A decorated export must export a class declaration."),UnsupportedDefaultExport:t("Only expressions, functions or classes are allowed as the `default` export."),UnsupportedImport:t("`import` can only be used in `import()` or `import.meta`."),UnsupportedMetaProperty:t(e=>{let{target:s,onlyValidPropertyName:r}=e;return "The only valid meta property for ".concat(s," is ").concat(s,".").concat(r,".")}),UnsupportedParameterDecorator:t("Decorators cannot be used to decorate parameters."),UnsupportedPropertyDecorator:t("Decorators cannot be used to decorate object literal properties."),UnsupportedSuper:t("'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop])."),UnterminatedComment:t("Unterminated comment."),UnterminatedRegExp:t("Unterminated regular expression."),UnterminatedString:t("Unterminated string constant."),UnterminatedTemplate:t("Unterminated template."),VarRedeclaration:t(e=>{let{identifierName:s}=e;return "Identifier '".concat(s,"' has already been declared.")}),YieldBindingIdentifier:t("Can not use 'yield' as identifier inside a generator."),YieldInParameter:t("Yield expression is not allowed in formal parameters."),ZeroDigitNumericSeparator:t("Numeric separator can not be used after leading 0.")}),M=t=>({StrictDelete:t("Deleting local variable in strict mode."),StrictEvalArguments:t(e=>{let{referenceName:s}=e;return "Assigning to '".concat(s,"' in strict mode.")}),StrictEvalArgumentsBinding:t(e=>{let{bindingName:s}=e;return "Binding '".concat(s,"' in strict mode.")}),StrictFunction:t("In strict mode code, functions can only be declared at top level or inside a block."),StrictNumericEscape:t("The only valid numeric escape in strict mode is '\\0'."),StrictOctalLiteral:t("Legacy octal literals are not allowed in strict mode."),StrictWith:t("'with' in strict mode.")}),L=new Set(["ArrowFunctionExpression","AssignmentExpression","ConditionalExpression","YieldExpression"]),k=t=>({PipeBodyIsTighter:t("Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence."),PipeTopicRequiresHackPipes:t('Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.'),PipeTopicUnbound:t("Topic reference is unbound; it must be inside a pipe body."),PipeTopicUnconfiguredToken:t(e=>{let{token:s}=e;return "Invalid topic token ".concat(s,". In order to use ").concat(s,' as a topic reference, the pipelineOperator plugin must be configured with { "proposal": "hack", "topicToken": "').concat(s,'" }.')}),PipeTopicUnused:t("Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once."),PipeUnparenthesizedBody:t(e=>{let{type:s}=e;return "Hack-style pipe body cannot be an unparenthesized ".concat(D({type:s}),"; please wrap it in parentheses.")}),PipelineBodyNoArrow:t('Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized.'),PipelineBodySequenceExpression:t("Pipeline body may not be a comma-separated sequence expression."),PipelineHeadSequenceExpression:t("Pipeline head should not be a comma-separated sequence expression."),PipelineTopicUnused:t("Pipeline is in topic style but does not use topic reference."),PrimaryTopicNotAllowed:t("Topic reference was used in a lexical context without topic binding."),PrimaryTopicRequiresSmartPipeline:t('Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.')}),G=["toMessage"];function Z(t){let{toMessage:e}=t,s=u(t,G);return function r(i){let{loc:a,details:n}=i;return g(SyntaxError,Object.assign({},s,{loc:a}),{clone(){let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},c=o.loc||{};return r({loc:new p("line"in c?c.line:this.loc.line,"column"in c?c.column:this.loc.column,"index"in c?c.index:this.loc.index),details:Object.assign({},this.details,o.details)})},details:{value:n,enumerable:!1},message:{get(){return "".concat(e(this.details)," (").concat(this.loc.line,":").concat(this.loc.column,")")},set(o){Object.defineProperty(this,"message",{value:o});}},pos:{reflect:"loc.index",enumerable:!0},missingPlugin:"missingPlugin"in n&&{reflect:"details.missingPlugin",enumerable:!0}})}}function B(t,e){return Object.assign({toMessage:typeof t=="string"?()=>t:t},e)}function j(t,e){if(Array.isArray(t))return i=>j(i,t[0]);let s=t(B),r={};for(let i of Object.keys(s))r[i]=Z(Object.assign({code:x.SyntaxError,reasonCode:i},e?{syntaxPlugin:e}:{},s[i]));return r}var l=Object.assign({},j(E),j(C),j(M),j(Rn||(Rn=ht(["pipelineOperator"])))(k)),{defineProperty:Y}=Object,ie=(t,e)=>Y(t,e,{enumerable:!1,value:t[e]});function Q(t){return ie(t.loc.start,"index"),ie(t.loc.end,"index"),t}var Ce=t=>class extends t{parse(){let e=Q(super.parse());return this.options.tokens&&(e.tokens=e.tokens.map(Q)),e}parseRegExpLiteral(e){let{pattern:s,flags:r}=e,i=null;try{i=new RegExp(s,r);}catch{}let a=this.estreeParseLiteral(i);return a.regex={pattern:s,flags:r},a}parseBigIntLiteral(e){let s;try{s=BigInt(e);}catch{s=null;}let r=this.estreeParseLiteral(s);return r.bigint=String(r.value||e),r}parseDecimalLiteral(e){let r=this.estreeParseLiteral(null);return r.decimal=String(r.value||e),r}estreeParseLiteral(e){return this.parseLiteral(e,"Literal")}parseStringLiteral(e){return this.estreeParseLiteral(e)}parseNumericLiteral(e){return this.estreeParseLiteral(e)}parseNullLiteral(){return this.estreeParseLiteral(null)}parseBooleanLiteral(e){return this.estreeParseLiteral(e)}directiveToStmt(e){let s=e.value,r=this.startNodeAt(e.start,e.loc.start),i=this.startNodeAt(s.start,s.loc.start);return i.value=s.extra.expressionValue,i.raw=s.extra.raw,r.expression=this.finishNodeAt(i,"Literal",s.loc.end),r.directive=s.extra.raw.slice(1,-1),this.finishNodeAt(r,"ExpressionStatement",e.loc.end)}initFunction(e,s){super.initFunction(e,s),e.expression=!1;}checkDeclaration(e){e!=null&&this.isObjectProperty(e)?this.checkDeclaration(e.value):super.checkDeclaration(e);}getObjectOrClassMethodParams(e){return e.value.params}isValidDirective(e){var s;return e.type==="ExpressionStatement"&&e.expression.type==="Literal"&&typeof e.expression.value=="string"&&!((s=e.expression.extra)!=null&&s.parenthesized)}parseBlockBody(e){for(var s=arguments.length,r=new Array(s>1?s-1:0),i=1;i<s;i++)r[i-1]=arguments[i];super.parseBlockBody(e,...r);let a=e.directives.map(n=>this.directiveToStmt(n));e.body=a.concat(e.body),delete e.directives;}pushClassMethod(e,s,r,i,a,n){this.parseMethod(s,r,i,a,n,"ClassMethod",!0),s.typeParameters&&(s.value.typeParameters=s.typeParameters,delete s.typeParameters),e.body.push(s);}parsePrivateName(){let e=super.parsePrivateName();return this.getPluginOption("estree","classFeatures")?this.convertPrivateNameToPrivateIdentifier(e):e}convertPrivateNameToPrivateIdentifier(e){let s=super.getPrivateNameSV(e);return e=e,delete e.id,e.name=s,e.type="PrivateIdentifier",e}isPrivateName(e){return this.getPluginOption("estree","classFeatures")?e.type==="PrivateIdentifier":super.isPrivateName(e)}getPrivateNameSV(e){return this.getPluginOption("estree","classFeatures")?e.name:super.getPrivateNameSV(e)}parseLiteral(e,s){let r=super.parseLiteral(e,s);return r.raw=r.extra.raw,delete r.extra,r}parseFunctionBody(e,s){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;super.parseFunctionBody(e,s,r),e.expression=e.body.type!=="BlockStatement";}parseMethod(e,s,r,i,a,n){let o=arguments.length>6&&arguments[6]!==void 0?arguments[6]:!1,c=this.startNode();return c.kind=e.kind,c=super.parseMethod(c,s,r,i,a,n,o),c.type="FunctionExpression",delete c.kind,e.value=c,n==="ClassPrivateMethod"&&(e.computed=!1),n="MethodDefinition",this.finishNode(e,n)}parseClassProperty(){let e=super.parseClassProperty(...arguments);return this.getPluginOption("estree","classFeatures")&&(e.type="PropertyDefinition"),e}parseClassPrivateProperty(){let e=super.parseClassPrivateProperty(...arguments);return this.getPluginOption("estree","classFeatures")&&(e.type="PropertyDefinition",e.computed=!1),e}parseObjectMethod(e,s,r,i,a){let n=super.parseObjectMethod(e,s,r,i,a);return n&&(n.type="Property",n.kind==="method"&&(n.kind="init"),n.shorthand=!1),n}parseObjectProperty(e,s,r,i,a){let n=super.parseObjectProperty(e,s,r,i,a);return n&&(n.kind="init",n.type="Property"),n}isValidLVal(e){for(var s=arguments.length,r=new Array(s>1?s-1:0),i=1;i<s;i++)r[i-1]=arguments[i];return e==="Property"?"value":super.isValidLVal(e,...r)}isAssignable(e,s){return e!=null&&this.isObjectProperty(e)?this.isAssignable(e.value,s):super.isAssignable(e,s)}toAssignable(e){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(e!=null&&this.isObjectProperty(e)){let{key:r,value:i}=e;this.isPrivateName(r)&&this.classScope.usePrivateName(this.getPrivateNameSV(r),r.loc.start),this.toAssignable(i,s);}else super.toAssignable(e,s);}toAssignableObjectExpressionProp(e){e.kind==="get"||e.kind==="set"?this.raise(l.PatternHasAccessor,{at:e.key}):e.method?this.raise(l.PatternHasMethod,{at:e.key}):super.toAssignableObjectExpressionProp(...arguments);}finishCallExpression(e,s){if(super.finishCallExpression(e,s),e.callee.type==="Import"){if(e.type="ImportExpression",e.source=e.arguments[0],this.hasPlugin("importAssertions")){var r;e.attributes=(r=e.arguments[1])!=null?r:null;}delete e.arguments,delete e.callee;}return e}toReferencedArguments(e){e.type!=="ImportExpression"&&super.toReferencedArguments(e);}parseExport(e){switch(super.parseExport(e),e.type){case"ExportAllDeclaration":e.exported=null;break;case"ExportNamedDeclaration":e.specifiers.length===1&&e.specifiers[0].type==="ExportNamespaceSpecifier"&&(e.type="ExportAllDeclaration",e.exported=e.specifiers[0].exported,delete e.specifiers);break}return e}parseSubscript(e,s,r,i,a){let n=super.parseSubscript(e,s,r,i,a);if(a.optionalChainMember){if((n.type==="OptionalMemberExpression"||n.type==="OptionalCallExpression")&&(n.type=n.type.substring(8)),a.stop){let o=this.startNodeAtNode(n);return o.expression=n,this.finishNode(o,"ChainExpression")}}else (n.type==="MemberExpression"||n.type==="CallExpression")&&(n.optional=!1);return n}hasPropertyAsPrivateName(e){return e.type==="ChainExpression"&&(e=e.expression),super.hasPropertyAsPrivateName(e)}isOptionalChain(e){return e.type==="ChainExpression"}isObjectProperty(e){return e.type==="Property"&&e.kind==="init"&&!e.method}isObjectMethod(e){return e.method||e.kind==="get"||e.kind==="set"}finishNodeAt(e,s,r){return Q(super.finishNodeAt(e,s,r))}resetEndLocation(e){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.state.lastTokEndLoc;super.resetEndLocation(e,s),Q(e);}},ee=class{constructor(t,e){this.token=void 0,this.preserveSpace=void 0,this.token=t,this.preserveSpace=!!e;}},U={brace:new ee("{"),j_oTag:new ee("<tag"),j_cTag:new ee("</tag"),j_expr:new ee("<tag>...</tag>",!0)};U.template=new ee("`",!0);var O=!0,P=!0,De=!0,V=!0,$=!0,me=!0,ce=class{constructor(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.label=void 0,this.keyword=void 0,this.beforeExpr=void 0,this.startsExpr=void 0,this.rightAssociative=void 0,this.isLoop=void 0,this.isAssign=void 0,this.prefix=void 0,this.postfix=void 0,this.binop=void 0,this.label=t,this.keyword=e.keyword,this.beforeExpr=!!e.beforeExpr,this.startsExpr=!!e.startsExpr,this.rightAssociative=!!e.rightAssociative,this.isLoop=!!e.isLoop,this.isAssign=!!e.isAssign,this.prefix=!!e.prefix,this.postfix=!!e.postfix,this.binop=e.binop!=null?e.binop:null,this.updateContext=null;}},ae=new Map;function q(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};e.keyword=t;let s=w(t,e);return ae.set(t,s),s}function X(t,e){return w(t,{beforeExpr:O,binop:e})}var re=-1,ne=[],Ue=[],_e=[],oe=[],Je=[],Ye=[];function w(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};var s,r,i,a;return ++re,Ue.push(t),_e.push((s=e.binop)!=null?s:-1),oe.push((r=e.beforeExpr)!=null?r:!1),Je.push((i=e.startsExpr)!=null?i:!1),Ye.push((a=e.prefix)!=null?a:!1),ne.push(new ce(t,e)),re}function _(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};var s,r,i,a;return ++re,ae.set(t,re),Ue.push(t),_e.push((s=e.binop)!=null?s:-1),oe.push((r=e.beforeExpr)!=null?r:!1),Je.push((i=e.startsExpr)!=null?i:!1),Ye.push((a=e.prefix)!=null?a:!1),ne.push(new ce("name",e)),re}var co={bracketL:w("[",{beforeExpr:O,startsExpr:P}),bracketHashL:w("#[",{beforeExpr:O,startsExpr:P}),bracketBarL:w("[|",{beforeExpr:O,startsExpr:P}),bracketR:w("]"),bracketBarR:w("|]"),braceL:w("{",{beforeExpr:O,startsExpr:P}),braceBarL:w("{|",{beforeExpr:O,startsExpr:P}),braceHashL:w("#{",{beforeExpr:O,startsExpr:P}),braceR:w("}"),braceBarR:w("|}"),parenL:w("(",{beforeExpr:O,startsExpr:P}),parenR:w(")"),comma:w(",",{beforeExpr:O}),semi:w(";",{beforeExpr:O}),colon:w(":",{beforeExpr:O}),doubleColon:w("::",{beforeExpr:O}),dot:w("."),question:w("?",{beforeExpr:O}),questionDot:w("?."),arrow:w("=>",{beforeExpr:O}),template:w("template"),ellipsis:w("...",{beforeExpr:O}),backQuote:w("`",{startsExpr:P}),dollarBraceL:w("${",{beforeExpr:O,startsExpr:P}),templateTail:w("...`",{startsExpr:P}),templateNonTail:w("...${",{beforeExpr:O,startsExpr:P}),at:w("@"),hash:w("#",{startsExpr:P}),interpreterDirective:w("#!..."),eq:w("=",{beforeExpr:O,isAssign:V}),assign:w("_=",{beforeExpr:O,isAssign:V}),slashAssign:w("_=",{beforeExpr:O,isAssign:V}),xorAssign:w("_=",{beforeExpr:O,isAssign:V}),moduloAssign:w("_=",{beforeExpr:O,isAssign:V}),incDec:w("++/--",{prefix:$,postfix:me,startsExpr:P}),bang:w("!",{beforeExpr:O,prefix:$,startsExpr:P}),tilde:w("~",{beforeExpr:O,prefix:$,startsExpr:P}),doubleCaret:w("^^",{startsExpr:P}),doubleAt:w("@@",{startsExpr:P}),pipeline:X("|>",0),nullishCoalescing:X("??",1),logicalOR:X("||",1),logicalAND:X("&&",2),bitwiseOR:X("|",3),bitwiseXOR:X("^",4),bitwiseAND:X("&",5),equality:X("==/!=/===/!==",6),lt:X("</>/<=/>=",7),gt:X("</>/<=/>=",7),relational:X("</>/<=/>=",7),bitShift:X("<</>>/>>>",8),bitShiftL:X("<</>>/>>>",8),bitShiftR:X("<</>>/>>>",8),plusMin:w("+/-",{beforeExpr:O,binop:9,prefix:$,startsExpr:P}),modulo:w("%",{binop:10,startsExpr:P}),star:w("*",{binop:10}),slash:X("/",10),exponent:w("**",{beforeExpr:O,binop:11,rightAssociative:!0}),_in:q("in",{beforeExpr:O,binop:7}),_instanceof:q("instanceof",{beforeExpr:O,binop:7}),_break:q("break"),_case:q("case",{beforeExpr:O}),_catch:q("catch"),_continue:q("continue"),_debugger:q("debugger"),_default:q("default",{beforeExpr:O}),_else:q("else",{beforeExpr:O}),_finally:q("finally"),_function:q("function",{startsExpr:P}),_if:q("if"),_return:q("return",{beforeExpr:O}),_switch:q("switch"),_throw:q("throw",{beforeExpr:O,prefix:$,startsExpr:P}),_try:q("try"),_var:q("var"),_const:q("const"),_with:q("with"),_new:q("new",{beforeExpr:O,startsExpr:P}),_this:q("this",{startsExpr:P}),_super:q("super",{startsExpr:P}),_class:q("class",{startsExpr:P}),_extends:q("extends",{beforeExpr:O}),_export:q("export"),_import:q("import",{startsExpr:P}),_null:q("null",{startsExpr:P}),_true:q("true",{startsExpr:P}),_false:q("false",{startsExpr:P}),_typeof:q("typeof",{beforeExpr:O,prefix:$,startsExpr:P}),_void:q("void",{beforeExpr:O,prefix:$,startsExpr:P}),_delete:q("delete",{beforeExpr:O,prefix:$,startsExpr:P}),_do:q("do",{isLoop:De,beforeExpr:O}),_for:q("for",{isLoop:De}),_while:q("while",{isLoop:De}),_as:_("as",{startsExpr:P}),_assert:_("assert",{startsExpr:P}),_async:_("async",{startsExpr:P}),_await:_("await",{startsExpr:P}),_from:_("from",{startsExpr:P}),_get:_("get",{startsExpr:P}),_let:_("let",{startsExpr:P}),_meta:_("meta",{startsExpr:P}),_of:_("of",{startsExpr:P}),_sent:_("sent",{startsExpr:P}),_set:_("set",{startsExpr:P}),_static:_("static",{startsExpr:P}),_yield:_("yield",{startsExpr:P}),_asserts:_("asserts",{startsExpr:P}),_checks:_("checks",{startsExpr:P}),_exports:_("exports",{startsExpr:P}),_global:_("global",{startsExpr:P}),_implements:_("implements",{startsExpr:P}),_intrinsic:_("intrinsic",{startsExpr:P}),_infer:_("infer",{startsExpr:P}),_is:_("is",{startsExpr:P}),_mixins:_("mixins",{startsExpr:P}),_proto:_("proto",{startsExpr:P}),_require:_("require",{startsExpr:P}),_keyof:_("keyof",{startsExpr:P}),_readonly:_("readonly",{startsExpr:P}),_unique:_("unique",{startsExpr:P}),_abstract:_("abstract",{startsExpr:P}),_declare:_("declare",{startsExpr:P}),_enum:_("enum",{startsExpr:P}),_module:_("module",{startsExpr:P}),_namespace:_("namespace",{startsExpr:P}),_interface:_("interface",{startsExpr:P}),_type:_("type",{startsExpr:P}),_opaque:_("opaque",{startsExpr:P}),name:w("name",{startsExpr:P}),string:w("string",{startsExpr:P}),num:w("num",{startsExpr:P}),bigint:w("bigint",{startsExpr:P}),decimal:w("decimal",{startsExpr:P}),regexp:w("regexp",{startsExpr:P}),privateName:w("#name",{startsExpr:P}),eof:w("eof"),jsxName:w("jsxName"),jsxText:w("jsxText",{beforeExpr:!0}),jsxTagStart:w("jsxTagStart",{startsExpr:!0}),jsxTagEnd:w("jsxTagEnd"),placeholder:w("%%",{startsExpr:!0})};function K(t){return t>=93&&t<=128}function po(t){return t<=92}function ye(t){return t>=58&&t<=128}function nr(t){return t>=58&&t<=132}function fo(t){return oe[t]}function Kt(t){return Je[t]}function mo(t){return t>=29&&t<=33}function or(t){return t>=125&&t<=127}function yo(t){return t>=90&&t<=92}function Vt(t){return t>=58&&t<=92}function xo(t){return t>=39&&t<=59}function go(t){return t===34}function Ao(t){return Ye[t]}function Po(t){return t>=117&&t<=119}function To(t){return t>=120&&t<=126}function ve(t){return Ue[t]}function lt(t){return _e[t]}function Eo(t){return _e[t]!==-1}function bo(t){return t===57}function ut(t){return t>=24&&t<=25}function xe(t){return ne[t]}ne[8].updateContext=t=>{t.pop();},ne[5].updateContext=ne[7].updateContext=ne[23].updateContext=t=>{t.push(U.brace);},ne[22].updateContext=t=>{t[t.length-1]===U.template?t.pop():t.push(U.template);},ne[138].updateContext=t=>{t.push(U.j_expr,U.j_oTag);};var Ht="\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC",hr="\u200C\u200D\xB7\u0300-\u036F\u0387\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u0669\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u06F0-\u06F9\u0711\u0730-\u074A\u07A6-\u07B0\u07C0-\u07C9\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u0898-\u089F\u08CA-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0966-\u096F\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09E6-\u09EF\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A66-\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AE6-\u0AEF\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B62\u0B63\u0B66-\u0B6F\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE6-\u0BEF\u0C00-\u0C04\u0C3C\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0CE6-\u0CEF\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D66-\u0D6F\u0D81-\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0E50-\u0E59\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECD\u0ED0-\u0ED9\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1040-\u1049\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109D\u135D-\u135F\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u17E0-\u17E9\u180B-\u180D\u180F-\u1819\u18A9\u1920-\u192B\u1930-\u193B\u1946-\u194F\u19D0-\u19DA\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AB0-\u1ABD\u1ABF-\u1ACE\u1B00-\u1B04\u1B34-\u1B44\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BF3\u1C24-\u1C37\u1C40-\u1C49\u1C50-\u1C59\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DFF\u203F\u2040\u2054\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA620-\uA629\uA66F\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA82C\uA880\uA881\uA8B4-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F1\uA8FF-\uA909\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9D0-\uA9D9\uA9E5\uA9F0-\uA9F9\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA50-\uAA59\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uABF0-\uABF9\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFF10-\uFF19\uFF3F",Co=new RegExp("["+Ht+"]"),vo=new RegExp("["+Ht+hr+"]");Ht=hr=null;var lr=[0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,68,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,349,41,7,1,79,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,264,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,190,0,80,921,103,110,18,195,2637,96,16,1070,4050,582,8634,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,689,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,43,8,8936,3,2,6,2,1,2,290,46,2,18,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,482,44,11,6,17,0,322,29,19,43,1269,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4152,8,221,3,5761,15,7472,3104,541,1507,4938],So=[509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,370,1,154,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,161,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,406,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,19306,9,87,9,39,4,60,6,26,9,1014,0,2,54,8,3,82,0,12,1,19628,1,4706,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,262,6,10,9,357,0,62,13,1495,6,110,6,6,9,4759,9,787719,239];function Wt(t,e){let s=65536;for(let r=0,i=e.length;r<i;r+=2){if(s+=e[r],s>t)return !1;if(s+=e[r+1],s>=t)return !0}return !1}function ge(t){return t<65?t===36:t<=90?!0:t<97?t===95:t<=122?!0:t<=65535?t>=170&&Co.test(String.fromCharCode(t)):Wt(t,lr)}function ze(t){return t<48?t===36:t<58?!0:t<65?!1:t<=90?!0:t<97?t===95:t<=122?!0:t<=65535?t>=170&&vo.test(String.fromCharCode(t)):Wt(t,lr)||Wt(t,So)}var Gt={keyword:["break","case","catch","continue","debugger","default","do","else","finally","for","function","if","return","switch","throw","try","var","const","while","with","new","this","super","class","extends","export","import","null","true","false","in","instanceof","typeof","void","delete"],strict:["implements","interface","let","package","private","protected","public","static","yield"],strictBind:["eval","arguments"]},wo=new Set(Gt.keyword),No=new Set(Gt.strict),Io=new Set(Gt.strictBind);function ur(t,e){return e&&t==="await"||t==="enum"}function cr(t,e){return ur(t,e)||No.has(t)}function pr(t){return Io.has(t)}function fr(t,e){return cr(t,e)||pr(t)}function ko(t){return wo.has(t)}function Do(t,e,s){return t===64&&e===64&&ge(s)}var Fo=new Set(["break","case","catch","continue","debugger","default","do","else","finally","for","function","if","return","switch","throw","try","var","const","while","with","new","this","super","class","extends","export","import","null","true","false","in","instanceof","typeof","void","delete","implements","interface","let","package","private","protected","public","static","yield","eval","arguments","enum","await"]);function Lo(t){return Fo.has(t)}var Ke=0,$e=1,Ae=2,Xt=4,dr=8,ct=16,mr=32,Fe=64,Jt=128,pt=256,ft=$e|Ae|pt,Pe=1,Ve=2,yr=4,Se=8,dt=16,xr=64,mt=128,Yt=256,$t=512,Qt=1024,Zt=2048,gr=Pe|Ve|Se|mt,Te=Pe|0|Se|0,yt=Pe|0|yr|0,Ar=Pe|0|dt|0,Oo=0|Ve|0|mt,Bo=0|Ve|0|0,Pr=Pe|Ve|Se|Yt,Tr=0|Qt,Le=0|xr,Mo=Pe|0|0|xr,Ro=Pr|$t,jo=0|Qt,qo=Zt,xt=4,es=2,ts=1,ss=es|ts,Uo=es|xt,_o=ts|xt,zo=es,Ko=ts,rs=0,Vo=class{constructor(){this.sawUnambiguousESM=!1,this.ambiguousScriptDifferentAst=!1;}hasPlugin(t){if(typeof t=="string")return this.plugins.has(t);{let[e,s]=t;if(!this.hasPlugin(e))return !1;let r=this.plugins.get(e);for(let i of Object.keys(s))if((r==null?void 0:r[i])!==s[i])return !1;return !0}}getPluginOption(t,e){var s;return (s=this.plugins.get(t))==null?void 0:s[e]}};function Er(t,e){t.trailingComments===void 0?t.trailingComments=e:t.trailingComments.unshift(...e);}function Ho(t,e){t.leadingComments===void 0?t.leadingComments=e:t.leadingComments.unshift(...e);}function Qe(t,e){t.innerComments===void 0?t.innerComments=e:t.innerComments.unshift(...e);}function Ze(t,e,s){let r=null,i=e.length;for(;r===null&&i>0;)r=e[--i];r===null||r.start>s.start?Qe(t,s.comments):Er(r,s.comments);}var Wo=class extends Vo{addComment(t){this.filename&&(t.loc.filename=this.filename),this.state.comments.push(t);}processComment(t){let{commentStack:e}=this.state,s=e.length;if(s===0)return;let r=s-1,i=e[r];i.start===t.end&&(i.leadingNode=t,r--);let{start:a}=t;for(;r>=0;r--){let n=e[r],o=n.end;if(o>a)n.containingNode=t,this.finalizeComment(n),e.splice(r,1);else {o===a&&(n.trailingNode=t);break}}}finalizeComment(t){let{comments:e}=t;if(t.leadingNode!==null||t.trailingNode!==null)t.leadingNode!==null&&Er(t.leadingNode,e),t.trailingNode!==null&&Ho(t.trailingNode,e);else {let{containingNode:s,start:r}=t;if(this.input.charCodeAt(r-1)===44)switch(s.type){case"ObjectExpression":case"ObjectPattern":case"RecordExpression":Ze(s,s.properties,t);break;case"CallExpression":case"OptionalCallExpression":Ze(s,s.arguments,t);break;case"FunctionDeclaration":case"FunctionExpression":case"ArrowFunctionExpression":case"ObjectMethod":case"ClassMethod":case"ClassPrivateMethod":Ze(s,s.params,t);break;case"ArrayExpression":case"ArrayPattern":case"TupleExpression":Ze(s,s.elements,t);break;case"ExportNamedDeclaration":case"ImportDeclaration":Ze(s,s.specifiers,t);break;default:Qe(s,e);}else Qe(s,e);}}finalizeRemainingComments(){let{commentStack:t}=this.state;for(let e=t.length-1;e>=0;e--)this.finalizeComment(t[e]);this.state.commentStack=[];}resetPreviousNodeTrailingComments(t){let{commentStack:e}=this.state,{length:s}=e;if(s===0)return;let r=e[s-1];r.leadingNode===t&&(r.leadingNode=null);}takeSurroundingComments(t,e,s){let{commentStack:r}=this.state,i=r.length;if(i===0)return;let a=i-1;for(;a>=0;a--){let n=r[a],o=n.end;if(n.start===s)n.leadingNode=t;else if(o===e)n.trailingNode=t;else if(o<e)break}}},is=/\r\n?|[\n\u2028\u2029]/,gt=new RegExp(is.source,"g");function Oe(t){switch(t){case 10:case 13:case 8232:case 8233:return !0;default:return !1}}var as=/(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g,Go=/(?:[^\S\n\r\u2028\u2029]|\/\/.*|\/\*.*?\*\/)*/y,br=new RegExp("(?=("+Go.source+"))\\1"+/(?=[\n\r\u2028\u2029]|\/\*(?!.*?\*\/)|$)/.source,"y");function Xo(t){switch(t){case 9:case 11:case 12:case 32:case 160:case 5760:case 8192:case 8193:case 8194:case 8195:case 8196:case 8197:case 8198:case 8199:case 8200:case 8201:case 8202:case 8239:case 8287:case 12288:case 65279:return !0;default:return !1}}var Cr=class{constructor(){this.strict=void 0,this.curLine=void 0,this.lineStart=void 0,this.startLoc=void 0,this.endLoc=void 0,this.errors=[],this.potentialArrowAt=-1,this.noArrowAt=[],this.noArrowParamsConversionAt=[],this.maybeInArrowParameters=!1,this.inType=!1,this.noAnonFunctionType=!1,this.hasFlowComment=!1,this.isAmbientContext=!1,this.inAbstractClass=!1,this.inDisallowConditionalTypesContext=!1,this.topicContext={maxNumOfResolvableTopics:0,maxTopicIndex:null},this.soloAwait=!1,this.inFSharpPipelineDirectBody=!1,this.labels=[],this.decoratorStack=[[]],this.comments=[],this.commentStack=[],this.pos=0,this.type=135,this.value=null,this.start=0,this.end=0,this.lastTokEndLoc=null,this.lastTokStartLoc=null,this.lastTokStart=0,this.context=[U.brace],this.canStartJSXElement=!0,this.containsEsc=!1,this.strictErrors=new Map,this.tokensLength=0;}init(t){let{strictMode:e,sourceType:s,startLine:r,startColumn:i}=t;this.strict=e===!1?!1:e===!0?!0:s==="module",this.curLine=r,this.lineStart=-i,this.startLoc=this.endLoc=new p(r,i,0);}curPosition(){return new p(this.curLine,this.pos-this.lineStart,this.pos)}clone(t){let e=new Cr,s=Object.keys(this);for(let r=0,i=s.length;r<i;r++){let a=s[r],n=this[a];!t&&Array.isArray(n)&&(n=n.slice()),e[a]=n;}return e}},Jo=["at"],Yo=["at"],$o=function(e){return e>=48&&e<=57},Qo=new Set([103,109,115,105,121,117,100,118]),vr={decBinOct:new Set([46,66,69,79,95,98,101,111]),hex:new Set([46,88,95,120])},At={bin:t=>t===48||t===49,oct:t=>t>=48&&t<=55,dec:t=>t>=48&&t<=57,hex:t=>t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102},we=class{constructor(t){this.type=t.type,this.value=t.value,this.start=t.start,this.end=t.end,this.loc=new d(t.startLoc,t.endLoc);}},Zo=class extends Wo{constructor(t,e){super(),this.isLookahead=void 0,this.tokens=[],this.state=new Cr,this.state.init(t),this.input=e,this.length=e.length,this.isLookahead=!1;}pushToken(t){this.tokens.length=this.state.tokensLength,this.tokens.push(t),++this.state.tokensLength;}next(){this.checkKeywordEscapes(),this.options.tokens&&this.pushToken(new we(this.state)),this.state.lastTokStart=this.state.start,this.state.lastTokEndLoc=this.state.endLoc,this.state.lastTokStartLoc=this.state.startLoc,this.nextToken();}eat(t){return this.match(t)?(this.next(),!0):!1}match(t){return this.state.type===t}createLookaheadState(t){return {pos:t.pos,value:null,type:t.type,start:t.start,end:t.end,context:[this.curContext()],inType:t.inType,startLoc:t.startLoc,lastTokEndLoc:t.lastTokEndLoc,curLine:t.curLine,lineStart:t.lineStart,curPosition:t.curPosition}}lookahead(){let t=this.state;this.state=this.createLookaheadState(t),this.isLookahead=!0,this.nextToken(),this.isLookahead=!1;let e=this.state;return this.state=t,e}nextTokenStart(){return this.nextTokenStartSince(this.state.pos)}nextTokenStartSince(t){return as.lastIndex=t,as.test(this.input)?as.lastIndex:t}lookaheadCharCode(){return this.input.charCodeAt(this.nextTokenStart())}codePointAtPos(t){let e=this.input.charCodeAt(t);if((e&64512)===55296&&++t<this.input.length){let s=this.input.charCodeAt(t);(s&64512)===56320&&(e=65536+((e&1023)<<10)+(s&1023));}return e}setStrict(t){this.state.strict=t,t&&(this.state.strictErrors.forEach(e=>{let[s,r]=e;return this.raise(s,{at:r})}),this.state.strictErrors.clear());}curContext(){return this.state.context[this.state.context.length-1]}nextToken(){if(this.skipSpace(),this.state.start=this.state.pos,this.isLookahead||(this.state.startLoc=this.state.curPosition()),this.state.pos>=this.length){this.finishToken(135);return}this.getTokenFromCode(this.codePointAtPos(this.state.pos));}skipBlockComment(){let t;this.isLookahead||(t=this.state.curPosition());let e=this.state.pos,s=this.input.indexOf("*/",e+2);if(s===-1)throw this.raise(l.UnterminatedComment,{at:this.state.curPosition()});for(this.state.pos=s+2,gt.lastIndex=e+2;gt.test(this.input)&>.lastIndex<=s;)++this.state.curLine,this.state.lineStart=gt.lastIndex;if(this.isLookahead)return;let r={type:"CommentBlock",value:this.input.slice(e+2,s),start:e,end:s+2,loc:new d(t,this.state.curPosition())};return this.options.tokens&&this.pushToken(r),r}skipLineComment(t){let e=this.state.pos,s;this.isLookahead||(s=this.state.curPosition());let r=this.input.charCodeAt(this.state.pos+=t);if(this.state.pos<this.length)for(;!Oe(r)&&++this.state.pos<this.length;)r=this.input.charCodeAt(this.state.pos);if(this.isLookahead)return;let i=this.state.pos,a=this.input.slice(e+t,i),n={type:"CommentLine",value:a,start:e,end:i,loc:new d(s,this.state.curPosition())};return this.options.tokens&&this.pushToken(n),n}skipSpace(){let t=this.state.pos,e=[];e:for(;this.state.pos<this.length;){let s=this.input.charCodeAt(this.state.pos);switch(s){case 32:case 160:case 9:++this.state.pos;break;case 13:this.input.charCodeAt(this.state.pos+1)===10&&++this.state.pos;case 10:case 8232:case 8233:++this.state.pos,++this.state.curLine,this.state.lineStart=this.state.pos;break;case 47:switch(this.input.charCodeAt(this.state.pos+1)){case 42:{let r=this.skipBlockComment();r!==void 0&&(this.addComment(r),this.options.attachComment&&e.push(r));break}case 47:{let r=this.skipLineComment(2);r!==void 0&&(this.addComment(r),this.options.attachComment&&e.push(r));break}default:break e}break;default:if(Xo(s))++this.state.pos;else if(s===45&&!this.inModule){let r=this.state.pos;if(this.input.charCodeAt(r+1)===45&&this.input.charCodeAt(r+2)===62&&(t===0||this.state.lineStart>t)){let i=this.skipLineComment(3);i!==void 0&&(this.addComment(i),this.options.attachComment&&e.push(i));}else break e}else if(s===60&&!this.inModule){let r=this.state.pos;if(this.input.charCodeAt(r+1)===33&&this.input.charCodeAt(r+2)===45&&this.input.charCodeAt(r+3)===45){let i=this.skipLineComment(4);i!==void 0&&(this.addComment(i),this.options.attachComment&&e.push(i));}else break e}else break e}}if(e.length>0){let s=this.state.pos,r={start:t,end:s,comments:e,leadingNode:null,trailingNode:null,containingNode:null};this.state.commentStack.push(r);}}finishToken(t,e){this.state.end=this.state.pos,this.state.endLoc=this.state.curPosition();let s=this.state.type;this.state.type=t,this.state.value=e,this.isLookahead||this.updateContext(s);}replaceToken(t){this.state.type=t,this.updateContext();}readToken_numberSign(){if(this.state.pos===0&&this.readToken_interpreter())return;let t=this.state.pos+1,e=this.codePointAtPos(t);if(e>=48&&e<=57)throw this.raise(l.UnexpectedDigitAfterHash,{at:this.state.curPosition()});if(e===123||e===91&&this.hasPlugin("recordAndTuple")){if(this.expectPlugin("recordAndTuple"),this.getPluginOption("recordAndTuple","syntaxType")!=="hash")throw this.raise(e===123?l.RecordExpressionHashIncorrectStartSyntaxType:l.TupleExpressionHashIncorrectStartSyntaxType,{at:this.state.curPosition()});this.state.pos+=2,e===123?this.finishToken(7):this.finishToken(1);}else ge(e)?(++this.state.pos,this.finishToken(134,this.readWord1(e))):e===92?(++this.state.pos,this.finishToken(134,this.readWord1())):this.finishOp(27,1);}readToken_dot(){let t=this.input.charCodeAt(this.state.pos+1);if(t>=48&&t<=57){this.readNumber(!0);return}t===46&&this.input.charCodeAt(this.state.pos+2)===46?(this.state.pos+=3,this.finishToken(21)):(++this.state.pos,this.finishToken(16));}readToken_slash(){this.input.charCodeAt(this.state.pos+1)===61?this.finishOp(31,2):this.finishOp(56,1);}readToken_interpreter(){if(this.state.pos!==0||this.length<2)return !1;let t=this.input.charCodeAt(this.state.pos+1);if(t!==33)return !1;let e=this.state.pos;for(this.state.pos+=1;!Oe(t)&&++this.state.pos<this.length;)t=this.input.charCodeAt(this.state.pos);let s=this.input.slice(e+2,this.state.pos);return this.finishToken(28,s),!0}readToken_mult_modulo(t){let e=t===42?55:54,s=1,r=this.input.charCodeAt(this.state.pos+1);t===42&&r===42&&(s++,r=this.input.charCodeAt(this.state.pos+2),e=57),r===61&&!this.state.inType&&(s++,e=t===37?33:30),this.finishOp(e,s);}readToken_pipe_amp(t){let e=this.input.charCodeAt(this.state.pos+1);if(e===t){this.input.charCodeAt(this.state.pos+2)===61?this.finishOp(30,3):this.finishOp(t===124?41:42,2);return}if(t===124){if(e===62){this.finishOp(39,2);return}if(this.hasPlugin("recordAndTuple")&&e===125){if(this.getPluginOption("recordAndTuple","syntaxType")!=="bar")throw this.raise(l.RecordExpressionBarIncorrectEndSyntaxType,{at:this.state.curPosition()});this.state.pos+=2,this.finishToken(9);return}if(this.hasPlugin("recordAndTuple")&&e===93){if(this.getPluginOption("recordAndTuple","syntaxType")!=="bar")throw this.raise(l.TupleExpressionBarIncorrectEndSyntaxType,{at:this.state.curPosition()});this.state.pos+=2,this.finishToken(4);return}}if(e===61){this.finishOp(30,2);return}this.finishOp(t===124?43:45,1);}readToken_caret(){let t=this.input.charCodeAt(this.state.pos+1);if(t===61&&!this.state.inType)this.finishOp(32,2);else if(t===94&&this.hasPlugin(["pipelineOperator",{proposal:"hack",topicToken:"^^"}])){if(this.finishOp(37,2),this.input.codePointAt(this.state.pos)===94)throw this.unexpected()}else this.finishOp(44,1);}readToken_atSign(){this.input.charCodeAt(this.state.pos+1)===64&&this.hasPlugin(["pipelineOperator",{proposal:"hack",topicToken:"@@"}])?this.finishOp(38,2):this.finishOp(26,1);}readToken_plus_min(t){let e=this.input.charCodeAt(this.state.pos+1);if(e===t){this.finishOp(34,2);return}e===61?this.finishOp(30,2):this.finishOp(53,1);}readToken_lt(){let{pos:t}=this.state,e=this.input.charCodeAt(t+1);if(e===60){if(this.input.charCodeAt(t+2)===61){this.finishOp(30,3);return}this.finishOp(51,2);return}if(e===61){this.finishOp(49,2);return}this.finishOp(47,1);}readToken_gt(){let{pos:t}=this.state,e=this.input.charCodeAt(t+1);if(e===62){let s=this.input.charCodeAt(t+2)===62?3:2;if(this.input.charCodeAt(t+s)===61){this.finishOp(30,s+1);return}this.finishOp(52,s);return}if(e===61){this.finishOp(49,2);return}this.finishOp(48,1);}readToken_eq_excl(t){let e=this.input.charCodeAt(this.state.pos+1);if(e===61){this.finishOp(46,this.input.charCodeAt(this.state.pos+2)===61?3:2);return}if(t===61&&e===62){this.state.pos+=2,this.finishToken(19);return}this.finishOp(t===61?29:35,1);}readToken_question(){let t=this.input.charCodeAt(this.state.pos+1),e=this.input.charCodeAt(this.state.pos+2);t===63?e===61?this.finishOp(30,3):this.finishOp(40,2):t===46&&!(e>=48&&e<=57)?(this.state.pos+=2,this.finishToken(18)):(++this.state.pos,this.finishToken(17));}getTokenFromCode(t){switch(t){case 46:this.readToken_dot();return;case 40:++this.state.pos,this.finishToken(10);return;case 41:++this.state.pos,this.finishToken(11);return;case 59:++this.state.pos,this.finishToken(13);return;case 44:++this.state.pos,this.finishToken(12);return;case 91:if(this.hasPlugin("recordAndTuple")&&this.input.charCodeAt(this.state.pos+1)===124){if(this.getPluginOption("recordAndTuple","syntaxType")!=="bar")throw this.raise(l.TupleExpressionBarIncorrectStartSyntaxType,{at:this.state.curPosition()});this.state.pos+=2,this.finishToken(2);}else ++this.state.pos,this.finishToken(0);return;case 93:++this.state.pos,this.finishToken(3);return;case 123:if(this.hasPlugin("recordAndTuple")&&this.input.charCodeAt(this.state.pos+1)===124){if(this.getPluginOption("recordAndTuple","syntaxType")!=="bar")throw this.raise(l.RecordExpressionBarIncorrectStartSyntaxType,{at:this.state.curPosition()});this.state.pos+=2,this.finishToken(6);}else ++this.state.pos,this.finishToken(5);return;case 125:++this.state.pos,this.finishToken(8);return;case 58:this.hasPlugin("functionBind")&&this.input.charCodeAt(this.state.pos+1)===58?this.finishOp(15,2):(++this.state.pos,this.finishToken(14));return;case 63:this.readToken_question();return;case 96:this.readTemplateToken();return;case 48:{let e=this.input.charCodeAt(this.state.pos+1);if(e===120||e===88){this.readRadixNumber(16);return}if(e===111||e===79){this.readRadixNumber(8);return}if(e===98||e===66){this.readRadixNumber(2);return}}case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:this.readNumber(!1);return;case 34:case 39:this.readString(t);return;case 47:this.readToken_slash();return;case 37:case 42:this.readToken_mult_modulo(t);return;case 124:case 38:this.readToken_pipe_amp(t);return;case 94:this.readToken_caret();return;case 43:case 45:this.readToken_plus_min(t);return;case 60:this.readToken_lt();return;case 62:this.readToken_gt();return;case 61:case 33:this.readToken_eq_excl(t);return;case 126:this.finishOp(36,1);return;case 64:this.readToken_atSign();return;case 35:this.readToken_numberSign();return;case 92:this.readWord();return;default:if(ge(t)){this.readWord(t);return}}throw this.raise(l.InvalidOrUnexpectedToken,{at:this.state.curPosition(),unexpected:String.fromCodePoint(t)})}finishOp(t,e){let s=this.input.slice(this.state.pos,this.state.pos+e);this.state.pos+=e,this.finishToken(t,s);}readRegexp(){let t=this.state.startLoc,e=this.state.start+1,s,r,{pos:i}=this.state;for(;;++i){if(i>=this.length)throw this.raise(l.UnterminatedRegExp,{at:m(t,1)});let c=this.input.charCodeAt(i);if(Oe(c))throw this.raise(l.UnterminatedRegExp,{at:m(t,1)});if(s)s=!1;else {if(c===91)r=!0;else if(c===93&&r)r=!1;else if(c===47&&!r)break;s=c===92;}}let a=this.input.slice(e,i);++i;let n="",o=()=>m(t,i+2-e);for(;i<this.length;){let c=this.codePointAtPos(i),f=String.fromCharCode(c);if(Qo.has(c))c===118?(this.expectPlugin("regexpUnicodeSets",o()),n.includes("u")&&this.raise(l.IncompatibleRegExpUVFlags,{at:o()})):c===117&&n.includes("v")&&this.raise(l.IncompatibleRegExpUVFlags,{at:o()}),n.includes(f)&&this.raise(l.DuplicateRegExpFlags,{at:o()});else if(ze(c)||c===92)this.raise(l.MalformedRegExpFlags,{at:o()});else break;++i,n+=f;}this.state.pos=i,this.finishToken(133,{pattern:a,flags:n});}readInt(t,e,s){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=this.state.pos,a=t===16?vr.hex:vr.decBinOct,n=t===16?At.hex:t===10?At.dec:t===8?At.oct:At.bin,o=!1,c=0;for(let f=0,y=e==null?1/0:e;f<y;++f){let T=this.input.charCodeAt(this.state.pos),v;if(T===95&&r!=="bail"){let N=this.input.charCodeAt(this.state.pos-1),R=this.input.charCodeAt(this.state.pos+1);r?(Number.isNaN(R)||!n(R)||a.has(N)||a.has(R))&&this.raise(l.UnexpectedNumericSeparator,{at:this.state.curPosition()}):this.raise(l.NumericSeparatorInEscapeSequence,{at:this.state.curPosition()}),++this.state.pos;continue}if(T>=97?v=T-97+10:T>=65?v=T-65+10:$o(T)?v=T-48:v=1/0,v>=t)if(this.options.errorRecovery&&v<=9)v=0,this.raise(l.InvalidDigit,{at:this.state.curPosition(),radix:t});else if(s)v=0,o=!0;else break;++this.state.pos,c=c*t+v;}return this.state.pos===i||e!=null&&this.state.pos-i!==e||o?null:c}readRadixNumber(t){let e=this.state.curPosition(),s=!1;this.state.pos+=2;let r=this.readInt(t);r==null&&this.raise(l.InvalidDigit,{at:m(e,2),radix:t});let i=this.input.charCodeAt(this.state.pos);if(i===110)++this.state.pos,s=!0;else if(i===109)throw this.raise(l.InvalidDecimal,{at:e});if(ge(this.codePointAtPos(this.state.pos)))throw this.raise(l.NumberIdentifier,{at:this.state.curPosition()});if(s){let a=this.input.slice(e.index,this.state.pos).replace(/[_n]/g,"");this.finishToken(131,a);return}this.finishToken(130,r);}readNumber(t){let e=this.state.pos,s=this.state.curPosition(),r=!1,i=!1,a=!1,n=!1,o=!1;!t&&this.readInt(10)===null&&this.raise(l.InvalidNumber,{at:this.state.curPosition()});let c=this.state.pos-e>=2&&this.input.charCodeAt(e)===48;if(c){let v=this.input.slice(e,this.state.pos);if(this.recordStrictModeErrors(l.StrictOctalLiteral,{at:s}),!this.state.strict){let N=v.indexOf("_");N>0&&this.raise(l.ZeroDigitNumericSeparator,{at:m(s,N)});}o=c&&!/[89]/.test(v);}let f=this.input.charCodeAt(this.state.pos);if(f===46&&!o&&(++this.state.pos,this.readInt(10),r=!0,f=this.input.charCodeAt(this.state.pos)),(f===69||f===101)&&!o&&(f=this.input.charCodeAt(++this.state.pos),(f===43||f===45)&&++this.state.pos,this.readInt(10)===null&&this.raise(l.InvalidOrMissingExponent,{at:s}),r=!0,n=!0,f=this.input.charCodeAt(this.state.pos)),f===110&&((r||c)&&this.raise(l.InvalidBigIntLiteral,{at:s}),++this.state.pos,i=!0),f===109&&(this.expectPlugin("decimal",this.state.curPosition()),(n||c)&&this.raise(l.InvalidDecimal,{at:s}),++this.state.pos,a=!0),ge(this.codePointAtPos(this.state.pos)))throw this.raise(l.NumberIdentifier,{at:this.state.curPosition()});let y=this.input.slice(e,this.state.pos).replace(/[_mn]/g,"");if(i){this.finishToken(131,y);return}if(a){this.finishToken(132,y);return}let T=o?parseInt(y,8):parseFloat(y);this.finishToken(130,T);}readCodePoint(t){let e=this.input.charCodeAt(this.state.pos),s;if(e===123){if(++this.state.pos,s=this.readHexChar(this.input.indexOf("}",this.state.pos)-this.state.pos,!0,t),++this.state.pos,s!==null&&s>1114111)if(t)this.raise(l.InvalidCodePoint,{at:this.state.curPosition()});else return null}else s=this.readHexChar(4,!1,t);return s}readString(t){let e="",s=++this.state.pos;for(;;){if(this.state.pos>=this.length)throw this.raise(l.UnterminatedString,{at:this.state.startLoc});let r=this.input.charCodeAt(this.state.pos);if(r===t)break;if(r===92)e+=this.input.slice(s,this.state.pos),e+=this.readEscapedChar(!1),s=this.state.pos;else if(r===8232||r===8233)++this.state.pos,++this.state.curLine,this.state.lineStart=this.state.pos;else {if(Oe(r))throw this.raise(l.UnterminatedString,{at:this.state.startLoc});++this.state.pos;}}e+=this.input.slice(s,this.state.pos++),this.finishToken(129,e);}readTemplateContinuation(){this.match(8)||this.unexpected(null,8),this.state.pos--,this.readTemplateToken();}readTemplateToken(){let t="",e=this.state.pos,s=!1;for(++this.state.pos;;){if(this.state.pos>=this.length)throw this.raise(l.UnterminatedTemplate,{at:m(this.state.startLoc,1)});let r=this.input.charCodeAt(this.state.pos);if(r===96){++this.state.pos,t+=this.input.slice(e,this.state.pos),this.finishToken(24,s?null:t);return}if(r===36&&this.input.charCodeAt(this.state.pos+1)===123){this.state.pos+=2,t+=this.input.slice(e,this.state.pos),this.finishToken(25,s?null:t);return}if(r===92){t+=this.input.slice(e,this.state.pos);let i=this.readEscapedChar(!0);i===null?s=!0:t+=i,e=this.state.pos;}else if(Oe(r)){switch(t+=this.input.slice(e,this.state.pos),++this.state.pos,r){case 13:this.input.charCodeAt(this.state.pos)===10&&++this.state.pos;case 10:t+=` -`;break;default:t+=String.fromCharCode(r);break}++this.state.curLine,this.state.lineStart=this.state.pos,e=this.state.pos;}else ++this.state.pos;}}recordStrictModeErrors(t,e){let{at:s}=e,r=s.index;this.state.strict&&!this.state.strictErrors.has(r)?this.raise(t,{at:s}):this.state.strictErrors.set(r,[t,s]);}readEscapedChar(t){let e=!t,s=this.input.charCodeAt(++this.state.pos);switch(++this.state.pos,s){case 110:return ` -`;case 114:return "\r";case 120:{let r=this.readHexChar(2,!1,e);return r===null?null:String.fromCharCode(r)}case 117:{let r=this.readCodePoint(e);return r===null?null:String.fromCodePoint(r)}case 116:return " ";case 98:return "\b";case 118:return "\v";case 102:return "\f";case 13:this.input.charCodeAt(this.state.pos)===10&&++this.state.pos;case 10:this.state.lineStart=this.state.pos,++this.state.curLine;case 8232:case 8233:return "";case 56:case 57:if(t)return null;this.recordStrictModeErrors(l.StrictNumericEscape,{at:m(this.state.curPosition(),-1)});default:if(s>=48&&s<=55){let r=m(this.state.curPosition(),-1),a=this.input.slice(this.state.pos-1,this.state.pos+2).match(/^[0-7]+/)[0],n=parseInt(a,8);n>255&&(a=a.slice(0,-1),n=parseInt(a,8)),this.state.pos+=a.length-1;let o=this.input.charCodeAt(this.state.pos);if(a!=="0"||o===56||o===57){if(t)return null;this.recordStrictModeErrors(l.StrictNumericEscape,{at:r});}return String.fromCharCode(n)}return String.fromCharCode(s)}}readHexChar(t,e,s){let r=this.state.curPosition(),i=this.readInt(16,t,e,!1);return i===null&&(s?this.raise(l.InvalidEscapeSequence,{at:r}):this.state.pos=r.index-1),i}readWord1(t){this.state.containsEsc=!1;let e="",s=this.state.pos,r=this.state.pos;for(t!==void 0&&(this.state.pos+=t<=65535?1:2);this.state.pos<this.length;){let i=this.codePointAtPos(this.state.pos);if(ze(i))this.state.pos+=i<=65535?1:2;else if(i===92){this.state.containsEsc=!0,e+=this.input.slice(r,this.state.pos);let a=this.state.curPosition(),n=this.state.pos===s?ge:ze;if(this.input.charCodeAt(++this.state.pos)!==117){this.raise(l.MissingUnicodeEscape,{at:this.state.curPosition()}),r=this.state.pos-1;continue}++this.state.pos;let o=this.readCodePoint(!0);o!==null&&(n(o)||this.raise(l.EscapedCharNotAnIdentifier,{at:a}),e+=String.fromCodePoint(o)),r=this.state.pos;}else break}return e+this.input.slice(r,this.state.pos)}readWord(t){let e=this.readWord1(t),s=ae.get(e);s!==void 0?this.finishToken(s,ve(s)):this.finishToken(128,e);}checkKeywordEscapes(){let{type:t}=this.state;Vt(t)&&this.state.containsEsc&&this.raise(l.InvalidEscapedReservedWord,{at:this.state.startLoc,reservedWord:ve(t)});}raise(t,e){let{at:s}=e,r=u(e,Jo),i=s instanceof p?s:s.loc.start,a=t({loc:i,details:r});if(!this.options.errorRecovery)throw a;return this.isLookahead||this.state.errors.push(a),a}raiseOverwrite(t,e){let{at:s}=e,r=u(e,Yo),i=s instanceof p?s:s.loc.start,a=i.index,n=this.state.errors;for(let o=n.length-1;o>=0;o--){let c=n[o];if(c.loc.index===a)return n[o]=t({loc:i,details:r});if(c.loc.index<a)break}return this.raise(t,e)}updateContext(t){}unexpected(t,e){throw this.raise(l.UnexpectedToken,{expected:e?ve(e):null,at:t!=null?t:this.state.startLoc})}expectPlugin(t,e){if(this.hasPlugin(t))return !0;throw this.raise(l.MissingPlugin,{at:e!=null?e:this.state.startLoc,missingPlugin:[t]})}expectOnePlugin(t){if(!t.some(e=>this.hasPlugin(e)))throw this.raise(l.MissingOneOfPlugins,{at:this.state.startLoc,missingPlugin:t})}},ns=class{constructor(t){this.var=new Set,this.lexical=new Set,this.functions=new Set,this.flags=t;}},os=class{constructor(t,e){this.parser=void 0,this.scopeStack=[],this.inModule=void 0,this.undefinedExports=new Map,this.parser=t,this.inModule=e;}get inFunction(){return (this.currentVarScopeFlags()&Ae)>0}get allowSuper(){return (this.currentThisScopeFlags()&ct)>0}get allowDirectSuper(){return (this.currentThisScopeFlags()&mr)>0}get inClass(){return (this.currentThisScopeFlags()&Fe)>0}get inClassAndNotInNonArrowFunction(){let t=this.currentThisScopeFlags();return (t&Fe)>0&&(t&Ae)===0}get inStaticBlock(){for(let t=this.scopeStack.length-1;;t--){let{flags:e}=this.scopeStack[t];if(e&Jt)return !0;if(e&(ft|Fe))return !1}}get inNonArrowFunction(){return (this.currentThisScopeFlags()&Ae)>0}get treatFunctionsAsVar(){return this.treatFunctionsAsVarInScope(this.currentScope())}createScope(t){return new ns(t)}enter(t){this.scopeStack.push(this.createScope(t));}exit(){this.scopeStack.pop();}treatFunctionsAsVarInScope(t){return !!(t.flags&(Ae|Jt)||!this.parser.inModule&&t.flags&$e)}declareName(t,e,s){let r=this.currentScope();if(e&Se||e&dt)this.checkRedeclarationInScope(r,t,e,s),e&dt?r.functions.add(t):r.lexical.add(t),e&Se&&this.maybeExportDefined(r,t);else if(e&yr)for(let i=this.scopeStack.length-1;i>=0&&(r=this.scopeStack[i],this.checkRedeclarationInScope(r,t,e,s),r.var.add(t),this.maybeExportDefined(r,t),!(r.flags&ft));--i);this.parser.inModule&&r.flags&$e&&this.undefinedExports.delete(t);}maybeExportDefined(t,e){this.parser.inModule&&t.flags&$e&&this.undefinedExports.delete(e);}checkRedeclarationInScope(t,e,s,r){this.isRedeclaredInScope(t,e,s)&&this.parser.raise(l.VarRedeclaration,{at:r,identifierName:e});}isRedeclaredInScope(t,e,s){return s&Pe?s&Se?t.lexical.has(e)||t.functions.has(e)||t.var.has(e):s&dt?t.lexical.has(e)||!this.treatFunctionsAsVarInScope(t)&&t.var.has(e):t.lexical.has(e)&&!(t.flags&dr&&t.lexical.values().next().value===e)||!this.treatFunctionsAsVarInScope(t)&&t.functions.has(e):!1}checkLocalExport(t){let{name:e}=t,s=this.scopeStack[0];!s.lexical.has(e)&&!s.var.has(e)&&!s.functions.has(e)&&this.undefinedExports.set(e,t.loc.start);}currentScope(){return this.scopeStack[this.scopeStack.length-1]}currentVarScopeFlags(){for(let t=this.scopeStack.length-1;;t--){let{flags:e}=this.scopeStack[t];if(e&ft)return e}}currentThisScopeFlags(){for(let t=this.scopeStack.length-1;;t--){let{flags:e}=this.scopeStack[t];if(e&(ft|Fe)&&!(e&Xt))return e}}},eh=class extends ns{constructor(){super(...arguments),this.declareFunctions=new Set;}},th=class extends os{createScope(t){return new eh(t)}declareName(t,e,s){let r=this.currentScope();if(e&Zt){this.checkRedeclarationInScope(r,t,e,s),this.maybeExportDefined(r,t),r.declareFunctions.add(t);return}super.declareName(...arguments);}isRedeclaredInScope(t,e,s){return super.isRedeclaredInScope(...arguments)?!0:s&Zt?!t.declareFunctions.has(e)&&(t.lexical.has(e)||t.functions.has(e)):!1}checkLocalExport(t){this.scopeStack[0].declareFunctions.has(t.name)||super.checkLocalExport(t);}},sh=class{constructor(){this.privateNames=new Set,this.loneAccessors=new Map,this.undefinedPrivateNames=new Map;}},rh=class{constructor(t){this.parser=void 0,this.stack=[],this.undefinedPrivateNames=new Map,this.parser=t;}current(){return this.stack[this.stack.length-1]}enter(){this.stack.push(new sh);}exit(){let t=this.stack.pop(),e=this.current();for(let[s,r]of Array.from(t.undefinedPrivateNames))e?e.undefinedPrivateNames.has(s)||e.undefinedPrivateNames.set(s,r):this.parser.raise(l.InvalidPrivateFieldResolution,{at:r,identifierName:s});}declarePrivateName(t,e,s){let{privateNames:r,loneAccessors:i,undefinedPrivateNames:a}=this.current(),n=r.has(t);if(e&ss){let o=n&&i.get(t);if(o){let c=o&xt,f=e&xt,y=o&ss,T=e&ss;n=y===T||c!==f,n||i.delete(t);}else n||i.set(t,e);}n&&this.parser.raise(l.PrivateNameRedeclaration,{at:s,identifierName:t}),r.add(t),a.delete(t);}usePrivateName(t,e){let s;for(s of this.stack)if(s.privateNames.has(t))return;s?s.undefinedPrivateNames.set(t,e):this.parser.raise(l.InvalidPrivateFieldResolution,{at:e,identifierName:t});}},ih=0,Sr=1,hs=2,wr=3,Pt=class{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:ih;this.type=void 0,this.type=t;}canBeArrowParameterDeclaration(){return this.type===hs||this.type===Sr}isCertainlyParameterDeclaration(){return this.type===wr}},Nr=class extends Pt{constructor(t){super(t),this.declarationErrors=new Map;}recordDeclarationError(t,e){let{at:s}=e,r=s.index;this.declarationErrors.set(r,[t,s]);}clearDeclarationError(t){this.declarationErrors.delete(t);}iterateErrors(t){this.declarationErrors.forEach(t);}},ah=class{constructor(t){this.parser=void 0,this.stack=[new Pt],this.parser=t;}enter(t){this.stack.push(t);}exit(){this.stack.pop();}recordParameterInitializerError(t,e){let{at:s}=e,r={at:s.loc.start},{stack:i}=this,a=i.length-1,n=i[a];for(;!n.isCertainlyParameterDeclaration();){if(n.canBeArrowParameterDeclaration())n.recordDeclarationError(t,r);else return;n=i[--a];}this.parser.raise(t,r);}recordArrowParemeterBindingError(t,e){let{at:s}=e,{stack:r}=this,i=r[r.length-1],a={at:s.loc.start};if(i.isCertainlyParameterDeclaration())this.parser.raise(t,a);else if(i.canBeArrowParameterDeclaration())i.recordDeclarationError(t,a);else return}recordAsyncArrowParametersError(t){let{at:e}=t,{stack:s}=this,r=s.length-1,i=s[r];for(;i.canBeArrowParameterDeclaration();)i.type===hs&&i.recordDeclarationError(l.AwaitBindingIdentifier,{at:e}),i=s[--r];}validateAsPattern(){let{stack:t}=this,e=t[t.length-1];!e.canBeArrowParameterDeclaration()||e.iterateErrors(s=>{let[r,i]=s;this.parser.raise(r,{at:i});let a=t.length-2,n=t[a];for(;n.canBeArrowParameterDeclaration();)n.clearDeclarationError(i.index),n=t[--a];});}};function nh(){return new Pt(wr)}function oh(){return new Nr(Sr)}function hh(){return new Nr(hs)}function Ir(){return new Pt}var He=0,kr=1,Tt=2,Dr=4,We=8,lh=class{constructor(){this.stacks=[];}enter(t){this.stacks.push(t);}exit(){this.stacks.pop();}currentFlags(){return this.stacks[this.stacks.length-1]}get hasAwait(){return (this.currentFlags()&Tt)>0}get hasYield(){return (this.currentFlags()&kr)>0}get hasReturn(){return (this.currentFlags()&Dr)>0}get hasIn(){return (this.currentFlags()&We)>0}};function Et(t,e){return (t?Tt:0)|(e?kr:0)}var uh=class extends Zo{addExtra(t,e,s){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0;if(!t)return;let i=t.extra=t.extra||{};r?i[e]=s:Object.defineProperty(i,e,{enumerable:r,value:s});}isContextual(t){return this.state.type===t&&!this.state.containsEsc}isUnparsedContextual(t,e){let s=t+e.length;if(this.input.slice(t,s)===e){let r=this.input.charCodeAt(s);return !(ze(r)||(r&64512)===55296)}return !1}isLookaheadContextual(t){let e=this.nextTokenStart();return this.isUnparsedContextual(e,t)}eatContextual(t){return this.isContextual(t)?(this.next(),!0):!1}expectContextual(t,e){if(!this.eatContextual(t))throw e!=null?this.raise(e,{at:this.state.startLoc}):this.unexpected(null,t)}canInsertSemicolon(){return this.match(135)||this.match(8)||this.hasPrecedingLineBreak()}hasPrecedingLineBreak(){return is.test(this.input.slice(this.state.lastTokEndLoc.index,this.state.start))}hasFollowingLineBreak(){return br.lastIndex=this.state.end,br.test(this.input)}isLineTerminator(){return this.eat(13)||this.canInsertSemicolon()}semicolon(){((arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0)?this.isLineTerminator():this.eat(13))||this.raise(l.MissingSemicolon,{at:this.state.lastTokEndLoc});}expect(t,e){this.eat(t)||this.unexpected(e,t);}tryParse(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.state.clone(),s={node:null};try{let r=t(function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;throw s.node=i,s});if(this.state.errors.length>e.errors.length){let i=this.state;return this.state=e,this.state.tokensLength=i.tokensLength,{node:r,error:i.errors[e.errors.length],thrown:!1,aborted:!1,failState:i}}return {node:r,error:null,thrown:!1,aborted:!1,failState:null}}catch(r){let i=this.state;if(this.state=e,r instanceof SyntaxError)return {node:null,error:r,thrown:!0,aborted:!1,failState:i};if(r===s)return {node:s.node,error:null,thrown:!1,aborted:!0,failState:i};throw r}}checkExpressionErrors(t,e){if(!t)return !1;let{shorthandAssignLoc:s,doubleProtoLoc:r,privateKeyLoc:i,optionalParametersLoc:a}=t,n=!!s||!!r||!!a||!!i;if(!e)return n;s!=null&&this.raise(l.InvalidCoverInitializedName,{at:s}),r!=null&&this.raise(l.DuplicateProto,{at:r}),i!=null&&this.raise(l.UnexpectedPrivateField,{at:i}),a!=null&&this.unexpected(a);}isLiteralPropertyName(){return nr(this.state.type)}isPrivateName(t){return t.type==="PrivateName"}getPrivateNameSV(t){return t.id.name}hasPropertyAsPrivateName(t){return (t.type==="MemberExpression"||t.type==="OptionalMemberExpression")&&this.isPrivateName(t.property)}isOptionalChain(t){return t.type==="OptionalMemberExpression"||t.type==="OptionalCallExpression"}isObjectProperty(t){return t.type==="ObjectProperty"}isObjectMethod(t){return t.type==="ObjectMethod"}initializeScopes(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.sourceType==="module",e=this.state.labels;this.state.labels=[];let s=this.exportedIdentifiers;this.exportedIdentifiers=new Set;let r=this.inModule;this.inModule=t;let i=this.scope,a=this.getScopeHandler();this.scope=new a(this,t);let n=this.prodParam;this.prodParam=new lh;let o=this.classScope;this.classScope=new rh(this);let c=this.expressionScope;return this.expressionScope=new ah(this),()=>{this.state.labels=e,this.exportedIdentifiers=s,this.inModule=r,this.scope=i,this.prodParam=n,this.classScope=o,this.expressionScope=c;}}enterInitialScopes(){let t=He;this.inModule&&(t|=Tt),this.scope.enter($e),this.prodParam.enter(t);}checkDestructuringPrivate(t){let{privateKeyLoc:e}=t;e!==null&&this.expectPlugin("destructuringPrivate",e);}},bt=class{constructor(){this.shorthandAssignLoc=null,this.doubleProtoLoc=null,this.privateKeyLoc=null,this.optionalParametersLoc=null;}},Ct=class{constructor(t,e,s){this.type="",this.start=e,this.end=0,this.loc=new d(s),t!=null&&t.options.ranges&&(this.range=[e,0]),t!=null&&t.filename&&(this.loc.filename=t.filename);}},ls=Ct.prototype;ls.__clone=function(){let t=new Ct,e=Object.keys(this);for(let s=0,r=e.length;s<r;s++){let i=e[s];i!=="leadingComments"&&i!=="trailingComments"&&i!=="innerComments"&&(t[i]=this[i]);}return t};function ch(t){return Ee(t)}function Ee(t){let{type:e,start:s,end:r,loc:i,range:a,extra:n,name:o}=t,c=Object.create(ls);return c.type=e,c.start=s,c.end=r,c.loc=i,c.range=a,c.extra=n,c.name=o,e==="Placeholder"&&(c.expectedNode=t.expectedNode),c}function ph(t){let{type:e,start:s,end:r,loc:i,range:a,extra:n}=t;if(e==="Placeholder")return ch(t);let o=Object.create(ls);return o.type=e,o.start=s,o.end=r,o.loc=i,o.range=a,t.raw!==void 0?o.raw=t.raw:o.extra=n,o.value=t.value,o}var fh=class extends uh{startNode(){return new Ct(this,this.state.start,this.state.startLoc)}startNodeAt(t,e){return new Ct(this,t,e)}startNodeAtNode(t){return this.startNodeAt(t.start,t.loc.start)}finishNode(t,e){return this.finishNodeAt(t,e,this.state.lastTokEndLoc)}finishNodeAt(t,e,s){return t.type=e,t.end=s.index,t.loc.end=s,this.options.ranges&&(t.range[1]=s.index),this.options.attachComment&&this.processComment(t),t}resetStartLocation(t,e,s){t.start=e,t.loc.start=s,this.options.ranges&&(t.range[0]=e);}resetEndLocation(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.state.lastTokEndLoc;t.end=e.index,t.loc.end=e,this.options.ranges&&(t.range[1]=e.index);}resetStartLocationFromNode(t,e){this.resetStartLocation(t,e.start,e.loc.start);}},dh=new Set(["_","any","bool","boolean","empty","extends","false","interface","mixed","null","number","static","string","true","typeof","void"]),I=j(jn||(jn=ht(["flow"])))(t=>({AmbiguousConditionalArrow:t("Ambiguous expression: wrap the arrow functions in parentheses to disambiguate."),AmbiguousDeclareModuleKind:t("Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module."),AssignReservedType:t(e=>{let{reservedType:s}=e;return "Cannot overwrite reserved type ".concat(s,".")}),DeclareClassElement:t("The `declare` modifier can only appear on class fields."),DeclareClassFieldInitializer:t("Initializers are not allowed in fields with the `declare` modifier."),DuplicateDeclareModuleExports:t("Duplicate `declare module.exports` statement."),EnumBooleanMemberNotInitialized:t(e=>{let{memberName:s,enumName:r}=e;return "Boolean enum members need to be initialized. Use either `".concat(s," = true,` or `").concat(s," = false,` in enum `").concat(r,"`.")}),EnumDuplicateMemberName:t(e=>{let{memberName:s,enumName:r}=e;return "Enum member names need to be unique, but the name `".concat(s,"` has already been used before in enum `").concat(r,"`.")}),EnumInconsistentMemberValues:t(e=>{let{enumName:s}=e;return "Enum `".concat(s,"` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.")}),EnumInvalidExplicitType:t(e=>{let{invalidEnumType:s,enumName:r}=e;return "Enum type `".concat(s,"` is not valid. Use one of `boolean`, `number`, `string`, or `symbol` in enum `").concat(r,"`.")}),EnumInvalidExplicitTypeUnknownSupplied:t(e=>{let{enumName:s}=e;return "Supplied enum type is not valid. Use one of `boolean`, `number`, `string`, or `symbol` in enum `".concat(s,"`.")}),EnumInvalidMemberInitializerPrimaryType:t(e=>{let{enumName:s,memberName:r,explicitType:i}=e;return "Enum `".concat(s,"` has type `").concat(i,"`, so the initializer of `").concat(r,"` needs to be a ").concat(i," literal.")}),EnumInvalidMemberInitializerSymbolType:t(e=>{let{enumName:s,memberName:r}=e;return "Symbol enum members cannot be initialized. Use `".concat(r,",` in enum `").concat(s,"`.")}),EnumInvalidMemberInitializerUnknownType:t(e=>{let{enumName:s,memberName:r}=e;return "The enum member initializer for `".concat(r,"` needs to be a literal (either a boolean, number, or string) in enum `").concat(s,"`.")}),EnumInvalidMemberName:t(e=>{let{enumName:s,memberName:r,suggestion:i}=e;return "Enum member names cannot start with lowercase 'a' through 'z'. Instead of using `".concat(r,"`, consider using `").concat(i,"`, in enum `").concat(s,"`.")}),EnumNumberMemberNotInitialized:t(e=>{let{enumName:s,memberName:r}=e;return "Number enum members need to be initialized, e.g. `".concat(r," = 1` in enum `").concat(s,"`.")}),EnumStringMemberInconsistentlyInitailized:t(e=>{let{enumName:s}=e;return "String enum members need to consistently either all use initializers, or use no initializers, in enum `".concat(s,"`.")}),GetterMayNotHaveThisParam:t("A getter cannot have a `this` parameter."),ImportTypeShorthandOnlyInPureImport:t("The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements."),InexactInsideExact:t("Explicit inexact syntax cannot appear inside an explicit exact object type."),InexactInsideNonObject:t("Explicit inexact syntax cannot appear in class or interface definitions."),InexactVariance:t("Explicit inexact syntax cannot have variance."),InvalidNonTypeImportInDeclareModule:t("Imports within a `declare module` body must always be `import type` or `import typeof`."),MissingTypeParamDefault:t("Type parameter declaration needs a default, since a preceding type parameter declaration has a default."),NestedDeclareModule:t("`declare module` cannot be used inside another `declare module`."),NestedFlowComment:t("Cannot have a flow comment inside another flow comment."),PatternIsOptional:t("A binding pattern parameter cannot be optional in an implementation signature.",{reasonCode:"OptionalBindingPattern"}),SetterMayNotHaveThisParam:t("A setter cannot have a `this` parameter."),SpreadVariance:t("Spread properties cannot have variance."),ThisParamAnnotationRequired:t("A type annotation is required for the `this` parameter."),ThisParamBannedInConstructor:t("Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions."),ThisParamMayNotBeOptional:t("The `this` parameter cannot be optional."),ThisParamMustBeFirst:t("The `this` parameter must be the first function parameter."),ThisParamNoDefault:t("The `this` parameter may not have a default value."),TypeBeforeInitializer:t("Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`."),TypeCastInPattern:t("The type cast expression is expected to be wrapped with parenthesis."),UnexpectedExplicitInexactInObject:t("Explicit inexact syntax must appear at the end of an inexact object."),UnexpectedReservedType:t(e=>{let{reservedType:s}=e;return "Unexpected reserved type ".concat(s,".")}),UnexpectedReservedUnderscore:t("`_` is only allowed as a type argument to call or new."),UnexpectedSpaceBetweenModuloChecks:t("Spaces between `%` and `checks` are not allowed here."),UnexpectedSpreadType:t("Spread operator cannot appear in class or interface definitions."),UnexpectedSubtractionOperand:t('Unexpected token, expected "number" or "bigint".'),UnexpectedTokenAfterTypeParameter:t("Expected an arrow function after this type parameter declaration."),UnexpectedTypeParameterBeforeAsyncArrowFunction:t("Type parameters must come after the async keyword, e.g. instead of `<T> async () => {}`, use `async <T>() => {}`."),UnsupportedDeclareExportKind:t(e=>{let{unsupportedExportKind:s,suggestion:r}=e;return "`declare export ".concat(s,"` is not supported. Use `").concat(r,"` instead.")}),UnsupportedStatementInDeclareModule:t("Only declares and type imports are allowed inside declare module."),UnterminatedFlowComment:t("Unterminated flow-comment.")}));function mh(t){return t.type==="DeclareExportAllDeclaration"||t.type==="DeclareExportDeclaration"&&(!t.declaration||t.declaration.type!=="TypeAlias"&&t.declaration.type!=="InterfaceDeclaration")}function us(t){return t.importKind==="type"||t.importKind==="typeof"}function Fr(t){return ye(t)&&t!==97}var yh={const:"declare export var",let:"declare export var",type:"export type",interface:"export interface"};function xh(t,e){let s=[],r=[];for(let i=0;i<t.length;i++)(e(t[i],i,t)?s:r).push(t[i]);return [s,r]}var gh=/\*?\s*@((?:no)?flow)\b/,Ah=t=>class extends t{constructor(){super(...arguments),this.flowPragma=void 0;}getScopeHandler(){return th}shouldParseTypes(){return this.getPluginOption("flow","all")||this.flowPragma==="flow"}shouldParseEnums(){return !!this.getPluginOption("flow","enums")}finishToken(e,s){return e!==129&&e!==13&&e!==28&&this.flowPragma===void 0&&(this.flowPragma=null),super.finishToken(e,s)}addComment(e){if(this.flowPragma===void 0){let s=gh.exec(e.value);if(s)if(s[1]==="flow")this.flowPragma="flow";else if(s[1]==="noflow")this.flowPragma="noflow";else throw new Error("Unexpected flow pragma")}return super.addComment(e)}flowParseTypeInitialiser(e){let s=this.state.inType;this.state.inType=!0,this.expect(e||14);let r=this.flowParseType();return this.state.inType=s,r}flowParsePredicate(){let e=this.startNode(),s=this.state.startLoc;return this.next(),this.expectContextual(107),this.state.lastTokStart>s.index+1&&this.raise(I.UnexpectedSpaceBetweenModuloChecks,{at:s}),this.eat(10)?(e.value=this.parseExpression(),this.expect(11),this.finishNode(e,"DeclaredPredicate")):this.finishNode(e,"InferredPredicate")}flowParseTypeAndPredicateInitialiser(){let e=this.state.inType;this.state.inType=!0,this.expect(14);let s=null,r=null;return this.match(54)?(this.state.inType=e,r=this.flowParsePredicate()):(s=this.flowParseType(),this.state.inType=e,this.match(54)&&(r=this.flowParsePredicate())),[s,r]}flowParseDeclareClass(e){return this.next(),this.flowParseInterfaceish(e,!0),this.finishNode(e,"DeclareClass")}flowParseDeclareFunction(e){this.next();let s=e.id=this.parseIdentifier(),r=this.startNode(),i=this.startNode();this.match(47)?r.typeParameters=this.flowParseTypeParameterDeclaration():r.typeParameters=null,this.expect(10);let a=this.flowParseFunctionTypeParams();return r.params=a.params,r.rest=a.rest,r.this=a._this,this.expect(11),[r.returnType,e.predicate]=this.flowParseTypeAndPredicateInitialiser(),i.typeAnnotation=this.finishNode(r,"FunctionTypeAnnotation"),s.typeAnnotation=this.finishNode(i,"TypeAnnotation"),this.resetEndLocation(s),this.semicolon(),this.scope.declareName(e.id.name,qo,e.id.loc.start),this.finishNode(e,"DeclareFunction")}flowParseDeclare(e,s){if(this.match(80))return this.flowParseDeclareClass(e);if(this.match(68))return this.flowParseDeclareFunction(e);if(this.match(74))return this.flowParseDeclareVariable(e);if(this.eatContextual(123))return this.match(16)?this.flowParseDeclareModuleExports(e):(s&&this.raise(I.NestedDeclareModule,{at:this.state.lastTokStartLoc}),this.flowParseDeclareModule(e));if(this.isContextual(126))return this.flowParseDeclareTypeAlias(e);if(this.isContextual(127))return this.flowParseDeclareOpaqueType(e);if(this.isContextual(125))return this.flowParseDeclareInterface(e);if(this.match(82))return this.flowParseDeclareExportDeclaration(e,s);throw this.unexpected()}flowParseDeclareVariable(e){return this.next(),e.id=this.flowParseTypeAnnotatableIdentifier(!0),this.scope.declareName(e.id.name,yt,e.id.loc.start),this.semicolon(),this.finishNode(e,"DeclareVariable")}flowParseDeclareModule(e){this.scope.enter(Ke),this.match(129)?e.id=this.parseExprAtom():e.id=this.parseIdentifier();let s=e.body=this.startNode(),r=s.body=[];for(this.expect(5);!this.match(8);){let n=this.startNode();this.match(83)?(this.next(),!this.isContextual(126)&&!this.match(87)&&this.raise(I.InvalidNonTypeImportInDeclareModule,{at:this.state.lastTokStartLoc}),this.parseImport(n)):(this.expectContextual(121,I.UnsupportedStatementInDeclareModule),n=this.flowParseDeclare(n,!0)),r.push(n);}this.scope.exit(),this.expect(8),this.finishNode(s,"BlockStatement");let i=null,a=!1;return r.forEach(n=>{mh(n)?(i==="CommonJS"&&this.raise(I.AmbiguousDeclareModuleKind,{at:n}),i="ES"):n.type==="DeclareModuleExports"&&(a&&this.raise(I.DuplicateDeclareModuleExports,{at:n}),i==="ES"&&this.raise(I.AmbiguousDeclareModuleKind,{at:n}),i="CommonJS",a=!0);}),e.kind=i||"CommonJS",this.finishNode(e,"DeclareModule")}flowParseDeclareExportDeclaration(e,s){if(this.expect(82),this.eat(65))return this.match(68)||this.match(80)?e.declaration=this.flowParseDeclare(this.startNode()):(e.declaration=this.flowParseType(),this.semicolon()),e.default=!0,this.finishNode(e,"DeclareExportDeclaration");if(this.match(75)||this.isLet()||(this.isContextual(126)||this.isContextual(125))&&!s){let r=this.state.value;throw this.raise(I.UnsupportedDeclareExportKind,{at:this.state.startLoc,unsupportedExportKind:r,suggestion:yh[r]})}if(this.match(74)||this.match(68)||this.match(80)||this.isContextual(127))return e.declaration=this.flowParseDeclare(this.startNode()),e.default=!1,this.finishNode(e,"DeclareExportDeclaration");if(this.match(55)||this.match(5)||this.isContextual(125)||this.isContextual(126)||this.isContextual(127))return e=this.parseExport(e),e.type==="ExportNamedDeclaration"&&(e.type="ExportDeclaration",e.default=!1,delete e.exportKind),e.type="Declare"+e.type,e;throw this.unexpected()}flowParseDeclareModuleExports(e){return this.next(),this.expectContextual(108),e.typeAnnotation=this.flowParseTypeAnnotation(),this.semicolon(),this.finishNode(e,"DeclareModuleExports")}flowParseDeclareTypeAlias(e){return this.next(),this.flowParseTypeAlias(e),e.type="DeclareTypeAlias",e}flowParseDeclareOpaqueType(e){return this.next(),this.flowParseOpaqueType(e,!0),e.type="DeclareOpaqueType",e}flowParseDeclareInterface(e){return this.next(),this.flowParseInterfaceish(e),this.finishNode(e,"DeclareInterface")}flowParseInterfaceish(e){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(e.id=this.flowParseRestrictedIdentifier(!s,!0),this.scope.declareName(e.id.name,s?Ar:Te,e.id.loc.start),this.match(47)?e.typeParameters=this.flowParseTypeParameterDeclaration():e.typeParameters=null,e.extends=[],e.implements=[],e.mixins=[],this.eat(81))do e.extends.push(this.flowParseInterfaceExtends());while(!s&&this.eat(12));if(this.isContextual(114)){this.next();do e.mixins.push(this.flowParseInterfaceExtends());while(this.eat(12))}if(this.isContextual(110)){this.next();do e.implements.push(this.flowParseInterfaceExtends());while(this.eat(12))}e.body=this.flowParseObjectType({allowStatic:s,allowExact:!1,allowSpread:!1,allowProto:s,allowInexact:!1});}flowParseInterfaceExtends(){let e=this.startNode();return e.id=this.flowParseQualifiedTypeIdentifier(),this.match(47)?e.typeParameters=this.flowParseTypeParameterInstantiation():e.typeParameters=null,this.finishNode(e,"InterfaceExtends")}flowParseInterface(e){return this.flowParseInterfaceish(e),this.finishNode(e,"InterfaceDeclaration")}checkNotUnderscore(e){e==="_"&&this.raise(I.UnexpectedReservedUnderscore,{at:this.state.startLoc});}checkReservedType(e,s,r){!dh.has(e)||this.raise(r?I.AssignReservedType:I.UnexpectedReservedType,{at:s,reservedType:e});}flowParseRestrictedIdentifier(e,s){return this.checkReservedType(this.state.value,this.state.startLoc,s),this.parseIdentifier(e)}flowParseTypeAlias(e){return e.id=this.flowParseRestrictedIdentifier(!1,!0),this.scope.declareName(e.id.name,Te,e.id.loc.start),this.match(47)?e.typeParameters=this.flowParseTypeParameterDeclaration():e.typeParameters=null,e.right=this.flowParseTypeInitialiser(29),this.semicolon(),this.finishNode(e,"TypeAlias")}flowParseOpaqueType(e,s){return this.expectContextual(126),e.id=this.flowParseRestrictedIdentifier(!0,!0),this.scope.declareName(e.id.name,Te,e.id.loc.start),this.match(47)?e.typeParameters=this.flowParseTypeParameterDeclaration():e.typeParameters=null,e.supertype=null,this.match(14)&&(e.supertype=this.flowParseTypeInitialiser(14)),e.impltype=null,s||(e.impltype=this.flowParseTypeInitialiser(29)),this.semicolon(),this.finishNode(e,"OpaqueType")}flowParseTypeParameter(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,s=this.state.startLoc,r=this.startNode(),i=this.flowParseVariance(),a=this.flowParseTypeAnnotatableIdentifier();return r.name=a.name,r.variance=i,r.bound=a.typeAnnotation,this.match(29)?(this.eat(29),r.default=this.flowParseType()):e&&this.raise(I.MissingTypeParamDefault,{at:s}),this.finishNode(r,"TypeParameter")}flowParseTypeParameterDeclaration(){let e=this.state.inType,s=this.startNode();s.params=[],this.state.inType=!0,this.match(47)||this.match(138)?this.next():this.unexpected();let r=!1;do{let i=this.flowParseTypeParameter(r);s.params.push(i),i.default&&(r=!0),this.match(48)||this.expect(12);}while(!this.match(48));return this.expect(48),this.state.inType=e,this.finishNode(s,"TypeParameterDeclaration")}flowParseTypeParameterInstantiation(){let e=this.startNode(),s=this.state.inType;e.params=[],this.state.inType=!0,this.expect(47);let r=this.state.noAnonFunctionType;for(this.state.noAnonFunctionType=!1;!this.match(48);)e.params.push(this.flowParseType()),this.match(48)||this.expect(12);return this.state.noAnonFunctionType=r,this.expect(48),this.state.inType=s,this.finishNode(e,"TypeParameterInstantiation")}flowParseTypeParameterInstantiationCallOrNew(){let e=this.startNode(),s=this.state.inType;for(e.params=[],this.state.inType=!0,this.expect(47);!this.match(48);)e.params.push(this.flowParseTypeOrImplicitInstantiation()),this.match(48)||this.expect(12);return this.expect(48),this.state.inType=s,this.finishNode(e,"TypeParameterInstantiation")}flowParseInterfaceType(){let e=this.startNode();if(this.expectContextual(125),e.extends=[],this.eat(81))do e.extends.push(this.flowParseInterfaceExtends());while(this.eat(12));return e.body=this.flowParseObjectType({allowStatic:!1,allowExact:!1,allowSpread:!1,allowProto:!1,allowInexact:!1}),this.finishNode(e,"InterfaceTypeAnnotation")}flowParseObjectPropertyKey(){return this.match(130)||this.match(129)?this.parseExprAtom():this.parseIdentifier(!0)}flowParseObjectTypeIndexer(e,s,r){return e.static=s,this.lookahead().type===14?(e.id=this.flowParseObjectPropertyKey(),e.key=this.flowParseTypeInitialiser()):(e.id=null,e.key=this.flowParseType()),this.expect(3),e.value=this.flowParseTypeInitialiser(),e.variance=r,this.finishNode(e,"ObjectTypeIndexer")}flowParseObjectTypeInternalSlot(e,s){return e.static=s,e.id=this.flowParseObjectPropertyKey(),this.expect(3),this.expect(3),this.match(47)||this.match(10)?(e.method=!0,e.optional=!1,e.value=this.flowParseObjectTypeMethodish(this.startNodeAt(e.start,e.loc.start))):(e.method=!1,this.eat(17)&&(e.optional=!0),e.value=this.flowParseTypeInitialiser()),this.finishNode(e,"ObjectTypeInternalSlot")}flowParseObjectTypeMethodish(e){for(e.params=[],e.rest=null,e.typeParameters=null,e.this=null,this.match(47)&&(e.typeParameters=this.flowParseTypeParameterDeclaration()),this.expect(10),this.match(78)&&(e.this=this.flowParseFunctionTypeParam(!0),e.this.name=null,this.match(11)||this.expect(12));!this.match(11)&&!this.match(21);)e.params.push(this.flowParseFunctionTypeParam(!1)),this.match(11)||this.expect(12);return this.eat(21)&&(e.rest=this.flowParseFunctionTypeParam(!1)),this.expect(11),e.returnType=this.flowParseTypeInitialiser(),this.finishNode(e,"FunctionTypeAnnotation")}flowParseObjectTypeCallProperty(e,s){let r=this.startNode();return e.static=s,e.value=this.flowParseObjectTypeMethodish(r),this.finishNode(e,"ObjectTypeCallProperty")}flowParseObjectType(e){let{allowStatic:s,allowExact:r,allowSpread:i,allowProto:a,allowInexact:n}=e,o=this.state.inType;this.state.inType=!0;let c=this.startNode();c.callProperties=[],c.properties=[],c.indexers=[],c.internalSlots=[];let f,y,T=!1;for(r&&this.match(6)?(this.expect(6),f=9,y=!0):(this.expect(5),f=8,y=!1),c.exact=y;!this.match(f);){let N=!1,R=null,z=null,te=this.startNode();if(a&&this.isContextual(115)){let pe=this.lookahead();pe.type!==14&&pe.type!==17&&(this.next(),R=this.state.startLoc,s=!1);}if(s&&this.isContextual(104)){let pe=this.lookahead();pe.type!==14&&pe.type!==17&&(this.next(),N=!0);}let he=this.flowParseVariance();if(this.eat(0))R!=null&&this.unexpected(R),this.eat(0)?(he&&this.unexpected(he.loc.start),c.internalSlots.push(this.flowParseObjectTypeInternalSlot(te,N))):c.indexers.push(this.flowParseObjectTypeIndexer(te,N,he));else if(this.match(10)||this.match(47))R!=null&&this.unexpected(R),he&&this.unexpected(he.loc.start),c.callProperties.push(this.flowParseObjectTypeCallProperty(te,N));else {let pe="init";if(this.isContextual(98)||this.isContextual(103)){let de=this.lookahead();nr(de.type)&&(pe=this.state.value,this.next());}let st=this.flowParseObjectTypeProperty(te,N,R,he,pe,i,n!=null?n:!y);st===null?(T=!0,z=this.state.lastTokStartLoc):c.properties.push(st);}this.flowObjectTypeSemicolon(),z&&!this.match(8)&&!this.match(9)&&this.raise(I.UnexpectedExplicitInexactInObject,{at:z});}this.expect(f),i&&(c.inexact=T);let v=this.finishNode(c,"ObjectTypeAnnotation");return this.state.inType=o,v}flowParseObjectTypeProperty(e,s,r,i,a,n,o){if(this.eat(21))return this.match(12)||this.match(13)||this.match(8)||this.match(9)?(n?o||this.raise(I.InexactInsideExact,{at:this.state.lastTokStartLoc}):this.raise(I.InexactInsideNonObject,{at:this.state.lastTokStartLoc}),i&&this.raise(I.InexactVariance,{at:i}),null):(n||this.raise(I.UnexpectedSpreadType,{at:this.state.lastTokStartLoc}),r!=null&&this.unexpected(r),i&&this.raise(I.SpreadVariance,{at:i}),e.argument=this.flowParseType(),this.finishNode(e,"ObjectTypeSpreadProperty"));{e.key=this.flowParseObjectPropertyKey(),e.static=s,e.proto=r!=null,e.kind=a;let c=!1;return this.match(47)||this.match(10)?(e.method=!0,r!=null&&this.unexpected(r),i&&this.unexpected(i.loc.start),e.value=this.flowParseObjectTypeMethodish(this.startNodeAt(e.start,e.loc.start)),(a==="get"||a==="set")&&this.flowCheckGetterSetterParams(e),!n&&e.key.name==="constructor"&&e.value.this&&this.raise(I.ThisParamBannedInConstructor,{at:e.value.this})):(a!=="init"&&this.unexpected(),e.method=!1,this.eat(17)&&(c=!0),e.value=this.flowParseTypeInitialiser(),e.variance=i),e.optional=c,this.finishNode(e,"ObjectTypeProperty")}}flowCheckGetterSetterParams(e){let s=e.kind==="get"?0:1,r=e.value.params.length+(e.value.rest?1:0);e.value.this&&this.raise(e.kind==="get"?I.GetterMayNotHaveThisParam:I.SetterMayNotHaveThisParam,{at:e.value.this}),r!==s&&this.raise(e.kind==="get"?l.BadGetterArity:l.BadSetterArity,{at:e}),e.kind==="set"&&e.value.rest&&this.raise(l.BadSetterRestParameter,{at:e});}flowObjectTypeSemicolon(){!this.eat(13)&&!this.eat(12)&&!this.match(8)&&!this.match(9)&&this.unexpected();}flowParseQualifiedTypeIdentifier(e,s,r){e=e||this.state.start,s=s||this.state.startLoc;let i=r||this.flowParseRestrictedIdentifier(!0);for(;this.eat(16);){let a=this.startNodeAt(e,s);a.qualification=i,a.id=this.flowParseRestrictedIdentifier(!0),i=this.finishNode(a,"QualifiedTypeIdentifier");}return i}flowParseGenericType(e,s,r){let i=this.startNodeAt(e,s);return i.typeParameters=null,i.id=this.flowParseQualifiedTypeIdentifier(e,s,r),this.match(47)&&(i.typeParameters=this.flowParseTypeParameterInstantiation()),this.finishNode(i,"GenericTypeAnnotation")}flowParseTypeofType(){let e=this.startNode();return this.expect(87),e.argument=this.flowParsePrimaryType(),this.finishNode(e,"TypeofTypeAnnotation")}flowParseTupleType(){let e=this.startNode();for(e.types=[],this.expect(0);this.state.pos<this.length&&!this.match(3)&&(e.types.push(this.flowParseType()),!this.match(3));)this.expect(12);return this.expect(3),this.finishNode(e,"TupleTypeAnnotation")}flowParseFunctionTypeParam(e){let s=null,r=!1,i=null,a=this.startNode(),n=this.lookahead(),o=this.state.type===78;return n.type===14||n.type===17?(o&&!e&&this.raise(I.ThisParamMustBeFirst,{at:a}),s=this.parseIdentifier(o),this.eat(17)&&(r=!0,o&&this.raise(I.ThisParamMayNotBeOptional,{at:a})),i=this.flowParseTypeInitialiser()):i=this.flowParseType(),a.name=s,a.optional=r,a.typeAnnotation=i,this.finishNode(a,"FunctionTypeParam")}reinterpretTypeAsFunctionTypeParam(e){let s=this.startNodeAt(e.start,e.loc.start);return s.name=null,s.optional=!1,s.typeAnnotation=e,this.finishNode(s,"FunctionTypeParam")}flowParseFunctionTypeParams(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],s=null,r=null;for(this.match(78)&&(r=this.flowParseFunctionTypeParam(!0),r.name=null,this.match(11)||this.expect(12));!this.match(11)&&!this.match(21);)e.push(this.flowParseFunctionTypeParam(!1)),this.match(11)||this.expect(12);return this.eat(21)&&(s=this.flowParseFunctionTypeParam(!1)),{params:e,rest:s,_this:r}}flowIdentToTypeAnnotation(e,s,r,i){switch(i.name){case"any":return this.finishNode(r,"AnyTypeAnnotation");case"bool":case"boolean":return this.finishNode(r,"BooleanTypeAnnotation");case"mixed":return this.finishNode(r,"MixedTypeAnnotation");case"empty":return this.finishNode(r,"EmptyTypeAnnotation");case"number":return this.finishNode(r,"NumberTypeAnnotation");case"string":return this.finishNode(r,"StringTypeAnnotation");case"symbol":return this.finishNode(r,"SymbolTypeAnnotation");default:return this.checkNotUnderscore(i.name),this.flowParseGenericType(e,s,i)}}flowParsePrimaryType(){let e=this.state.start,s=this.state.startLoc,r=this.startNode(),i,a,n=!1,o=this.state.noAnonFunctionType;switch(this.state.type){case 5:return this.flowParseObjectType({allowStatic:!1,allowExact:!1,allowSpread:!0,allowProto:!1,allowInexact:!0});case 6:return this.flowParseObjectType({allowStatic:!1,allowExact:!0,allowSpread:!0,allowProto:!1,allowInexact:!1});case 0:return this.state.noAnonFunctionType=!1,a=this.flowParseTupleType(),this.state.noAnonFunctionType=o,a;case 47:return r.typeParameters=this.flowParseTypeParameterDeclaration(),this.expect(10),i=this.flowParseFunctionTypeParams(),r.params=i.params,r.rest=i.rest,r.this=i._this,this.expect(11),this.expect(19),r.returnType=this.flowParseType(),this.finishNode(r,"FunctionTypeAnnotation");case 10:if(this.next(),!this.match(11)&&!this.match(21))if(K(this.state.type)||this.match(78)){let c=this.lookahead().type;n=c!==17&&c!==14;}else n=!0;if(n){if(this.state.noAnonFunctionType=!1,a=this.flowParseType(),this.state.noAnonFunctionType=o,this.state.noAnonFunctionType||!(this.match(12)||this.match(11)&&this.lookahead().type===19))return this.expect(11),a;this.eat(12);}return a?i=this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(a)]):i=this.flowParseFunctionTypeParams(),r.params=i.params,r.rest=i.rest,r.this=i._this,this.expect(11),this.expect(19),r.returnType=this.flowParseType(),r.typeParameters=null,this.finishNode(r,"FunctionTypeAnnotation");case 129:return this.parseLiteral(this.state.value,"StringLiteralTypeAnnotation");case 85:case 86:return r.value=this.match(85),this.next(),this.finishNode(r,"BooleanLiteralTypeAnnotation");case 53:if(this.state.value==="-"){if(this.next(),this.match(130))return this.parseLiteralAtNode(-this.state.value,"NumberLiteralTypeAnnotation",r);if(this.match(131))return this.parseLiteralAtNode(-this.state.value,"BigIntLiteralTypeAnnotation",r);throw this.raise(I.UnexpectedSubtractionOperand,{at:this.state.startLoc})}throw this.unexpected();case 130:return this.parseLiteral(this.state.value,"NumberLiteralTypeAnnotation");case 131:return this.parseLiteral(this.state.value,"BigIntLiteralTypeAnnotation");case 88:return this.next(),this.finishNode(r,"VoidTypeAnnotation");case 84:return this.next(),this.finishNode(r,"NullLiteralTypeAnnotation");case 78:return this.next(),this.finishNode(r,"ThisTypeAnnotation");case 55:return this.next(),this.finishNode(r,"ExistsTypeAnnotation");case 87:return this.flowParseTypeofType();default:if(Vt(this.state.type)){let c=ve(this.state.type);return this.next(),super.createIdentifier(r,c)}else if(K(this.state.type))return this.isContextual(125)?this.flowParseInterfaceType():this.flowIdentToTypeAnnotation(e,s,r,this.parseIdentifier())}throw this.unexpected()}flowParsePostfixType(){let e=this.state.start,s=this.state.startLoc,r=this.flowParsePrimaryType(),i=!1;for(;(this.match(0)||this.match(18))&&!this.canInsertSemicolon();){let a=this.startNodeAt(e,s),n=this.eat(18);i=i||n,this.expect(0),!n&&this.match(3)?(a.elementType=r,this.next(),r=this.finishNode(a,"ArrayTypeAnnotation")):(a.objectType=r,a.indexType=this.flowParseType(),this.expect(3),i?(a.optional=n,r=this.finishNode(a,"OptionalIndexedAccessType")):r=this.finishNode(a,"IndexedAccessType"));}return r}flowParsePrefixType(){let e=this.startNode();return this.eat(17)?(e.typeAnnotation=this.flowParsePrefixType(),this.finishNode(e,"NullableTypeAnnotation")):this.flowParsePostfixType()}flowParseAnonFunctionWithoutParens(){let e=this.flowParsePrefixType();if(!this.state.noAnonFunctionType&&this.eat(19)){let s=this.startNodeAt(e.start,e.loc.start);return s.params=[this.reinterpretTypeAsFunctionTypeParam(e)],s.rest=null,s.this=null,s.returnType=this.flowParseType(),s.typeParameters=null,this.finishNode(s,"FunctionTypeAnnotation")}return e}flowParseIntersectionType(){let e=this.startNode();this.eat(45);let s=this.flowParseAnonFunctionWithoutParens();for(e.types=[s];this.eat(45);)e.types.push(this.flowParseAnonFunctionWithoutParens());return e.types.length===1?s:this.finishNode(e,"IntersectionTypeAnnotation")}flowParseUnionType(){let e=this.startNode();this.eat(43);let s=this.flowParseIntersectionType();for(e.types=[s];this.eat(43);)e.types.push(this.flowParseIntersectionType());return e.types.length===1?s:this.finishNode(e,"UnionTypeAnnotation")}flowParseType(){let e=this.state.inType;this.state.inType=!0;let s=this.flowParseUnionType();return this.state.inType=e,s}flowParseTypeOrImplicitInstantiation(){if(this.state.type===128&&this.state.value==="_"){let e=this.state.start,s=this.state.startLoc,r=this.parseIdentifier();return this.flowParseGenericType(e,s,r)}else return this.flowParseType()}flowParseTypeAnnotation(){let e=this.startNode();return e.typeAnnotation=this.flowParseTypeInitialiser(),this.finishNode(e,"TypeAnnotation")}flowParseTypeAnnotatableIdentifier(e){let s=e?this.parseIdentifier():this.flowParseRestrictedIdentifier();return this.match(14)&&(s.typeAnnotation=this.flowParseTypeAnnotation(),this.resetEndLocation(s)),s}typeCastToParameter(e){return e.expression.typeAnnotation=e.typeAnnotation,this.resetEndLocation(e.expression,e.typeAnnotation.loc.end),e.expression}flowParseVariance(){let e=null;return this.match(53)&&(e=this.startNode(),this.state.value==="+"?e.kind="plus":e.kind="minus",this.next(),this.finishNode(e,"Variance")),e}parseFunctionBody(e,s){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return s?this.forwardNoArrowParamsConversionAt(e,()=>super.parseFunctionBody(e,!0,r)):super.parseFunctionBody(e,!1,r)}parseFunctionBodyAndFinish(e,s){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;if(this.match(14)){let i=this.startNode();[i.typeAnnotation,e.predicate]=this.flowParseTypeAndPredicateInitialiser(),e.returnType=i.typeAnnotation?this.finishNode(i,"TypeAnnotation"):null;}super.parseFunctionBodyAndFinish(e,s,r);}parseStatement(e,s){if(this.state.strict&&this.isContextual(125)){let i=this.lookahead();if(ye(i.type)){let a=this.startNode();return this.next(),this.flowParseInterface(a)}}else if(this.shouldParseEnums()&&this.isContextual(122)){let i=this.startNode();return this.next(),this.flowParseEnumDeclaration(i)}let r=super.parseStatement(e,s);return this.flowPragma===void 0&&!this.isValidDirective(r)&&(this.flowPragma=null),r}parseExpressionStatement(e,s){if(s.type==="Identifier"){if(s.name==="declare"){if(this.match(80)||K(this.state.type)||this.match(68)||this.match(74)||this.match(82))return this.flowParseDeclare(e)}else if(K(this.state.type)){if(s.name==="interface")return this.flowParseInterface(e);if(s.name==="type")return this.flowParseTypeAlias(e);if(s.name==="opaque")return this.flowParseOpaqueType(e,!1)}}return super.parseExpressionStatement(e,s)}shouldParseExportDeclaration(){let{type:e}=this.state;return or(e)||this.shouldParseEnums()&&e===122?!this.state.containsEsc:super.shouldParseExportDeclaration()}isExportDefaultSpecifier(){let{type:e}=this.state;return or(e)||this.shouldParseEnums()&&e===122?this.state.containsEsc:super.isExportDefaultSpecifier()}parseExportDefaultExpression(){if(this.shouldParseEnums()&&this.isContextual(122)){let e=this.startNode();return this.next(),this.flowParseEnumDeclaration(e)}return super.parseExportDefaultExpression()}parseConditional(e,s,r,i){if(!this.match(17))return e;if(this.state.maybeInArrowParameters){let v=this.lookaheadCharCode();if(v===44||v===61||v===58||v===41)return this.setOptionalParametersError(i),e}this.expect(17);let a=this.state.clone(),n=this.state.noArrowAt,o=this.startNodeAt(s,r),{consequent:c,failed:f}=this.tryParseConditionalConsequent(),[y,T]=this.getArrowLikeExpressions(c);if(f||T.length>0){let v=[...n];if(T.length>0){this.state=a,this.state.noArrowAt=v;for(let N=0;N<T.length;N++)v.push(T[N].start);(({consequent:c,failed:f}=this.tryParseConditionalConsequent())),[y,T]=this.getArrowLikeExpressions(c);}f&&y.length>1&&this.raise(I.AmbiguousConditionalArrow,{at:a.startLoc}),f&&y.length===1&&(this.state=a,v.push(y[0].start),this.state.noArrowAt=v,{consequent:c,failed:f}=this.tryParseConditionalConsequent());}return this.getArrowLikeExpressions(c,!0),this.state.noArrowAt=n,this.expect(14),o.test=e,o.consequent=c,o.alternate=this.forwardNoArrowParamsConversionAt(o,()=>this.parseMaybeAssign(void 0,void 0)),this.finishNode(o,"ConditionalExpression")}tryParseConditionalConsequent(){this.state.noArrowParamsConversionAt.push(this.state.start);let e=this.parseMaybeAssignAllowIn(),s=!this.match(14);return this.state.noArrowParamsConversionAt.pop(),{consequent:e,failed:s}}getArrowLikeExpressions(e,s){let r=[e],i=[];for(;r.length!==0;){let a=r.pop();a.type==="ArrowFunctionExpression"?(a.typeParameters||!a.returnType?this.finishArrowValidation(a):i.push(a),r.push(a.body)):a.type==="ConditionalExpression"&&(r.push(a.consequent),r.push(a.alternate));}return s?(i.forEach(a=>this.finishArrowValidation(a)),[i,[]]):xh(i,a=>a.params.every(n=>this.isAssignable(n,!0)))}finishArrowValidation(e){var s;this.toAssignableList(e.params,(s=e.extra)==null?void 0:s.trailingCommaLoc,!1),this.scope.enter(Ae|Xt),super.checkParams(e,!1,!0),this.scope.exit();}forwardNoArrowParamsConversionAt(e,s){let r;return this.state.noArrowParamsConversionAt.indexOf(e.start)!==-1?(this.state.noArrowParamsConversionAt.push(this.state.start),r=s(),this.state.noArrowParamsConversionAt.pop()):r=s(),r}parseParenItem(e,s,r){if(e=super.parseParenItem(e,s,r),this.eat(17)&&(e.optional=!0,this.resetEndLocation(e)),this.match(14)){let i=this.startNodeAt(s,r);return i.expression=e,i.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(i,"TypeCastExpression")}return e}assertModuleNodeAllowed(e){e.type==="ImportDeclaration"&&(e.importKind==="type"||e.importKind==="typeof")||e.type==="ExportNamedDeclaration"&&e.exportKind==="type"||e.type==="ExportAllDeclaration"&&e.exportKind==="type"||super.assertModuleNodeAllowed(e);}parseExport(e){let s=super.parseExport(e);return (s.type==="ExportNamedDeclaration"||s.type==="ExportAllDeclaration")&&(s.exportKind=s.exportKind||"value"),s}parseExportDeclaration(e){if(this.isContextual(126)){e.exportKind="type";let s=this.startNode();return this.next(),this.match(5)?(e.specifiers=this.parseExportSpecifiers(!0),this.parseExportFrom(e),null):this.flowParseTypeAlias(s)}else if(this.isContextual(127)){e.exportKind="type";let s=this.startNode();return this.next(),this.flowParseOpaqueType(s,!1)}else if(this.isContextual(125)){e.exportKind="type";let s=this.startNode();return this.next(),this.flowParseInterface(s)}else if(this.shouldParseEnums()&&this.isContextual(122)){e.exportKind="value";let s=this.startNode();return this.next(),this.flowParseEnumDeclaration(s)}else return super.parseExportDeclaration(e)}eatExportStar(e){return super.eatExportStar(...arguments)?!0:this.isContextual(126)&&this.lookahead().type===55?(e.exportKind="type",this.next(),this.next(),!0):!1}maybeParseExportNamespaceSpecifier(e){let{startLoc:s}=this.state,r=super.maybeParseExportNamespaceSpecifier(e);return r&&e.exportKind==="type"&&this.unexpected(s),r}parseClassId(e,s,r){super.parseClassId(e,s,r),this.match(47)&&(e.typeParameters=this.flowParseTypeParameterDeclaration());}parseClassMember(e,s,r){let{startLoc:i}=this.state;if(this.isContextual(121)){if(this.parseClassMemberFromModifier(e,s))return;s.declare=!0;}super.parseClassMember(e,s,r),s.declare&&(s.type!=="ClassProperty"&&s.type!=="ClassPrivateProperty"&&s.type!=="PropertyDefinition"?this.raise(I.DeclareClassElement,{at:i}):s.value&&this.raise(I.DeclareClassFieldInitializer,{at:s.value}));}isIterator(e){return e==="iterator"||e==="asyncIterator"}readIterator(){let e=super.readWord1(),s="@@"+e;(!this.isIterator(e)||!this.state.inType)&&this.raise(l.InvalidIdentifier,{at:this.state.curPosition(),identifierName:s}),this.finishToken(128,s);}getTokenFromCode(e){let s=this.input.charCodeAt(this.state.pos+1);return e===123&&s===124?this.finishOp(6,2):this.state.inType&&(e===62||e===60)?this.finishOp(e===62?48:47,1):this.state.inType&&e===63?s===46?this.finishOp(18,2):this.finishOp(17,1):Do(e,s,this.input.charCodeAt(this.state.pos+2))?(this.state.pos+=2,this.readIterator()):super.getTokenFromCode(e)}isAssignable(e,s){return e.type==="TypeCastExpression"?this.isAssignable(e.expression,s):super.isAssignable(e,s)}toAssignable(e){!(arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1)&&e.type==="AssignmentExpression"&&e.left.type==="TypeCastExpression"&&(e.left=this.typeCastToParameter(e.left)),super.toAssignable(...arguments);}toAssignableList(e,s,r){for(let i=0;i<e.length;i++){let a=e[i];(a==null?void 0:a.type)==="TypeCastExpression"&&(e[i]=this.typeCastToParameter(a));}super.toAssignableList(e,s,r);}toReferencedList(e,s){for(let i=0;i<e.length;i++){var r;let a=e[i];a&&a.type==="TypeCastExpression"&&!((r=a.extra)!=null&&r.parenthesized)&&(e.length>1||!s)&&this.raise(I.TypeCastInPattern,{at:a.typeAnnotation});}return e}parseArrayLike(e,s,r,i){let a=super.parseArrayLike(e,s,r,i);return s&&!this.state.maybeInArrowParameters&&this.toReferencedList(a.elements),a}isValidLVal(e){for(var s=arguments.length,r=new Array(s>1?s-1:0),i=1;i<s;i++)r[i-1]=arguments[i];return e==="TypeCastExpression"||super.isValidLVal(e,...r)}parseClassProperty(e){return this.match(14)&&(e.typeAnnotation=this.flowParseTypeAnnotation()),super.parseClassProperty(e)}parseClassPrivateProperty(e){return this.match(14)&&(e.typeAnnotation=this.flowParseTypeAnnotation()),super.parseClassPrivateProperty(e)}isClassMethod(){return this.match(47)||super.isClassMethod()}isClassProperty(){return this.match(14)||super.isClassProperty()}isNonstaticConstructor(e){return !this.match(14)&&super.isNonstaticConstructor(e)}pushClassMethod(e,s,r,i,a,n){if(s.variance&&this.unexpected(s.variance.loc.start),delete s.variance,this.match(47)&&(s.typeParameters=this.flowParseTypeParameterDeclaration()),super.pushClassMethod(e,s,r,i,a,n),s.params&&a){let o=s.params;o.length>0&&this.isThisParam(o[0])&&this.raise(I.ThisParamBannedInConstructor,{at:s});}else if(s.type==="MethodDefinition"&&a&&s.value.params){let o=s.value.params;o.length>0&&this.isThisParam(o[0])&&this.raise(I.ThisParamBannedInConstructor,{at:s});}}pushClassPrivateMethod(e,s,r,i){s.variance&&this.unexpected(s.variance.loc.start),delete s.variance,this.match(47)&&(s.typeParameters=this.flowParseTypeParameterDeclaration()),super.pushClassPrivateMethod(e,s,r,i);}parseClassSuper(e){if(super.parseClassSuper(e),e.superClass&&this.match(47)&&(e.superTypeParameters=this.flowParseTypeParameterInstantiation()),this.isContextual(110)){this.next();let s=e.implements=[];do{let r=this.startNode();r.id=this.flowParseRestrictedIdentifier(!0),this.match(47)?r.typeParameters=this.flowParseTypeParameterInstantiation():r.typeParameters=null,s.push(this.finishNode(r,"ClassImplements"));}while(this.eat(12))}}checkGetterSetterParams(e){super.checkGetterSetterParams(e);let s=this.getObjectOrClassMethodParams(e);if(s.length>0){let r=s[0];this.isThisParam(r)&&e.kind==="get"?this.raise(I.GetterMayNotHaveThisParam,{at:r}):this.isThisParam(r)&&this.raise(I.SetterMayNotHaveThisParam,{at:r});}}parsePropertyNamePrefixOperator(e){e.variance=this.flowParseVariance();}parseObjPropValue(e,s,r,i,a,n,o,c){e.variance&&this.unexpected(e.variance.loc.start),delete e.variance;let f;this.match(47)&&!o&&(f=this.flowParseTypeParameterDeclaration(),this.match(10)||this.unexpected()),super.parseObjPropValue(e,s,r,i,a,n,o,c),f&&((e.value||e).typeParameters=f);}parseAssignableListItemTypes(e){return this.eat(17)&&(e.type!=="Identifier"&&this.raise(I.PatternIsOptional,{at:e}),this.isThisParam(e)&&this.raise(I.ThisParamMayNotBeOptional,{at:e}),e.optional=!0),this.match(14)?e.typeAnnotation=this.flowParseTypeAnnotation():this.isThisParam(e)&&this.raise(I.ThisParamAnnotationRequired,{at:e}),this.match(29)&&this.isThisParam(e)&&this.raise(I.ThisParamNoDefault,{at:e}),this.resetEndLocation(e),e}parseMaybeDefault(e,s,r){let i=super.parseMaybeDefault(e,s,r);return i.type==="AssignmentPattern"&&i.typeAnnotation&&i.right.start<i.typeAnnotation.start&&this.raise(I.TypeBeforeInitializer,{at:i.typeAnnotation}),i}shouldParseDefaultImport(e){return us(e)?Fr(this.state.type):super.shouldParseDefaultImport(e)}parseImportSpecifierLocal(e,s,r){s.local=us(e)?this.flowParseRestrictedIdentifier(!0,!0):this.parseIdentifier(),e.specifiers.push(this.finishImportSpecifier(s,r));}maybeParseDefaultImportSpecifier(e){e.importKind="value";let s=null;if(this.match(87)?s="typeof":this.isContextual(126)&&(s="type"),s){let r=this.lookahead(),{type:i}=r;s==="type"&&i===55&&this.unexpected(null,r.type),(Fr(i)||i===5||i===55)&&(this.next(),e.importKind=s);}return super.maybeParseDefaultImportSpecifier(e)}parseImportSpecifier(e,s,r,i){let a=e.imported,n=null;a.type==="Identifier"&&(a.name==="type"?n="type":a.name==="typeof"&&(n="typeof"));let o=!1;if(this.isContextual(93)&&!this.isLookaheadContextual("as")){let f=this.parseIdentifier(!0);n!==null&&!ye(this.state.type)?(e.imported=f,e.importKind=n,e.local=Ee(f)):(e.imported=a,e.importKind=null,e.local=this.parseIdentifier());}else {if(n!==null&&ye(this.state.type))e.imported=this.parseIdentifier(!0),e.importKind=n;else {if(s)throw this.raise(l.ImportBindingIsString,{at:e,importName:a.value});e.imported=a,e.importKind=null;}this.eatContextual(93)?e.local=this.parseIdentifier():(o=!0,e.local=Ee(e.imported));}let c=us(e);return r&&c&&this.raise(I.ImportTypeShorthandOnlyInPureImport,{at:e}),(r||c)&&this.checkReservedType(e.local.name,e.local.loc.start,!0),o&&!r&&!c&&this.checkReservedWord(e.local.name,e.loc.start,!0,!0),this.finishImportSpecifier(e,"ImportSpecifier")}parseBindingAtom(){switch(this.state.type){case 78:return this.parseIdentifier(!0);default:return super.parseBindingAtom()}}parseFunctionParams(e,s){let r=e.kind;r!=="get"&&r!=="set"&&this.match(47)&&(e.typeParameters=this.flowParseTypeParameterDeclaration()),super.parseFunctionParams(e,s);}parseVarId(e,s){super.parseVarId(e,s),this.match(14)&&(e.id.typeAnnotation=this.flowParseTypeAnnotation(),this.resetEndLocation(e.id));}parseAsyncArrowFromCallExpression(e,s){if(this.match(14)){let r=this.state.noAnonFunctionType;this.state.noAnonFunctionType=!0,e.returnType=this.flowParseTypeAnnotation(),this.state.noAnonFunctionType=r;}return super.parseAsyncArrowFromCallExpression(e,s)}shouldParseAsyncArrow(){return this.match(14)||super.shouldParseAsyncArrow()}parseMaybeAssign(e,s){var r;let i=null,a;if(this.hasPlugin("jsx")&&(this.match(138)||this.match(47))){if(i=this.state.clone(),a=this.tryParse(()=>super.parseMaybeAssign(e,s),i),!a.error)return a.node;let{context:c}=this.state,f=c[c.length-1];(f===U.j_oTag||f===U.j_expr)&&c.pop();}if((r=a)!=null&&r.error||this.match(47)){var n,o;i=i||this.state.clone();let c,f=this.tryParse(T=>{var v;c=this.flowParseTypeParameterDeclaration();let N=this.forwardNoArrowParamsConversionAt(c,()=>{let z=super.parseMaybeAssign(e,s);return this.resetStartLocationFromNode(z,c),z});(v=N.extra)!=null&&v.parenthesized&&T();let R=this.maybeUnwrapTypeCastExpression(N);return R.type!=="ArrowFunctionExpression"&&T(),R.typeParameters=c,this.resetStartLocationFromNode(R,c),N},i),y=null;if(f.node&&this.maybeUnwrapTypeCastExpression(f.node).type==="ArrowFunctionExpression"){if(!f.error&&!f.aborted)return f.node.async&&this.raise(I.UnexpectedTypeParameterBeforeAsyncArrowFunction,{at:c}),f.node;y=f.node;}if((n=a)!=null&&n.node)return this.state=a.failState,a.node;if(y)return this.state=f.failState,y;throw (o=a)!=null&&o.thrown?a.error:f.thrown?f.error:this.raise(I.UnexpectedTokenAfterTypeParameter,{at:c})}return super.parseMaybeAssign(e,s)}parseArrow(e){if(this.match(14)){let s=this.tryParse(()=>{let r=this.state.noAnonFunctionType;this.state.noAnonFunctionType=!0;let i=this.startNode();return [i.typeAnnotation,e.predicate]=this.flowParseTypeAndPredicateInitialiser(),this.state.noAnonFunctionType=r,this.canInsertSemicolon()&&this.unexpected(),this.match(19)||this.unexpected(),i});if(s.thrown)return null;s.error&&(this.state=s.failState),e.returnType=s.node.typeAnnotation?this.finishNode(s.node,"TypeAnnotation"):null;}return super.parseArrow(e)}shouldParseArrow(e){return this.match(14)||super.shouldParseArrow(e)}setArrowFunctionParameters(e,s){this.state.noArrowParamsConversionAt.indexOf(e.start)!==-1?e.params=s:super.setArrowFunctionParameters(e,s);}checkParams(e,s,r){if(!(r&&this.state.noArrowParamsConversionAt.indexOf(e.start)!==-1)){for(let i=0;i<e.params.length;i++)this.isThisParam(e.params[i])&&i>0&&this.raise(I.ThisParamMustBeFirst,{at:e.params[i]});return super.checkParams(...arguments)}}parseParenAndDistinguishExpression(e){return super.parseParenAndDistinguishExpression(e&&this.state.noArrowAt.indexOf(this.state.start)===-1)}parseSubscripts(e,s,r,i){if(e.type==="Identifier"&&e.name==="async"&&this.state.noArrowAt.indexOf(s)!==-1){this.next();let a=this.startNodeAt(s,r);a.callee=e,a.arguments=this.parseCallExpressionArguments(11,!1),e=this.finishNode(a,"CallExpression");}else if(e.type==="Identifier"&&e.name==="async"&&this.match(47)){let a=this.state.clone(),n=this.tryParse(c=>this.parseAsyncArrowWithTypeParameters(s,r)||c(),a);if(!n.error&&!n.aborted)return n.node;let o=this.tryParse(()=>super.parseSubscripts(e,s,r,i),a);if(o.node&&!o.error)return o.node;if(n.node)return this.state=n.failState,n.node;if(o.node)return this.state=o.failState,o.node;throw n.error||o.error}return super.parseSubscripts(e,s,r,i)}parseSubscript(e,s,r,i,a){if(this.match(18)&&this.isLookaheadToken_lt()){if(a.optionalChainMember=!0,i)return a.stop=!0,e;this.next();let n=this.startNodeAt(s,r);return n.callee=e,n.typeArguments=this.flowParseTypeParameterInstantiation(),this.expect(10),n.arguments=this.parseCallExpressionArguments(11,!1),n.optional=!0,this.finishCallExpression(n,!0)}else if(!i&&this.shouldParseTypes()&&this.match(47)){let n=this.startNodeAt(s,r);n.callee=e;let o=this.tryParse(()=>(n.typeArguments=this.flowParseTypeParameterInstantiationCallOrNew(),this.expect(10),n.arguments=this.parseCallExpressionArguments(11,!1),a.optionalChainMember&&(n.optional=!1),this.finishCallExpression(n,a.optionalChainMember)));if(o.node)return o.error&&(this.state=o.failState),o.node}return super.parseSubscript(e,s,r,i,a)}parseNewCallee(e){super.parseNewCallee(e);let s=null;this.shouldParseTypes()&&this.match(47)&&(s=this.tryParse(()=>this.flowParseTypeParameterInstantiationCallOrNew()).node),e.typeArguments=s;}parseAsyncArrowWithTypeParameters(e,s){let r=this.startNodeAt(e,s);if(this.parseFunctionParams(r),!!this.parseArrow(r))return this.parseArrowExpression(r,void 0,!0)}readToken_mult_modulo(e){let s=this.input.charCodeAt(this.state.pos+1);if(e===42&&s===47&&this.state.hasFlowComment){this.state.hasFlowComment=!1,this.state.pos+=2,this.nextToken();return}super.readToken_mult_modulo(e);}readToken_pipe_amp(e){let s=this.input.charCodeAt(this.state.pos+1);if(e===124&&s===125){this.finishOp(9,2);return}super.readToken_pipe_amp(e);}parseTopLevel(e,s){let r=super.parseTopLevel(e,s);return this.state.hasFlowComment&&this.raise(I.UnterminatedFlowComment,{at:this.state.curPosition()}),r}skipBlockComment(){if(this.hasPlugin("flowComments")&&this.skipFlowComment()){if(this.state.hasFlowComment)throw this.raise(I.NestedFlowComment,{at:this.state.startLoc});this.hasFlowCommentCompletion(),this.state.pos+=this.skipFlowComment(),this.state.hasFlowComment=!0;return}if(this.state.hasFlowComment){let e=this.input.indexOf("*-/",this.state.pos+2);if(e===-1)throw this.raise(l.UnterminatedComment,{at:this.state.curPosition()});this.state.pos=e+2+3;return}return super.skipBlockComment()}skipFlowComment(){let{pos:e}=this.state,s=2;for(;[32,9].includes(this.input.charCodeAt(e+s));)s++;let r=this.input.charCodeAt(s+e),i=this.input.charCodeAt(s+e+1);return r===58&&i===58?s+2:this.input.slice(s+e,s+e+12)==="flow-include"?s+12:r===58&&i!==58?s:!1}hasFlowCommentCompletion(){if(this.input.indexOf("*/",this.state.pos)===-1)throw this.raise(l.UnterminatedComment,{at:this.state.curPosition()})}flowEnumErrorBooleanMemberNotInitialized(e,s){let{enumName:r,memberName:i}=s;this.raise(I.EnumBooleanMemberNotInitialized,{at:e,memberName:i,enumName:r});}flowEnumErrorInvalidMemberInitializer(e,s){return this.raise(s.explicitType?s.explicitType==="symbol"?I.EnumInvalidMemberInitializerSymbolType:I.EnumInvalidMemberInitializerPrimaryType:I.EnumInvalidMemberInitializerUnknownType,Object.assign({at:e},s))}flowEnumErrorNumberMemberNotInitialized(e,s){let{enumName:r,memberName:i}=s;this.raise(I.EnumNumberMemberNotInitialized,{at:e,enumName:r,memberName:i});}flowEnumErrorStringMemberInconsistentlyInitailized(e,s){let{enumName:r}=s;this.raise(I.EnumStringMemberInconsistentlyInitailized,{at:e,enumName:r});}flowEnumMemberInit(){let e=this.state.startLoc,s=()=>this.match(12)||this.match(8);switch(this.state.type){case 130:{let r=this.parseNumericLiteral(this.state.value);return s()?{type:"number",loc:r.loc.start,value:r}:{type:"invalid",loc:e}}case 129:{let r=this.parseStringLiteral(this.state.value);return s()?{type:"string",loc:r.loc.start,value:r}:{type:"invalid",loc:e}}case 85:case 86:{let r=this.parseBooleanLiteral(this.match(85));return s()?{type:"boolean",loc:r.loc.start,value:r}:{type:"invalid",loc:e}}default:return {type:"invalid",loc:e}}}flowEnumMemberRaw(){let e=this.state.startLoc,s=this.parseIdentifier(!0),r=this.eat(29)?this.flowEnumMemberInit():{type:"none",loc:e};return {id:s,init:r}}flowEnumCheckExplicitTypeMismatch(e,s,r){let{explicitType:i}=s;i!==null&&i!==r&&this.flowEnumErrorInvalidMemberInitializer(e,s);}flowEnumMembers(e){let{enumName:s,explicitType:r}=e,i=new Set,a={booleanMembers:[],numberMembers:[],stringMembers:[],defaultedMembers:[]},n=!1;for(;!this.match(8);){if(this.eat(21)){n=!0;break}let o=this.startNode(),{id:c,init:f}=this.flowEnumMemberRaw(),y=c.name;if(y==="")continue;/^[a-z]/.test(y)&&this.raise(I.EnumInvalidMemberName,{at:c,memberName:y,suggestion:y[0].toUpperCase()+y.slice(1),enumName:s}),i.has(y)&&this.raise(I.EnumDuplicateMemberName,{at:c,memberName:y,enumName:s}),i.add(y);let T={enumName:s,explicitType:r,memberName:y};switch(o.id=c,f.type){case"boolean":{this.flowEnumCheckExplicitTypeMismatch(f.loc,T,"boolean"),o.init=f.value,a.booleanMembers.push(this.finishNode(o,"EnumBooleanMember"));break}case"number":{this.flowEnumCheckExplicitTypeMismatch(f.loc,T,"number"),o.init=f.value,a.numberMembers.push(this.finishNode(o,"EnumNumberMember"));break}case"string":{this.flowEnumCheckExplicitTypeMismatch(f.loc,T,"string"),o.init=f.value,a.stringMembers.push(this.finishNode(o,"EnumStringMember"));break}case"invalid":throw this.flowEnumErrorInvalidMemberInitializer(f.loc,T);case"none":switch(r){case"boolean":this.flowEnumErrorBooleanMemberNotInitialized(f.loc,T);break;case"number":this.flowEnumErrorNumberMemberNotInitialized(f.loc,T);break;default:a.defaultedMembers.push(this.finishNode(o,"EnumDefaultedMember"));}}this.match(8)||this.expect(12);}return {members:a,hasUnknownMembers:n}}flowEnumStringMembers(e,s,r){let{enumName:i}=r;if(e.length===0)return s;if(s.length===0)return e;if(s.length>e.length){for(let a of e)this.flowEnumErrorStringMemberInconsistentlyInitailized(a,{enumName:i});return s}else {for(let a of s)this.flowEnumErrorStringMemberInconsistentlyInitailized(a,{enumName:i});return e}}flowEnumParseExplicitType(e){let{enumName:s}=e;if(!this.eatContextual(101))return null;if(!K(this.state.type))throw this.raise(I.EnumInvalidExplicitTypeUnknownSupplied,{at:this.state.startLoc,enumName:s});let{value:r}=this.state;return this.next(),r!=="boolean"&&r!=="number"&&r!=="string"&&r!=="symbol"&&this.raise(I.EnumInvalidExplicitType,{at:this.state.startLoc,enumName:s,invalidEnumType:r}),r}flowEnumBody(e,s){let r=s.name,i=s.loc.start,a=this.flowEnumParseExplicitType({enumName:r});this.expect(5);let{members:n,hasUnknownMembers:o}=this.flowEnumMembers({enumName:r,explicitType:a});switch(e.hasUnknownMembers=o,a){case"boolean":return e.explicitType=!0,e.members=n.booleanMembers,this.expect(8),this.finishNode(e,"EnumBooleanBody");case"number":return e.explicitType=!0,e.members=n.numberMembers,this.expect(8),this.finishNode(e,"EnumNumberBody");case"string":return e.explicitType=!0,e.members=this.flowEnumStringMembers(n.stringMembers,n.defaultedMembers,{enumName:r}),this.expect(8),this.finishNode(e,"EnumStringBody");case"symbol":return e.members=n.defaultedMembers,this.expect(8),this.finishNode(e,"EnumSymbolBody");default:{let c=()=>(e.members=[],this.expect(8),this.finishNode(e,"EnumStringBody"));e.explicitType=!1;let f=n.booleanMembers.length,y=n.numberMembers.length,T=n.stringMembers.length,v=n.defaultedMembers.length;if(!f&&!y&&!T&&!v)return c();if(!f&&!y)return e.members=this.flowEnumStringMembers(n.stringMembers,n.defaultedMembers,{enumName:r}),this.expect(8),this.finishNode(e,"EnumStringBody");if(!y&&!T&&f>=v){for(let N of n.defaultedMembers)this.flowEnumErrorBooleanMemberNotInitialized(N.loc.start,{enumName:r,memberName:N.id.name});return e.members=n.booleanMembers,this.expect(8),this.finishNode(e,"EnumBooleanBody")}else if(!f&&!T&&y>=v){for(let N of n.defaultedMembers)this.flowEnumErrorNumberMemberNotInitialized(N.loc.start,{enumName:r,memberName:N.id.name});return e.members=n.numberMembers,this.expect(8),this.finishNode(e,"EnumNumberBody")}else return this.raise(I.EnumInconsistentMemberValues,{at:i,enumName:r}),c()}}}flowParseEnumDeclaration(e){let s=this.parseIdentifier();return e.id=s,e.body=this.flowEnumBody(this.startNode(),s),this.finishNode(e,"EnumDeclaration")}isLookaheadToken_lt(){let e=this.nextTokenStart();if(this.input.charCodeAt(e)===60){let s=this.input.charCodeAt(e+1);return s!==60&&s!==61}return !1}maybeUnwrapTypeCastExpression(e){return e.type==="TypeCastExpression"?e.expression:e}},Ph={__proto__:null,quot:'"',amp:"&",apos:"'",lt:"<",gt:">",nbsp:"\xA0",iexcl:"\xA1",cent:"\xA2",pound:"\xA3",curren:"\xA4",yen:"\xA5",brvbar:"\xA6",sect:"\xA7",uml:"\xA8",copy:"\xA9",ordf:"\xAA",laquo:"\xAB",not:"\xAC",shy:"\xAD",reg:"\xAE",macr:"\xAF",deg:"\xB0",plusmn:"\xB1",sup2:"\xB2",sup3:"\xB3",acute:"\xB4",micro:"\xB5",para:"\xB6",middot:"\xB7",cedil:"\xB8",sup1:"\xB9",ordm:"\xBA",raquo:"\xBB",frac14:"\xBC",frac12:"\xBD",frac34:"\xBE",iquest:"\xBF",Agrave:"\xC0",Aacute:"\xC1",Acirc:"\xC2",Atilde:"\xC3",Auml:"\xC4",Aring:"\xC5",AElig:"\xC6",Ccedil:"\xC7",Egrave:"\xC8",Eacute:"\xC9",Ecirc:"\xCA",Euml:"\xCB",Igrave:"\xCC",Iacute:"\xCD",Icirc:"\xCE",Iuml:"\xCF",ETH:"\xD0",Ntilde:"\xD1",Ograve:"\xD2",Oacute:"\xD3",Ocirc:"\xD4",Otilde:"\xD5",Ouml:"\xD6",times:"\xD7",Oslash:"\xD8",Ugrave:"\xD9",Uacute:"\xDA",Ucirc:"\xDB",Uuml:"\xDC",Yacute:"\xDD",THORN:"\xDE",szlig:"\xDF",agrave:"\xE0",aacute:"\xE1",acirc:"\xE2",atilde:"\xE3",auml:"\xE4",aring:"\xE5",aelig:"\xE6",ccedil:"\xE7",egrave:"\xE8",eacute:"\xE9",ecirc:"\xEA",euml:"\xEB",igrave:"\xEC",iacute:"\xED",icirc:"\xEE",iuml:"\xEF",eth:"\xF0",ntilde:"\xF1",ograve:"\xF2",oacute:"\xF3",ocirc:"\xF4",otilde:"\xF5",ouml:"\xF6",divide:"\xF7",oslash:"\xF8",ugrave:"\xF9",uacute:"\xFA",ucirc:"\xFB",uuml:"\xFC",yacute:"\xFD",thorn:"\xFE",yuml:"\xFF",OElig:"\u0152",oelig:"\u0153",Scaron:"\u0160",scaron:"\u0161",Yuml:"\u0178",fnof:"\u0192",circ:"\u02C6",tilde:"\u02DC",Alpha:"\u0391",Beta:"\u0392",Gamma:"\u0393",Delta:"\u0394",Epsilon:"\u0395",Zeta:"\u0396",Eta:"\u0397",Theta:"\u0398",Iota:"\u0399",Kappa:"\u039A",Lambda:"\u039B",Mu:"\u039C",Nu:"\u039D",Xi:"\u039E",Omicron:"\u039F",Pi:"\u03A0",Rho:"\u03A1",Sigma:"\u03A3",Tau:"\u03A4",Upsilon:"\u03A5",Phi:"\u03A6",Chi:"\u03A7",Psi:"\u03A8",Omega:"\u03A9",alpha:"\u03B1",beta:"\u03B2",gamma:"\u03B3",delta:"\u03B4",epsilon:"\u03B5",zeta:"\u03B6",eta:"\u03B7",theta:"\u03B8",iota:"\u03B9",kappa:"\u03BA",lambda:"\u03BB",mu:"\u03BC",nu:"\u03BD",xi:"\u03BE",omicron:"\u03BF",pi:"\u03C0",rho:"\u03C1",sigmaf:"\u03C2",sigma:"\u03C3",tau:"\u03C4",upsilon:"\u03C5",phi:"\u03C6",chi:"\u03C7",psi:"\u03C8",omega:"\u03C9",thetasym:"\u03D1",upsih:"\u03D2",piv:"\u03D6",ensp:"\u2002",emsp:"\u2003",thinsp:"\u2009",zwnj:"\u200C",zwj:"\u200D",lrm:"\u200E",rlm:"\u200F",ndash:"\u2013",mdash:"\u2014",lsquo:"\u2018",rsquo:"\u2019",sbquo:"\u201A",ldquo:"\u201C",rdquo:"\u201D",bdquo:"\u201E",dagger:"\u2020",Dagger:"\u2021",bull:"\u2022",hellip:"\u2026",permil:"\u2030",prime:"\u2032",Prime:"\u2033",lsaquo:"\u2039",rsaquo:"\u203A",oline:"\u203E",frasl:"\u2044",euro:"\u20AC",image:"\u2111",weierp:"\u2118",real:"\u211C",trade:"\u2122",alefsym:"\u2135",larr:"\u2190",uarr:"\u2191",rarr:"\u2192",darr:"\u2193",harr:"\u2194",crarr:"\u21B5",lArr:"\u21D0",uArr:"\u21D1",rArr:"\u21D2",dArr:"\u21D3",hArr:"\u21D4",forall:"\u2200",part:"\u2202",exist:"\u2203",empty:"\u2205",nabla:"\u2207",isin:"\u2208",notin:"\u2209",ni:"\u220B",prod:"\u220F",sum:"\u2211",minus:"\u2212",lowast:"\u2217",radic:"\u221A",prop:"\u221D",infin:"\u221E",ang:"\u2220",and:"\u2227",or:"\u2228",cap:"\u2229",cup:"\u222A",int:"\u222B",there4:"\u2234",sim:"\u223C",cong:"\u2245",asymp:"\u2248",ne:"\u2260",equiv:"\u2261",le:"\u2264",ge:"\u2265",sub:"\u2282",sup:"\u2283",nsub:"\u2284",sube:"\u2286",supe:"\u2287",oplus:"\u2295",otimes:"\u2297",perp:"\u22A5",sdot:"\u22C5",lceil:"\u2308",rceil:"\u2309",lfloor:"\u230A",rfloor:"\u230B",lang:"\u2329",rang:"\u232A",loz:"\u25CA",spades:"\u2660",clubs:"\u2663",hearts:"\u2665",diams:"\u2666"},Be=j(qn||(qn=ht(["jsx"])))(t=>({AttributeIsEmpty:t("JSX attributes must only be assigned a non-empty expression."),MissingClosingTagElement:t(e=>{let{openingTagName:s}=e;return "Expected corresponding JSX closing tag for <".concat(s,">.")}),MissingClosingTagFragment:t("Expected corresponding JSX closing tag for <>."),UnexpectedSequenceExpression:t("Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?"),UnexpectedToken:t(e=>{let{unexpected:s,HTMLEntity:r}=e;return "Unexpected token `".concat(s,"`. Did you mean `").concat(r,"` or `{'").concat(s,"'}`?")}),UnsupportedJsxValue:t("JSX value should be either an expression or a quoted JSX text."),UnterminatedJsxContent:t("Unterminated JSX contents."),UnwrappedAdjacentJSXElements:t("Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>?")}));function Ne(t){return t?t.type==="JSXOpeningFragment"||t.type==="JSXClosingFragment":!1}function Ge(t){if(t.type==="JSXIdentifier")return t.name;if(t.type==="JSXNamespacedName")return t.namespace.name+":"+t.name.name;if(t.type==="JSXMemberExpression")return Ge(t.object)+"."+Ge(t.property);throw new Error("Node had unexpected type: "+t.type)}var Th=t=>class extends t{jsxReadToken(){let e="",s=this.state.pos;for(;;){if(this.state.pos>=this.length)throw this.raise(Be.UnterminatedJsxContent,{at:this.state.startLoc});let r=this.input.charCodeAt(this.state.pos);switch(r){case 60:case 123:return this.state.pos===this.state.start?r===60&&this.state.canStartJSXElement?(++this.state.pos,this.finishToken(138)):super.getTokenFromCode(r):(e+=this.input.slice(s,this.state.pos),this.finishToken(137,e));case 38:e+=this.input.slice(s,this.state.pos),e+=this.jsxReadEntity(),s=this.state.pos;break;case 62:case 125:default:Oe(r)?(e+=this.input.slice(s,this.state.pos),e+=this.jsxReadNewLine(!0),s=this.state.pos):++this.state.pos;}}}jsxReadNewLine(e){let s=this.input.charCodeAt(this.state.pos),r;return ++this.state.pos,s===13&&this.input.charCodeAt(this.state.pos)===10?(++this.state.pos,r=e?` -`:`\r -`):r=String.fromCharCode(s),++this.state.curLine,this.state.lineStart=this.state.pos,r}jsxReadString(e){let s="",r=++this.state.pos;for(;;){if(this.state.pos>=this.length)throw this.raise(l.UnterminatedString,{at:this.state.startLoc});let i=this.input.charCodeAt(this.state.pos);if(i===e)break;i===38?(s+=this.input.slice(r,this.state.pos),s+=this.jsxReadEntity(),r=this.state.pos):Oe(i)?(s+=this.input.slice(r,this.state.pos),s+=this.jsxReadNewLine(!1),r=this.state.pos):++this.state.pos;}return s+=this.input.slice(r,this.state.pos++),this.finishToken(129,s)}jsxReadEntity(){let e=++this.state.pos;if(this.codePointAtPos(this.state.pos)===35){++this.state.pos;let s=10;this.codePointAtPos(this.state.pos)===120&&(s=16,++this.state.pos);let r=this.readInt(s,void 0,!1,"bail");if(r!==null&&this.codePointAtPos(this.state.pos)===59)return ++this.state.pos,String.fromCodePoint(r)}else {let s=0,r=!1;for(;s++<10&&this.state.pos<this.length&&!(r=this.codePointAtPos(this.state.pos)==59);)++this.state.pos;if(r){let i=this.input.slice(e,this.state.pos),a=Ph[i];if(++this.state.pos,a)return a}}return this.state.pos=e,"&"}jsxReadWord(){let e,s=this.state.pos;do e=this.input.charCodeAt(++this.state.pos);while(ze(e)||e===45);return this.finishToken(136,this.input.slice(s,this.state.pos))}jsxParseIdentifier(){let e=this.startNode();return this.match(136)?e.name=this.state.value:Vt(this.state.type)?e.name=ve(this.state.type):this.unexpected(),this.next(),this.finishNode(e,"JSXIdentifier")}jsxParseNamespacedName(){let e=this.state.start,s=this.state.startLoc,r=this.jsxParseIdentifier();if(!this.eat(14))return r;let i=this.startNodeAt(e,s);return i.namespace=r,i.name=this.jsxParseIdentifier(),this.finishNode(i,"JSXNamespacedName")}jsxParseElementName(){let e=this.state.start,s=this.state.startLoc,r=this.jsxParseNamespacedName();if(r.type==="JSXNamespacedName")return r;for(;this.eat(16);){let i=this.startNodeAt(e,s);i.object=r,i.property=this.jsxParseIdentifier(),r=this.finishNode(i,"JSXMemberExpression");}return r}jsxParseAttributeValue(){let e;switch(this.state.type){case 5:return e=this.startNode(),this.setContext(U.brace),this.next(),e=this.jsxParseExpressionContainer(e,U.j_oTag),e.expression.type==="JSXEmptyExpression"&&this.raise(Be.AttributeIsEmpty,{at:e}),e;case 138:case 129:return this.parseExprAtom();default:throw this.raise(Be.UnsupportedJsxValue,{at:this.state.startLoc})}}jsxParseEmptyExpression(){let e=this.startNodeAt(this.state.lastTokEndLoc.index,this.state.lastTokEndLoc);return this.finishNodeAt(e,"JSXEmptyExpression",this.state.startLoc)}jsxParseSpreadChild(e){return this.next(),e.expression=this.parseExpression(),this.setContext(U.j_oTag),this.state.canStartJSXElement=!0,this.expect(8),this.finishNode(e,"JSXSpreadChild")}jsxParseExpressionContainer(e,s){if(this.match(8))e.expression=this.jsxParseEmptyExpression();else {let r=this.parseExpression();e.expression=r;}return this.setContext(s),this.state.canStartJSXElement=!0,this.expect(8),this.finishNode(e,"JSXExpressionContainer")}jsxParseAttribute(){let e=this.startNode();return this.match(5)?(this.setContext(U.brace),this.next(),this.expect(21),e.argument=this.parseMaybeAssignAllowIn(),this.setContext(U.j_oTag),this.state.canStartJSXElement=!0,this.expect(8),this.finishNode(e,"JSXSpreadAttribute")):(e.name=this.jsxParseNamespacedName(),e.value=this.eat(29)?this.jsxParseAttributeValue():null,this.finishNode(e,"JSXAttribute"))}jsxParseOpeningElementAt(e,s){let r=this.startNodeAt(e,s);return this.eat(139)?this.finishNode(r,"JSXOpeningFragment"):(r.name=this.jsxParseElementName(),this.jsxParseOpeningElementAfterName(r))}jsxParseOpeningElementAfterName(e){let s=[];for(;!this.match(56)&&!this.match(139);)s.push(this.jsxParseAttribute());return e.attributes=s,e.selfClosing=this.eat(56),this.expect(139),this.finishNode(e,"JSXOpeningElement")}jsxParseClosingElementAt(e,s){let r=this.startNodeAt(e,s);return this.eat(139)?this.finishNode(r,"JSXClosingFragment"):(r.name=this.jsxParseElementName(),this.expect(139),this.finishNode(r,"JSXClosingElement"))}jsxParseElementAt(e,s){let r=this.startNodeAt(e,s),i=[],a=this.jsxParseOpeningElementAt(e,s),n=null;if(!a.selfClosing){e:for(;;)switch(this.state.type){case 138:if(e=this.state.start,s=this.state.startLoc,this.next(),this.eat(56)){n=this.jsxParseClosingElementAt(e,s);break e}i.push(this.jsxParseElementAt(e,s));break;case 137:i.push(this.parseExprAtom());break;case 5:{let o=this.startNode();this.setContext(U.brace),this.next(),this.match(21)?i.push(this.jsxParseSpreadChild(o)):i.push(this.jsxParseExpressionContainer(o,U.j_expr));break}default:throw this.unexpected()}Ne(a)&&!Ne(n)&&n!==null?this.raise(Be.MissingClosingTagFragment,{at:n}):!Ne(a)&&Ne(n)?this.raise(Be.MissingClosingTagElement,{at:n,openingTagName:Ge(a.name)}):!Ne(a)&&!Ne(n)&&Ge(n.name)!==Ge(a.name)&&this.raise(Be.MissingClosingTagElement,{at:n,openingTagName:Ge(a.name)});}if(Ne(a)?(r.openingFragment=a,r.closingFragment=n):(r.openingElement=a,r.closingElement=n),r.children=i,this.match(47))throw this.raise(Be.UnwrappedAdjacentJSXElements,{at:this.state.startLoc});return Ne(a)?this.finishNode(r,"JSXFragment"):this.finishNode(r,"JSXElement")}jsxParseElement(){let e=this.state.start,s=this.state.startLoc;return this.next(),this.jsxParseElementAt(e,s)}setContext(e){let{context:s}=this.state;s[s.length-1]=e;}parseExprAtom(e){return this.match(137)?this.parseLiteral(this.state.value,"JSXText"):this.match(138)?this.jsxParseElement():this.match(47)&&this.input.charCodeAt(this.state.pos)!==33?(this.replaceToken(138),this.jsxParseElement()):super.parseExprAtom(e)}skipSpace(){this.curContext().preserveSpace||super.skipSpace();}getTokenFromCode(e){let s=this.curContext();if(s===U.j_expr)return this.jsxReadToken();if(s===U.j_oTag||s===U.j_cTag){if(ge(e))return this.jsxReadWord();if(e===62)return ++this.state.pos,this.finishToken(139);if((e===34||e===39)&&s===U.j_oTag)return this.jsxReadString(e)}return e===60&&this.state.canStartJSXElement&&this.input.charCodeAt(this.state.pos+1)!==33?(++this.state.pos,this.finishToken(138)):super.getTokenFromCode(e)}updateContext(e){let{context:s,type:r}=this.state;if(r===56&&e===138)s.splice(-2,2,U.j_cTag),this.state.canStartJSXElement=!1;else if(r===138)s.push(U.j_oTag);else if(r===139){let i=s[s.length-1];i===U.j_oTag&&e===56||i===U.j_cTag?(s.pop(),this.state.canStartJSXElement=s[s.length-1]===U.j_expr):(this.setContext(U.j_expr),this.state.canStartJSXElement=!0);}else this.state.canStartJSXElement=fo(r);}},Eh=class extends ns{constructor(){super(...arguments),this.types=new Set,this.enums=new Set,this.constEnums=new Set,this.classes=new Set,this.exportOnlyBindings=new Set;}},bh=class extends os{createScope(t){return new Eh(t)}declareName(t,e,s){let r=this.currentScope();if(e&Qt){this.maybeExportDefined(r,t),r.exportOnlyBindings.add(t);return}super.declareName(...arguments),e&Ve&&(e&Pe||(this.checkRedeclarationInScope(r,t,e,s),this.maybeExportDefined(r,t)),r.types.add(t)),e&Yt&&r.enums.add(t),e&$t&&r.constEnums.add(t),e&mt&&r.classes.add(t);}isRedeclaredInScope(t,e,s){if(t.enums.has(e)){if(s&Yt){let r=!!(s&$t),i=t.constEnums.has(e);return r!==i}return !0}return s&mt&&t.classes.has(e)?t.lexical.has(e)?!!(s&Pe):!1:s&Ve&&t.types.has(e)?!0:super.isRedeclaredInScope(...arguments)}checkLocalExport(t){let e=this.scopeStack[0],{name:s}=t;!e.types.has(s)&&!e.exportOnlyBindings.has(s)&&super.checkLocalExport(t);}},Ch=(t,e)=>Object.hasOwnProperty.call(t,e)&&t[e];function vh(t){if(t==null)throw new Error("Unexpected ".concat(t," value."));return t}function Lr(t){if(!t)throw new Error("Assert fail")}function Sh(t){return Kt(t)||Eo(t)}var S=j(Un||(Un=ht(["typescript"])))(t=>({AbstractMethodHasImplementation:t(e=>{let{methodName:s}=e;return "Method '".concat(s,"' cannot have an implementation because it is marked abstract.")}),AbstractPropertyHasInitializer:t(e=>{let{propertyName:s}=e;return "Property '".concat(s,"' cannot have an initializer because it is marked abstract.")}),AccesorCannotDeclareThisParameter:t("'get' and 'set' accessors cannot declare 'this' parameters."),AccesorCannotHaveTypeParameters:t("An accessor cannot have type parameters."),CannotFindName:t(e=>{let{name:s}=e;return "Cannot find name '".concat(s,"'.")}),ClassMethodHasDeclare:t("Class methods cannot have the 'declare' modifier."),ClassMethodHasReadonly:t("Class methods cannot have the 'readonly' modifier."),ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference:t("A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference."),ConstructorHasTypeParameters:t("Type parameters cannot appear on a constructor declaration."),DeclareAccessor:t(e=>{let{kind:s}=e;return "'declare' is not allowed in ".concat(s,"ters.")}),DeclareClassFieldHasInitializer:t("Initializers are not allowed in ambient contexts."),DeclareFunctionHasImplementation:t("An implementation cannot be declared in ambient contexts."),DuplicateAccessibilityModifier:t(e=>{return "Accessibility modifier already seen."}),DuplicateModifier:t(e=>{let{modifier:s}=e;return "Duplicate modifier: '".concat(s,"'.")}),EmptyHeritageClauseType:t(e=>{let{token:s}=e;return "'".concat(s,"' list cannot be empty.")}),EmptyTypeArguments:t("Type argument list cannot be empty."),EmptyTypeParameters:t("Type parameter list cannot be empty."),ExpectedAmbientAfterExportDeclare:t("'export declare' must be followed by an ambient declaration."),ImportAliasHasImportType:t("An import alias can not use 'import type'."),IncompatibleModifiers:t(e=>{let{modifiers:s}=e;return "'".concat(s[0],"' modifier cannot be used with '").concat(s[1],"' modifier.")}),IndexSignatureHasAbstract:t("Index signatures cannot have the 'abstract' modifier."),IndexSignatureHasAccessibility:t(e=>{let{modifier:s}=e;return "Index signatures cannot have an accessibility modifier ('".concat(s,"').")}),IndexSignatureHasDeclare:t("Index signatures cannot have the 'declare' modifier."),IndexSignatureHasOverride:t("'override' modifier cannot appear on an index signature."),IndexSignatureHasStatic:t("Index signatures cannot have the 'static' modifier."),InitializerNotAllowedInAmbientContext:t("Initializers are not allowed in ambient contexts."),InvalidModifierOnTypeMember:t(e=>{let{modifier:s}=e;return "'".concat(s,"' modifier cannot appear on a type member.")}),InvalidModifierOnTypeParameter:t(e=>{let{modifier:s}=e;return "'".concat(s,"' modifier cannot appear on a type parameter.")}),InvalidModifierOnTypeParameterPositions:t(e=>{let{modifier:s}=e;return "'".concat(s,"' modifier can only appear on a type parameter of a class, interface or type alias.")}),InvalidModifiersOrder:t(e=>{let{orderedModifiers:s}=e;return "'".concat(s[0],"' modifier must precede '").concat(s[1],"' modifier.")}),InvalidTupleMemberLabel:t("Tuple members must be labeled with a simple identifier."),MissingInterfaceName:t("'interface' declarations must be followed by an identifier."),MixedLabeledAndUnlabeledElements:t("Tuple members must all have names or all not have names."),NonAbstractClassHasAbstractMethod:t("Abstract methods can only appear within an abstract class."),NonClassMethodPropertyHasAbstractModifer:t("'abstract' modifier can only appear on a class, method, or property declaration."),OptionalTypeBeforeRequired:t("A required element cannot follow an optional element."),OverrideNotInSubClass:t("This member cannot have an 'override' modifier because its containing class does not extend another class."),PatternIsOptional:t("A binding pattern parameter cannot be optional in an implementation signature."),PrivateElementHasAbstract:t("Private elements cannot have the 'abstract' modifier."),PrivateElementHasAccessibility:t(e=>{let{modifier:s}=e;return "Private elements cannot have an accessibility modifier ('".concat(s,"').")}),ReadonlyForMethodSignature:t("'readonly' modifier can only appear on a property declaration or index signature."),ReservedArrowTypeParam:t("This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `<T,>() => ...`."),ReservedTypeAssertion:t("This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead."),SetAccesorCannotHaveOptionalParameter:t("A 'set' accessor cannot have an optional parameter."),SetAccesorCannotHaveRestParameter:t("A 'set' accessor cannot have rest parameter."),SetAccesorCannotHaveReturnType:t("A 'set' accessor cannot have a return type annotation."),SingleTypeParameterWithoutTrailingComma:t(e=>{let{typeParameterName:s}=e;return "Single type parameter ".concat(s," should have a trailing comma. Example usage: <").concat(s,",>.")}),StaticBlockCannotHaveModifier:t("Static class blocks cannot have any modifier."),TypeAnnotationAfterAssign:t("Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`."),TypeImportCannotSpecifyDefaultAndNamed:t("A type-only import can specify a default import or named bindings, but not both."),TypeModifierIsUsedInTypeExports:t("The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement."),TypeModifierIsUsedInTypeImports:t("The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement."),UnexpectedParameterModifier:t("A parameter property is only allowed in a constructor implementation."),UnexpectedReadonly:t("'readonly' type modifier is only permitted on array and tuple literal types."),UnexpectedTypeAnnotation:t("Did not expect a type annotation here."),UnexpectedTypeCastInParameter:t("Unexpected type cast in parameter position."),UnsupportedImportTypeArgument:t("Argument in a type import must be a string literal."),UnsupportedParameterPropertyKind:t("A parameter property may not be declared using a binding pattern."),UnsupportedSignatureParameterKind:t(e=>{let{type:s}=e;return "Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got ".concat(s,".")})}));function wh(t){switch(t){case"any":return "TSAnyKeyword";case"boolean":return "TSBooleanKeyword";case"bigint":return "TSBigIntKeyword";case"never":return "TSNeverKeyword";case"number":return "TSNumberKeyword";case"object":return "TSObjectKeyword";case"string":return "TSStringKeyword";case"symbol":return "TSSymbolKeyword";case"undefined":return "TSUndefinedKeyword";case"unknown":return "TSUnknownKeyword";default:return}}function Or(t){return t==="private"||t==="public"||t==="protected"}function Nh(t){return t==="in"||t==="out"}var Ih=t=>class extends t{getScopeHandler(){return bh}tsIsIdentifier(){return K(this.state.type)}tsTokenCanFollowModifier(){return (this.match(0)||this.match(5)||this.match(55)||this.match(21)||this.match(134)||this.isLiteralPropertyName())&&!this.hasPrecedingLineBreak()}tsNextTokenCanFollowModifier(){return this.next(),this.tsTokenCanFollowModifier()}tsParseModifier(e,s){if(!K(this.state.type)&&this.state.type!==58)return;let r=this.state.value;if(e.indexOf(r)!==-1){if(s&&this.tsIsStartOfStaticBlocks())return;if(this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this)))return r}}tsParseModifiers(e){let{modified:s,allowedModifiers:r,disallowedModifiers:i,stopOnStartOfClassStaticBlock:a,errorTemplate:n=S.InvalidModifierOnTypeMember}=e,o=(f,y,T,v)=>{y===T&&s[v]&&this.raise(S.InvalidModifiersOrder,{at:f,orderedModifiers:[T,v]});},c=(f,y,T,v)=>{(s[T]&&y===v||s[v]&&y===T)&&this.raise(S.IncompatibleModifiers,{at:f,modifiers:[T,v]});};for(;;){let{startLoc:f}=this.state,y=this.tsParseModifier(r.concat(i!=null?i:[]),a);if(!y)break;Or(y)?s.accessibility?this.raise(S.DuplicateAccessibilityModifier,{at:f,modifier:y}):(o(f,y,y,"override"),o(f,y,y,"static"),o(f,y,y,"readonly"),s.accessibility=y):Nh(y)?(s[y]&&this.raise(S.DuplicateModifier,{at:f,modifier:y}),s[y]=!0,o(f,y,"in","out")):(Object.hasOwnProperty.call(s,y)?this.raise(S.DuplicateModifier,{at:f,modifier:y}):(o(f,y,"static","readonly"),o(f,y,"static","override"),o(f,y,"override","readonly"),o(f,y,"abstract","override"),c(f,y,"declare","override"),c(f,y,"static","abstract")),s[y]=!0),i!=null&&i.includes(y)&&this.raise(n,{at:f,modifier:y});}}tsIsListTerminator(e){switch(e){case"EnumMembers":case"TypeMembers":return this.match(8);case"HeritageClauseElement":return this.match(5);case"TupleElementTypes":return this.match(3);case"TypeParametersOrArguments":return this.match(48)}throw new Error("Unreachable")}tsParseList(e,s){let r=[];for(;!this.tsIsListTerminator(e);)r.push(s());return r}tsParseDelimitedList(e,s,r){return vh(this.tsParseDelimitedListWorker(e,s,!0,r))}tsParseDelimitedListWorker(e,s,r,i){let a=[],n=-1;for(;!this.tsIsListTerminator(e);){n=-1;let o=s();if(o==null)return;if(a.push(o),this.eat(12)){n=this.state.lastTokStart;continue}if(this.tsIsListTerminator(e))break;r&&this.expect(12);return}return i&&(i.value=n),a}tsParseBracketedList(e,s,r,i,a){i||(r?this.expect(0):this.expect(47));let n=this.tsParseDelimitedList(e,s,a);return r?this.expect(3):this.expect(48),n}tsParseImportType(){let e=this.startNode();return this.expect(83),this.expect(10),this.match(129)||this.raise(S.UnsupportedImportTypeArgument,{at:this.state.startLoc}),e.argument=this.parseExprAtom(),this.expect(11),this.eat(16)&&(e.qualifier=this.tsParseEntityName()),this.match(47)&&(e.typeParameters=this.tsParseTypeArguments()),this.finishNode(e,"TSImportType")}tsParseEntityName(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,s=this.parseIdentifier(e);for(;this.eat(16);){let r=this.startNodeAtNode(s);r.left=s,r.right=this.parseIdentifier(e),s=this.finishNode(r,"TSQualifiedName");}return s}tsParseTypeReference(){let e=this.startNode();return e.typeName=this.tsParseEntityName(),!this.hasPrecedingLineBreak()&&this.match(47)&&(e.typeParameters=this.tsParseTypeArguments()),this.finishNode(e,"TSTypeReference")}tsParseThisTypePredicate(e){this.next();let s=this.startNodeAtNode(e);return s.parameterName=e,s.typeAnnotation=this.tsParseTypeAnnotation(!1),s.asserts=!1,this.finishNode(s,"TSTypePredicate")}tsParseThisTypeNode(){let e=this.startNode();return this.next(),this.finishNode(e,"TSThisType")}tsParseTypeQuery(){let e=this.startNode();return this.expect(87),this.match(83)?e.exprName=this.tsParseImportType():e.exprName=this.tsParseEntityName(),!this.hasPrecedingLineBreak()&&this.match(47)&&(e.typeParameters=this.tsParseTypeArguments()),this.finishNode(e,"TSTypeQuery")}tsParseInOutModifiers(e){this.tsParseModifiers({modified:e,allowedModifiers:["in","out"],disallowedModifiers:["public","private","protected","readonly","declare","abstract","override"],errorTemplate:S.InvalidModifierOnTypeParameter});}tsParseNoneModifiers(e){this.tsParseModifiers({modified:e,allowedModifiers:[],disallowedModifiers:["in","out"],errorTemplate:S.InvalidModifierOnTypeParameterPositions});}tsParseTypeParameter(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.tsParseNoneModifiers.bind(this),s=this.startNode();return e(s),s.name=this.tsParseTypeParameterName(),s.constraint=this.tsEatThenParseType(81),s.default=this.tsEatThenParseType(29),this.finishNode(s,"TSTypeParameter")}tsTryParseTypeParameters(e){if(this.match(47))return this.tsParseTypeParameters(e)}tsParseTypeParameters(e){let s=this.startNode();this.match(47)||this.match(138)?this.next():this.unexpected();let r={value:-1};return s.params=this.tsParseBracketedList("TypeParametersOrArguments",this.tsParseTypeParameter.bind(this,e),!1,!0,r),s.params.length===0&&this.raise(S.EmptyTypeParameters,{at:s}),r.value!==-1&&this.addExtra(s,"trailingComma",r.value),this.finishNode(s,"TSTypeParameterDeclaration")}tsTryNextParseConstantContext(){if(this.lookahead().type!==75)return null;this.next();let e=this.tsParseTypeReference();return e.typeParameters&&this.raise(S.CannotFindName,{at:e.typeName,name:"const"}),e}tsFillSignature(e,s){let r=e===19,i="parameters",a="typeAnnotation";s.typeParameters=this.tsTryParseTypeParameters(),this.expect(10),s[i]=this.tsParseBindingListForSignature(),r?s[a]=this.tsParseTypeOrTypePredicateAnnotation(e):this.match(e)&&(s[a]=this.tsParseTypeOrTypePredicateAnnotation(e));}tsParseBindingListForSignature(){return this.parseBindingList(11,41).map(e=>(e.type!=="Identifier"&&e.type!=="RestElement"&&e.type!=="ObjectPattern"&&e.type!=="ArrayPattern"&&this.raise(S.UnsupportedSignatureParameterKind,{at:e,type:e.type}),e))}tsParseTypeMemberSemicolon(){!this.eat(12)&&!this.isLineTerminator()&&this.expect(13);}tsParseSignatureMember(e,s){return this.tsFillSignature(14,s),this.tsParseTypeMemberSemicolon(),this.finishNode(s,e)}tsIsUnambiguouslyIndexSignature(){return this.next(),K(this.state.type)?(this.next(),this.match(14)):!1}tsTryParseIndexSignature(e){if(!(this.match(0)&&this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this))))return;this.expect(0);let s=this.parseIdentifier();s.typeAnnotation=this.tsParseTypeAnnotation(),this.resetEndLocation(s),this.expect(3),e.parameters=[s];let r=this.tsTryParseTypeAnnotation();return r&&(e.typeAnnotation=r),this.tsParseTypeMemberSemicolon(),this.finishNode(e,"TSIndexSignature")}tsParsePropertyOrMethodSignature(e,s){this.eat(17)&&(e.optional=!0);let r=e;if(this.match(10)||this.match(47)){s&&this.raise(S.ReadonlyForMethodSignature,{at:e});let i=r;i.kind&&this.match(47)&&this.raise(S.AccesorCannotHaveTypeParameters,{at:this.state.curPosition()}),this.tsFillSignature(14,i),this.tsParseTypeMemberSemicolon();let a="parameters",n="typeAnnotation";if(i.kind==="get")i[a].length>0&&(this.raise(l.BadGetterArity,{at:this.state.curPosition()}),this.isThisParam(i[a][0])&&this.raise(S.AccesorCannotDeclareThisParameter,{at:this.state.curPosition()}));else if(i.kind==="set"){if(i[a].length!==1)this.raise(l.BadSetterArity,{at:this.state.curPosition()});else {let o=i[a][0];this.isThisParam(o)&&this.raise(S.AccesorCannotDeclareThisParameter,{at:this.state.curPosition()}),o.type==="Identifier"&&o.optional&&this.raise(S.SetAccesorCannotHaveOptionalParameter,{at:this.state.curPosition()}),o.type==="RestElement"&&this.raise(S.SetAccesorCannotHaveRestParameter,{at:this.state.curPosition()});}i[n]&&this.raise(S.SetAccesorCannotHaveReturnType,{at:i[n]});}else i.kind="method";return this.finishNode(i,"TSMethodSignature")}else {let i=r;s&&(i.readonly=!0);let a=this.tsTryParseTypeAnnotation();return a&&(i.typeAnnotation=a),this.tsParseTypeMemberSemicolon(),this.finishNode(i,"TSPropertySignature")}}tsParseTypeMember(){let e=this.startNode();if(this.match(10)||this.match(47))return this.tsParseSignatureMember("TSCallSignatureDeclaration",e);if(this.match(77)){let r=this.startNode();return this.next(),this.match(10)||this.match(47)?this.tsParseSignatureMember("TSConstructSignatureDeclaration",e):(e.key=this.createIdentifier(r,"new"),this.tsParsePropertyOrMethodSignature(e,!1))}this.tsParseModifiers({modified:e,allowedModifiers:["readonly"],disallowedModifiers:["declare","abstract","private","protected","public","static","override"]});let s=this.tsTryParseIndexSignature(e);return s||(this.parsePropertyName(e),!e.computed&&e.key.type==="Identifier"&&(e.key.name==="get"||e.key.name==="set")&&this.tsTokenCanFollowModifier()&&(e.kind=e.key.name,this.parsePropertyName(e)),this.tsParsePropertyOrMethodSignature(e,!!e.readonly))}tsParseTypeLiteral(){let e=this.startNode();return e.members=this.tsParseObjectTypeMembers(),this.finishNode(e,"TSTypeLiteral")}tsParseObjectTypeMembers(){this.expect(5);let e=this.tsParseList("TypeMembers",this.tsParseTypeMember.bind(this));return this.expect(8),e}tsIsStartOfMappedType(){return this.next(),this.eat(53)?this.isContextual(118):(this.isContextual(118)&&this.next(),!this.match(0)||(this.next(),!this.tsIsIdentifier())?!1:(this.next(),this.match(58)))}tsParseMappedTypeParameter(){let e=this.startNode();return e.name=this.tsParseTypeParameterName(),e.constraint=this.tsExpectThenParseType(58),this.finishNode(e,"TSTypeParameter")}tsParseMappedType(){let e=this.startNode();return this.expect(5),this.match(53)?(e.readonly=this.state.value,this.next(),this.expectContextual(118)):this.eatContextual(118)&&(e.readonly=!0),this.expect(0),e.typeParameter=this.tsParseMappedTypeParameter(),e.nameType=this.eatContextual(93)?this.tsParseType():null,this.expect(3),this.match(53)?(e.optional=this.state.value,this.next(),this.expect(17)):this.eat(17)&&(e.optional=!0),e.typeAnnotation=this.tsTryParseType(),this.semicolon(),this.expect(8),this.finishNode(e,"TSMappedType")}tsParseTupleType(){let e=this.startNode();e.elementTypes=this.tsParseBracketedList("TupleElementTypes",this.tsParseTupleElementType.bind(this),!0,!1);let s=!1,r=null;return e.elementTypes.forEach(i=>{var a;let{type:n}=i;s&&n!=="TSRestType"&&n!=="TSOptionalType"&&!(n==="TSNamedTupleMember"&&i.optional)&&this.raise(S.OptionalTypeBeforeRequired,{at:i}),s=s||n==="TSNamedTupleMember"&&i.optional||n==="TSOptionalType",n==="TSRestType"&&(i=i.typeAnnotation,n=i.type);let o=n==="TSNamedTupleMember";r=(a=r)!=null?a:o,r!==o&&this.raise(S.MixedLabeledAndUnlabeledElements,{at:i});}),this.finishNode(e,"TSTupleType")}tsParseTupleElementType(){let{start:e,startLoc:s}=this.state,r=this.eat(21),i=this.tsParseType(),a=this.eat(17);if(this.eat(14)){let o=this.startNodeAtNode(i);o.optional=a,i.type==="TSTypeReference"&&!i.typeParameters&&i.typeName.type==="Identifier"?o.label=i.typeName:(this.raise(S.InvalidTupleMemberLabel,{at:i}),o.label=i),o.elementType=this.tsParseType(),i=this.finishNode(o,"TSNamedTupleMember");}else if(a){let o=this.startNodeAtNode(i);o.typeAnnotation=i,i=this.finishNode(o,"TSOptionalType");}if(r){let o=this.startNodeAt(e,s);o.typeAnnotation=i,i=this.finishNode(o,"TSRestType");}return i}tsParseParenthesizedType(){let e=this.startNode();return this.expect(10),e.typeAnnotation=this.tsParseType(),this.expect(11),this.finishNode(e,"TSParenthesizedType")}tsParseFunctionOrConstructorType(e,s){let r=this.startNode();return e==="TSConstructorType"&&(r.abstract=!!s,s&&this.next(),this.next()),this.tsFillSignature(19,r),this.finishNode(r,e)}tsParseLiteralTypeNode(){let e=this.startNode();return e.literal=(()=>{switch(this.state.type){case 130:case 131:case 129:case 85:case 86:return this.parseExprAtom();default:throw this.unexpected()}})(),this.finishNode(e,"TSLiteralType")}tsParseTemplateLiteralType(){let e=this.startNode();return e.literal=this.parseTemplate(!1),this.finishNode(e,"TSLiteralType")}parseTemplateSubstitution(){return this.state.inType?this.tsParseType():super.parseTemplateSubstitution()}tsParseThisTypeOrThisTypePredicate(){let e=this.tsParseThisTypeNode();return this.isContextual(113)&&!this.hasPrecedingLineBreak()?this.tsParseThisTypePredicate(e):e}tsParseNonArrayType(){switch(this.state.type){case 129:case 130:case 131:case 85:case 86:return this.tsParseLiteralTypeNode();case 53:if(this.state.value==="-"){let e=this.startNode(),s=this.lookahead();if(s.type!==130&&s.type!==131)throw this.unexpected();return e.literal=this.parseMaybeUnary(),this.finishNode(e,"TSLiteralType")}break;case 78:return this.tsParseThisTypeOrThisTypePredicate();case 87:return this.tsParseTypeQuery();case 83:return this.tsParseImportType();case 5:return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this))?this.tsParseMappedType():this.tsParseTypeLiteral();case 0:return this.tsParseTupleType();case 10:return this.tsParseParenthesizedType();case 25:case 24:return this.tsParseTemplateLiteralType();default:{let{type:e}=this.state;if(K(e)||e===88||e===84){let s=e===88?"TSVoidKeyword":e===84?"TSNullKeyword":wh(this.state.value);if(s!==void 0&&this.lookaheadCharCode()!==46){let r=this.startNode();return this.next(),this.finishNode(r,s)}return this.tsParseTypeReference()}}}throw this.unexpected()}tsParseArrayTypeOrHigher(){let e=this.tsParseNonArrayType();for(;!this.hasPrecedingLineBreak()&&this.eat(0);)if(this.match(3)){let s=this.startNodeAtNode(e);s.elementType=e,this.expect(3),e=this.finishNode(s,"TSArrayType");}else {let s=this.startNodeAtNode(e);s.objectType=e,s.indexType=this.tsParseType(),this.expect(3),e=this.finishNode(s,"TSIndexedAccessType");}return e}tsParseTypeOperator(){let e=this.startNode(),s=this.state.value;return this.next(),e.operator=s,e.typeAnnotation=this.tsParseTypeOperatorOrHigher(),s==="readonly"&&this.tsCheckTypeAnnotationForReadOnly(e),this.finishNode(e,"TSTypeOperator")}tsCheckTypeAnnotationForReadOnly(e){switch(e.typeAnnotation.type){case"TSTupleType":case"TSArrayType":return;default:this.raise(S.UnexpectedReadonly,{at:e});}}tsParseInferType(){let e=this.startNode();this.expectContextual(112);let s=this.startNode();return s.name=this.tsParseTypeParameterName(),s.constraint=this.tsTryParse(()=>this.tsParseConstraintForInferType()),e.typeParameter=this.finishNode(s,"TSTypeParameter"),this.finishNode(e,"TSInferType")}tsParseConstraintForInferType(){if(this.eat(81)){let e=this.tsInDisallowConditionalTypesContext(()=>this.tsParseType());if(this.state.inDisallowConditionalTypesContext||!this.match(17))return e}}tsParseTypeOperatorOrHigher(){return Po(this.state.type)&&!this.state.containsEsc?this.tsParseTypeOperator():this.isContextual(112)?this.tsParseInferType():this.tsInAllowConditionalTypesContext(()=>this.tsParseArrayTypeOrHigher())}tsParseUnionOrIntersectionType(e,s,r){let i=this.startNode(),a=this.eat(r),n=[];do n.push(s());while(this.eat(r));return n.length===1&&!a?n[0]:(i.types=n,this.finishNode(i,e))}tsParseIntersectionTypeOrHigher(){return this.tsParseUnionOrIntersectionType("TSIntersectionType",this.tsParseTypeOperatorOrHigher.bind(this),45)}tsParseUnionTypeOrHigher(){return this.tsParseUnionOrIntersectionType("TSUnionType",this.tsParseIntersectionTypeOrHigher.bind(this),43)}tsIsStartOfFunctionType(){return this.match(47)?!0:this.match(10)&&this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this))}tsSkipParameterStart(){if(K(this.state.type)||this.match(78))return this.next(),!0;if(this.match(5)){let{errors:e}=this.state,s=e.length;try{return this.parseObjectLike(8,!0),e.length===s}catch{return !1}}if(this.match(0)){this.next();let{errors:e}=this.state,s=e.length;try{return this.parseBindingList(3,93,!0),e.length===s}catch{return !1}}return !1}tsIsUnambiguouslyStartOfFunctionType(){return this.next(),!!(this.match(11)||this.match(21)||this.tsSkipParameterStart()&&(this.match(14)||this.match(12)||this.match(17)||this.match(29)||this.match(11)&&(this.next(),this.match(19))))}tsParseTypeOrTypePredicateAnnotation(e){return this.tsInType(()=>{let s=this.startNode();this.expect(e);let r=this.startNode(),i=!!this.tsTryParse(this.tsParseTypePredicateAsserts.bind(this));if(i&&this.match(78)){let o=this.tsParseThisTypeOrThisTypePredicate();return o.type==="TSThisType"?(r.parameterName=o,r.asserts=!0,r.typeAnnotation=null,o=this.finishNode(r,"TSTypePredicate")):(this.resetStartLocationFromNode(o,r),o.asserts=!0),s.typeAnnotation=o,this.finishNode(s,"TSTypeAnnotation")}let a=this.tsIsIdentifier()&&this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this));if(!a)return i?(r.parameterName=this.parseIdentifier(),r.asserts=i,r.typeAnnotation=null,s.typeAnnotation=this.finishNode(r,"TSTypePredicate"),this.finishNode(s,"TSTypeAnnotation")):this.tsParseTypeAnnotation(!1,s);let n=this.tsParseTypeAnnotation(!1);return r.parameterName=a,r.typeAnnotation=n,r.asserts=i,s.typeAnnotation=this.finishNode(r,"TSTypePredicate"),this.finishNode(s,"TSTypeAnnotation")})}tsTryParseTypeOrTypePredicateAnnotation(){return this.match(14)?this.tsParseTypeOrTypePredicateAnnotation(14):void 0}tsTryParseTypeAnnotation(){return this.match(14)?this.tsParseTypeAnnotation():void 0}tsTryParseType(){return this.tsEatThenParseType(14)}tsParseTypePredicatePrefix(){let e=this.parseIdentifier();if(this.isContextual(113)&&!this.hasPrecedingLineBreak())return this.next(),e}tsParseTypePredicateAsserts(){if(this.state.type!==106)return !1;let e=this.state.containsEsc;return this.next(),!K(this.state.type)&&!this.match(78)?!1:(e&&this.raise(l.InvalidEscapedReservedWord,{at:this.state.lastTokStartLoc,reservedWord:"asserts"}),!0)}tsParseTypeAnnotation(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.startNode();return this.tsInType(()=>{e&&this.expect(14),s.typeAnnotation=this.tsParseType();}),this.finishNode(s,"TSTypeAnnotation")}tsParseType(){Lr(this.state.inType);let e=this.tsParseNonConditionalType();if(this.state.inDisallowConditionalTypesContext||this.hasPrecedingLineBreak()||!this.eat(81))return e;let s=this.startNodeAtNode(e);return s.checkType=e,s.extendsType=this.tsInDisallowConditionalTypesContext(()=>this.tsParseNonConditionalType()),this.expect(17),s.trueType=this.tsInAllowConditionalTypesContext(()=>this.tsParseType()),this.expect(14),s.falseType=this.tsInAllowConditionalTypesContext(()=>this.tsParseType()),this.finishNode(s,"TSConditionalType")}isAbstractConstructorSignature(){return this.isContextual(120)&&this.lookahead().type===77}tsParseNonConditionalType(){return this.tsIsStartOfFunctionType()?this.tsParseFunctionOrConstructorType("TSFunctionType"):this.match(77)?this.tsParseFunctionOrConstructorType("TSConstructorType"):this.isAbstractConstructorSignature()?this.tsParseFunctionOrConstructorType("TSConstructorType",!0):this.tsParseUnionTypeOrHigher()}tsParseTypeAssertion(){this.getPluginOption("typescript","disallowAmbiguousJSXLike")&&this.raise(S.ReservedTypeAssertion,{at:this.state.startLoc});let e=this.startNode(),s=this.tsTryNextParseConstantContext();return e.typeAnnotation=s||this.tsNextThenParseType(),this.expect(48),e.expression=this.parseMaybeUnary(),this.finishNode(e,"TSTypeAssertion")}tsParseHeritageClause(e){let s=this.state.startLoc,r=this.tsParseDelimitedList("HeritageClauseElement",()=>{let i=this.startNode();return i.expression=this.tsParseEntityName(),this.match(47)&&(i.typeParameters=this.tsParseTypeArguments()),this.finishNode(i,"TSExpressionWithTypeArguments")});return r.length||this.raise(S.EmptyHeritageClauseType,{at:s,token:e}),r}tsParseInterfaceDeclaration(e){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(this.hasFollowingLineBreak())return null;this.expectContextual(125),s.declare&&(e.declare=!0),K(this.state.type)?(e.id=this.parseIdentifier(),this.checkIdentifier(e.id,Oo)):(e.id=null,this.raise(S.MissingInterfaceName,{at:this.state.startLoc})),e.typeParameters=this.tsTryParseTypeParameters(this.tsParseInOutModifiers.bind(this)),this.eat(81)&&(e.extends=this.tsParseHeritageClause("extends"));let r=this.startNode();return r.body=this.tsInType(this.tsParseObjectTypeMembers.bind(this)),e.body=this.finishNode(r,"TSInterfaceBody"),this.finishNode(e,"TSInterfaceDeclaration")}tsParseTypeAliasDeclaration(e){return e.id=this.parseIdentifier(),this.checkIdentifier(e.id,Bo),e.typeAnnotation=this.tsInType(()=>{if(e.typeParameters=this.tsTryParseTypeParameters(this.tsParseInOutModifiers.bind(this)),this.expect(29),this.isContextual(111)&&this.lookahead().type!==16){let s=this.startNode();return this.next(),this.finishNode(s,"TSIntrinsicKeyword")}return this.tsParseType()}),this.semicolon(),this.finishNode(e,"TSTypeAliasDeclaration")}tsInNoContext(e){let s=this.state.context;this.state.context=[s[0]];try{return e()}finally{this.state.context=s;}}tsInType(e){let s=this.state.inType;this.state.inType=!0;try{return e()}finally{this.state.inType=s;}}tsInDisallowConditionalTypesContext(e){let s=this.state.inDisallowConditionalTypesContext;this.state.inDisallowConditionalTypesContext=!0;try{return e()}finally{this.state.inDisallowConditionalTypesContext=s;}}tsInAllowConditionalTypesContext(e){let s=this.state.inDisallowConditionalTypesContext;this.state.inDisallowConditionalTypesContext=!1;try{return e()}finally{this.state.inDisallowConditionalTypesContext=s;}}tsEatThenParseType(e){return this.match(e)?this.tsNextThenParseType():void 0}tsExpectThenParseType(e){return this.tsDoThenParseType(()=>this.expect(e))}tsNextThenParseType(){return this.tsDoThenParseType(()=>this.next())}tsDoThenParseType(e){return this.tsInType(()=>(e(),this.tsParseType()))}tsParseEnumMember(){let e=this.startNode();return e.id=this.match(129)?this.parseExprAtom():this.parseIdentifier(!0),this.eat(29)&&(e.initializer=this.parseMaybeAssignAllowIn()),this.finishNode(e,"TSEnumMember")}tsParseEnumDeclaration(e){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return s.const&&(e.const=!0),s.declare&&(e.declare=!0),this.expectContextual(122),e.id=this.parseIdentifier(),this.checkIdentifier(e.id,e.const?Ro:Pr),this.expect(5),e.members=this.tsParseDelimitedList("EnumMembers",this.tsParseEnumMember.bind(this)),this.expect(8),this.finishNode(e,"TSEnumDeclaration")}tsParseModuleBlock(){let e=this.startNode();return this.scope.enter(Ke),this.expect(5),this.parseBlockOrModuleBlockBody(e.body=[],void 0,!0,8),this.scope.exit(),this.finishNode(e,"TSModuleBlock")}tsParseModuleOrNamespaceDeclaration(e){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(e.id=this.parseIdentifier(),s||this.checkIdentifier(e.id,jo),this.eat(16)){let r=this.startNode();this.tsParseModuleOrNamespaceDeclaration(r,!0),e.body=r;}else this.scope.enter(pt),this.prodParam.enter(He),e.body=this.tsParseModuleBlock(),this.prodParam.exit(),this.scope.exit();return this.finishNode(e,"TSModuleDeclaration")}tsParseAmbientExternalModuleDeclaration(e){return this.isContextual(109)?(e.global=!0,e.id=this.parseIdentifier()):this.match(129)?e.id=this.parseExprAtom():this.unexpected(),this.match(5)?(this.scope.enter(pt),this.prodParam.enter(He),e.body=this.tsParseModuleBlock(),this.prodParam.exit(),this.scope.exit()):this.semicolon(),this.finishNode(e,"TSModuleDeclaration")}tsParseImportEqualsDeclaration(e,s){e.isExport=s||!1,e.id=this.parseIdentifier(),this.checkIdentifier(e.id,Te),this.expect(29);let r=this.tsParseModuleReference();return e.importKind==="type"&&r.type!=="TSExternalModuleReference"&&this.raise(S.ImportAliasHasImportType,{at:r}),e.moduleReference=r,this.semicolon(),this.finishNode(e,"TSImportEqualsDeclaration")}tsIsExternalModuleReference(){return this.isContextual(116)&&this.lookaheadCharCode()===40}tsParseModuleReference(){return this.tsIsExternalModuleReference()?this.tsParseExternalModuleReference():this.tsParseEntityName(!1)}tsParseExternalModuleReference(){let e=this.startNode();if(this.expectContextual(116),this.expect(10),!this.match(129))throw this.unexpected();return e.expression=this.parseExprAtom(),this.expect(11),this.finishNode(e,"TSExternalModuleReference")}tsLookAhead(e){let s=this.state.clone(),r=e();return this.state=s,r}tsTryParseAndCatch(e){let s=this.tryParse(r=>e()||r());if(!(s.aborted||!s.node))return s.error&&(this.state=s.failState),s.node}tsTryParse(e){let s=this.state.clone(),r=e();if(r!==void 0&&r!==!1)return r;this.state=s;}tsTryParseDeclare(e){if(this.isLineTerminator())return;let s=this.state.type,r;return this.isContextual(99)&&(s=74,r="let"),this.tsInAmbientContext(()=>{if(s===68)return e.declare=!0,this.parseFunctionStatement(e,!1,!0);if(s===80)return e.declare=!0,this.parseClass(e,!0,!1);if(s===122)return this.tsParseEnumDeclaration(e,{declare:!0});if(s===109)return this.tsParseAmbientExternalModuleDeclaration(e);if(s===75||s===74)return !this.match(75)||!this.isLookaheadContextual("enum")?(e.declare=!0,this.parseVarStatement(e,r||this.state.value,!0)):(this.expect(75),this.tsParseEnumDeclaration(e,{const:!0,declare:!0}));if(s===125){let i=this.tsParseInterfaceDeclaration(e,{declare:!0});if(i)return i}if(K(s))return this.tsParseDeclaration(e,this.state.value,!0)})}tsTryParseExportDeclaration(){return this.tsParseDeclaration(this.startNode(),this.state.value,!0)}tsParseExpressionStatement(e,s){switch(s.name){case"declare":{let r=this.tsTryParseDeclare(e);if(r)return r.declare=!0,r;break}case"global":if(this.match(5)){this.scope.enter(pt),this.prodParam.enter(He);let r=e;return r.global=!0,r.id=s,r.body=this.tsParseModuleBlock(),this.scope.exit(),this.prodParam.exit(),this.finishNode(r,"TSModuleDeclaration")}break;default:return this.tsParseDeclaration(e,s.name,!1)}}tsParseDeclaration(e,s,r){switch(s){case"abstract":if(this.tsCheckLineTerminator(r)&&(this.match(80)||K(this.state.type)))return this.tsParseAbstractDeclaration(e);break;case"module":if(this.tsCheckLineTerminator(r)){if(this.match(129))return this.tsParseAmbientExternalModuleDeclaration(e);if(K(this.state.type))return this.tsParseModuleOrNamespaceDeclaration(e)}break;case"namespace":if(this.tsCheckLineTerminator(r)&&K(this.state.type))return this.tsParseModuleOrNamespaceDeclaration(e);break;case"type":if(this.tsCheckLineTerminator(r)&&K(this.state.type))return this.tsParseTypeAliasDeclaration(e);break}}tsCheckLineTerminator(e){return e?this.hasFollowingLineBreak()?!1:(this.next(),!0):!this.isLineTerminator()}tsTryParseGenericAsyncArrowFunction(e,s){if(!this.match(47))return;let r=this.state.maybeInArrowParameters;this.state.maybeInArrowParameters=!0;let i=this.tsTryParseAndCatch(()=>{let a=this.startNodeAt(e,s);return a.typeParameters=this.tsParseTypeParameters(),super.parseFunctionParams(a),a.returnType=this.tsTryParseTypeOrTypePredicateAnnotation(),this.expect(19),a});if(this.state.maybeInArrowParameters=r,!!i)return this.parseArrowExpression(i,null,!0)}tsParseTypeArgumentsInExpression(){if(this.reScan_lt()===47)return this.tsParseTypeArguments()}tsParseTypeArguments(){let e=this.startNode();return e.params=this.tsInType(()=>this.tsInNoContext(()=>(this.expect(47),this.tsParseDelimitedList("TypeParametersOrArguments",this.tsParseType.bind(this))))),e.params.length===0&&this.raise(S.EmptyTypeArguments,{at:e}),this.expect(48),this.finishNode(e,"TSTypeParameterInstantiation")}tsIsDeclarationStart(){return To(this.state.type)}isExportDefaultSpecifier(){return this.tsIsDeclarationStart()?!1:super.isExportDefaultSpecifier()}parseAssignableListItem(e,s){let r=this.state.start,i=this.state.startLoc,a,n=!1,o=!1;if(e!==void 0){let y={};this.tsParseModifiers({modified:y,allowedModifiers:["public","private","protected","override","readonly"]}),a=y.accessibility,o=y.override,n=y.readonly,e===!1&&(a||n||o)&&this.raise(S.UnexpectedParameterModifier,{at:i});}let c=this.parseMaybeDefault();this.parseAssignableListItemTypes(c);let f=this.parseMaybeDefault(c.start,c.loc.start,c);if(a||n||o){let y=this.startNodeAt(r,i);return s.length&&(y.decorators=s),a&&(y.accessibility=a),n&&(y.readonly=n),o&&(y.override=o),f.type!=="Identifier"&&f.type!=="AssignmentPattern"&&this.raise(S.UnsupportedParameterPropertyKind,{at:y}),y.parameter=f,this.finishNode(y,"TSParameterProperty")}return s.length&&(c.decorators=s),f}isSimpleParameter(e){return e.type==="TSParameterProperty"&&super.isSimpleParameter(e.parameter)||super.isSimpleParameter(e)}parseFunctionBodyAndFinish(e,s){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;this.match(14)&&(e.returnType=this.tsParseTypeOrTypePredicateAnnotation(14));let i=s==="FunctionDeclaration"?"TSDeclareFunction":s==="ClassMethod"||s==="ClassPrivateMethod"?"TSDeclareMethod":void 0;if(i&&!this.match(5)&&this.isLineTerminator()){this.finishNode(e,i);return}if(i==="TSDeclareFunction"&&this.state.isAmbientContext&&(this.raise(S.DeclareFunctionHasImplementation,{at:e}),e.declare)){super.parseFunctionBodyAndFinish(e,i,r);return}super.parseFunctionBodyAndFinish(e,s,r);}registerFunctionStatementId(e){!e.body&&e.id?this.checkIdentifier(e.id,Tr):super.registerFunctionStatementId(...arguments);}tsCheckForInvalidTypeCasts(e){e.forEach(s=>{(s==null?void 0:s.type)==="TSTypeCastExpression"&&this.raise(S.UnexpectedTypeAnnotation,{at:s.typeAnnotation});});}toReferencedList(e,s){return this.tsCheckForInvalidTypeCasts(e),e}parseArrayLike(){let e=super.parseArrayLike(...arguments);return e.type==="ArrayExpression"&&this.tsCheckForInvalidTypeCasts(e.elements),e}parseSubscript(e,s,r,i,a){if(!this.hasPrecedingLineBreak()&&this.match(35)){this.state.canStartJSXElement=!1,this.next();let o=this.startNodeAt(s,r);return o.expression=e,this.finishNode(o,"TSNonNullExpression")}let n=!1;if(this.match(18)&&this.lookaheadCharCode()===60){if(i)return a.stop=!0,e;a.optionalChainMember=n=!0,this.next();}if(this.match(47)||this.match(51)){let o,c=this.tsTryParseAndCatch(()=>{if(!i&&this.atPossibleAsyncArrow(e)){let T=this.tsTryParseGenericAsyncArrowFunction(s,r);if(T)return T}let f=this.tsParseTypeArgumentsInExpression();if(!f)throw this.unexpected();if(n&&!this.match(10))throw o=this.state.curPosition(),this.unexpected();if(ut(this.state.type)){let T=this.parseTaggedTemplateExpression(e,s,r,a);return T.typeParameters=f,T}if(!i&&this.eat(10)){let T=this.startNodeAt(s,r);return T.callee=e,T.arguments=this.parseCallExpressionArguments(11,!1),this.tsCheckForInvalidTypeCasts(T.arguments),T.typeParameters=f,a.optionalChainMember&&(T.optional=n),this.finishCallExpression(T,a.optionalChainMember)}if(Sh(this.state.type)&&this.state.type!==10)throw this.unexpected();let y=this.startNodeAt(s,r);return y.expression=e,y.typeParameters=f,this.finishNode(y,"TSInstantiationExpression")});if(o&&this.unexpected(o,10),c)return c}return super.parseSubscript(e,s,r,i,a)}parseNewCallee(e){var s;super.parseNewCallee(e);let{callee:r}=e;r.type==="TSInstantiationExpression"&&!((s=r.extra)!=null&&s.parenthesized)&&(e.typeParameters=r.typeParameters,e.callee=r.expression);}parseExprOp(e,s,r,i){if(lt(58)>i&&!this.hasPrecedingLineBreak()&&this.isContextual(93)){let a=this.startNodeAt(s,r);a.expression=e;let n=this.tsTryNextParseConstantContext();return n?a.typeAnnotation=n:a.typeAnnotation=this.tsNextThenParseType(),this.finishNode(a,"TSAsExpression"),this.reScan_lt_gt(),this.parseExprOp(a,s,r,i)}return super.parseExprOp(e,s,r,i)}checkReservedWord(e,s,r,i){this.state.isAmbientContext||super.checkReservedWord(e,s,r,i);}checkDuplicateExports(){}parseImport(e){if(e.importKind="value",K(this.state.type)||this.match(55)||this.match(5)){let r=this.lookahead();if(this.isContextual(126)&&r.type!==12&&r.type!==97&&r.type!==29&&(e.importKind="type",this.next(),r=this.lookahead()),K(this.state.type)&&r.type===29)return this.tsParseImportEqualsDeclaration(e)}let s=super.parseImport(e);return s.importKind==="type"&&s.specifiers.length>1&&s.specifiers[0].type==="ImportDefaultSpecifier"&&this.raise(S.TypeImportCannotSpecifyDefaultAndNamed,{at:s}),s}parseExport(e){if(this.match(83))return this.next(),this.isContextual(126)&&this.lookaheadCharCode()!==61?(e.importKind="type",this.next()):e.importKind="value",this.tsParseImportEqualsDeclaration(e,!0);if(this.eat(29)){let s=e;return s.expression=this.parseExpression(),this.semicolon(),this.finishNode(s,"TSExportAssignment")}else if(this.eatContextual(93)){let s=e;return this.expectContextual(124),s.id=this.parseIdentifier(),this.semicolon(),this.finishNode(s,"TSNamespaceExportDeclaration")}else return this.isContextual(126)&&this.lookahead().type===5?(this.next(),e.exportKind="type"):e.exportKind="value",super.parseExport(e)}isAbstractClass(){return this.isContextual(120)&&this.lookahead().type===80}parseExportDefaultExpression(){if(this.isAbstractClass()){let e=this.startNode();return this.next(),e.abstract=!0,this.parseClass(e,!0,!0),e}if(this.match(125)){let e=this.tsParseInterfaceDeclaration(this.startNode());if(e)return e}return super.parseExportDefaultExpression()}parseVarStatement(e,s){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,{isAmbientContext:i}=this.state,a=super.parseVarStatement(e,s,r||i);if(!i)return a;for(let{id:n,init:o}of a.declarations)!o||(s!=="const"||!!n.typeAnnotation?this.raise(S.InitializerNotAllowedInAmbientContext,{at:o}):o.type!=="StringLiteral"&&o.type!=="BooleanLiteral"&&o.type!=="NumericLiteral"&&o.type!=="BigIntLiteral"&&(o.type!=="TemplateLiteral"||o.expressions.length>0)&&!kh(o)&&this.raise(S.ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference,{at:o}));return a}parseStatementContent(e,s){if(this.match(75)&&this.isLookaheadContextual("enum")){let r=this.startNode();return this.expect(75),this.tsParseEnumDeclaration(r,{const:!0})}if(this.isContextual(122))return this.tsParseEnumDeclaration(this.startNode());if(this.isContextual(125)){let r=this.tsParseInterfaceDeclaration(this.startNode());if(r)return r}return super.parseStatementContent(e,s)}parseAccessModifier(){return this.tsParseModifier(["public","protected","private"])}tsHasSomeModifiers(e,s){return s.some(r=>Or(r)?e.accessibility===r:!!e[r])}tsIsStartOfStaticBlocks(){return this.isContextual(104)&&this.lookaheadCharCode()===123}parseClassMember(e,s,r){let i=["declare","private","public","protected","override","abstract","readonly","static"];this.tsParseModifiers({modified:s,allowedModifiers:i,disallowedModifiers:["in","out"],stopOnStartOfClassStaticBlock:!0,errorTemplate:S.InvalidModifierOnTypeParameterPositions});let a=()=>{this.tsIsStartOfStaticBlocks()?(this.next(),this.next(),this.tsHasSomeModifiers(s,i)&&this.raise(S.StaticBlockCannotHaveModifier,{at:this.state.curPosition()}),this.parseClassStaticBlock(e,s)):this.parseClassMemberWithIsStatic(e,s,r,!!s.static);};s.declare?this.tsInAmbientContext(a):a();}parseClassMemberWithIsStatic(e,s,r,i){let a=this.tsTryParseIndexSignature(s);if(a){e.body.push(a),s.abstract&&this.raise(S.IndexSignatureHasAbstract,{at:s}),s.accessibility&&this.raise(S.IndexSignatureHasAccessibility,{at:s,modifier:s.accessibility}),s.declare&&this.raise(S.IndexSignatureHasDeclare,{at:s}),s.override&&this.raise(S.IndexSignatureHasOverride,{at:s});return}!this.state.inAbstractClass&&s.abstract&&this.raise(S.NonAbstractClassHasAbstractMethod,{at:s}),s.override&&(r.hadSuperClass||this.raise(S.OverrideNotInSubClass,{at:s})),super.parseClassMemberWithIsStatic(e,s,r,i);}parsePostMemberNameModifiers(e){this.eat(17)&&(e.optional=!0),e.readonly&&this.match(10)&&this.raise(S.ClassMethodHasReadonly,{at:e}),e.declare&&this.match(10)&&this.raise(S.ClassMethodHasDeclare,{at:e});}parseExpressionStatement(e,s){return (s.type==="Identifier"?this.tsParseExpressionStatement(e,s):void 0)||super.parseExpressionStatement(e,s)}shouldParseExportDeclaration(){return this.tsIsDeclarationStart()?!0:super.shouldParseExportDeclaration()}parseConditional(e,s,r,i){if(!this.state.maybeInArrowParameters||!this.match(17))return super.parseConditional(e,s,r,i);let a=this.tryParse(()=>super.parseConditional(e,s,r));return a.node?(a.error&&(this.state=a.failState),a.node):(a.error&&super.setOptionalParametersError(i,a.error),e)}parseParenItem(e,s,r){if(e=super.parseParenItem(e,s,r),this.eat(17)&&(e.optional=!0,this.resetEndLocation(e)),this.match(14)){let i=this.startNodeAt(s,r);return i.expression=e,i.typeAnnotation=this.tsParseTypeAnnotation(),this.finishNode(i,"TSTypeCastExpression")}return e}parseExportDeclaration(e){if(!this.state.isAmbientContext&&this.isContextual(121))return this.tsInAmbientContext(()=>this.parseExportDeclaration(e));let s=this.state.start,r=this.state.startLoc,i=this.eatContextual(121);if(i&&(this.isContextual(121)||!this.shouldParseExportDeclaration()))throw this.raise(S.ExpectedAmbientAfterExportDeclare,{at:this.state.startLoc});let n=K(this.state.type)&&this.tsTryParseExportDeclaration()||super.parseExportDeclaration(e);return n?((n.type==="TSInterfaceDeclaration"||n.type==="TSTypeAliasDeclaration"||i)&&(e.exportKind="type"),i&&(this.resetStartLocation(n,s,r),n.declare=!0),n):null}parseClassId(e,s,r){if((!s||r)&&this.isContextual(110))return;super.parseClassId(e,s,r,e.declare?Tr:gr);let i=this.tsTryParseTypeParameters(this.tsParseInOutModifiers.bind(this));i&&(e.typeParameters=i);}parseClassPropertyAnnotation(e){!e.optional&&this.eat(35)&&(e.definite=!0);let s=this.tsTryParseTypeAnnotation();s&&(e.typeAnnotation=s);}parseClassProperty(e){if(this.parseClassPropertyAnnotation(e),this.state.isAmbientContext&&this.match(29)&&this.raise(S.DeclareClassFieldHasInitializer,{at:this.state.startLoc}),e.abstract&&this.match(29)){let{key:s}=e;this.raise(S.AbstractPropertyHasInitializer,{at:this.state.startLoc,propertyName:s.type==="Identifier"&&!e.computed?s.name:"[".concat(this.input.slice(s.start,s.end),"]")});}return super.parseClassProperty(e)}parseClassPrivateProperty(e){return e.abstract&&this.raise(S.PrivateElementHasAbstract,{at:e}),e.accessibility&&this.raise(S.PrivateElementHasAccessibility,{at:e,modifier:e.accessibility}),this.parseClassPropertyAnnotation(e),super.parseClassPrivateProperty(e)}pushClassMethod(e,s,r,i,a,n){let o=this.tsTryParseTypeParameters();o&&a&&this.raise(S.ConstructorHasTypeParameters,{at:o});let{declare:c=!1,kind:f}=s;c&&(f==="get"||f==="set")&&this.raise(S.DeclareAccessor,{at:s,kind:f}),o&&(s.typeParameters=o),super.pushClassMethod(e,s,r,i,a,n);}pushClassPrivateMethod(e,s,r,i){let a=this.tsTryParseTypeParameters();a&&(s.typeParameters=a),super.pushClassPrivateMethod(e,s,r,i);}declareClassPrivateMethodInScope(e,s){e.type!=="TSDeclareMethod"&&(e.type==="MethodDefinition"&&!e.value.body||super.declareClassPrivateMethodInScope(e,s));}parseClassSuper(e){super.parseClassSuper(e),e.superClass&&(this.match(47)||this.match(51))&&(e.superTypeParameters=this.tsParseTypeArgumentsInExpression()),this.eatContextual(110)&&(e.implements=this.tsParseHeritageClause("implements"));}parseObjPropValue(e){let s=this.tsTryParseTypeParameters();s&&(e.typeParameters=s);for(var r=arguments.length,i=new Array(r>1?r-1:0),a=1;a<r;a++)i[a-1]=arguments[a];super.parseObjPropValue(e,...i);}parseFunctionParams(e,s){let r=this.tsTryParseTypeParameters();r&&(e.typeParameters=r),super.parseFunctionParams(e,s);}parseVarId(e,s){super.parseVarId(e,s),e.id.type==="Identifier"&&!this.hasPrecedingLineBreak()&&this.eat(35)&&(e.definite=!0);let r=this.tsTryParseTypeAnnotation();r&&(e.id.typeAnnotation=r,this.resetEndLocation(e.id));}parseAsyncArrowFromCallExpression(e,s){return this.match(14)&&(e.returnType=this.tsParseTypeAnnotation()),super.parseAsyncArrowFromCallExpression(e,s)}parseMaybeAssign(){for(var e=arguments.length,s=new Array(e),r=0;r<e;r++)s[r]=arguments[r];var i,a,n,o,c,f,y;let T,v,N;if(this.hasPlugin("jsx")&&(this.match(138)||this.match(47))){if(T=this.state.clone(),v=this.tryParse(()=>super.parseMaybeAssign(...s),T),!v.error)return v.node;let{context:te}=this.state,he=te[te.length-1];(he===U.j_oTag||he===U.j_expr)&&te.pop();}if(!((i=v)!=null&&i.error)&&!this.match(47))return super.parseMaybeAssign(...s);let R;T=T||this.state.clone();let z=this.tryParse(te=>{var he,pe,st;R=this.tsParseTypeParameters();let de=super.parseMaybeAssign(...s);return (de.type!=="ArrowFunctionExpression"||(he=de.extra)!=null&&he.parenthesized)&&te(),((pe=R)==null?void 0:pe.params.length)!==0&&this.resetStartLocationFromNode(de,R),de.typeParameters=R,this.hasPlugin("jsx")&&de.typeParameters.params.length===1&&!((st=de.typeParameters.extra)!=null&&st.trailingComma)&&de.typeParameters.params[0].constraint,de},T);if(!z.error&&!z.aborted)return R&&this.reportReservedArrowTypeParam(R),z.node;if(!v&&(Lr(!this.hasPlugin("jsx")),N=this.tryParse(()=>super.parseMaybeAssign(...s),T),!N.error))return N.node;if((a=v)!=null&&a.node)return this.state=v.failState,v.node;if(z.node)return this.state=z.failState,R&&this.reportReservedArrowTypeParam(R),z.node;if((n=N)!=null&&n.node)return this.state=N.failState,N.node;throw (o=v)!=null&&o.thrown?v.error:z.thrown?z.error:(c=N)!=null&&c.thrown?N.error:((f=v)==null?void 0:f.error)||z.error||((y=N)==null?void 0:y.error)}reportReservedArrowTypeParam(e){var s;e.params.length===1&&!((s=e.extra)!=null&&s.trailingComma)&&this.getPluginOption("typescript","disallowAmbiguousJSXLike")&&this.raise(S.ReservedArrowTypeParam,{at:e});}parseMaybeUnary(e){return !this.hasPlugin("jsx")&&this.match(47)?this.tsParseTypeAssertion():super.parseMaybeUnary(e)}parseArrow(e){if(this.match(14)){let s=this.tryParse(r=>{let i=this.tsParseTypeOrTypePredicateAnnotation(14);return (this.canInsertSemicolon()||!this.match(19))&&r(),i});if(s.aborted)return;s.thrown||(s.error&&(this.state=s.failState),e.returnType=s.node);}return super.parseArrow(e)}parseAssignableListItemTypes(e){this.eat(17)&&(e.type!=="Identifier"&&!this.state.isAmbientContext&&!this.state.inType&&this.raise(S.PatternIsOptional,{at:e}),e.optional=!0);let s=this.tsTryParseTypeAnnotation();return s&&(e.typeAnnotation=s),this.resetEndLocation(e),e}isAssignable(e,s){switch(e.type){case"TSTypeCastExpression":return this.isAssignable(e.expression,s);case"TSParameterProperty":return !0;default:return super.isAssignable(e,s)}}toAssignable(e){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;switch(e.type){case"ParenthesizedExpression":this.toAssignableParenthesizedExpression(e,s);break;case"TSAsExpression":case"TSNonNullExpression":case"TSTypeAssertion":s?this.expressionScope.recordArrowParemeterBindingError(S.UnexpectedTypeCastInParameter,{at:e}):this.raise(S.UnexpectedTypeCastInParameter,{at:e}),this.toAssignable(e.expression,s);break;case"AssignmentExpression":!s&&e.left.type==="TSTypeCastExpression"&&(e.left=this.typeCastToParameter(e.left));default:super.toAssignable(e,s);}}toAssignableParenthesizedExpression(e,s){switch(e.expression.type){case"TSAsExpression":case"TSNonNullExpression":case"TSTypeAssertion":case"ParenthesizedExpression":this.toAssignable(e.expression,s);break;default:super.toAssignable(e,s);}}checkToRestConversion(e,s){switch(e.type){case"TSAsExpression":case"TSTypeAssertion":case"TSNonNullExpression":this.checkToRestConversion(e.expression,!1);break;default:super.checkToRestConversion(e,s);}}isValidLVal(e,s,r){return Ch({TSTypeCastExpression:!0,TSParameterProperty:"parameter",TSNonNullExpression:"expression",TSAsExpression:(r!==Le||!s)&&["expression",!0],TSTypeAssertion:(r!==Le||!s)&&["expression",!0]},e)||super.isValidLVal(e,s,r)}parseBindingAtom(){switch(this.state.type){case 78:return this.parseIdentifier(!0);default:return super.parseBindingAtom()}}parseMaybeDecoratorArguments(e){if(this.match(47)||this.match(51)){let s=this.tsParseTypeArgumentsInExpression();if(this.match(10)){let r=super.parseMaybeDecoratorArguments(e);return r.typeParameters=s,r}this.unexpected(null,10);}return super.parseMaybeDecoratorArguments(e)}checkCommaAfterRest(e){return this.state.isAmbientContext&&this.match(12)&&this.lookaheadCharCode()===e?(this.next(),!1):super.checkCommaAfterRest(e)}isClassMethod(){return this.match(47)||super.isClassMethod()}isClassProperty(){return this.match(35)||this.match(14)||super.isClassProperty()}parseMaybeDefault(){let e=super.parseMaybeDefault(...arguments);return e.type==="AssignmentPattern"&&e.typeAnnotation&&e.right.start<e.typeAnnotation.start&&this.raise(S.TypeAnnotationAfterAssign,{at:e.typeAnnotation}),e}getTokenFromCode(e){if(this.state.inType){if(e===62)return this.finishOp(48,1);if(e===60)return this.finishOp(47,1)}return super.getTokenFromCode(e)}reScan_lt_gt(){let{type:e}=this.state;e===47?(this.state.pos-=1,this.readToken_lt()):e===48&&(this.state.pos-=1,this.readToken_gt());}reScan_lt(){let{type:e}=this.state;return e===51?(this.state.pos-=2,this.finishOp(47,1),47):e}toAssignableList(e){for(let s=0;s<e.length;s++){let r=e[s];(r==null?void 0:r.type)==="TSTypeCastExpression"&&(e[s]=this.typeCastToParameter(r));}super.toAssignableList(...arguments);}typeCastToParameter(e){return e.expression.typeAnnotation=e.typeAnnotation,this.resetEndLocation(e.expression,e.typeAnnotation.loc.end),e.expression}shouldParseArrow(e){return this.match(14)?e.every(s=>this.isAssignable(s,!0)):super.shouldParseArrow(e)}shouldParseAsyncArrow(){return this.match(14)||super.shouldParseAsyncArrow()}canHaveLeadingDecorator(){return super.canHaveLeadingDecorator()||this.isAbstractClass()}jsxParseOpeningElementAfterName(e){if(this.match(47)||this.match(51)){let s=this.tsTryParseAndCatch(()=>this.tsParseTypeArgumentsInExpression());s&&(e.typeParameters=s);}return super.jsxParseOpeningElementAfterName(e)}getGetterSetterExpectedParamCount(e){let s=super.getGetterSetterExpectedParamCount(e),i=this.getObjectOrClassMethodParams(e)[0];return i&&this.isThisParam(i)?s+1:s}parseCatchClauseParam(){let e=super.parseCatchClauseParam(),s=this.tsTryParseTypeAnnotation();return s&&(e.typeAnnotation=s,this.resetEndLocation(e)),e}tsInAmbientContext(e){let s=this.state.isAmbientContext;this.state.isAmbientContext=!0;try{return e()}finally{this.state.isAmbientContext=s;}}parseClass(e){let s=this.state.inAbstractClass;this.state.inAbstractClass=!!e.abstract;try{for(var r=arguments.length,i=new Array(r>1?r-1:0),a=1;a<r;a++)i[a-1]=arguments[a];return super.parseClass(e,...i)}finally{this.state.inAbstractClass=s;}}tsParseAbstractDeclaration(e){if(this.match(80))return e.abstract=!0,this.parseClass(e,!0,!1);if(this.isContextual(125)){if(!this.hasFollowingLineBreak())return e.abstract=!0,this.raise(S.NonClassMethodPropertyHasAbstractModifer,{at:e}),this.tsParseInterfaceDeclaration(e)}else this.unexpected(null,80);}parseMethod(){let e=super.parseMethod(...arguments);if(e.abstract&&(this.hasPlugin("estree")?!!e.value.body:!!e.body)){let{key:r}=e;this.raise(S.AbstractMethodHasImplementation,{at:e,methodName:r.type==="Identifier"&&!e.computed?r.name:"[".concat(this.input.slice(r.start,r.end),"]")});}return e}tsParseTypeParameterName(){return this.parseIdentifier().name}shouldParseAsAmbientContext(){return !!this.getPluginOption("typescript","dts")}parse(){return this.shouldParseAsAmbientContext()&&(this.state.isAmbientContext=!0),super.parse()}getExpression(){return this.shouldParseAsAmbientContext()&&(this.state.isAmbientContext=!0),super.getExpression()}parseExportSpecifier(e,s,r,i){return !s&&i?(this.parseTypeOnlyImportExportSpecifier(e,!1,r),this.finishNode(e,"ExportSpecifier")):(e.exportKind="value",super.parseExportSpecifier(e,s,r,i))}parseImportSpecifier(e,s,r,i){return !s&&i?(this.parseTypeOnlyImportExportSpecifier(e,!0,r),this.finishNode(e,"ImportSpecifier")):(e.importKind="value",super.parseImportSpecifier(e,s,r,i))}parseTypeOnlyImportExportSpecifier(e,s,r){let i=s?"imported":"local",a=s?"local":"exported",n=e[i],o,c=!1,f=!0,y=n.loc.start;if(this.isContextual(93)){let v=this.parseIdentifier();if(this.isContextual(93)){let N=this.parseIdentifier();ye(this.state.type)?(c=!0,n=v,o=s?this.parseIdentifier():this.parseModuleExportName(),f=!1):(o=N,f=!1);}else ye(this.state.type)?(f=!1,o=s?this.parseIdentifier():this.parseModuleExportName()):(c=!0,n=v);}else ye(this.state.type)&&(c=!0,s?(n=this.parseIdentifier(!0),this.isContextual(93)||this.checkReservedWord(n.name,n.loc.start,!0,!0)):n=this.parseModuleExportName());c&&r&&this.raise(s?S.TypeModifierIsUsedInTypeImports:S.TypeModifierIsUsedInTypeExports,{at:y}),e[i]=n,e[a]=o;let T=s?"importKind":"exportKind";e[T]=c?"type":"value",f&&this.eatContextual(93)&&(e[a]=s?this.parseIdentifier():this.parseModuleExportName()),e[a]||(e[a]=Ee(e[i])),s&&this.checkIdentifier(e[a],Te);}};function kh(t){if(t.type!=="MemberExpression")return !1;let{computed:e,property:s}=t;return e&&s.type!=="StringLiteral"&&(s.type!=="TemplateLiteral"||s.expressions.length>0)?!1:Br(t.object)}function Br(t){return t.type==="Identifier"?!0:t.type!=="MemberExpression"||t.computed?!1:Br(t.object)}var Mr=j(_n||(_n=ht(["placeholders"])))(t=>({ClassNameIsRequired:t("A class name is required."),UnexpectedSpace:t("Unexpected space in placeholder.")})),Dh=t=>class extends t{parsePlaceholder(e){if(this.match(140)){let s=this.startNode();return this.next(),this.assertNoSpace(),s.name=super.parseIdentifier(!0),this.assertNoSpace(),this.expect(140),this.finishPlaceholder(s,e)}}finishPlaceholder(e,s){let r=!!(e.expectedNode&&e.type==="Placeholder");return e.expectedNode=s,r?e:this.finishNode(e,"Placeholder")}getTokenFromCode(e){return e===37&&this.input.charCodeAt(this.state.pos+1)===37?this.finishOp(140,2):super.getTokenFromCode(...arguments)}parseExprAtom(){return this.parsePlaceholder("Expression")||super.parseExprAtom(...arguments)}parseIdentifier(){return this.parsePlaceholder("Identifier")||super.parseIdentifier(...arguments)}checkReservedWord(e){e!==void 0&&super.checkReservedWord(...arguments);}parseBindingAtom(){return this.parsePlaceholder("Pattern")||super.parseBindingAtom(...arguments)}isValidLVal(e){for(var s=arguments.length,r=new Array(s>1?s-1:0),i=1;i<s;i++)r[i-1]=arguments[i];return e==="Placeholder"||super.isValidLVal(e,...r)}toAssignable(e){e&&e.type==="Placeholder"&&e.expectedNode==="Expression"?e.expectedNode="Pattern":super.toAssignable(...arguments);}isLet(e){return super.isLet(e)?!0:!this.isContextual(99)||e?!1:this.lookahead().type===140}verifyBreakContinue(e){e.label&&e.label.type==="Placeholder"||super.verifyBreakContinue(...arguments);}parseExpressionStatement(e,s){if(s.type!=="Placeholder"||s.extra&&s.extra.parenthesized)return super.parseExpressionStatement(...arguments);if(this.match(14)){let r=e;return r.label=this.finishPlaceholder(s,"Identifier"),this.next(),r.body=this.parseStatement("label"),this.finishNode(r,"LabeledStatement")}return this.semicolon(),e.name=s.name,this.finishPlaceholder(e,"Statement")}parseBlock(){return this.parsePlaceholder("BlockStatement")||super.parseBlock(...arguments)}parseFunctionId(){return this.parsePlaceholder("Identifier")||super.parseFunctionId(...arguments)}parseClass(e,s,r){let i=s?"ClassDeclaration":"ClassExpression";this.next(),this.takeDecorators(e);let a=this.state.strict,n=this.parsePlaceholder("Identifier");if(n)if(this.match(81)||this.match(140)||this.match(5))e.id=n;else {if(r||!s)return e.id=null,e.body=this.finishPlaceholder(n,"ClassBody"),this.finishNode(e,i);throw this.raise(Mr.ClassNameIsRequired,{at:this.state.startLoc})}else this.parseClassId(e,s,r);return this.parseClassSuper(e),e.body=this.parsePlaceholder("ClassBody")||this.parseClassBody(!!e.superClass,a),this.finishNode(e,i)}parseExport(e){let s=this.parsePlaceholder("Identifier");if(!s)return super.parseExport(...arguments);if(!this.isContextual(97)&&!this.match(12))return e.specifiers=[],e.source=null,e.declaration=this.finishPlaceholder(s,"Declaration"),this.finishNode(e,"ExportNamedDeclaration");this.expectPlugin("exportDefaultFrom");let r=this.startNode();return r.exported=s,e.specifiers=[this.finishNode(r,"ExportDefaultSpecifier")],super.parseExport(e)}isExportDefaultSpecifier(){if(this.match(65)){let e=this.nextTokenStart();if(this.isUnparsedContextual(e,"from")&&this.input.startsWith(ve(140),this.nextTokenStartSince(e+4)))return !0}return super.isExportDefaultSpecifier()}maybeParseExportDefaultSpecifier(e){return e.specifiers&&e.specifiers.length>0?!0:super.maybeParseExportDefaultSpecifier(...arguments)}checkExport(e){let{specifiers:s}=e;s!=null&&s.length&&(e.specifiers=s.filter(r=>r.exported.type==="Placeholder")),super.checkExport(e),e.specifiers=s;}parseImport(e){let s=this.parsePlaceholder("Identifier");if(!s)return super.parseImport(...arguments);if(e.specifiers=[],!this.isContextual(97)&&!this.match(12))return e.source=this.finishPlaceholder(s,"StringLiteral"),this.semicolon(),this.finishNode(e,"ImportDeclaration");let r=this.startNodeAtNode(s);return r.local=s,this.finishNode(r,"ImportDefaultSpecifier"),e.specifiers.push(r),this.eat(12)&&(this.maybeParseStarImportSpecifier(e)||this.parseNamedImportSpecifiers(e)),this.expectContextual(97),e.source=this.parseImportSource(),this.semicolon(),this.finishNode(e,"ImportDeclaration")}parseImportSource(){return this.parsePlaceholder("StringLiteral")||super.parseImportSource(...arguments)}assertNoSpace(){this.state.start>this.state.lastTokEndLoc.index&&this.raise(Mr.UnexpectedSpace,{at:this.state.lastTokEndLoc});}},Fh=t=>class extends t{parseV8Intrinsic(){if(this.match(54)){let e=this.state.startLoc,s=this.startNode();if(this.next(),K(this.state.type)){let r=this.parseIdentifierName(this.state.start),i=this.createIdentifier(s,r);if(i.type="V8IntrinsicIdentifier",this.match(10))return i}this.unexpected(e);}}parseExprAtom(){return this.parseV8Intrinsic()||super.parseExprAtom(...arguments)}};function se(t,e){let[s,r]=typeof e=="string"?[e,{}]:e,i=Object.keys(r),a=i.length===0;return t.some(n=>{if(typeof n=="string")return a&&n===s;{let[o,c]=n;if(o!==s)return !1;for(let f of i)if(c[f]!==r[f])return !1;return !0}})}function et(t,e,s){let r=t.find(i=>Array.isArray(i)?i[0]===e:i===e);return r&&Array.isArray(r)?r[1][s]:null}var Rr=["minimal","fsharp","hack","smart"],jr=["^^","@@","^","%","#"],qr=["hash","bar"];function Lh(t){if(se(t,"decorators")){if(se(t,"decorators-legacy"))throw new Error("Cannot use the decorators and decorators-legacy plugin together");let e=et(t,"decorators","decoratorsBeforeExport");if(e==null)throw new Error("The 'decorators' plugin requires a 'decoratorsBeforeExport' option, whose value must be a boolean. If you are migrating from Babylon/Babel 6 or want to use the old decorators proposal, you should use the 'decorators-legacy' plugin instead of 'decorators'.");if(typeof e!="boolean")throw new Error("'decoratorsBeforeExport' must be a boolean.")}if(se(t,"flow")&&se(t,"typescript"))throw new Error("Cannot combine flow and typescript plugins.");if(se(t,"placeholders")&&se(t,"v8intrinsic"))throw new Error("Cannot combine placeholders and v8intrinsic plugins.");if(se(t,"pipelineOperator")){let e=et(t,"pipelineOperator","proposal");if(!Rr.includes(e)){let r=Rr.map(i=>'"'.concat(i,'"')).join(", ");throw new Error('"pipelineOperator" requires "proposal" option whose value must be one of: '.concat(r,"."))}let s=se(t,["recordAndTuple",{syntaxType:"hash"}]);if(e==="hack"){if(se(t,"placeholders"))throw new Error("Cannot combine placeholders plugin and Hack-style pipes.");if(se(t,"v8intrinsic"))throw new Error("Cannot combine v8intrinsic plugin and Hack-style pipes.");let r=et(t,"pipelineOperator","topicToken");if(!jr.includes(r)){let i=jr.map(a=>'"'.concat(a,'"')).join(", ");throw new Error('"pipelineOperator" in "proposal": "hack" mode also requires a "topicToken" option whose value must be one of: '.concat(i,"."))}if(r==="#"&&s)throw new Error('Plugin conflict between `["pipelineOperator", { proposal: "hack", topicToken: "#" }]` and `["recordAndtuple", { syntaxType: "hash"}]`.')}else if(e==="smart"&&s)throw new Error('Plugin conflict between `["pipelineOperator", { proposal: "smart" }]` and `["recordAndtuple", { syntaxType: "hash"}]`.')}if(se(t,"moduleAttributes")){if(se(t,"importAssertions"))throw new Error("Cannot combine importAssertions and moduleAttributes plugins.");if(et(t,"moduleAttributes","version")!=="may-2020")throw new Error("The 'moduleAttributes' plugin requires a 'version' option, representing the last proposal update. Currently, the only supported value is 'may-2020'.")}if(se(t,"recordAndTuple")&&!qr.includes(et(t,"recordAndTuple","syntaxType")))throw new Error("'recordAndTuple' requires 'syntaxType' option whose value should be one of: "+qr.map(e=>"'".concat(e,"'")).join(", "));if(se(t,"asyncDoExpressions")&&!se(t,"doExpressions")){let e=new Error("'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins.");throw e.missingPlugins="doExpressions",e}}var Ur={estree:Ce,jsx:Th,flow:Ah,typescript:Ih,v8intrinsic:Fh,placeholders:Dh},Oh=Object.keys(Ur),_r={sourceType:"script",sourceFilename:void 0,startColumn:0,startLine:1,allowAwaitOutsideFunction:!1,allowReturnOutsideFunction:!1,allowImportExportEverywhere:!1,allowSuperOutsideMethod:!1,allowUndeclaredExports:!1,plugins:[],strictMode:null,ranges:!1,tokens:!1,createParenthesizedExpressions:!1,errorRecovery:!1,attachComment:!0};function Bh(t){let e={};for(let s of Object.keys(_r))e[s]=t&&t[s]!=null?t[s]:_r[s];return e}var Mh=(t,e)=>Object.hasOwnProperty.call(t,e)&&t[e],zr=t=>t.type==="ParenthesizedExpression"?zr(t.expression):t,Rh=class extends fh{toAssignable(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;var s,r;let i;switch((t.type==="ParenthesizedExpression"||(s=t.extra)!=null&&s.parenthesized)&&(i=zr(t),e?i.type==="Identifier"?this.expressionScope.recordArrowParemeterBindingError(l.InvalidParenthesizedAssignment,{at:t}):i.type!=="MemberExpression"&&this.raise(l.InvalidParenthesizedAssignment,{at:t}):this.raise(l.InvalidParenthesizedAssignment,{at:t})),t.type){case"Identifier":case"ObjectPattern":case"ArrayPattern":case"AssignmentPattern":case"RestElement":break;case"ObjectExpression":t.type="ObjectPattern";for(let n=0,o=t.properties.length,c=o-1;n<o;n++){var a;let f=t.properties[n],y=n===c;this.toAssignableObjectExpressionProp(f,y,e),y&&f.type==="RestElement"&&(a=t.extra)!=null&&a.trailingCommaLoc&&this.raise(l.RestTrailingComma,{at:t.extra.trailingCommaLoc});}break;case"ObjectProperty":{let{key:n,value:o}=t;this.isPrivateName(n)&&this.classScope.usePrivateName(this.getPrivateNameSV(n),n.loc.start),this.toAssignable(o,e);break}case"SpreadElement":throw new Error("Internal @babel/parser error (this is a bug, please report it). SpreadElement should be converted by .toAssignable's caller.");case"ArrayExpression":t.type="ArrayPattern",this.toAssignableList(t.elements,(r=t.extra)==null?void 0:r.trailingCommaLoc,e);break;case"AssignmentExpression":t.operator!=="="&&this.raise(l.MissingEqInAssignment,{at:t.left.loc.end}),t.type="AssignmentPattern",delete t.operator,this.toAssignable(t.left,e);break;case"ParenthesizedExpression":this.toAssignable(i,e);break}}toAssignableObjectExpressionProp(t,e,s){if(t.type==="ObjectMethod")this.raise(t.kind==="get"||t.kind==="set"?l.PatternHasAccessor:l.PatternHasMethod,{at:t.key});else if(t.type==="SpreadElement"){t.type="RestElement";let r=t.argument;this.checkToRestConversion(r,!1),this.toAssignable(r,s),e||this.raise(l.RestTrailingComma,{at:t});}else this.toAssignable(t,s);}toAssignableList(t,e,s){let r=t.length-1;for(let i=0;i<=r;i++){let a=t[i];if(!!a){if(a.type==="SpreadElement"){a.type="RestElement";let n=a.argument;this.checkToRestConversion(n,!0),this.toAssignable(n,s);}else this.toAssignable(a,s);a.type==="RestElement"&&(i<r?this.raise(l.RestTrailingComma,{at:a}):e&&this.raise(l.RestTrailingComma,{at:e}));}}}isAssignable(t,e){switch(t.type){case"Identifier":case"ObjectPattern":case"ArrayPattern":case"AssignmentPattern":case"RestElement":return !0;case"ObjectExpression":{let s=t.properties.length-1;return t.properties.every((r,i)=>r.type!=="ObjectMethod"&&(i===s||r.type!=="SpreadElement")&&this.isAssignable(r))}case"ObjectProperty":return this.isAssignable(t.value);case"SpreadElement":return this.isAssignable(t.argument);case"ArrayExpression":return t.elements.every(s=>s===null||this.isAssignable(s));case"AssignmentExpression":return t.operator==="=";case"ParenthesizedExpression":return this.isAssignable(t.expression);case"MemberExpression":case"OptionalMemberExpression":return !e;default:return !1}}toReferencedList(t,e){return t}toReferencedListDeep(t,e){this.toReferencedList(t,e);for(let s of t)(s==null?void 0:s.type)==="ArrayExpression"&&this.toReferencedListDeep(s.elements);}parseSpread(t,e){let s=this.startNode();return this.next(),s.argument=this.parseMaybeAssignAllowIn(t,void 0,e),this.finishNode(s,"SpreadElement")}parseRestBinding(){let t=this.startNode();return this.next(),t.argument=this.parseBindingAtom(),this.finishNode(t,"RestElement")}parseBindingAtom(){switch(this.state.type){case 0:{let t=this.startNode();return this.next(),t.elements=this.parseBindingList(3,93,!0),this.finishNode(t,"ArrayPattern")}case 5:return this.parseObjectLike(8,!0)}return this.parseIdentifier()}parseBindingList(t,e,s,r){let i=[],a=!0;for(;!this.eat(t);)if(a?a=!1:this.expect(12),s&&this.match(12))i.push(null);else {if(this.eat(t))break;if(this.match(21)){if(i.push(this.parseAssignableListItemTypes(this.parseRestBinding())),!this.checkCommaAfterRest(e)){this.expect(t);break}}else {let n=[];for(this.match(26)&&this.hasPlugin("decorators")&&this.raise(l.UnsupportedParameterDecorator,{at:this.state.startLoc});this.match(26);)n.push(this.parseDecorator());i.push(this.parseAssignableListItem(r,n));}}return i}parseBindingRestProperty(t){return this.next(),t.argument=this.parseIdentifier(),this.checkCommaAfterRest(125),this.finishNode(t,"RestElement")}parseBindingProperty(){let t=this.startNode(),{type:e,start:s,startLoc:r}=this.state;return e===21?this.parseBindingRestProperty(t):(e===134?(this.expectPlugin("destructuringPrivate",r),this.classScope.usePrivateName(this.state.value,r),t.key=this.parsePrivateName()):this.parsePropertyName(t),t.method=!1,this.parseObjPropValue(t,s,r,!1,!1,!0,!1),t)}parseAssignableListItem(t,e){let s=this.parseMaybeDefault();this.parseAssignableListItemTypes(s);let r=this.parseMaybeDefault(s.start,s.loc.start,s);return e.length&&(s.decorators=e),r}parseAssignableListItemTypes(t){return t}parseMaybeDefault(t,e,s){var r,i,a;if(e=(r=e)!=null?r:this.state.startLoc,t=(i=t)!=null?i:this.state.start,s=(a=s)!=null?a:this.parseBindingAtom(),!this.eat(29))return s;let n=this.startNodeAt(t,e);return n.left=s,n.right=this.parseMaybeAssignAllowIn(),this.finishNode(n,"AssignmentPattern")}isValidLVal(t,e,s){return Mh({AssignmentPattern:"left",RestElement:"argument",ObjectProperty:"value",ParenthesizedExpression:"expression",ArrayPattern:"elements",ObjectPattern:"properties"},t)}checkLVal(t,e){let{in:s,binding:r=Le,checkClashes:i=!1,strictModeChanged:a=!1,allowingSloppyLetBinding:n=!(r&Se),hasParenthesizedAncestor:o=!1}=e;var c;let f=t.type;if(this.isObjectMethod(t))return;if(f==="MemberExpression"){r!==Le&&this.raise(l.InvalidPropertyBindingPattern,{at:t});return}if(t.type==="Identifier"){this.checkIdentifier(t,r,a,n);let{name:R}=t;i&&(i.has(R)?this.raise(l.ParamDupe,{at:t}):i.add(R));return}let y=this.isValidLVal(t.type,!(o||(c=t.extra)!=null&&c.parenthesized)&&s.type==="AssignmentExpression",r);if(y===!0)return;if(y===!1){let R=r===Le?l.InvalidLhs:l.InvalidLhsBinding;this.raise(R,{at:t,ancestor:s.type==="UpdateExpression"?{type:"UpdateExpression",prefix:s.prefix}:{type:s.type}});return}let[T,v]=Array.isArray(y)?y:[y,f==="ParenthesizedExpression"],N=t.type==="ArrayPattern"||t.type==="ObjectPattern"||t.type==="ParenthesizedExpression"?t:s;for(let R of [].concat(t[T]))R&&this.checkLVal(R,{in:N,binding:r,checkClashes:i,allowingSloppyLetBinding:n,strictModeChanged:a,hasParenthesizedAncestor:v});}checkIdentifier(t,e){let s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!(e&Se);this.state.strict&&(s?fr(t.name,this.inModule):pr(t.name))&&(e===Le?this.raise(l.StrictEvalArguments,{at:t,referenceName:t.name}):this.raise(l.StrictEvalArgumentsBinding,{at:t,bindingName:t.name})),!r&&t.name==="let"&&this.raise(l.LetInLexicalBinding,{at:t}),e&Le||this.declareNameFromIdentifier(t,e);}declareNameFromIdentifier(t,e){this.scope.declareName(t.name,e,t.loc.start);}checkToRestConversion(t,e){switch(t.type){case"ParenthesizedExpression":this.checkToRestConversion(t.expression,e);break;case"Identifier":case"MemberExpression":break;case"ArrayExpression":case"ObjectExpression":if(e)break;default:this.raise(l.InvalidRestAssignmentPattern,{at:t});}}checkCommaAfterRest(t){return this.match(12)?(this.raise(this.lookaheadCharCode()===t?l.RestTrailingComma:l.ElementAfterRest,{at:this.state.startLoc}),!0):!1}},jh=class extends Rh{checkProto(t,e,s,r){if(t.type==="SpreadElement"||this.isObjectMethod(t)||t.computed||t.shorthand)return;let i=t.key;if((i.type==="Identifier"?i.name:i.value)==="__proto__"){if(e){this.raise(l.RecordNoProto,{at:i});return}s.used&&(r?r.doubleProtoLoc===null&&(r.doubleProtoLoc=i.loc.start):this.raise(l.DuplicateProto,{at:i})),s.used=!0;}}shouldExitDescending(t,e){return t.type==="ArrowFunctionExpression"&&t.start===e}getExpression(){this.enterInitialScopes(),this.nextToken();let t=this.parseExpression();return this.match(135)||this.unexpected(),this.finalizeRemainingComments(),t.comments=this.state.comments,t.errors=this.state.errors,this.options.tokens&&(t.tokens=this.tokens),t}parseExpression(t,e){return t?this.disallowInAnd(()=>this.parseExpressionBase(e)):this.allowInAnd(()=>this.parseExpressionBase(e))}parseExpressionBase(t){let e=this.state.start,s=this.state.startLoc,r=this.parseMaybeAssign(t);if(this.match(12)){let i=this.startNodeAt(e,s);for(i.expressions=[r];this.eat(12);)i.expressions.push(this.parseMaybeAssign(t));return this.toReferencedList(i.expressions),this.finishNode(i,"SequenceExpression")}return r}parseMaybeAssignDisallowIn(t,e){return this.disallowInAnd(()=>this.parseMaybeAssign(t,e))}parseMaybeAssignAllowIn(t,e){return this.allowInAnd(()=>this.parseMaybeAssign(t,e))}setOptionalParametersError(t,e){var s;t.optionalParametersLoc=(s=e==null?void 0:e.loc)!=null?s:this.state.startLoc;}parseMaybeAssign(t,e){let s=this.state.start,r=this.state.startLoc;if(this.isContextual(105)&&this.prodParam.hasYield){let o=this.parseYield();return e&&(o=e.call(this,o,s,r)),o}let i;t?i=!1:(t=new bt,i=!0);let{type:a}=this.state;(a===10||K(a))&&(this.state.potentialArrowAt=this.state.start);let n=this.parseMaybeConditional(t);if(e&&(n=e.call(this,n,s,r)),mo(this.state.type)){let o=this.startNodeAt(s,r),c=this.state.value;return o.operator=c,this.match(29)?(this.toAssignable(n,!0),o.left=n,t.doubleProtoLoc!=null&&t.doubleProtoLoc.index>=s&&(t.doubleProtoLoc=null),t.shorthandAssignLoc!=null&&t.shorthandAssignLoc.index>=s&&(t.shorthandAssignLoc=null),t.privateKeyLoc!=null&&t.privateKeyLoc.index>=s&&(this.checkDestructuringPrivate(t),t.privateKeyLoc=null)):o.left=n,this.next(),o.right=this.parseMaybeAssign(),this.checkLVal(n,{in:this.finishNode(o,"AssignmentExpression")}),o}else i&&this.checkExpressionErrors(t,!0);return n}parseMaybeConditional(t){let e=this.state.start,s=this.state.startLoc,r=this.state.potentialArrowAt,i=this.parseExprOps(t);return this.shouldExitDescending(i,r)?i:this.parseConditional(i,e,s,t)}parseConditional(t,e,s,r){if(this.eat(17)){let i=this.startNodeAt(e,s);return i.test=t,i.consequent=this.parseMaybeAssignAllowIn(),this.expect(14),i.alternate=this.parseMaybeAssign(),this.finishNode(i,"ConditionalExpression")}return t}parseMaybeUnaryOrPrivate(t){return this.match(134)?this.parsePrivateName():this.parseMaybeUnary(t)}parseExprOps(t){let e=this.state.start,s=this.state.startLoc,r=this.state.potentialArrowAt,i=this.parseMaybeUnaryOrPrivate(t);return this.shouldExitDescending(i,r)?i:this.parseExprOp(i,e,s,-1)}parseExprOp(t,e,s,r){if(this.isPrivateName(t)){let a=this.getPrivateNameSV(t);(r>=lt(58)||!this.prodParam.hasIn||!this.match(58))&&this.raise(l.PrivateInExpectedIn,{at:t,identifierName:a}),this.classScope.usePrivateName(a,t.loc.start);}let i=this.state.type;if(xo(i)&&(this.prodParam.hasIn||!this.match(58))){let a=lt(i);if(a>r){if(i===39){if(this.expectPlugin("pipelineOperator"),this.state.inFSharpPipelineDirectBody)return t;this.checkPipelineAtInfixOperator(t,s);}let n=this.startNodeAt(e,s);n.left=t,n.operator=this.state.value;let o=i===41||i===42,c=i===40;if(c&&(a=lt(42)),this.next(),i===39&&this.hasPlugin(["pipelineOperator",{proposal:"minimal"}])&&this.state.type===96&&this.prodParam.hasAwait)throw this.raise(l.UnexpectedAwaitAfterPipelineBody,{at:this.state.startLoc});n.right=this.parseExprOpRightExpr(i,a),this.finishNode(n,o||c?"LogicalExpression":"BinaryExpression");let f=this.state.type;if(c&&(f===41||f===42)||o&&f===40)throw this.raise(l.MixingCoalesceWithLogical,{at:this.state.startLoc});return this.parseExprOp(n,e,s,r)}}return t}parseExprOpRightExpr(t,e){let s=this.state.start,r=this.state.startLoc;switch(t){case 39:switch(this.getPluginOption("pipelineOperator","proposal")){case"hack":return this.withTopicBindingContext(()=>this.parseHackPipeBody());case"smart":return this.withTopicBindingContext(()=>{if(this.prodParam.hasYield&&this.isContextual(105))throw this.raise(l.PipeBodyIsTighter,{at:this.state.startLoc});return this.parseSmartPipelineBodyInStyle(this.parseExprOpBaseRightExpr(t,e),s,r)});case"fsharp":return this.withSoloAwaitPermittingContext(()=>this.parseFSharpPipelineBody(e))}default:return this.parseExprOpBaseRightExpr(t,e)}}parseExprOpBaseRightExpr(t,e){let s=this.state.start,r=this.state.startLoc;return this.parseExprOp(this.parseMaybeUnaryOrPrivate(),s,r,bo(t)?e-1:e)}parseHackPipeBody(){var t;let{startLoc:e}=this.state,s=this.parseMaybeAssign();return L.has(s.type)&&!((t=s.extra)!=null&&t.parenthesized)&&this.raise(l.PipeUnparenthesizedBody,{at:e,type:s.type}),this.topicReferenceWasUsedInCurrentContext()||this.raise(l.PipeTopicUnused,{at:e}),s}checkExponentialAfterUnary(t){this.match(57)&&this.raise(l.UnexpectedTokenUnaryExponentiation,{at:t.argument});}parseMaybeUnary(t,e){let s=this.state.start,r=this.state.startLoc,i=this.isContextual(96);if(i&&this.isAwaitAllowed()){this.next();let c=this.parseAwait(s,r);return e||this.checkExponentialAfterUnary(c),c}let a=this.match(34),n=this.startNode();if(Ao(this.state.type)){n.operator=this.state.value,n.prefix=!0,this.match(72)&&this.expectPlugin("throwExpressions");let c=this.match(89);if(this.next(),n.argument=this.parseMaybeUnary(null,!0),this.checkExpressionErrors(t,!0),this.state.strict&&c){let f=n.argument;f.type==="Identifier"?this.raise(l.StrictDelete,{at:n}):this.hasPropertyAsPrivateName(f)&&this.raise(l.DeletePrivateField,{at:n});}if(!a)return e||this.checkExponentialAfterUnary(n),this.finishNode(n,"UnaryExpression")}let o=this.parseUpdate(n,a,t);if(i){let{type:c}=this.state;if((this.hasPlugin("v8intrinsic")?Kt(c):Kt(c)&&!this.match(54))&&!this.isAmbiguousAwait())return this.raiseOverwrite(l.AwaitNotInAsyncContext,{at:r}),this.parseAwait(s,r)}return o}parseUpdate(t,e,s){if(e)return this.checkLVal(t.argument,{in:this.finishNode(t,"UpdateExpression")}),t;let r=this.state.start,i=this.state.startLoc,a=this.parseExprSubscripts(s);if(this.checkExpressionErrors(s,!1))return a;for(;go(this.state.type)&&!this.canInsertSemicolon();){let n=this.startNodeAt(r,i);n.operator=this.state.value,n.prefix=!1,n.argument=a,this.next(),this.checkLVal(a,{in:a=this.finishNode(n,"UpdateExpression")});}return a}parseExprSubscripts(t){let e=this.state.start,s=this.state.startLoc,r=this.state.potentialArrowAt,i=this.parseExprAtom(t);return this.shouldExitDescending(i,r)?i:this.parseSubscripts(i,e,s)}parseSubscripts(t,e,s,r){let i={optionalChainMember:!1,maybeAsyncArrow:this.atPossibleAsyncArrow(t),stop:!1};do t=this.parseSubscript(t,e,s,r,i),i.maybeAsyncArrow=!1;while(!i.stop);return t}parseSubscript(t,e,s,r,i){let{type:a}=this.state;if(!r&&a===15)return this.parseBind(t,e,s,r,i);if(ut(a))return this.parseTaggedTemplateExpression(t,e,s,i);let n=!1;if(a===18){if(r&&this.lookaheadCharCode()===40)return i.stop=!0,t;i.optionalChainMember=n=!0,this.next();}if(!r&&this.match(10))return this.parseCoverCallAndAsyncArrowHead(t,e,s,i,n);{let o=this.eat(0);return o||n||this.eat(16)?this.parseMember(t,e,s,i,o,n):(i.stop=!0,t)}}parseMember(t,e,s,r,i,a){let n=this.startNodeAt(e,s);return n.object=t,n.computed=i,i?(n.property=this.parseExpression(),this.expect(3)):this.match(134)?(t.type==="Super"&&this.raise(l.SuperPrivateField,{at:s}),this.classScope.usePrivateName(this.state.value,this.state.startLoc),n.property=this.parsePrivateName()):n.property=this.parseIdentifier(!0),r.optionalChainMember?(n.optional=a,this.finishNode(n,"OptionalMemberExpression")):this.finishNode(n,"MemberExpression")}parseBind(t,e,s,r,i){let a=this.startNodeAt(e,s);return a.object=t,this.next(),a.callee=this.parseNoCallExpr(),i.stop=!0,this.parseSubscripts(this.finishNode(a,"BindExpression"),e,s,r)}parseCoverCallAndAsyncArrowHead(t,e,s,r,i){let a=this.state.maybeInArrowParameters,n=null;this.state.maybeInArrowParameters=!0,this.next();let o=this.startNodeAt(e,s);o.callee=t;let{maybeAsyncArrow:c,optionalChainMember:f}=r;return c&&(this.expressionScope.enter(hh()),n=new bt),f&&(o.optional=i),i?o.arguments=this.parseCallExpressionArguments(11):o.arguments=this.parseCallExpressionArguments(11,t.type==="Import",t.type!=="Super",o,n),this.finishCallExpression(o,f),c&&this.shouldParseAsyncArrow()&&!i?(r.stop=!0,this.checkDestructuringPrivate(n),this.expressionScope.validateAsPattern(),this.expressionScope.exit(),o=this.parseAsyncArrowFromCallExpression(this.startNodeAt(e,s),o)):(c&&(this.checkExpressionErrors(n,!0),this.expressionScope.exit()),this.toReferencedArguments(o)),this.state.maybeInArrowParameters=a,o}toReferencedArguments(t,e){this.toReferencedListDeep(t.arguments,e);}parseTaggedTemplateExpression(t,e,s,r){let i=this.startNodeAt(e,s);return i.tag=t,i.quasi=this.parseTemplate(!0),r.optionalChainMember&&this.raise(l.OptionalChainingNoTemplate,{at:s}),this.finishNode(i,"TaggedTemplateExpression")}atPossibleAsyncArrow(t){return t.type==="Identifier"&&t.name==="async"&&this.state.lastTokEndLoc.index===t.end&&!this.canInsertSemicolon()&&t.end-t.start===5&&t.start===this.state.potentialArrowAt}finishCallExpression(t,e){if(t.callee.type==="Import")if(t.arguments.length===2&&(this.hasPlugin("moduleAttributes")||this.expectPlugin("importAssertions")),t.arguments.length===0||t.arguments.length>2)this.raise(l.ImportCallArity,{at:t,maxArgumentCount:this.hasPlugin("importAssertions")||this.hasPlugin("moduleAttributes")?2:1});else for(let s of t.arguments)s.type==="SpreadElement"&&this.raise(l.ImportCallSpreadArgument,{at:s});return this.finishNode(t,e?"OptionalCallExpression":"CallExpression")}parseCallExpressionArguments(t,e,s,r,i){let a=[],n=!0,o=this.state.inFSharpPipelineDirectBody;for(this.state.inFSharpPipelineDirectBody=!1;!this.eat(t);){if(n)n=!1;else if(this.expect(12),this.match(t)){e&&!this.hasPlugin("importAssertions")&&!this.hasPlugin("moduleAttributes")&&this.raise(l.ImportCallArgumentTrailingComma,{at:this.state.lastTokStartLoc}),r&&this.addTrailingCommaExtraToNode(r),this.next();break}a.push(this.parseExprListItem(!1,i,s));}return this.state.inFSharpPipelineDirectBody=o,a}shouldParseAsyncArrow(){return this.match(19)&&!this.canInsertSemicolon()}parseAsyncArrowFromCallExpression(t,e){var s;return this.resetPreviousNodeTrailingComments(e),this.expect(19),this.parseArrowExpression(t,e.arguments,!0,(s=e.extra)==null?void 0:s.trailingCommaLoc),e.innerComments&&Qe(t,e.innerComments),e.callee.trailingComments&&Qe(t,e.callee.trailingComments),t}parseNoCallExpr(){let t=this.state.start,e=this.state.startLoc;return this.parseSubscripts(this.parseExprAtom(),t,e,!0)}parseExprAtom(t){let e,{type:s}=this.state;switch(s){case 79:return this.parseSuper();case 83:return e=this.startNode(),this.next(),this.match(16)?this.parseImportMetaProperty(e):(this.match(10)||this.raise(l.UnsupportedImport,{at:this.state.lastTokStartLoc}),this.finishNode(e,"Import"));case 78:return e=this.startNode(),this.next(),this.finishNode(e,"ThisExpression");case 90:return this.parseDo(this.startNode(),!1);case 56:case 31:return this.readRegexp(),this.parseRegExpLiteral(this.state.value);case 130:return this.parseNumericLiteral(this.state.value);case 131:return this.parseBigIntLiteral(this.state.value);case 132:return this.parseDecimalLiteral(this.state.value);case 129:return this.parseStringLiteral(this.state.value);case 84:return this.parseNullLiteral();case 85:return this.parseBooleanLiteral(!0);case 86:return this.parseBooleanLiteral(!1);case 10:{let r=this.state.potentialArrowAt===this.state.start;return this.parseParenAndDistinguishExpression(r)}case 2:case 1:return this.parseArrayLike(this.state.type===2?4:3,!1,!0);case 0:return this.parseArrayLike(3,!0,!1,t);case 6:case 7:return this.parseObjectLike(this.state.type===6?9:8,!1,!0);case 5:return this.parseObjectLike(8,!1,!1,t);case 68:return this.parseFunctionOrFunctionSent();case 26:this.parseDecorators();case 80:return e=this.startNode(),this.takeDecorators(e),this.parseClass(e,!1);case 77:return this.parseNewOrNewTarget();case 25:case 24:return this.parseTemplate(!1);case 15:{e=this.startNode(),this.next(),e.object=null;let r=e.callee=this.parseNoCallExpr();if(r.type==="MemberExpression")return this.finishNode(e,"BindExpression");throw this.raise(l.UnsupportedBind,{at:r})}case 134:return this.raise(l.PrivateInExpectedIn,{at:this.state.startLoc,identifierName:this.state.value}),this.parsePrivateName();case 33:return this.parseTopicReferenceThenEqualsSign(54,"%");case 32:return this.parseTopicReferenceThenEqualsSign(44,"^");case 37:case 38:return this.parseTopicReference("hack");case 44:case 54:case 27:{let r=this.getPluginOption("pipelineOperator","proposal");if(r)return this.parseTopicReference(r);throw this.unexpected()}case 47:{let r=this.input.codePointAt(this.nextTokenStart());if(ge(r)||r===62){this.expectOnePlugin(["jsx","flow","typescript"]);break}else throw this.unexpected()}default:if(K(s)){if(this.isContextual(123)&&this.lookaheadCharCode()===123&&!this.hasFollowingLineBreak())return this.parseModuleExpression();let r=this.state.potentialArrowAt===this.state.start,i=this.state.containsEsc,a=this.parseIdentifier();if(!i&&a.name==="async"&&!this.canInsertSemicolon()){let{type:n}=this.state;if(n===68)return this.resetPreviousNodeTrailingComments(a),this.next(),this.parseFunction(this.startNodeAtNode(a),void 0,!0);if(K(n))return this.lookaheadCharCode()===61?this.parseAsyncArrowUnaryFunction(this.startNodeAtNode(a)):a;if(n===90)return this.resetPreviousNodeTrailingComments(a),this.parseDo(this.startNodeAtNode(a),!0)}return r&&this.match(19)&&!this.canInsertSemicolon()?(this.next(),this.parseArrowExpression(this.startNodeAtNode(a),[a],!1)):a}else throw this.unexpected()}}parseTopicReferenceThenEqualsSign(t,e){let s=this.getPluginOption("pipelineOperator","proposal");if(s)return this.state.type=t,this.state.value=e,this.state.pos--,this.state.end--,this.state.endLoc=m(this.state.endLoc,-1),this.parseTopicReference(s);throw this.unexpected()}parseTopicReference(t){let e=this.startNode(),s=this.state.startLoc,r=this.state.type;return this.next(),this.finishTopicReference(e,s,t,r)}finishTopicReference(t,e,s,r){if(this.testTopicReferenceConfiguration(s,e,r)){let i=s==="smart"?"PipelinePrimaryTopicReference":"TopicReference";return this.topicReferenceIsAllowedInCurrentContext()||this.raise(s==="smart"?l.PrimaryTopicNotAllowed:l.PipeTopicUnbound,{at:e}),this.registerTopicReference(),this.finishNode(t,i)}else throw this.raise(l.PipeTopicUnconfiguredToken,{at:e,token:ve(r)})}testTopicReferenceConfiguration(t,e,s){switch(t){case"hack":return this.hasPlugin(["pipelineOperator",{topicToken:ve(s)}]);case"smart":return s===27;default:throw this.raise(l.PipeTopicRequiresHackPipes,{at:e})}}parseAsyncArrowUnaryFunction(t){this.prodParam.enter(Et(!0,this.prodParam.hasYield));let e=[this.parseIdentifier()];return this.prodParam.exit(),this.hasPrecedingLineBreak()&&this.raise(l.LineTerminatorBeforeArrow,{at:this.state.curPosition()}),this.expect(19),this.parseArrowExpression(t,e,!0),t}parseDo(t,e){this.expectPlugin("doExpressions"),e&&this.expectPlugin("asyncDoExpressions"),t.async=e,this.next();let s=this.state.labels;return this.state.labels=[],e?(this.prodParam.enter(Tt),t.body=this.parseBlock(),this.prodParam.exit()):t.body=this.parseBlock(),this.state.labels=s,this.finishNode(t,"DoExpression")}parseSuper(){let t=this.startNode();return this.next(),this.match(10)&&!this.scope.allowDirectSuper&&!this.options.allowSuperOutsideMethod?this.raise(l.SuperNotAllowed,{at:t}):!this.scope.allowSuper&&!this.options.allowSuperOutsideMethod&&this.raise(l.UnexpectedSuper,{at:t}),!this.match(10)&&!this.match(0)&&!this.match(16)&&this.raise(l.UnsupportedSuper,{at:t}),this.finishNode(t,"Super")}parsePrivateName(){let t=this.startNode(),e=this.startNodeAt(this.state.start+1,new p(this.state.curLine,this.state.start+1-this.state.lineStart,this.state.start+1)),s=this.state.value;return this.next(),t.id=this.createIdentifier(e,s),this.finishNode(t,"PrivateName")}parseFunctionOrFunctionSent(){let t=this.startNode();if(this.next(),this.prodParam.hasYield&&this.match(16)){let e=this.createIdentifier(this.startNodeAtNode(t),"function");return this.next(),this.match(102)?this.expectPlugin("functionSent"):this.hasPlugin("functionSent")||this.unexpected(),this.parseMetaProperty(t,e,"sent")}return this.parseFunction(t)}parseMetaProperty(t,e,s){t.meta=e;let r=this.state.containsEsc;return t.property=this.parseIdentifier(!0),(t.property.name!==s||r)&&this.raise(l.UnsupportedMetaProperty,{at:t.property,target:e.name,onlyValidPropertyName:s}),this.finishNode(t,"MetaProperty")}parseImportMetaProperty(t){let e=this.createIdentifier(this.startNodeAtNode(t),"import");return this.next(),this.isContextual(100)&&(this.inModule||this.raise(l.ImportMetaOutsideModule,{at:e}),this.sawUnambiguousESM=!0),this.parseMetaProperty(t,e,"meta")}parseLiteralAtNode(t,e,s){return this.addExtra(s,"rawValue",t),this.addExtra(s,"raw",this.input.slice(s.start,this.state.end)),s.value=t,this.next(),this.finishNode(s,e)}parseLiteral(t,e){let s=this.startNode();return this.parseLiteralAtNode(t,e,s)}parseStringLiteral(t){return this.parseLiteral(t,"StringLiteral")}parseNumericLiteral(t){return this.parseLiteral(t,"NumericLiteral")}parseBigIntLiteral(t){return this.parseLiteral(t,"BigIntLiteral")}parseDecimalLiteral(t){return this.parseLiteral(t,"DecimalLiteral")}parseRegExpLiteral(t){let e=this.parseLiteral(t.value,"RegExpLiteral");return e.pattern=t.pattern,e.flags=t.flags,e}parseBooleanLiteral(t){let e=this.startNode();return e.value=t,this.next(),this.finishNode(e,"BooleanLiteral")}parseNullLiteral(){let t=this.startNode();return this.next(),this.finishNode(t,"NullLiteral")}parseParenAndDistinguishExpression(t){let e=this.state.start,s=this.state.startLoc,r;this.next(),this.expressionScope.enter(oh());let i=this.state.maybeInArrowParameters,a=this.state.inFSharpPipelineDirectBody;this.state.maybeInArrowParameters=!0,this.state.inFSharpPipelineDirectBody=!1;let n=this.state.start,o=this.state.startLoc,c=[],f=new bt,y=!0,T,v;for(;!this.match(11);){if(y)y=!1;else if(this.expect(12,f.optionalParametersLoc===null?null:f.optionalParametersLoc),this.match(11)){v=this.state.startLoc;break}if(this.match(21)){let z=this.state.start,te=this.state.startLoc;if(T=this.state.startLoc,c.push(this.parseParenItem(this.parseRestBinding(),z,te)),!this.checkCommaAfterRest(41))break}else c.push(this.parseMaybeAssignAllowIn(f,this.parseParenItem));}let N=this.state.lastTokEndLoc;this.expect(11),this.state.maybeInArrowParameters=i,this.state.inFSharpPipelineDirectBody=a;let R=this.startNodeAt(e,s);return t&&this.shouldParseArrow(c)&&(R=this.parseArrow(R))?(this.checkDestructuringPrivate(f),this.expressionScope.validateAsPattern(),this.expressionScope.exit(),this.parseArrowExpression(R,c,!1),R):(this.expressionScope.exit(),c.length||this.unexpected(this.state.lastTokStartLoc),v&&this.unexpected(v),T&&this.unexpected(T),this.checkExpressionErrors(f,!0),this.toReferencedListDeep(c,!0),c.length>1?(r=this.startNodeAt(n,o),r.expressions=c,this.finishNode(r,"SequenceExpression"),this.resetEndLocation(r,N)):r=c[0],this.wrapParenthesis(e,s,r))}wrapParenthesis(t,e,s){if(!this.options.createParenthesizedExpressions)return this.addExtra(s,"parenthesized",!0),this.addExtra(s,"parenStart",t),this.takeSurroundingComments(s,t,this.state.lastTokEndLoc.index),s;let r=this.startNodeAt(t,e);return r.expression=s,this.finishNode(r,"ParenthesizedExpression"),r}shouldParseArrow(t){return !this.canInsertSemicolon()}parseArrow(t){if(this.eat(19))return t}parseParenItem(t,e,s){return t}parseNewOrNewTarget(){let t=this.startNode();if(this.next(),this.match(16)){let e=this.createIdentifier(this.startNodeAtNode(t),"new");this.next();let s=this.parseMetaProperty(t,e,"target");return !this.scope.inNonArrowFunction&&!this.scope.inClass&&this.raise(l.UnexpectedNewTarget,{at:s}),s}return this.parseNew(t)}parseNew(t){if(this.parseNewCallee(t),this.eat(10)){let e=this.parseExprList(11);this.toReferencedList(e),t.arguments=e;}else t.arguments=[];return this.finishNode(t,"NewExpression")}parseNewCallee(t){t.callee=this.parseNoCallExpr(),t.callee.type==="Import"?this.raise(l.ImportCallNotNewExpression,{at:t.callee}):this.isOptionalChain(t.callee)?this.raise(l.OptionalChainingNoNew,{at:this.state.lastTokEndLoc}):this.eat(18)&&this.raise(l.OptionalChainingNoNew,{at:this.state.startLoc});}parseTemplateElement(t){let{start:e,startLoc:s,end:r,value:i}=this.state,a=e+1,n=this.startNodeAt(a,m(s,1));i===null&&(t||this.raise(l.InvalidEscapeSequenceTemplate,{at:m(s,2)}));let o=this.match(24),c=o?-1:-2,f=r+c;return n.value={raw:this.input.slice(a,f).replace(/\r\n?/g,` -`),cooked:i===null?null:i.slice(1,c)},n.tail=o,this.next(),this.finishNode(n,"TemplateElement"),this.resetEndLocation(n,m(this.state.lastTokEndLoc,c)),n}parseTemplate(t){let e=this.startNode();e.expressions=[];let s=this.parseTemplateElement(t);for(e.quasis=[s];!s.tail;)e.expressions.push(this.parseTemplateSubstitution()),this.readTemplateContinuation(),e.quasis.push(s=this.parseTemplateElement(t));return this.finishNode(e,"TemplateLiteral")}parseTemplateSubstitution(){return this.parseExpression()}parseObjectLike(t,e,s,r){s&&this.expectPlugin("recordAndTuple");let i=this.state.inFSharpPipelineDirectBody;this.state.inFSharpPipelineDirectBody=!1;let a=Object.create(null),n=!0,o=this.startNode();for(o.properties=[],this.next();!this.match(t);){if(n)n=!1;else if(this.expect(12),this.match(t)){this.addTrailingCommaExtraToNode(o);break}let f;e?f=this.parseBindingProperty():(f=this.parsePropertyDefinition(r),this.checkProto(f,s,a,r)),s&&!this.isObjectProperty(f)&&f.type!=="SpreadElement"&&this.raise(l.InvalidRecordProperty,{at:f}),f.shorthand&&this.addExtra(f,"shorthand",!0),o.properties.push(f);}this.next(),this.state.inFSharpPipelineDirectBody=i;let c="ObjectExpression";return e?c="ObjectPattern":s&&(c="RecordExpression"),this.finishNode(o,c)}addTrailingCommaExtraToNode(t){this.addExtra(t,"trailingComma",this.state.lastTokStart),this.addExtra(t,"trailingCommaLoc",this.state.lastTokStartLoc,!1);}maybeAsyncOrAccessorProp(t){return !t.computed&&t.key.type==="Identifier"&&(this.isLiteralPropertyName()||this.match(0)||this.match(55))}parsePropertyDefinition(t){let e=[];if(this.match(26))for(this.hasPlugin("decorators")&&this.raise(l.UnsupportedPropertyDecorator,{at:this.state.startLoc});this.match(26);)e.push(this.parseDecorator());let s=this.startNode(),r=!1,i=!1,a,n;if(this.match(21))return e.length&&this.unexpected(),this.parseSpread();e.length&&(s.decorators=e,e=[]),s.method=!1,t&&(a=this.state.start,n=this.state.startLoc);let o=this.eat(55);this.parsePropertyNamePrefixOperator(s);let c=this.state.containsEsc,f=this.parsePropertyName(s,t);if(!o&&!c&&this.maybeAsyncOrAccessorProp(s)){let y=f.name;y==="async"&&!this.hasPrecedingLineBreak()&&(r=!0,this.resetPreviousNodeTrailingComments(f),o=this.eat(55),this.parsePropertyName(s)),(y==="get"||y==="set")&&(i=!0,this.resetPreviousNodeTrailingComments(f),s.kind=y,this.match(55)&&(o=!0,this.raise(l.AccessorIsGenerator,{at:this.state.curPosition(),kind:y}),this.next()),this.parsePropertyName(s));}return this.parseObjPropValue(s,a,n,o,r,!1,i,t),s}getGetterSetterExpectedParamCount(t){return t.kind==="get"?0:1}getObjectOrClassMethodParams(t){return t.params}checkGetterSetterParams(t){var e;let s=this.getGetterSetterExpectedParamCount(t),r=this.getObjectOrClassMethodParams(t);r.length!==s&&this.raise(t.kind==="get"?l.BadGetterArity:l.BadSetterArity,{at:t}),t.kind==="set"&&((e=r[r.length-1])==null?void 0:e.type)==="RestElement"&&this.raise(l.BadSetterRestParameter,{at:t});}parseObjectMethod(t,e,s,r,i){if(i)return this.parseMethod(t,e,!1,!1,!1,"ObjectMethod"),this.checkGetterSetterParams(t),t;if(s||e||this.match(10))return r&&this.unexpected(),t.kind="method",t.method=!0,this.parseMethod(t,e,s,!1,!1,"ObjectMethod")}parseObjectProperty(t,e,s,r,i){if(t.shorthand=!1,this.eat(14))return t.value=r?this.parseMaybeDefault(this.state.start,this.state.startLoc):this.parseMaybeAssignAllowIn(i),this.finishNode(t,"ObjectProperty");if(!t.computed&&t.key.type==="Identifier"){if(this.checkReservedWord(t.key.name,t.key.loc.start,!0,!1),r)t.value=this.parseMaybeDefault(e,s,Ee(t.key));else if(this.match(29)){let a=this.state.startLoc;i!=null?i.shorthandAssignLoc===null&&(i.shorthandAssignLoc=a):this.raise(l.InvalidCoverInitializedName,{at:a}),t.value=this.parseMaybeDefault(e,s,Ee(t.key));}else t.value=Ee(t.key);return t.shorthand=!0,this.finishNode(t,"ObjectProperty")}}parseObjPropValue(t,e,s,r,i,a,n,o){let c=this.parseObjectMethod(t,r,i,a,n)||this.parseObjectProperty(t,e,s,a,o);return c||this.unexpected(),c}parsePropertyName(t,e){if(this.eat(0))t.computed=!0,t.key=this.parseMaybeAssignAllowIn(),this.expect(3);else {let{type:s,value:r}=this.state,i;if(ye(s))i=this.parseIdentifier(!0);else switch(s){case 130:i=this.parseNumericLiteral(r);break;case 129:i=this.parseStringLiteral(r);break;case 131:i=this.parseBigIntLiteral(r);break;case 132:i=this.parseDecimalLiteral(r);break;case 134:{let a=this.state.startLoc;e!=null?e.privateKeyLoc===null&&(e.privateKeyLoc=a):this.raise(l.UnexpectedPrivateField,{at:a}),i=this.parsePrivateName();break}default:throw this.unexpected()}t.key=i,s!==134&&(t.computed=!1);}return t.key}initFunction(t,e){t.id=null,t.generator=!1,t.async=!!e;}parseMethod(t,e,s,r,i,a){let n=arguments.length>6&&arguments[6]!==void 0?arguments[6]:!1;this.initFunction(t,s),t.generator=!!e;let o=r;return this.scope.enter(Ae|ct|(n?Fe:0)|(i?mr:0)),this.prodParam.enter(Et(s,t.generator)),this.parseFunctionParams(t,o),this.parseFunctionBodyAndFinish(t,a,!0),this.prodParam.exit(),this.scope.exit(),t}parseArrayLike(t,e,s,r){s&&this.expectPlugin("recordAndTuple");let i=this.state.inFSharpPipelineDirectBody;this.state.inFSharpPipelineDirectBody=!1;let a=this.startNode();return this.next(),a.elements=this.parseExprList(t,!s,r,a),this.state.inFSharpPipelineDirectBody=i,this.finishNode(a,s?"TupleExpression":"ArrayExpression")}parseArrowExpression(t,e,s,r){this.scope.enter(Ae|Xt);let i=Et(s,!1);!this.match(5)&&this.prodParam.hasIn&&(i|=We),this.prodParam.enter(i),this.initFunction(t,s);let a=this.state.maybeInArrowParameters;return e&&(this.state.maybeInArrowParameters=!0,this.setArrowFunctionParameters(t,e,r)),this.state.maybeInArrowParameters=!1,this.parseFunctionBody(t,!0),this.prodParam.exit(),this.scope.exit(),this.state.maybeInArrowParameters=a,this.finishNode(t,"ArrowFunctionExpression")}setArrowFunctionParameters(t,e,s){this.toAssignableList(e,s,!1),t.params=e;}parseFunctionBodyAndFinish(t,e){let s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;this.parseFunctionBody(t,!1,s),this.finishNode(t,e);}parseFunctionBody(t,e){let s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,r=e&&!this.match(5);if(this.expressionScope.enter(Ir()),r)t.body=this.parseMaybeAssign(),this.checkParams(t,!1,e,!1);else {let i=this.state.strict,a=this.state.labels;this.state.labels=[],this.prodParam.enter(this.prodParam.currentFlags()|Dr),t.body=this.parseBlock(!0,!1,n=>{let o=!this.isSimpleParamList(t.params);n&&o&&this.raise(l.IllegalLanguageModeDirective,{at:(t.kind==="method"||t.kind==="constructor")&&!!t.key?t.key.loc.end:t});let c=!i&&this.state.strict;this.checkParams(t,!this.state.strict&&!e&&!s&&!o,e,c),this.state.strict&&t.id&&this.checkIdentifier(t.id,Mo,c);}),this.prodParam.exit(),this.state.labels=a;}this.expressionScope.exit();}isSimpleParameter(t){return t.type==="Identifier"}isSimpleParamList(t){for(let e=0,s=t.length;e<s;e++)if(!this.isSimpleParameter(t[e]))return !1;return !0}checkParams(t,e,s){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=!e&&new Set,a={type:"FormalParameters"};for(let n of t.params)this.checkLVal(n,{in:a,binding:yt,checkClashes:i,strictModeChanged:r});}parseExprList(t,e,s,r){let i=[],a=!0;for(;!this.eat(t);){if(a)a=!1;else if(this.expect(12),this.match(t)){r&&this.addTrailingCommaExtraToNode(r),this.next();break}i.push(this.parseExprListItem(e,s));}return i}parseExprListItem(t,e,s){let r;if(this.match(12))t||this.raise(l.UnexpectedToken,{at:this.state.curPosition(),unexpected:","}),r=null;else if(this.match(21)){let i=this.state.start,a=this.state.startLoc;r=this.parseParenItem(this.parseSpread(e),i,a);}else if(this.match(17)){this.expectPlugin("partialApplication"),s||this.raise(l.UnexpectedArgumentPlaceholder,{at:this.state.startLoc});let i=this.startNode();this.next(),r=this.finishNode(i,"ArgumentPlaceholder");}else r=this.parseMaybeAssignAllowIn(e,this.parseParenItem);return r}parseIdentifier(t){let e=this.startNode(),s=this.parseIdentifierName(e.start,t);return this.createIdentifier(e,s)}createIdentifier(t,e){return t.name=e,t.loc.identifierName=e,this.finishNode(t,"Identifier")}parseIdentifierName(t,e){let s,{startLoc:r,type:i}=this.state;if(ye(i))s=this.state.value;else throw this.unexpected();let a=po(i);return e?a&&this.replaceToken(128):this.checkReservedWord(s,r,a,!1),this.next(),s}checkReservedWord(t,e,s,r){if(t.length>10||!Lo(t))return;if(t==="yield"){if(this.prodParam.hasYield){this.raise(l.YieldBindingIdentifier,{at:e});return}}else if(t==="await"){if(this.prodParam.hasAwait){this.raise(l.AwaitBindingIdentifier,{at:e});return}if(this.scope.inStaticBlock){this.raise(l.AwaitBindingIdentifierInStaticBlock,{at:e});return}this.expressionScope.recordAsyncArrowParametersError({at:e});}else if(t==="arguments"&&this.scope.inClassAndNotInNonArrowFunction){this.raise(l.ArgumentsInClass,{at:e});return}if(s&&ko(t)){this.raise(l.UnexpectedKeyword,{at:e,keyword:t});return}(this.state.strict?r?fr:cr:ur)(t,this.inModule)&&this.raise(l.UnexpectedReservedWord,{at:e,reservedWord:t});}isAwaitAllowed(){return !!(this.prodParam.hasAwait||this.options.allowAwaitOutsideFunction&&!this.scope.inFunction)}parseAwait(t,e){let s=this.startNodeAt(t,e);return this.expressionScope.recordParameterInitializerError(l.AwaitExpressionFormalParameter,{at:s}),this.eat(55)&&this.raise(l.ObsoleteAwaitStar,{at:s}),!this.scope.inFunction&&!this.options.allowAwaitOutsideFunction&&(this.isAmbiguousAwait()?this.ambiguousScriptDifferentAst=!0:this.sawUnambiguousESM=!0),this.state.soloAwait||(s.argument=this.parseMaybeUnary(null,!0)),this.finishNode(s,"AwaitExpression")}isAmbiguousAwait(){if(this.hasPrecedingLineBreak())return !0;let{type:t}=this.state;return t===53||t===10||t===0||ut(t)||t===133||t===56||this.hasPlugin("v8intrinsic")&&t===54}parseYield(){let t=this.startNode();this.expressionScope.recordParameterInitializerError(l.YieldInParameter,{at:t}),this.next();let e=!1,s=null;if(!this.hasPrecedingLineBreak())switch(e=this.eat(55),this.state.type){case 13:case 135:case 8:case 11:case 3:case 9:case 14:case 12:if(!e)break;default:s=this.parseMaybeAssign();}return t.delegate=e,t.argument=s,this.finishNode(t,"YieldExpression")}checkPipelineAtInfixOperator(t,e){this.hasPlugin(["pipelineOperator",{proposal:"smart"}])&&t.type==="SequenceExpression"&&this.raise(l.PipelineHeadSequenceExpression,{at:e});}parseSmartPipelineBodyInStyle(t,e,s){let r=this.startNodeAt(e,s);return this.isSimpleReference(t)?(r.callee=t,this.finishNode(r,"PipelineBareFunction")):(this.checkSmartPipeTopicBodyEarlyErrors(s),r.expression=t,this.finishNode(r,"PipelineTopicExpression"))}isSimpleReference(t){switch(t.type){case"MemberExpression":return !t.computed&&this.isSimpleReference(t.object);case"Identifier":return !0;default:return !1}}checkSmartPipeTopicBodyEarlyErrors(t){if(this.match(19))throw this.raise(l.PipelineBodyNoArrow,{at:this.state.startLoc});this.topicReferenceWasUsedInCurrentContext()||this.raise(l.PipelineTopicUnused,{at:t});}withTopicBindingContext(t){let e=this.state.topicContext;this.state.topicContext={maxNumOfResolvableTopics:1,maxTopicIndex:null};try{return t()}finally{this.state.topicContext=e;}}withSmartMixTopicForbiddingContext(t){if(this.hasPlugin(["pipelineOperator",{proposal:"smart"}])){let e=this.state.topicContext;this.state.topicContext={maxNumOfResolvableTopics:0,maxTopicIndex:null};try{return t()}finally{this.state.topicContext=e;}}else return t()}withSoloAwaitPermittingContext(t){let e=this.state.soloAwait;this.state.soloAwait=!0;try{return t()}finally{this.state.soloAwait=e;}}allowInAnd(t){let e=this.prodParam.currentFlags();if(We&~e){this.prodParam.enter(e|We);try{return t()}finally{this.prodParam.exit();}}return t()}disallowInAnd(t){let e=this.prodParam.currentFlags();if(We&e){this.prodParam.enter(e&~We);try{return t()}finally{this.prodParam.exit();}}return t()}registerTopicReference(){this.state.topicContext.maxTopicIndex=0;}topicReferenceIsAllowedInCurrentContext(){return this.state.topicContext.maxNumOfResolvableTopics>=1}topicReferenceWasUsedInCurrentContext(){return this.state.topicContext.maxTopicIndex!=null&&this.state.topicContext.maxTopicIndex>=0}parseFSharpPipelineBody(t){let e=this.state.start,s=this.state.startLoc;this.state.potentialArrowAt=this.state.start;let r=this.state.inFSharpPipelineDirectBody;this.state.inFSharpPipelineDirectBody=!0;let i=this.parseExprOp(this.parseMaybeUnaryOrPrivate(),e,s,t);return this.state.inFSharpPipelineDirectBody=r,i}parseModuleExpression(){this.expectPlugin("moduleBlocks");let t=this.startNode();this.next(),this.eat(5);let e=this.initializeScopes(!0);this.enterInitialScopes();let s=this.startNode();try{t.body=this.parseProgram(s,8,"module");}finally{e();}return this.eat(8),this.finishNode(t,"ModuleExpression")}parsePropertyNamePrefixOperator(t){}},cs={kind:"loop"},qh={kind:"switch"},Uh=0,ps=1,Kr=2,Vr=4,_h=/[\uD800-\uDFFF]/u,fs=/in(?:stanceof)?/y;function zh(t,e){for(let s=0;s<t.length;s++){let r=t[s],{type:i}=r;if(typeof i=="number"){{if(i===134){let{loc:a,start:n,value:o,end:c}=r,f=n+1,y=m(a.start,1);t.splice(s,1,new we({type:xe(27),value:"#",start:n,end:f,startLoc:a.start,endLoc:y}),new we({type:xe(128),value:o,start:f,end:c,startLoc:y,endLoc:a.end})),s++;continue}if(ut(i)){let{loc:a,start:n,value:o,end:c}=r,f=n+1,y=m(a.start,1),T;e.charCodeAt(n)===96?T=new we({type:xe(22),value:"`",start:n,end:f,startLoc:a.start,endLoc:y}):T=new we({type:xe(8),value:"}",start:n,end:f,startLoc:a.start,endLoc:y});let v,N,R,z;i===24?(N=c-1,R=m(a.end,-1),v=o===null?null:o.slice(1,-1),z=new we({type:xe(22),value:"`",start:N,end:c,startLoc:R,endLoc:a.end})):(N=c-2,R=m(a.end,-2),v=o===null?null:o.slice(1,-2),z=new we({type:xe(23),value:"${",start:N,end:c,startLoc:R,endLoc:a.end})),t.splice(s,1,T,new we({type:xe(20),value:v,start:f,end:N,startLoc:y,endLoc:R}),z),s+=2;continue}}r.type=xe(i);}}return t}var Kh=class extends jh{parseTopLevel(t,e){return t.program=this.parseProgram(e),t.comments=this.state.comments,this.options.tokens&&(t.tokens=zh(this.tokens,this.input)),this.finishNode(t,"File")}parseProgram(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:135,s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.options.sourceType;if(t.sourceType=s,t.interpreter=this.parseInterpreterDirective(),this.parseBlockBody(t,!0,!0,e),this.inModule&&!this.options.allowUndeclaredExports&&this.scope.undefinedExports.size>0)for(let[r,i]of Array.from(this.scope.undefinedExports))this.raise(l.ModuleExportUndefined,{at:i,localName:r});return this.finishNode(t,"Program")}stmtToDirective(t){let e=t;e.type="Directive",e.value=e.expression,delete e.expression;let s=e.value,r=s.value,i=this.input.slice(s.start,s.end),a=s.value=i.slice(1,-1);return this.addExtra(s,"raw",i),this.addExtra(s,"rawValue",a),this.addExtra(s,"expressionValue",r),s.type="DirectiveLiteral",e}parseInterpreterDirective(){if(!this.match(28))return null;let t=this.startNode();return t.value=this.state.value,this.next(),this.finishNode(t,"InterpreterDirective")}isLet(t){return this.isContextual(99)?this.isLetKeyword(t):!1}isLetKeyword(t){let e=this.nextTokenStart(),s=this.codePointAtPos(e);if(s===92||s===91)return !0;if(t)return !1;if(s===123)return !0;if(ge(s)){if(fs.lastIndex=e,fs.test(this.input)){let r=this.codePointAtPos(fs.lastIndex);if(!ze(r)&&r!==92)return !1}return !0}return !1}parseStatement(t,e){return this.match(26)&&this.parseDecorators(!0),this.parseStatementContent(t,e)}parseStatementContent(t,e){let s=this.state.type,r=this.startNode(),i;switch(this.isLet(t)&&(s=74,i="let"),s){case 60:return this.parseBreakContinueStatement(r,!0);case 63:return this.parseBreakContinueStatement(r,!1);case 64:return this.parseDebuggerStatement(r);case 90:return this.parseDoStatement(r);case 91:return this.parseForStatement(r);case 68:if(this.lookaheadCharCode()===46)break;return t&&(this.state.strict?this.raise(l.StrictFunction,{at:this.state.startLoc}):t!=="if"&&t!=="label"&&this.raise(l.SloppyFunction,{at:this.state.startLoc})),this.parseFunctionStatement(r,!1,!t);case 80:return t&&this.unexpected(),this.parseClass(r,!0);case 69:return this.parseIfStatement(r);case 70:return this.parseReturnStatement(r);case 71:return this.parseSwitchStatement(r);case 72:return this.parseThrowStatement(r);case 73:return this.parseTryStatement(r);case 75:case 74:return i=i||this.state.value,t&&i!=="var"&&this.raise(l.UnexpectedLexicalDeclaration,{at:this.state.startLoc}),this.parseVarStatement(r,i);case 92:return this.parseWhileStatement(r);case 76:return this.parseWithStatement(r);case 5:return this.parseBlock();case 13:return this.parseEmptyStatement(r);case 83:{let o=this.lookaheadCharCode();if(o===40||o===46)break}case 82:{!this.options.allowImportExportEverywhere&&!e&&this.raise(l.UnexpectedImportExport,{at:this.state.startLoc}),this.next();let o;return s===83?(o=this.parseImport(r),o.type==="ImportDeclaration"&&(!o.importKind||o.importKind==="value")&&(this.sawUnambiguousESM=!0)):(o=this.parseExport(r),(o.type==="ExportNamedDeclaration"&&(!o.exportKind||o.exportKind==="value")||o.type==="ExportAllDeclaration"&&(!o.exportKind||o.exportKind==="value")||o.type==="ExportDefaultDeclaration")&&(this.sawUnambiguousESM=!0)),this.assertModuleNodeAllowed(r),o}default:if(this.isAsyncFunction())return t&&this.raise(l.AsyncFunctionInSingleStatementContext,{at:this.state.startLoc}),this.next(),this.parseFunctionStatement(r,!0,!t)}let a=this.state.value,n=this.parseExpression();return K(s)&&n.type==="Identifier"&&this.eat(14)?this.parseLabeledStatement(r,a,n,t):this.parseExpressionStatement(r,n)}assertModuleNodeAllowed(t){!this.options.allowImportExportEverywhere&&!this.inModule&&this.raise(l.ImportOutsideModule,{at:t});}takeDecorators(t){let e=this.state.decoratorStack[this.state.decoratorStack.length-1];e.length&&(t.decorators=e,this.resetStartLocationFromNode(t,e[0]),this.state.decoratorStack[this.state.decoratorStack.length-1]=[]);}canHaveLeadingDecorator(){return this.match(80)}parseDecorators(t){let e=this.state.decoratorStack[this.state.decoratorStack.length-1];for(;this.match(26);){let s=this.parseDecorator();e.push(s);}if(this.match(82))t||this.unexpected(),this.hasPlugin("decorators")&&!this.getPluginOption("decorators","decoratorsBeforeExport")&&this.raise(l.DecoratorExportClass,{at:this.state.startLoc});else if(!this.canHaveLeadingDecorator())throw this.raise(l.UnexpectedLeadingDecorator,{at:this.state.startLoc})}parseDecorator(){this.expectOnePlugin(["decorators-legacy","decorators"]);let t=this.startNode();if(this.next(),this.hasPlugin("decorators")){this.state.decoratorStack.push([]);let e=this.state.start,s=this.state.startLoc,r;if(this.match(10)){let i=this.state.start,a=this.state.startLoc;this.next(),r=this.parseExpression(),this.expect(11),r=this.wrapParenthesis(i,a,r);}else for(r=this.parseIdentifier(!1);this.eat(16);){let i=this.startNodeAt(e,s);i.object=r,i.property=this.parseIdentifier(!0),i.computed=!1,r=this.finishNode(i,"MemberExpression");}t.expression=this.parseMaybeDecoratorArguments(r),this.state.decoratorStack.pop();}else t.expression=this.parseExprSubscripts();return this.finishNode(t,"Decorator")}parseMaybeDecoratorArguments(t){if(this.eat(10)){let e=this.startNodeAtNode(t);return e.callee=t,e.arguments=this.parseCallExpressionArguments(11,!1),this.toReferencedList(e.arguments),this.finishNode(e,"CallExpression")}return t}parseBreakContinueStatement(t,e){return this.next(),this.isLineTerminator()?t.label=null:(t.label=this.parseIdentifier(),this.semicolon()),this.verifyBreakContinue(t,e),this.finishNode(t,e?"BreakStatement":"ContinueStatement")}verifyBreakContinue(t,e){let s;for(s=0;s<this.state.labels.length;++s){let r=this.state.labels[s];if((t.label==null||r.name===t.label.name)&&(r.kind!=null&&(e||r.kind==="loop")||t.label&&e))break}if(s===this.state.labels.length){let r=e?"BreakStatement":"ContinueStatement";this.raise(l.IllegalBreakContinue,{at:t,type:r});}}parseDebuggerStatement(t){return this.next(),this.semicolon(),this.finishNode(t,"DebuggerStatement")}parseHeaderExpression(){this.expect(10);let t=this.parseExpression();return this.expect(11),t}parseDoStatement(t){return this.next(),this.state.labels.push(cs),t.body=this.withSmartMixTopicForbiddingContext(()=>this.parseStatement("do")),this.state.labels.pop(),this.expect(92),t.test=this.parseHeaderExpression(),this.eat(13),this.finishNode(t,"DoWhileStatement")}parseForStatement(t){this.next(),this.state.labels.push(cs);let e=null;if(this.isAwaitAllowed()&&this.eatContextual(96)&&(e=this.state.lastTokStartLoc),this.scope.enter(Ke),this.expect(10),this.match(13))return e!==null&&this.unexpected(e),this.parseFor(t,null);let s=this.isContextual(99),r=s&&this.isLetKeyword();if(this.match(74)||this.match(75)||r){let c=this.startNode(),f=r?"let":this.state.value;return this.next(),this.parseVar(c,!0,f),this.finishNode(c,"VariableDeclaration"),(this.match(58)||this.isContextual(101))&&c.declarations.length===1?this.parseForIn(t,c,e):(e!==null&&this.unexpected(e),this.parseFor(t,c))}let i=this.isContextual(95),a=new bt,n=this.parseExpression(!0,a),o=this.isContextual(101);if(o&&(s&&this.raise(l.ForOfLet,{at:n}),e===null&&i&&n.type==="Identifier"&&this.raise(l.ForOfAsync,{at:n})),o||this.match(58)){this.checkDestructuringPrivate(a),this.toAssignable(n,!0);let c=o?"ForOfStatement":"ForInStatement";return this.checkLVal(n,{in:{type:c}}),this.parseForIn(t,n,e)}else this.checkExpressionErrors(a,!0);return e!==null&&this.unexpected(e),this.parseFor(t,n)}parseFunctionStatement(t,e,s){return this.next(),this.parseFunction(t,ps|(s?0:Kr),e)}parseIfStatement(t){return this.next(),t.test=this.parseHeaderExpression(),t.consequent=this.parseStatement("if"),t.alternate=this.eat(66)?this.parseStatement("if"):null,this.finishNode(t,"IfStatement")}parseReturnStatement(t){return !this.prodParam.hasReturn&&!this.options.allowReturnOutsideFunction&&this.raise(l.IllegalReturn,{at:this.state.startLoc}),this.next(),this.isLineTerminator()?t.argument=null:(t.argument=this.parseExpression(),this.semicolon()),this.finishNode(t,"ReturnStatement")}parseSwitchStatement(t){this.next(),t.discriminant=this.parseHeaderExpression();let e=t.cases=[];this.expect(5),this.state.labels.push(qh),this.scope.enter(Ke);let s;for(let r;!this.match(8);)if(this.match(61)||this.match(65)){let i=this.match(61);s&&this.finishNode(s,"SwitchCase"),e.push(s=this.startNode()),s.consequent=[],this.next(),i?s.test=this.parseExpression():(r&&this.raise(l.MultipleDefaultsInSwitch,{at:this.state.lastTokStartLoc}),r=!0,s.test=null),this.expect(14);}else s?s.consequent.push(this.parseStatement(null)):this.unexpected();return this.scope.exit(),s&&this.finishNode(s,"SwitchCase"),this.next(),this.state.labels.pop(),this.finishNode(t,"SwitchStatement")}parseThrowStatement(t){return this.next(),this.hasPrecedingLineBreak()&&this.raise(l.NewlineAfterThrow,{at:this.state.lastTokEndLoc}),t.argument=this.parseExpression(),this.semicolon(),this.finishNode(t,"ThrowStatement")}parseCatchClauseParam(){let t=this.parseBindingAtom(),e=t.type==="Identifier";return this.scope.enter(e?dr:0),this.checkLVal(t,{in:{type:"CatchClause"},binding:Te,allowingSloppyLetBinding:!0}),t}parseTryStatement(t){if(this.next(),t.block=this.parseBlock(),t.handler=null,this.match(62)){let e=this.startNode();this.next(),this.match(10)?(this.expect(10),e.param=this.parseCatchClauseParam(),this.expect(11)):(e.param=null,this.scope.enter(Ke)),e.body=this.withSmartMixTopicForbiddingContext(()=>this.parseBlock(!1,!1)),this.scope.exit(),t.handler=this.finishNode(e,"CatchClause");}return t.finalizer=this.eat(67)?this.parseBlock():null,!t.handler&&!t.finalizer&&this.raise(l.NoCatchOrFinally,{at:t}),this.finishNode(t,"TryStatement")}parseVarStatement(t,e){let s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return this.next(),this.parseVar(t,!1,e,s),this.semicolon(),this.finishNode(t,"VariableDeclaration")}parseWhileStatement(t){return this.next(),t.test=this.parseHeaderExpression(),this.state.labels.push(cs),t.body=this.withSmartMixTopicForbiddingContext(()=>this.parseStatement("while")),this.state.labels.pop(),this.finishNode(t,"WhileStatement")}parseWithStatement(t){return this.state.strict&&this.raise(l.StrictWith,{at:this.state.startLoc}),this.next(),t.object=this.parseHeaderExpression(),t.body=this.withSmartMixTopicForbiddingContext(()=>this.parseStatement("with")),this.finishNode(t,"WithStatement")}parseEmptyStatement(t){return this.next(),this.finishNode(t,"EmptyStatement")}parseLabeledStatement(t,e,s,r){for(let a of this.state.labels)a.name===e&&this.raise(l.LabelRedeclaration,{at:s,labelName:e});let i=yo(this.state.type)?"loop":this.match(71)?"switch":null;for(let a=this.state.labels.length-1;a>=0;a--){let n=this.state.labels[a];if(n.statementStart===t.start)n.statementStart=this.state.start,n.kind=i;else break}return this.state.labels.push({name:e,kind:i,statementStart:this.state.start}),t.body=this.parseStatement(r?r.indexOf("label")===-1?r+"label":r:"label"),this.state.labels.pop(),t.label=s,this.finishNode(t,"LabeledStatement")}parseExpressionStatement(t,e){return t.expression=e,this.semicolon(),this.finishNode(t,"ExpressionStatement")}parseBlock(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,s=arguments.length>2?arguments[2]:void 0,r=this.startNode();return t&&this.state.strictErrors.clear(),this.expect(5),e&&this.scope.enter(Ke),this.parseBlockBody(r,t,!1,8,s),e&&this.scope.exit(),this.finishNode(r,"BlockStatement")}isValidDirective(t){return t.type==="ExpressionStatement"&&t.expression.type==="StringLiteral"&&!t.expression.extra.parenthesized}parseBlockBody(t,e,s,r,i){let a=t.body=[],n=t.directives=[];this.parseBlockOrModuleBlockBody(a,e?n:void 0,s,r,i);}parseBlockOrModuleBlockBody(t,e,s,r,i){let a=this.state.strict,n=!1,o=!1;for(;!this.match(r);){let c=this.parseStatement(null,s);if(e&&!o){if(this.isValidDirective(c)){let f=this.stmtToDirective(c);e.push(f),!n&&f.value.value==="use strict"&&(n=!0,this.setStrict(!0));continue}o=!0,this.state.strictErrors.clear();}t.push(c);}i&&i.call(this,n),a||this.setStrict(!1),this.next();}parseFor(t,e){return t.init=e,this.semicolon(!1),t.test=this.match(13)?null:this.parseExpression(),this.semicolon(!1),t.update=this.match(11)?null:this.parseExpression(),this.expect(11),t.body=this.withSmartMixTopicForbiddingContext(()=>this.parseStatement("for")),this.scope.exit(),this.state.labels.pop(),this.finishNode(t,"ForStatement")}parseForIn(t,e,s){let r=this.match(58);return this.next(),r?s!==null&&this.unexpected(s):t.await=s!==null,e.type==="VariableDeclaration"&&e.declarations[0].init!=null&&(!r||this.state.strict||e.kind!=="var"||e.declarations[0].id.type!=="Identifier")&&this.raise(l.ForInOfLoopInitializer,{at:e,type:r?"ForInStatement":"ForOfStatement"}),e.type==="AssignmentPattern"&&this.raise(l.InvalidLhs,{at:e,ancestor:{type:"ForStatement"}}),t.left=e,t.right=r?this.parseExpression():this.parseMaybeAssignAllowIn(),this.expect(11),t.body=this.withSmartMixTopicForbiddingContext(()=>this.parseStatement("for")),this.scope.exit(),this.state.labels.pop(),this.finishNode(t,r?"ForInStatement":"ForOfStatement")}parseVar(t,e,s){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,i=t.declarations=[];for(t.kind=s;;){let a=this.startNode();if(this.parseVarId(a,s),a.init=this.eat(29)?e?this.parseMaybeAssignDisallowIn():this.parseMaybeAssignAllowIn():null,a.init===null&&!r&&(a.id.type!=="Identifier"&&!(e&&(this.match(58)||this.isContextual(101)))?this.raise(l.DeclarationMissingInitializer,{at:this.state.lastTokEndLoc,kind:"destructuring"}):s==="const"&&!(this.match(58)||this.isContextual(101))&&this.raise(l.DeclarationMissingInitializer,{at:this.state.lastTokEndLoc,kind:"const"})),i.push(this.finishNode(a,"VariableDeclarator")),!this.eat(12))break}return t}parseVarId(t,e){t.id=this.parseBindingAtom(),this.checkLVal(t.id,{in:{type:"VariableDeclarator"},binding:e==="var"?yt:Te});}parseFunction(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Uh,s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,r=e&ps,i=e&Kr,a=!!r&&!(e&Vr);this.initFunction(t,s),this.match(55)&&i&&this.raise(l.GeneratorInSingleStatementContext,{at:this.state.startLoc}),t.generator=this.eat(55),r&&(t.id=this.parseFunctionId(a));let n=this.state.maybeInArrowParameters;return this.state.maybeInArrowParameters=!1,this.scope.enter(Ae),this.prodParam.enter(Et(s,t.generator)),r||(t.id=this.parseFunctionId()),this.parseFunctionParams(t,!1),this.withSmartMixTopicForbiddingContext(()=>{this.parseFunctionBodyAndFinish(t,r?"FunctionDeclaration":"FunctionExpression");}),this.prodParam.exit(),this.scope.exit(),r&&!i&&this.registerFunctionStatementId(t),this.state.maybeInArrowParameters=n,t}parseFunctionId(t){return t||K(this.state.type)?this.parseIdentifier():null}parseFunctionParams(t,e){this.expect(10),this.expressionScope.enter(nh()),t.params=this.parseBindingList(11,41,!1,e),this.expressionScope.exit();}registerFunctionStatementId(t){!t.id||this.scope.declareName(t.id.name,this.state.strict||t.generator||t.async?this.scope.treatFunctionsAsVar?yt:Te:Ar,t.id.loc.start);}parseClass(t,e,s){this.next(),this.takeDecorators(t);let r=this.state.strict;return this.state.strict=!0,this.parseClassId(t,e,s),this.parseClassSuper(t),t.body=this.parseClassBody(!!t.superClass,r),this.finishNode(t,e?"ClassDeclaration":"ClassExpression")}isClassProperty(){return this.match(29)||this.match(13)||this.match(8)}isClassMethod(){return this.match(10)}isNonstaticConstructor(t){return !t.computed&&!t.static&&(t.key.name==="constructor"||t.key.value==="constructor")}parseClassBody(t,e){this.classScope.enter();let s={hadConstructor:!1,hadSuperClass:t},r=[],i=this.startNode();if(i.body=[],this.expect(5),this.withSmartMixTopicForbiddingContext(()=>{for(;!this.match(8);){if(this.eat(13)){if(r.length>0)throw this.raise(l.DecoratorSemicolon,{at:this.state.lastTokEndLoc});continue}if(this.match(26)){r.push(this.parseDecorator());continue}let a=this.startNode();r.length&&(a.decorators=r,this.resetStartLocationFromNode(a,r[0]),r=[]),this.parseClassMember(i,a,s),a.kind==="constructor"&&a.decorators&&a.decorators.length>0&&this.raise(l.DecoratorConstructor,{at:a});}}),this.state.strict=e,this.next(),r.length)throw this.raise(l.TrailingDecorator,{at:this.state.startLoc});return this.classScope.exit(),this.finishNode(i,"ClassBody")}parseClassMemberFromModifier(t,e){let s=this.parseIdentifier(!0);if(this.isClassMethod()){let r=e;return r.kind="method",r.computed=!1,r.key=s,r.static=!1,this.pushClassMethod(t,r,!1,!1,!1,!1),!0}else if(this.isClassProperty()){let r=e;return r.computed=!1,r.key=s,r.static=!1,t.body.push(this.parseClassProperty(r)),!0}return this.resetPreviousNodeTrailingComments(s),!1}parseClassMember(t,e,s){let r=this.isContextual(104);if(r){if(this.parseClassMemberFromModifier(t,e))return;if(this.eat(5)){this.parseClassStaticBlock(t,e);return}}this.parseClassMemberWithIsStatic(t,e,s,r);}parseClassMemberWithIsStatic(t,e,s,r){let i=e,a=e,n=e,o=e,c=e,f=i,y=i;if(e.static=r,this.parsePropertyNamePrefixOperator(e),this.eat(55)){f.kind="method";let z=this.match(134);if(this.parseClassElementName(f),z){this.pushClassPrivateMethod(t,a,!0,!1);return}this.isNonstaticConstructor(i)&&this.raise(l.ConstructorIsGenerator,{at:i.key}),this.pushClassMethod(t,i,!0,!1,!1,!1);return}let T=K(this.state.type)&&!this.state.containsEsc,v=this.match(134),N=this.parseClassElementName(e),R=this.state.startLoc;if(this.parsePostMemberNameModifiers(y),this.isClassMethod()){if(f.kind="method",v){this.pushClassPrivateMethod(t,a,!1,!1);return}let z=this.isNonstaticConstructor(i),te=!1;z&&(i.kind="constructor",s.hadConstructor&&!this.hasPlugin("typescript")&&this.raise(l.DuplicateConstructor,{at:N}),z&&this.hasPlugin("typescript")&&e.override&&this.raise(l.OverrideOnConstructor,{at:N}),s.hadConstructor=!0,te=s.hadSuperClass),this.pushClassMethod(t,i,!1,!1,z,te);}else if(this.isClassProperty())v?this.pushClassPrivateProperty(t,o):this.pushClassProperty(t,n);else if(T&&N.name==="async"&&!this.isLineTerminator()){this.resetPreviousNodeTrailingComments(N);let z=this.eat(55);y.optional&&this.unexpected(R),f.kind="method";let te=this.match(134);this.parseClassElementName(f),this.parsePostMemberNameModifiers(y),te?this.pushClassPrivateMethod(t,a,z,!0):(this.isNonstaticConstructor(i)&&this.raise(l.ConstructorIsAsync,{at:i.key}),this.pushClassMethod(t,i,z,!0,!1,!1));}else if(T&&(N.name==="get"||N.name==="set")&&!(this.match(55)&&this.isLineTerminator())){this.resetPreviousNodeTrailingComments(N),f.kind=N.name;let z=this.match(134);this.parseClassElementName(i),z?this.pushClassPrivateMethod(t,a,!1,!1):(this.isNonstaticConstructor(i)&&this.raise(l.ConstructorIsAccessor,{at:i.key}),this.pushClassMethod(t,i,!1,!1,!1,!1)),this.checkGetterSetterParams(i);}else if(T&&N.name==="accessor"&&!this.isLineTerminator()){this.expectPlugin("decoratorAutoAccessors"),this.resetPreviousNodeTrailingComments(N);let z=this.match(134);this.parseClassElementName(n),this.pushClassAccessorProperty(t,c,z);}else this.isLineTerminator()?v?this.pushClassPrivateProperty(t,o):this.pushClassProperty(t,n):this.unexpected();}parseClassElementName(t){let{type:e,value:s}=this.state;if((e===128||e===129)&&t.static&&s==="prototype"&&this.raise(l.StaticPrototype,{at:this.state.startLoc}),e===134){s==="constructor"&&this.raise(l.ConstructorClassPrivateField,{at:this.state.startLoc});let r=this.parsePrivateName();return t.key=r,r}return this.parsePropertyName(t)}parseClassStaticBlock(t,e){var s;this.scope.enter(Fe|Jt|ct);let r=this.state.labels;this.state.labels=[],this.prodParam.enter(He);let i=e.body=[];this.parseBlockOrModuleBlockBody(i,void 0,!1,8),this.prodParam.exit(),this.scope.exit(),this.state.labels=r,t.body.push(this.finishNode(e,"StaticBlock")),(s=e.decorators)!=null&&s.length&&this.raise(l.DecoratorStaticBlock,{at:e});}pushClassProperty(t,e){!e.computed&&(e.key.name==="constructor"||e.key.value==="constructor")&&this.raise(l.ConstructorClassField,{at:e.key}),t.body.push(this.parseClassProperty(e));}pushClassPrivateProperty(t,e){let s=this.parseClassPrivateProperty(e);t.body.push(s),this.classScope.declarePrivateName(this.getPrivateNameSV(s.key),rs,s.key.loc.start);}pushClassAccessorProperty(t,e,s){if(!s&&!e.computed){let i=e.key;(i.name==="constructor"||i.value==="constructor")&&this.raise(l.ConstructorClassField,{at:i});}let r=this.parseClassAccessorProperty(e);t.body.push(r),s&&this.classScope.declarePrivateName(this.getPrivateNameSV(r.key),rs,r.key.loc.start);}pushClassMethod(t,e,s,r,i,a){t.body.push(this.parseMethod(e,s,r,i,a,"ClassMethod",!0));}pushClassPrivateMethod(t,e,s,r){let i=this.parseMethod(e,s,r,!1,!1,"ClassPrivateMethod",!0);t.body.push(i);let a=i.kind==="get"?i.static?Uo:zo:i.kind==="set"?i.static?_o:Ko:rs;this.declareClassPrivateMethodInScope(i,a);}declareClassPrivateMethodInScope(t,e){this.classScope.declarePrivateName(this.getPrivateNameSV(t.key),e,t.key.loc.start);}parsePostMemberNameModifiers(t){}parseClassPrivateProperty(t){return this.parseInitializer(t),this.semicolon(),this.finishNode(t,"ClassPrivateProperty")}parseClassProperty(t){return this.parseInitializer(t),this.semicolon(),this.finishNode(t,"ClassProperty")}parseClassAccessorProperty(t){return this.parseInitializer(t),this.semicolon(),this.finishNode(t,"ClassAccessorProperty")}parseInitializer(t){this.scope.enter(Fe|ct),this.expressionScope.enter(Ir()),this.prodParam.enter(He),t.value=this.eat(29)?this.parseMaybeAssignAllowIn():null,this.expressionScope.exit(),this.prodParam.exit(),this.scope.exit();}parseClassId(t,e,s){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:gr;if(K(this.state.type))t.id=this.parseIdentifier(),e&&this.declareNameFromIdentifier(t.id,r);else if(s||!e)t.id=null;else throw this.raise(l.MissingClassName,{at:this.state.startLoc})}parseClassSuper(t){t.superClass=this.eat(81)?this.parseExprSubscripts():null;}parseExport(t){let e=this.maybeParseExportDefaultSpecifier(t),s=!e||this.eat(12),r=s&&this.eatExportStar(t),i=r&&this.maybeParseExportNamespaceSpecifier(t),a=s&&(!i||this.eat(12)),n=e||r;if(r&&!i)return e&&this.unexpected(),this.parseExportFrom(t,!0),this.finishNode(t,"ExportAllDeclaration");let o=this.maybeParseExportNamedSpecifiers(t);if(e&&s&&!r&&!o||i&&a&&!o)throw this.unexpected(null,5);let c;if(n||o?(c=!1,this.parseExportFrom(t,n)):c=this.maybeParseExportDeclaration(t),n||o||c)return this.checkExport(t,!0,!1,!!t.source),this.finishNode(t,"ExportNamedDeclaration");if(this.eat(65))return t.declaration=this.parseExportDefaultExpression(),this.checkExport(t,!0,!0),this.finishNode(t,"ExportDefaultDeclaration");throw this.unexpected(null,5)}eatExportStar(t){return this.eat(55)}maybeParseExportDefaultSpecifier(t){if(this.isExportDefaultSpecifier()){this.expectPlugin("exportDefaultFrom");let e=this.startNode();return e.exported=this.parseIdentifier(!0),t.specifiers=[this.finishNode(e,"ExportDefaultSpecifier")],!0}return !1}maybeParseExportNamespaceSpecifier(t){if(this.isContextual(93)){t.specifiers||(t.specifiers=[]);let e=this.startNodeAt(this.state.lastTokStart,this.state.lastTokStartLoc);return this.next(),e.exported=this.parseModuleExportName(),t.specifiers.push(this.finishNode(e,"ExportNamespaceSpecifier")),!0}return !1}maybeParseExportNamedSpecifiers(t){if(this.match(5)){t.specifiers||(t.specifiers=[]);let e=t.exportKind==="type";return t.specifiers.push(...this.parseExportSpecifiers(e)),t.source=null,t.declaration=null,this.hasPlugin("importAssertions")&&(t.assertions=[]),!0}return !1}maybeParseExportDeclaration(t){return this.shouldParseExportDeclaration()?(t.specifiers=[],t.source=null,this.hasPlugin("importAssertions")&&(t.assertions=[]),t.declaration=this.parseExportDeclaration(t),!0):!1}isAsyncFunction(){if(!this.isContextual(95))return !1;let t=this.nextTokenStart();return !is.test(this.input.slice(this.state.pos,t))&&this.isUnparsedContextual(t,"function")}parseExportDefaultExpression(){let t=this.startNode(),e=this.isAsyncFunction();if(this.match(68)||e)return this.next(),e&&this.next(),this.parseFunction(t,ps|Vr,e);if(this.match(80))return this.parseClass(t,!0,!0);if(this.match(26))return this.hasPlugin("decorators")&&this.getPluginOption("decorators","decoratorsBeforeExport")&&this.raise(l.DecoratorBeforeExport,{at:this.state.startLoc}),this.parseDecorators(!1),this.parseClass(t,!0,!0);if(this.match(75)||this.match(74)||this.isLet())throw this.raise(l.UnsupportedDefaultExport,{at:this.state.startLoc});let s=this.parseMaybeAssignAllowIn();return this.semicolon(),s}parseExportDeclaration(t){return this.parseStatement(null)}isExportDefaultSpecifier(){let{type:t}=this.state;if(K(t)){if(t===95&&!this.state.containsEsc||t===99)return !1;if((t===126||t===125)&&!this.state.containsEsc){let{type:r}=this.lookahead();if(K(r)&&r!==97||r===5)return this.expectOnePlugin(["flow","typescript"]),!1}}else if(!this.match(65))return !1;let e=this.nextTokenStart(),s=this.isUnparsedContextual(e,"from");if(this.input.charCodeAt(e)===44||K(this.state.type)&&s)return !0;if(this.match(65)&&s){let r=this.input.charCodeAt(this.nextTokenStartSince(e+4));return r===34||r===39}return !1}parseExportFrom(t,e){if(this.eatContextual(97)){t.source=this.parseImportSource(),this.checkExport(t);let s=this.maybeParseImportAssertions();s&&(t.assertions=s);}else e&&this.unexpected();this.semicolon();}shouldParseExportDeclaration(){let{type:t}=this.state;if(t===26&&(this.expectOnePlugin(["decorators","decorators-legacy"]),this.hasPlugin("decorators"))){if(this.getPluginOption("decorators","decoratorsBeforeExport"))throw this.raise(l.DecoratorBeforeExport,{at:this.state.startLoc});return !0}return t===74||t===75||t===68||t===80||this.isLet()||this.isAsyncFunction()}checkExport(t,e,s,r){if(e){if(s){if(this.checkDuplicateExports(t,"default"),this.hasPlugin("exportDefaultFrom")){var i;let n=t.declaration;n.type==="Identifier"&&n.name==="from"&&n.end-n.start===4&&!((i=n.extra)!=null&&i.parenthesized)&&this.raise(l.ExportDefaultFromAsIdentifier,{at:n});}}else if(t.specifiers&&t.specifiers.length)for(let n of t.specifiers){let{exported:o}=n,c=o.type==="Identifier"?o.name:o.value;if(this.checkDuplicateExports(n,c),!r&&n.local){let{local:f}=n;f.type!=="Identifier"?this.raise(l.ExportBindingIsString,{at:n,localName:f.value,exportName:c}):(this.checkReservedWord(f.name,f.loc.start,!0,!1),this.scope.checkLocalExport(f));}}else if(t.declaration){if(t.declaration.type==="FunctionDeclaration"||t.declaration.type==="ClassDeclaration"){let n=t.declaration.id;if(!n)throw new Error("Assertion failure");this.checkDuplicateExports(t,n.name);}else if(t.declaration.type==="VariableDeclaration")for(let n of t.declaration.declarations)this.checkDeclaration(n.id);}}if(this.state.decoratorStack[this.state.decoratorStack.length-1].length)throw this.raise(l.UnsupportedDecoratorExport,{at:t})}checkDeclaration(t){if(t.type==="Identifier")this.checkDuplicateExports(t,t.name);else if(t.type==="ObjectPattern")for(let e of t.properties)this.checkDeclaration(e);else if(t.type==="ArrayPattern")for(let e of t.elements)e&&this.checkDeclaration(e);else t.type==="ObjectProperty"?this.checkDeclaration(t.value):t.type==="RestElement"?this.checkDeclaration(t.argument):t.type==="AssignmentPattern"&&this.checkDeclaration(t.left);}checkDuplicateExports(t,e){this.exportedIdentifiers.has(e)&&(e==="default"?this.raise(l.DuplicateDefaultExport,{at:t}):this.raise(l.DuplicateExport,{at:t,exportName:e})),this.exportedIdentifiers.add(e);}parseExportSpecifiers(t){let e=[],s=!0;for(this.expect(5);!this.eat(8);){if(s)s=!1;else if(this.expect(12),this.eat(8))break;let r=this.isContextual(126),i=this.match(129),a=this.startNode();a.local=this.parseModuleExportName(),e.push(this.parseExportSpecifier(a,i,t,r));}return e}parseExportSpecifier(t,e,s,r){return this.eatContextual(93)?t.exported=this.parseModuleExportName():e?t.exported=ph(t.local):t.exported||(t.exported=Ee(t.local)),this.finishNode(t,"ExportSpecifier")}parseModuleExportName(){if(this.match(129)){let t=this.parseStringLiteral(this.state.value),e=t.value.match(_h);return e&&this.raise(l.ModuleExportNameHasLoneSurrogate,{at:t,surrogateCharCode:e[0].charCodeAt(0)}),t}return this.parseIdentifier(!0)}parseImport(t){if(t.specifiers=[],!this.match(129)){let r=!this.maybeParseDefaultImportSpecifier(t)||this.eat(12),i=r&&this.maybeParseStarImportSpecifier(t);r&&!i&&this.parseNamedImportSpecifiers(t),this.expectContextual(97);}t.source=this.parseImportSource();let e=this.maybeParseImportAssertions();if(e)t.assertions=e;else {let s=this.maybeParseModuleAttributes();s&&(t.attributes=s);}return this.semicolon(),this.finishNode(t,"ImportDeclaration")}parseImportSource(){return this.match(129)||this.unexpected(),this.parseExprAtom()}shouldParseDefaultImport(t){return K(this.state.type)}parseImportSpecifierLocal(t,e,s){e.local=this.parseIdentifier(),t.specifiers.push(this.finishImportSpecifier(e,s));}finishImportSpecifier(t,e){return this.checkLVal(t.local,{in:t,binding:Te}),this.finishNode(t,e)}parseAssertEntries(){let t=[],e=new Set;do{if(this.match(8))break;let s=this.startNode(),r=this.state.value;if(e.has(r)&&this.raise(l.ModuleAttributesWithDuplicateKeys,{at:this.state.startLoc,key:r}),e.add(r),this.match(129)?s.key=this.parseStringLiteral(r):s.key=this.parseIdentifier(!0),this.expect(14),!this.match(129))throw this.raise(l.ModuleAttributeInvalidValue,{at:this.state.startLoc});s.value=this.parseStringLiteral(this.state.value),this.finishNode(s,"ImportAttribute"),t.push(s);}while(this.eat(12));return t}maybeParseModuleAttributes(){if(this.match(76)&&!this.hasPrecedingLineBreak())this.expectPlugin("moduleAttributes"),this.next();else return this.hasPlugin("moduleAttributes")?[]:null;let t=[],e=new Set;do{let s=this.startNode();if(s.key=this.parseIdentifier(!0),s.key.name!=="type"&&this.raise(l.ModuleAttributeDifferentFromType,{at:s.key}),e.has(s.key.name)&&this.raise(l.ModuleAttributesWithDuplicateKeys,{at:s.key,key:s.key.name}),e.add(s.key.name),this.expect(14),!this.match(129))throw this.raise(l.ModuleAttributeInvalidValue,{at:this.state.startLoc});s.value=this.parseStringLiteral(this.state.value),this.finishNode(s,"ImportAttribute"),t.push(s);}while(this.eat(12));return t}maybeParseImportAssertions(){if(this.isContextual(94)&&!this.hasPrecedingLineBreak())this.expectPlugin("importAssertions"),this.next();else return this.hasPlugin("importAssertions")?[]:null;this.eat(5);let t=this.parseAssertEntries();return this.eat(8),t}maybeParseDefaultImportSpecifier(t){return this.shouldParseDefaultImport(t)?(this.parseImportSpecifierLocal(t,this.startNode(),"ImportDefaultSpecifier"),!0):!1}maybeParseStarImportSpecifier(t){if(this.match(55)){let e=this.startNode();return this.next(),this.expectContextual(93),this.parseImportSpecifierLocal(t,e,"ImportNamespaceSpecifier"),!0}return !1}parseNamedImportSpecifiers(t){let e=!0;for(this.expect(5);!this.eat(8);){if(e)e=!1;else {if(this.eat(14))throw this.raise(l.DestructureNamedImport,{at:this.state.startLoc});if(this.expect(12),this.eat(8))break}let s=this.startNode(),r=this.match(129),i=this.isContextual(126);s.imported=this.parseModuleExportName();let a=this.parseImportSpecifier(s,r,t.importKind==="type"||t.importKind==="typeof",i);t.specifiers.push(a);}}parseImportSpecifier(t,e,s,r){if(this.eatContextual(93))t.local=this.parseIdentifier();else {let{imported:i}=t;if(e)throw this.raise(l.ImportBindingIsString,{at:t,importName:i.value});this.checkReservedWord(i.name,t.loc.start,!0,!0),t.local||(t.local=Ee(i));}return this.finishImportSpecifier(t,"ImportSpecifier")}isThisParam(t){return t.type==="Identifier"&&t.name==="this"}},Hr=class extends Kh{constructor(t,e){t=Bh(t),super(t,e),this.options=t,this.initializeScopes(),this.plugins=Vh(this.options.plugins),this.filename=t.sourceFilename;}getScopeHandler(){return os}parse(){this.enterInitialScopes();let t=this.startNode(),e=this.startNode();return this.nextToken(),t.errors=null,this.parseTopLevel(t,e),t.errors=this.state.errors,t}};function Vh(t){let e=new Map;for(let s of t){let[r,i]=Array.isArray(s)?s:[s,{}];e.has(r)||e.set(r,i||{});}return e}function Hh(t,e){var s;if(((s=e)==null?void 0:s.sourceType)==="unambiguous"){e=Object.assign({},e);try{e.sourceType="module";let r=tt(e,t),i=r.parse();if(r.sawUnambiguousESM)return i;if(r.ambiguousScriptDifferentAst)try{return e.sourceType="script",tt(e,t).parse()}catch{}else i.program.sourceType="script";return i}catch(r){try{return e.sourceType="script",tt(e,t).parse()}catch{}throw r}}else return tt(e,t).parse()}function Wh(t,e){let s=tt(e,t);return s.options.strictMode&&(s.state.strict=!0),s.getExpression()}function Gh(t){let e={};for(let s of Object.keys(t))e[s]=xe(t[s]);return e}var Xh=Gh(co);function tt(t,e){let s=Hr;return t!=null&&t.plugins&&(Lh(t.plugins),s=Jh(t.plugins)),new s(t,e)}var Wr={};function Jh(t){let e=Oh.filter(i=>se(t,i)),s=e.join("/"),r=Wr[s];if(!r){r=Hr;for(let i of e)r=Ur[i](r);Wr[s]=r;}return r}h.parse=Hh,h.parseExpression=Wh,h.tokTypes=Xh;}}),hf=W({"src/language-js/parse/json.js"(h,u){H();var p=io(),d=ar(),m=no(),x=oo();function A(){let C=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{allowComments:M=!0}=C;return function(k){let{parseExpression:G}=uo(),Z;try{Z=G(k,{tokens:!0,ranges:!0});}catch(B){throw x(B)}if(!M&&p(Z.comments))throw g(Z.comments[0],"Comment");return E(Z),Z}}function g(C,M){let[L,k]=[C.loc.start,C.loc.end].map(G=>{let{line:Z,column:B}=G;return {line:Z,column:B+1}});return d("".concat(M," is not allowed in JSON."),{start:L,end:k})}function E(C){switch(C.type){case"ArrayExpression":for(let M of C.elements)M!==null&&E(M);return;case"ObjectExpression":for(let M of C.properties)E(M);return;case"ObjectProperty":if(C.computed)throw g(C.key,"Computed key");if(C.shorthand)throw g(C.key,"Shorthand property");C.key.type!=="Identifier"&&E(C.key),E(C.value);return;case"UnaryExpression":{let{operator:M,argument:L}=C;if(M!=="+"&&M!=="-")throw g(C,"Operator '".concat(C.operator,"'"));if(L.type==="NumericLiteral"||L.type==="Identifier"&&(L.name==="Infinity"||L.name==="NaN"))return;throw g(L,"Operator '".concat(M,"' before '").concat(L.type,"'"))}case"Identifier":if(C.name!=="Infinity"&&C.name!=="NaN"&&C.name!=="undefined")throw g(C,"Identifier '".concat(C.name,"'"));return;case"TemplateLiteral":if(p(C.expressions))throw g(C.expressions[0],"'TemplateLiteral' with expression");for(let M of C.quasis)E(M);return;case"NullLiteral":case"BooleanLiteral":case"NumericLiteral":case"StringLiteral":case"TemplateElement":return;default:throw g(C,"'".concat(C.type,"'"))}}var F=A(),D={json:m({parse:F,hasPragma(){return !0}}),json5:m(F),"json-stringify":m({parse:A({allowComments:!1}),astFormat:"estree-json"})};u.exports=D;}}),lf=W({"src/language-js/parse/babel.js"(h,u){H();var p=zp(),d=Kn(),m=Wp(),x=no(),A=oo(),g=of(),E=hf(),F={sourceType:"module",allowImportExportEverywhere:!0,allowReturnOutsideFunction:!0,allowSuperOutsideMethod:!0,allowUndeclaredExports:!0,errorRecovery:!0,createParenthesizedExpressions:!0,plugins:["doExpressions","exportDefaultFrom","functionBind","functionSent","throwExpressions","partialApplication",["decorators",{decoratorsBeforeExport:!1}],"importAssertions","decimal","moduleBlocks","asyncDoExpressions","regexpUnicodeSets","destructuringPrivate","decoratorAutoAccessors"],tokens:!0,ranges:!0},D=["recordAndTuple",{syntaxType:"hash"}],C="v8intrinsic",M=[["pipelineOperator",{proposal:"hack",topicToken:"%"}],["pipelineOperator",{proposal:"minimal"}],["pipelineOperator",{proposal:"fsharp"}]],L=function(V){let $=arguments.length>1&&arguments[1]!==void 0?arguments[1]:F;return Object.assign(Object.assign({},$),{},{plugins:[...$.plugins,...V]})},k=/@(?:no)?flow\b/;function G(V,$){if($.filepath&&$.filepath.endsWith(".js.flow"))return !0;let me=d(V);me&&(V=V.slice(me.length));let ce=m(V,0);return ce!==!1&&(V=V.slice(0,ce)),k.test(V)}function Z(V,$,me){let ae=uo()[V]($,me),q=ae.errors.find(X=>!ee.has(X.reasonCode));if(q)throw q;return ae}function B(V){for(var $=arguments.length,me=new Array($>1?$-1:0),ce=1;ce<$;ce++)me[ce-1]=arguments[ce];return function(ae,q){let X=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if((X.parser==="babel"||X.parser==="__babel_estree")&&G(ae,X))return X.parser="babel-flow",l(ae,q,X);let re=me;X.__babelSourceType==="script"&&(re=re.map(oe=>Object.assign(Object.assign({},oe),{},{sourceType:"script"}))),/#[[{]/.test(ae)&&(re=re.map(oe=>L([D],oe)));let ne=/%[A-Z]/.test(ae);ae.includes("|>")?re=(ne?[...M,C]:M).flatMap(Je=>re.map(Ye=>L([Je],Ye))):ne&&(re=re.map(oe=>L([C],oe)));let{result:Ue,error:_e}=p(...re.map(oe=>()=>Z(V,ae,oe)));if(!Ue)throw A(_e);return X.originalText=ae,g(Ue,X)}}var j=B("parse",L(["jsx","flow"])),l=B("parse",L(["jsx",["flow",{all:!0,enums:!0}]])),Y=B("parse",L(["jsx","typescript"]),L(["typescript"])),ie=B("parse",L(["jsx","flow","estree"])),Q=B("parseExpression",L(["jsx"])),Ce=B("parseExpression",L(["typescript"])),ee=new Set(["StrictNumericEscape","StrictWith","StrictOctalLiteral","StrictDelete","StrictEvalArguments","StrictEvalArgumentsBinding","StrictFunction","EmptyTypeArguments","EmptyTypeParameters","ConstructorHasTypeParameters","UnsupportedParameterPropertyKind","UnexpectedParameterModifier","MixedLabeledAndUnlabeledElements","InvalidTupleMemberLabel","NonClassMethodPropertyHasAbstractModifer","ReadonlyForMethodSignature","ClassMethodHasDeclare","ClassMethodHasReadonly","InvalidModifierOnTypeMember","DuplicateAccessibilityModifier","IndexSignatureHasDeclare","DecoratorExportClass","ParamDupe","InvalidDecimal","RestTrailingComma","UnsupportedParameterDecorator","UnterminatedJsxContent","UnexpectedReservedWord","ModuleAttributesWithDuplicateKeys","LineTerminatorBeforeArrow","InvalidEscapeSequenceTemplate","NonAbstractClassHasAbstractMethod","UnsupportedPropertyDecorator","OptionalTypeBeforeRequired","PatternIsOptional","OptionalBindingPattern","DeclareClassFieldHasInitializer","TypeImportCannotSpecifyDefaultAndNamed","DeclareFunctionHasImplementation","ConstructorClassField","VarRedeclaration","InvalidPrivateFieldResolution","DuplicateExport"]),U=x(j),O=x(Y),P=x(Q),De=x(Ce);u.exports={parsers:Object.assign(Object.assign({babel:U,"babel-flow":x(l),"babel-ts":O},E),{},{__js_expression:P,__vue_expression:P,__vue_ts_expression:De,__vue_event_binding:U,__vue_ts_event_binding:O,__babel_estree:x(ie)})};}}),Fd=lf(); - -export { Fd as default }; diff --git a/src/lib/prettier-postcss.js b/src/lib/prettier-postcss.js index cd0cde821..b88b9f1ea 100644 --- a/src/lib/prettier-postcss.js +++ b/src/lib/prettier-postcss.js @@ -1,78 +1,54 @@ -var Y=(r,i)=>()=>(i||r((i={exports:{}}).exports,i),i.exports);var ee=Y((Rf,Ct)=>{var Ye=function(r){return r&&r.Math==Math&&r};Ct.exports=Ye(typeof globalThis=="object"&&globalThis)||Ye(typeof window=="object"&&window)||Ye(typeof self=="object"&&self)||Ye(typeof global=="object"&&global)||function(){return this}()||Function("return this")();});var ke=Y((If,Nt)=>{Nt.exports=function(r){try{return !!r()}catch{return !0}};});var Te=Y((Cf,jt)=>{var Ko=ke();jt.exports=!Ko(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!=7});});var _r=Y((Nf,Mt)=>{var Qo=ke();Mt.exports=!Qo(function(){var r=function(){}.bind();return typeof r!="function"||r.hasOwnProperty("prototype")});});var Ze=Y((jf,Dt)=>{var Yo=_r(),Xe=Function.prototype.call;Dt.exports=Yo?Xe.bind(Xe):function(){return Xe.apply(Xe,arguments)};});var Ft=Y(Bt=>{var Lt={}.propertyIsEnumerable,zt=Object.getOwnPropertyDescriptor,Xo=zt&&!Lt.call({1:2},1);Bt.f=Xo?function(i){var s=zt(this,i);return !!s&&s.enumerable}:Lt;});var br=Y((Df,Ut)=>{Ut.exports=function(r,i){return {enumerable:!(r&1),configurable:!(r&2),writable:!(r&4),value:i}};});var de=Y((Lf,Vt)=>{var Wt=_r(),$t=Function.prototype,Zo=$t.bind,xr=$t.call,ea=Wt&&Zo.bind(xr,xr);Vt.exports=Wt?function(r){return r&&ea(r)}:function(r){return r&&function(){return xr.apply(r,arguments)}};});var Jt=Y((zf,Ht)=>{var Gt=de(),ra=Gt({}.toString),ta=Gt("".slice);Ht.exports=function(r){return ta(ra(r),8,-1)};});var Qt=Y((Bf,Kt)=>{var na=ee(),ia=de(),sa=ke(),oa=Jt(),kr=na.Object,aa=ia("".split);Kt.exports=sa(function(){return !kr("z").propertyIsEnumerable(0)})?function(r){return oa(r)=="String"?aa(r,""):kr(r)}:kr;});var Sr=Y((Ff,Yt)=>{var ua=ee(),ca=ua.TypeError;Yt.exports=function(r){if(r==null)throw ca("Can't call method on "+r);return r};});var er=Y((Uf,Xt)=>{var la=Qt(),fa=Sr();Xt.exports=function(r){return la(fa(r))};});var ve=Y((Wf,Zt)=>{Zt.exports=function(r){return typeof r=="function"};});var Ne=Y(($f,en)=>{var pa=ve();en.exports=function(r){return typeof r=="object"?r!==null:pa(r)};});var rr=Y((Vf,rn)=>{var Or=ee(),ha=ve(),da=function(r){return ha(r)?r:void 0};rn.exports=function(r,i){return arguments.length<2?da(Or[r]):Or[r]&&Or[r][i]};});var nn=Y((Gf,tn)=>{var va=de();tn.exports=va({}.isPrototypeOf);});var on=Y((Hf,sn)=>{var ma=rr();sn.exports=ma("navigator","userAgent")||"";});var hn=Y((Jf,pn)=>{var fn=ee(),Tr=on(),an=fn.process,un=fn.Deno,cn=an&&an.versions||un&&un.version,ln=cn&&cn.v8,he,tr;ln&&(he=ln.split("."),tr=he[0]>0&&he[0]<4?1:+(he[0]+he[1]));!tr&&Tr&&(he=Tr.match(/Edge\/(\d+)/),(!he||he[1]>=74)&&(he=Tr.match(/Chrome\/(\d+)/),he&&(tr=+he[1])));pn.exports=tr;});var Er=Y((Kf,vn)=>{var dn=hn(),ga=ke();vn.exports=!!Object.getOwnPropertySymbols&&!ga(function(){var r=Symbol();return !String(r)||!(Object(r)instanceof Symbol)||!Symbol.sham&&dn&&dn<41});});var qr=Y((Qf,mn)=>{var ya=Er();mn.exports=ya&&!Symbol.sham&&typeof Symbol.iterator=="symbol";});var Ar=Y((Yf,gn)=>{var wa=ee(),_a=rr(),ba=ve(),xa=nn(),ka=qr(),Sa=wa.Object;gn.exports=ka?function(r){return typeof r=="symbol"}:function(r){var i=_a("Symbol");return ba(i)&&xa(i.prototype,Sa(r))};});var wn=Y((Xf,yn)=>{var Oa=ee(),Ta=Oa.String;yn.exports=function(r){try{return Ta(r)}catch{return "Object"}};});var bn=Y((Zf,_n)=>{var Ea=ee(),qa=ve(),Aa=wn(),Pa=Ea.TypeError;_n.exports=function(r){if(qa(r))return r;throw Pa(Aa(r)+" is not a function")};});var kn=Y((ep,xn)=>{var Ra=bn();xn.exports=function(r,i){var s=r[i];return s==null?void 0:Ra(s)};});var On=Y((rp,Sn)=>{var Ia=ee(),Pr=Ze(),Rr=ve(),Ir=Ne(),Ca=Ia.TypeError;Sn.exports=function(r,i){var s,l;if(i==="string"&&Rr(s=r.toString)&&!Ir(l=Pr(s,r))||Rr(s=r.valueOf)&&!Ir(l=Pr(s,r))||i!=="string"&&Rr(s=r.toString)&&!Ir(l=Pr(s,r)))return l;throw Ca("Can't convert object to primitive value")};});var En=Y((tp,Tn)=>{Tn.exports=!1;});var nr=Y((np,An)=>{var qn=ee(),Na=Object.defineProperty;An.exports=function(r,i){try{Na(qn,r,{value:i,configurable:!0,writable:!0});}catch{qn[r]=i;}return i};});var ir=Y((ip,Rn)=>{var ja=ee(),Ma=nr(),Pn="__core-js_shared__",Da=ja[Pn]||Ma(Pn,{});Rn.exports=Da;});var Cr=Y((sp,Cn)=>{var La=En(),In=ir();(Cn.exports=function(r,i){return In[r]||(In[r]=i!==void 0?i:{})})("versions",[]).push({version:"3.22.2",mode:La?"pure":"global",copyright:"\xA9 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.22.2/LICENSE",source:"https://github.com/zloirock/core-js"});});var jn=Y((op,Nn)=>{var za=ee(),Ba=Sr(),Fa=za.Object;Nn.exports=function(r){return Fa(Ba(r))};});var Se=Y((ap,Mn)=>{var Ua=de(),Wa=jn(),$a=Ua({}.hasOwnProperty);Mn.exports=Object.hasOwn||function(i,s){return $a(Wa(i),s)};});var Nr=Y((up,Dn)=>{var Va=de(),Ga=0,Ha=Math.random(),Ja=Va(1 .toString);Dn.exports=function(r){return "Symbol("+(r===void 0?"":r)+")_"+Ja(++Ga+Ha,36)};});var Wn=Y((cp,Un)=>{var Ka=ee(),Qa=Cr(),Ln=Se(),Ya=Nr(),zn=Er(),Fn=qr(),je=Qa("wks"),Ee=Ka.Symbol,Bn=Ee&&Ee.for,Xa=Fn?Ee:Ee&&Ee.withoutSetter||Ya;Un.exports=function(r){if(!Ln(je,r)||!(zn||typeof je[r]=="string")){var i="Symbol."+r;zn&&Ln(Ee,r)?je[r]=Ee[r]:Fn&&Bn?je[r]=Bn(i):je[r]=Xa(i);}return je[r]};});var Hn=Y((lp,Gn)=>{var Za=ee(),eu=Ze(),$n=Ne(),Vn=Ar(),ru=kn(),tu=On(),nu=Wn(),iu=Za.TypeError,su=nu("toPrimitive");Gn.exports=function(r,i){if(!$n(r)||Vn(r))return r;var s=ru(r,su),l;if(s){if(i===void 0&&(i="default"),l=eu(s,r,i),!$n(l)||Vn(l))return l;throw iu("Can't convert object to primitive value")}return i===void 0&&(i="number"),tu(r,i)};});var jr=Y((fp,Jn)=>{var ou=Hn(),au=Ar();Jn.exports=function(r){var i=ou(r,"string");return au(i)?i:i+""};});var Yn=Y((pp,Qn)=>{var uu=ee(),Kn=Ne(),Mr=uu.document,cu=Kn(Mr)&&Kn(Mr.createElement);Qn.exports=function(r){return cu?Mr.createElement(r):{}};});var Dr=Y((hp,Xn)=>{var lu=Te(),fu=ke(),pu=Yn();Xn.exports=!lu&&!fu(function(){return Object.defineProperty(pu("div"),"a",{get:function(){return 7}}).a!=7});});var Lr=Y(ei=>{var hu=Te(),du=Ze(),vu=Ft(),mu=br(),gu=er(),yu=jr(),wu=Se(),_u=Dr(),Zn=Object.getOwnPropertyDescriptor;ei.f=hu?Zn:function(i,s){if(i=gu(i),s=yu(s),_u)try{return Zn(i,s)}catch{}if(wu(i,s))return mu(!du(vu.f,i,s),i[s])};});var ti=Y((vp,ri)=>{var bu=Te(),xu=ke();ri.exports=bu&&xu(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!=42});});var zr=Y((mp,ii)=>{var ni=ee(),ku=Ne(),Su=ni.String,Ou=ni.TypeError;ii.exports=function(r){if(ku(r))return r;throw Ou(Su(r)+" is not an object")};});var $r=Y(oi=>{var Tu=ee(),Eu=Te(),qu=Dr(),Au=ti(),sr=zr(),si=jr(),Pu=Tu.TypeError,Br=Object.defineProperty,Ru=Object.getOwnPropertyDescriptor,Fr="enumerable",Ur="configurable",Wr="writable";oi.f=Eu?Au?function(i,s,l){if(sr(i),s=si(s),sr(l),typeof i=="function"&&s==="prototype"&&"value"in l&&Wr in l&&!l[Wr]){var o=Ru(i,s);o&&o[Wr]&&(i[s]=l.value,l={configurable:Ur in l?l[Ur]:o[Ur],enumerable:Fr in l?l[Fr]:o[Fr],writable:!1});}return Br(i,s,l)}:Br:function(i,s,l){if(sr(i),s=si(s),sr(l),qu)try{return Br(i,s,l)}catch{}if("get"in l||"set"in l)throw Pu("Accessors not supported");return "value"in l&&(i[s]=l.value),i};});var or=Y((yp,ai)=>{var Iu=Te(),Cu=$r(),Nu=br();ai.exports=Iu?function(r,i,s){return Cu.f(r,i,Nu(1,s))}:function(r,i,s){return r[i]=s,r};});var Gr=Y((wp,ui)=>{var ju=de(),Mu=ve(),Vr=ir(),Du=ju(Function.toString);Mu(Vr.inspectSource)||(Vr.inspectSource=function(r){return Du(r)});ui.exports=Vr.inspectSource;});var fi=Y((_p,li)=>{var Lu=ee(),zu=ve(),Bu=Gr(),ci=Lu.WeakMap;li.exports=zu(ci)&&/native code/.test(Bu(ci));});var di=Y((bp,hi)=>{var Fu=Cr(),Uu=Nr(),pi=Fu("keys");hi.exports=function(r){return pi[r]||(pi[r]=Uu(r))};});var Hr=Y((xp,vi)=>{vi.exports={};});var bi=Y((kp,_i)=>{var Wu=fi(),wi=ee(),Jr=de(),$u=Ne(),Vu=or(),Kr=Se(),Qr=ir(),Gu=di(),Hu=Hr(),mi="Object already initialized",Xr=wi.TypeError,Ju=wi.WeakMap,ar,ze,ur,Ku=function(r){return ur(r)?ze(r):ar(r,{})},Qu=function(r){return function(i){var s;if(!$u(i)||(s=ze(i)).type!==r)throw Xr("Incompatible receiver, "+r+" required");return s}};Wu||Qr.state?(Oe=Qr.state||(Qr.state=new Ju),gi=Jr(Oe.get),Yr=Jr(Oe.has),yi=Jr(Oe.set),ar=function(r,i){if(Yr(Oe,r))throw new Xr(mi);return i.facade=r,yi(Oe,r,i),i},ze=function(r){return gi(Oe,r)||{}},ur=function(r){return Yr(Oe,r)}):(qe=Gu("state"),Hu[qe]=!0,ar=function(r,i){if(Kr(r,qe))throw new Xr(mi);return i.facade=r,Vu(r,qe,i),i},ze=function(r){return Kr(r,qe)?r[qe]:{}},ur=function(r){return Kr(r,qe)});var Oe,gi,Yr,yi,qe;_i.exports={set:ar,get:ze,has:ur,enforce:Ku,getterFor:Qu};});var Si=Y((Sp,ki)=>{var Zr=Te(),Yu=Se(),xi=Function.prototype,Xu=Zr&&Object.getOwnPropertyDescriptor,et=Yu(xi,"name"),Zu=et&&function(){}.name==="something",ec=et&&(!Zr||Zr&&Xu(xi,"name").configurable);ki.exports={EXISTS:et,PROPER:Zu,CONFIGURABLE:ec};});var Ai=Y((Op,qi)=>{var rc=ee(),Oi=ve(),tc=Se(),Ti=or(),nc=nr(),ic=Gr(),Ei=bi(),sc=Si().CONFIGURABLE,oc=Ei.get,ac=Ei.enforce,uc=String(String).split("String");(qi.exports=function(r,i,s,l){var o=l?!!l.unsafe:!1,h=l?!!l.enumerable:!1,f=l?!!l.noTargetGet:!1,p=l&&l.name!==void 0?l.name:i,g;if(Oi(s)&&(String(p).slice(0,7)==="Symbol("&&(p="["+String(p).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),(!tc(s,"name")||sc&&s.name!==p)&&Ti(s,"name",p),g=ac(s),g.source||(g.source=uc.join(typeof p=="string"?p:""))),r===rc){h?r[i]=s:nc(i,s);return}else o?!f&&r[i]&&(h=!0):delete r[i];h?r[i]=s:Ti(r,i,s);})(Function.prototype,"toString",function(){return Oi(this)&&oc(this).source||ic(this)});});var rt=Y((Tp,Pi)=>{var cc=Math.ceil,lc=Math.floor;Pi.exports=function(r){var i=+r;return i!==i||i===0?0:(i>0?lc:cc)(i)};});var Ii=Y((Ep,Ri)=>{var fc=rt(),pc=Math.max,hc=Math.min;Ri.exports=function(r,i){var s=fc(r);return s<0?pc(s+i,0):hc(s,i)};});var Ni=Y((qp,Ci)=>{var dc=rt(),vc=Math.min;Ci.exports=function(r){return r>0?vc(dc(r),9007199254740991):0};});var Mi=Y((Ap,ji)=>{var mc=Ni();ji.exports=function(r){return mc(r.length)};});var zi=Y((Pp,Li)=>{var gc=er(),yc=Ii(),wc=Mi(),Di=function(r){return function(i,s,l){var o=gc(i),h=wc(o),f=yc(l,h),p;if(r&&s!=s){for(;h>f;)if(p=o[f++],p!=p)return !0}else for(;h>f;f++)if((r||f in o)&&o[f]===s)return r||f||0;return !r&&-1}};Li.exports={includes:Di(!0),indexOf:Di(!1)};});var Ui=Y((Rp,Fi)=>{var _c=de(),tt=Se(),bc=er(),xc=zi().indexOf,kc=Hr(),Bi=_c([].push);Fi.exports=function(r,i){var s=bc(r),l=0,o=[],h;for(h in s)!tt(kc,h)&&tt(s,h)&&Bi(o,h);for(;i.length>l;)tt(s,h=i[l++])&&(~xc(o,h)||Bi(o,h));return o};});var $i=Y((Ip,Wi)=>{Wi.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"];});var Gi=Y(Vi=>{var Sc=Ui(),Oc=$i(),Tc=Oc.concat("length","prototype");Vi.f=Object.getOwnPropertyNames||function(i){return Sc(i,Tc)};});var Ji=Y(Hi=>{Hi.f=Object.getOwnPropertySymbols;});var Qi=Y((jp,Ki)=>{var Ec=rr(),qc=de(),Ac=Gi(),Pc=Ji(),Rc=zr(),Ic=qc([].concat);Ki.exports=Ec("Reflect","ownKeys")||function(i){var s=Ac.f(Rc(i)),l=Pc.f;return l?Ic(s,l(i)):s};});var Zi=Y((Mp,Xi)=>{var Yi=Se(),Cc=Qi(),Nc=Lr(),jc=$r();Xi.exports=function(r,i,s){for(var l=Cc(i),o=jc.f,h=Nc.f,f=0;f<l.length;f++){var p=l[f];!Yi(r,p)&&!(s&&Yi(s,p))&&o(r,p,h(i,p));}};});var rs=Y((Dp,es)=>{var Mc=ke(),Dc=ve(),Lc=/#|\.prototype\./,Be=function(r,i){var s=Bc[zc(r)];return s==Uc?!0:s==Fc?!1:Dc(i)?Mc(i):!!i},zc=Be.normalize=function(r){return String(r).replace(Lc,".").toLowerCase()},Bc=Be.data={},Fc=Be.NATIVE="N",Uc=Be.POLYFILL="P";es.exports=Be;});var ns=Y((Lp,ts)=>{var nt=ee(),Wc=Lr().f,$c=or(),Vc=Ai(),Gc=nr(),Hc=Zi(),Jc=rs();ts.exports=function(r,i){var s=r.target,l=r.global,o=r.stat,h,f,p,g,c,t;if(l?f=nt:o?f=nt[s]||Gc(s,{}):f=(nt[s]||{}).prototype,f)for(p in i){if(c=i[p],r.noTargetGet?(t=Wc(f,p),g=t&&t.value):g=f[p],h=Jc(l?p:s+(o?".":"#")+p,r.forced),!h&&g!==void 0){if(typeof c==typeof g)continue;Hc(c,g);}(r.sham||g&&g.sham)&&$c(c,"sham",!0),Vc(f,p,c,r);}};});var is=Y(()=>{var Kc=ns(),Qc=ee();Kc({global:!0},{globalThis:Qc});});is();var dt=Object.defineProperty,Yc=Object.getOwnPropertyDescriptor,vt=Object.getOwnPropertyNames,Xc=Object.prototype.hasOwnProperty,Me=(r,i)=>function(){return r&&(i=(0, r[vt(r)[0]])(r=0)),i},C=(r,i)=>function(){return i||(0, r[vt(r)[0]])((i={exports:{}}).exports,i),i.exports},mt=(r,i)=>{for(var s in i)dt(r,s,{get:i[s],enumerable:!0});},Zc=(r,i,s,l)=>{if(i&&typeof i=="object"||typeof i=="function")for(let o of vt(i))!Xc.call(r,o)&&o!==s&&dt(r,o,{get:()=>i[o],enumerable:!(l=Yc(i,o))||l.enumerable});return r},gt=r=>Zc(dt({},"__esModule",{value:!0}),r),I=Me({"<define:process>"(){}}),el=C({"src/common/parser-create-error.js"(r,i){I();function s(l,o){let h=new SyntaxError(l+" ("+o.start.line+":"+o.start.column+")");return h.loc=o,h}i.exports=s;}}),Ss=C({"src/utils/get-last.js"(r,i){I();var s=l=>l[l.length-1];i.exports=s;}}),Os=C({"src/utils/front-matter/parse.js"(r,i){I();var s=new RegExp("^(?<startDelimiter>-{3}|\\+{3})(?<language>[^\\n]*)\\n(?:|(?<value>.*?)\\n)(?<endDelimiter>\\k<startDelimiter>|\\.{3})[^\\S\\n]*(?:\\n|$)","s");function l(o){let h=o.match(s);if(!h)return {content:o};let{startDelimiter:f,language:p,value:g="",endDelimiter:c}=h.groups,t=p.trim()||"yaml";if(f==="+++"&&(t="toml"),t!=="yaml"&&f!==c)return {content:o};let[e]=h;return {frontMatter:{type:"front-matter",lang:t,value:g,startDelimiter:f,endDelimiter:c,raw:e.replace(/\n$/,"")},content:e.replace(/[^\n]/g," ")+o.slice(e.length)}}i.exports=l;}}),Ts={};mt(Ts,{EOL:()=>lt,arch:()=>rl,cpus:()=>Cs,default:()=>Ls,endianness:()=>Es,freemem:()=>Rs,getNetworkInterfaces:()=>Ds,hostname:()=>qs,loadavg:()=>As,networkInterfaces:()=>Ms,platform:()=>tl,release:()=>js,tmpDir:()=>ut,tmpdir:()=>ct,totalmem:()=>Is,type:()=>Ns,uptime:()=>Ps});function Es(){if(typeof cr>"u"){var r=new ArrayBuffer(2),i=new Uint8Array(r),s=new Uint16Array(r);if(i[0]=1,i[1]=2,s[0]===258)cr="BE";else if(s[0]===513)cr="LE";else throw new Error("unable to figure out endianess")}return cr}function qs(){return typeof globalThis.location<"u"?globalThis.location.hostname:""}function As(){return []}function Ps(){return 0}function Rs(){return Number.MAX_VALUE}function Is(){return Number.MAX_VALUE}function Cs(){return []}function Ns(){return "Browser"}function js(){return typeof globalThis.navigator<"u"?globalThis.navigator.appVersion:""}function Ms(){}function Ds(){}function rl(){return "javascript"}function tl(){return "browser"}function ut(){return "/tmp"}var cr,ct,lt,Ls,nl=Me({"node-modules-polyfills:os"(){I(),ct=ut,lt=` -`,Ls={EOL:lt,tmpdir:ct,tmpDir:ut,networkInterfaces:Ms,getNetworkInterfaces:Ds,release:js,type:Ns,cpus:Cs,totalmem:Is,freemem:Rs,uptime:Ps,loadavg:As,hostname:qs,endianness:Es};}}),il=C({"node-modules-polyfills-commonjs:os"(r,i){I();var s=(nl(),gt(Ts));if(s&&s.default){i.exports=s.default;for(let l in s)i.exports[l]=s[l];}else s&&(i.exports=s);}}),sl=C({"node_modules/detect-newline/index.js"(r,i){I();var s=l=>{if(typeof l!="string")throw new TypeError("Expected a string");let o=l.match(/(?:\r?\n)/g)||[];if(o.length===0)return;let h=o.filter(p=>p===`\r -`).length,f=o.length-h;return h>f?`\r -`:` -`};i.exports=s,i.exports.graceful=l=>typeof l=="string"&&s(l)||` -`;}}),ol=C({"node_modules/jest-docblock/build/index.js"(r){I(),Object.defineProperty(r,"__esModule",{value:!0}),r.extract=n,r.parse=m,r.parseWithComments=v,r.print=y,r.strip=u;function i(){let d=il();return i=function(){return d},d}function s(){let d=l(sl());return s=function(){return d},d}function l(d){return d&&d.__esModule?d:{default:d}}var o=/\*\/$/,h=/^\/\*\*/,f=/^\s*(\/\*\*?(.|\r?\n)*?\*\/)/,p=/(^|\s+)\/\/([^\r\n]*)/g,g=/^(\r?\n)+/,c=/(?:^|\r?\n) *(@[^\r\n]*?) *\r?\n *(?![^@\r\n]*\/\/[^]*)([^@\r\n\s][^@\r\n]+?) *\r?\n/g,t=/(?:^|\r?\n) *@(\S+) *([^\r\n]*)/g,e=/(\r?\n|^) *\* ?/g,a=[];function n(d){let _=d.match(f);return _?_[0].trimLeft():""}function u(d){let _=d.match(f);return _&&_[0]?d.substring(_[0].length):d}function m(d){return v(d).pragmas}function v(d){let _=(0, s().default)(d)||i().EOL;d=d.replace(h,"").replace(o,"").replace(e,"$1");let O="";for(;O!==d;)O=d,d=d.replace(c,"".concat(_,"$1 $2").concat(_));d=d.replace(g,"").trimRight();let S=Object.create(null),M=d.replace(t,"").replace(g,"").trimRight(),R;for(;R=t.exec(d);){let $=R[2].replace(p,"");typeof S[R[1]]=="string"||Array.isArray(S[R[1]])?S[R[1]]=a.concat(S[R[1]],$):S[R[1]]=$;}return {comments:M,pragmas:S}}function y(d){let{comments:_="",pragmas:O={}}=d,S=(0, s().default)(_)||i().EOL,M="/**",R=" *",$=" */",J=Object.keys(O),X=J.map(K=>w(K,O[K])).reduce((K,W)=>K.concat(W),[]).map(K=>R+" "+K+S).join("");if(!_){if(J.length===0)return "";if(J.length===1&&!Array.isArray(O[J[0]])){let K=O[J[0]];return "".concat(M," ").concat(w(J[0],K)[0]).concat($)}}let F=_.split(S).map(K=>"".concat(R," ").concat(K)).join(S)+S;return M+S+(_?F:"")+(_&&J.length?R+S:"")+X+$}function w(d,_){return a.concat(_).map(O=>"@".concat(d," ").concat(O).trim())}}}),al=C({"src/common/end-of-line.js"(r,i){I();function s(f){let p=f.indexOf("\r");return p>=0?f.charAt(p+1)===` -`?"crlf":"cr":"lf"}function l(f){switch(f){case"cr":return "\r";case"crlf":return `\r -`;default:return ` -`}}function o(f,p){let g;switch(p){case` -`:g=/\n/g;break;case"\r":g=/\r/g;break;case`\r -`:g=/\r\n/g;break;default:throw new Error('Unexpected "eol" '.concat(JSON.stringify(p),"."))}let c=f.match(g);return c?c.length:0}function h(f){return f.replace(/\r\n?/g,` -`)}i.exports={guessEndOfLine:s,convertEndOfLineToChars:l,countEndOfLineChars:o,normalizeEndOfLine:h};}}),ul=C({"src/language-js/utils/get-shebang.js"(r,i){I();function s(l){if(!l.startsWith("#!"))return "";let o=l.indexOf(` -`);return o===-1?l:l.slice(0,o)}i.exports=s;}}),cl=C({"src/language-js/pragma.js"(r,i){I();var{parseWithComments:s,strip:l,extract:o,print:h}=ol(),{normalizeEndOfLine:f}=al(),p=ul();function g(e){let a=p(e);a&&(e=e.slice(a.length+1));let n=o(e),{pragmas:u,comments:m}=s(n);return {shebang:a,text:e,pragmas:u,comments:m}}function c(e){let a=Object.keys(g(e).pragmas);return a.includes("prettier")||a.includes("format")}function t(e){let{shebang:a,text:n,pragmas:u,comments:m}=g(e),v=l(n),y=h({pragmas:Object.assign({format:""},u),comments:m.trimStart()});return (a?"".concat(a,` -`):"")+f(y)+(v.startsWith(` +var Vl=Object.create;var Zr=Object.defineProperty;var Yl=Object.getOwnPropertyDescriptor;var Gl=Object.getOwnPropertyNames;var Kl=Object.getPrototypeOf,Hl=Object.prototype.hasOwnProperty;var y=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Os=(t,e)=>{for(var n in e)Zr(t,n,{get:e[n],enumerable:!0});},Ql=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Gl(e))!Hl.call(t,s)&&s!==n&&Zr(t,s,{get:()=>e[s],enumerable:!(r=Yl(e,s))||r.enumerable});return t};var ue=(t,e,n)=>(n=t!=null?Vl(Kl(t)):{},Ql(e||!t||!t.__esModule?Zr(n,"default",{value:t,enumerable:!0}):n,t));var Qs=y(pe=>{Object.defineProperty(pe,"__esModule",{value:!0});pe.extract=gc;pe.parse=vc;pe.parseWithComments=Hs;pe.print=xc;pe.strip=wc;var pc=/\*\/$/,hc=/^\/\*\*?/,Gs=/^\s*(\/\*\*?(.|\r?\n)*?\*\/)/,dc=/(^|\s+)\/\/([^\r\n]*)/g,zs=/^(\r?\n)+/,mc=/(?:^|\r?\n) *(@[^\r\n]*?) *\r?\n *(?![^@\r\n]*\/\/[^]*)([^@\r\n\s][^@\r\n]+?) *\r?\n/g,Vs=/(?:^|\r?\n) *@(\S+) *([^\r\n]*)/g,yc=/(\r?\n|^) *\* ?/g,Ks=[];function gc(t){let e=t.match(Gs);return e?e[0].trimLeft():""}function wc(t){let e=t.match(Gs);return e&&e[0]?t.substring(e[0].length):t}function vc(t){return Hs(t).pragmas}function Hs(t){let e=` +`;t=t.replace(hc,"").replace(pc,"").replace(yc,"$1");let n="";for(;n!==t;)n=t,t=t.replace(mc,`${e}$1 $2${e}`);t=t.replace(zs,"").trimRight();let r=Object.create(null),s=t.replace(Vs,"").replace(zs,"").trimRight(),i;for(;i=Vs.exec(t);){let o=i[2].replace(dc,"");typeof r[i[1]]=="string"||Array.isArray(r[i[1]])?r[i[1]]=Ks.concat(r[i[1]],o):r[i[1]]=o;}return {comments:s,pragmas:r}}function xc({comments:t="",pragmas:e={}}){let n=` +`,r="/**",s=" *",i=" */",o=Object.keys(e),a=o.map(c=>Ys(c,e[c])).reduce((c,f)=>c.concat(f),[]).map(c=>`${s} ${c}${n}`).join("");if(!t){if(o.length===0)return "";if(o.length===1&&!Array.isArray(e[o[0]])){let c=e[o[0]];return `${r} ${Ys(o[0],c)[0]}${i}`}}let u=t.split(n).map(c=>`${s} ${c}`).join(n)+n;return r+n+(t?u:"")+(t&&o.length?s+n:"")+a+i}function Ys(t,e){return Ks.concat(e).map(n=>`@${t} ${n}`.trim())}});var zt=y((dx,gn)=>{gn.exports.isClean=Symbol("isClean");gn.exports.my=Symbol("my");});var Ui=y((mx,wn)=>{var E=String,$i=function(){return {isColorSupported:!1,reset:E,bold:E,dim:E,italic:E,underline:E,inverse:E,hidden:E,strikethrough:E,black:E,red:E,green:E,yellow:E,blue:E,magenta:E,cyan:E,white:E,gray:E,bgBlack:E,bgRed:E,bgGreen:E,bgYellow:E,bgBlue:E,bgMagenta:E,bgCyan:E,bgWhite:E}};wn.exports=$i();wn.exports.createColors=$i;});var vn=y(()=>{});var Vt=y((wx,Vi)=>{var Wi=Ui(),zi=vn(),st=class t extends Error{constructor(e,n,r,s,i,o){super(e),this.name="CssSyntaxError",this.reason=e,i&&(this.file=i),s&&(this.source=s),o&&(this.plugin=o),typeof n<"u"&&typeof r<"u"&&(typeof n=="number"?(this.line=n,this.column=r):(this.line=n.line,this.column=n.column,this.endLine=r.line,this.endColumn=r.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,t);}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"<css input>",typeof this.line<"u"&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason;}showSourceCode(e){if(!this.source)return "";let n=this.source;e==null&&(e=Wi.isColorSupported),zi&&e&&(n=zi(n));let r=n.split(/\r?\n/),s=Math.max(this.line-3,0),i=Math.min(this.line+2,r.length),o=String(i).length,a,u;if(e){let{bold:c,gray:f,red:p}=Wi.createColors(!0);a=l=>c(p(l)),u=l=>f(l);}else a=u=c=>c;return r.slice(s,i).map((c,f)=>{let p=s+1+f,l=" "+(" "+p).slice(-o)+" | ";if(p===this.line){let g=u(l.replace(/\d/g," "))+c.slice(0,this.column-1).replace(/[^\t]/g," ");return a(">")+u(l)+c+` + `+g+a("^")}return " "+u(l)+c}).join(` +`)}toString(){let e=this.showSourceCode();return e&&(e=` + +`+e+` +`),this.name+": "+this.message+e}};Vi.exports=st;st.default=st;});var Yt=y((vx,Gi)=>{var Yi={after:` +`,beforeClose:` +`,beforeComment:` +`,beforeDecl:` +`,beforeOpen:" ",beforeRule:` +`,colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};function Qc(t){return t[0].toUpperCase()+t.slice(1)}var it=class{constructor(e){this.builder=e;}atrule(e,n){let r="@"+e.name,s=e.params?this.rawValue(e,"params"):"";if(typeof e.raws.afterName<"u"?r+=e.raws.afterName:s&&(r+=" "),e.nodes)this.block(e,r+s);else {let i=(e.raws.between||"")+(n?";":"");this.builder(r+s+i,e);}}beforeAfter(e,n){let r;e.type==="decl"?r=this.raw(e,null,"beforeDecl"):e.type==="comment"?r=this.raw(e,null,"beforeComment"):n==="before"?r=this.raw(e,null,"beforeRule"):r=this.raw(e,null,"beforeClose");let s=e.parent,i=0;for(;s&&s.type!=="root";)i+=1,s=s.parent;if(r.includes(` +`)){let o=this.raw(e,null,"indent");if(o.length)for(let a=0;a<i;a++)r+=o;}return r}block(e,n){let r=this.raw(e,"between","beforeOpen");this.builder(n+r+"{",e,"start");let s;e.nodes&&e.nodes.length?(this.body(e),s=this.raw(e,"after")):s=this.raw(e,"after","emptyBody"),s&&this.builder(s),this.builder("}",e,"end");}body(e){let n=e.nodes.length-1;for(;n>0&&e.nodes[n].type==="comment";)n-=1;let r=this.raw(e,"semicolon");for(let s=0;s<e.nodes.length;s++){let i=e.nodes[s],o=this.raw(i,"before");o&&this.builder(o),this.stringify(i,n!==s||r);}}comment(e){let n=this.raw(e,"left","commentLeft"),r=this.raw(e,"right","commentRight");this.builder("/*"+n+e.text+r+"*/",e);}decl(e,n){let r=this.raw(e,"between","colon"),s=e.prop+r+this.rawValue(e,"value");e.important&&(s+=e.raws.important||" !important"),n&&(s+=";"),this.builder(s,e);}document(e){this.body(e);}raw(e,n,r){let s;if(r||(r=n),n&&(s=e.raws[n],typeof s<"u"))return s;let i=e.parent;if(r==="before"&&(!i||i.type==="root"&&i.first===e||i&&i.type==="document"))return "";if(!i)return Yi[r];let o=e.root();if(o.rawCache||(o.rawCache={}),typeof o.rawCache[r]<"u")return o.rawCache[r];if(r==="before"||r==="after")return this.beforeAfter(e,r);{let a="raw"+Qc(r);this[a]?s=this[a](o,e):o.walk(u=>{if(s=u.raws[n],typeof s<"u")return !1});}return typeof s>"u"&&(s=Yi[r]),o.rawCache[r]=s,s}rawBeforeClose(e){let n;return e.walk(r=>{if(r.nodes&&r.nodes.length>0&&typeof r.raws.after<"u")return n=r.raws.after,n.includes(` +`)&&(n=n.replace(/[^\n]+$/,"")),!1}),n&&(n=n.replace(/\S/g,"")),n}rawBeforeComment(e,n){let r;return e.walkComments(s=>{if(typeof s.raws.before<"u")return r=s.raws.before,r.includes(` +`)&&(r=r.replace(/[^\n]+$/,"")),!1}),typeof r>"u"?r=this.raw(n,null,"beforeDecl"):r&&(r=r.replace(/\S/g,"")),r}rawBeforeDecl(e,n){let r;return e.walkDecls(s=>{if(typeof s.raws.before<"u")return r=s.raws.before,r.includes(` +`)&&(r=r.replace(/[^\n]+$/,"")),!1}),typeof r>"u"?r=this.raw(n,null,"beforeRule"):r&&(r=r.replace(/\S/g,"")),r}rawBeforeOpen(e){let n;return e.walk(r=>{if(r.type!=="decl"&&(n=r.raws.between,typeof n<"u"))return !1}),n}rawBeforeRule(e){let n;return e.walk(r=>{if(r.nodes&&(r.parent!==e||e.first!==r)&&typeof r.raws.before<"u")return n=r.raws.before,n.includes(` +`)&&(n=n.replace(/[^\n]+$/,"")),!1}),n&&(n=n.replace(/\S/g,"")),n}rawColon(e){let n;return e.walkDecls(r=>{if(typeof r.raws.between<"u")return n=r.raws.between.replace(/[^\s:]/g,""),!1}),n}rawEmptyBody(e){let n;return e.walk(r=>{if(r.nodes&&r.nodes.length===0&&(n=r.raws.after,typeof n<"u"))return !1}),n}rawIndent(e){if(e.raws.indent)return e.raws.indent;let n;return e.walk(r=>{let s=r.parent;if(s&&s!==e&&s.parent&&s.parent===e&&typeof r.raws.before<"u"){let i=r.raws.before.split(` +`);return n=i[i.length-1],n=n.replace(/\S/g,""),!1}}),n}rawSemicolon(e){let n;return e.walk(r=>{if(r.nodes&&r.nodes.length&&r.last.type==="decl"&&(n=r.raws.semicolon,typeof n<"u"))return !1}),n}rawValue(e,n){let r=e[n],s=e.raws[n];return s&&s.value===r?s.raw:r}root(e){this.body(e),e.raws.after&&this.builder(e.raws.after);}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end");}stringify(e,n){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,n);}};Gi.exports=it;it.default=it;});var ot=y((xx,Ki)=>{var jc=Yt();function xn(t,e){new jc(e).stringify(t);}Ki.exports=xn;xn.default=xn;});var ut=y((bx,Hi)=>{var{isClean:Gt,my:Jc}=zt(),Xc=Vt(),Zc=Yt(),ef=ot();function bn(t,e){let n=new t.constructor;for(let r in t){if(!Object.prototype.hasOwnProperty.call(t,r)||r==="proxyCache")continue;let s=t[r],i=typeof s;r==="parent"&&i==="object"?e&&(n[r]=e):r==="source"?n[r]=s:Array.isArray(s)?n[r]=s.map(o=>bn(o,n)):(i==="object"&&s!==null&&(s=bn(s)),n[r]=s);}return n}var at=class{constructor(e={}){this.raws={},this[Gt]=!1,this[Jc]=!0;for(let n in e)if(n==="nodes"){this.nodes=[];for(let r of e[n])typeof r.clone=="function"?this.append(r.clone()):this.append(r);}else this[n]=e[n];}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){let n=this.source;e.stack=e.stack.replace(/\n\s{4}at /,`$&${n.input.from}:${n.start.line}:${n.start.column}$&`);}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let n in e)this[n]=e[n];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between;}clone(e={}){let n=bn(this);for(let r in e)n[r]=e[r];return n}cloneAfter(e={}){let n=this.clone(e);return this.parent.insertAfter(this,n),n}cloneBefore(e={}){let n=this.clone(e);return this.parent.insertBefore(this,n),n}error(e,n={}){if(this.source){let{end:r,start:s}=this.rangeBy(n);return this.source.input.error(e,{column:s.column,line:s.line},{column:r.column,line:r.line},n)}return new Xc(e)}getProxyProcessor(){return {get(e,n){return n==="proxyOf"?e:n==="root"?()=>e.root().toProxy():e[n]},set(e,n,r){return e[n]===r||(e[n]=r,(n==="prop"||n==="value"||n==="name"||n==="params"||n==="important"||n==="text")&&e.markDirty()),!0}}}markDirty(){if(this[Gt]){this[Gt]=!1;let e=this;for(;e=e.parent;)e[Gt]=!1;}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e,n){let r=this.source.start;if(e.index)r=this.positionInside(e.index,n);else if(e.word){n=this.toString();let s=n.indexOf(e.word);s!==-1&&(r=this.positionInside(s,n));}return r}positionInside(e,n){let r=n||this.toString(),s=this.source.start.column,i=this.source.start.line;for(let o=0;o<e;o++)r[o]===` +`?(s=1,i+=1):s+=1;return {column:s,line:i}}prev(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e-1]}get proxyOf(){return this}rangeBy(e){let n={column:this.source.start.column,line:this.source.start.line},r=this.source.end?{column:this.source.end.column+1,line:this.source.end.line}:{column:n.column+1,line:n.line};if(e.word){let s=this.toString(),i=s.indexOf(e.word);i!==-1&&(n=this.positionInside(i,s),r=this.positionInside(i+e.word.length,s));}else e.start?n={column:e.start.column,line:e.start.line}:e.index&&(n=this.positionInside(e.index)),e.end?r={column:e.end.column,line:e.end.line}:e.endIndex?r=this.positionInside(e.endIndex):e.index&&(r=this.positionInside(e.index+1));return (r.line<n.line||r.line===n.line&&r.column<=n.column)&&(r={column:n.column+1,line:n.line}),{end:r,start:n}}raw(e,n){return new Zc().raw(this,e,n)}remove(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this}replaceWith(...e){if(this.parent){let n=this,r=!1;for(let s of e)s===this?r=!0:r?(this.parent.insertAfter(n,s),n=s):this.parent.insertBefore(n,s);r||this.remove();}return this}root(){let e=this;for(;e.parent&&e.parent.type!=="document";)e=e.parent;return e}toJSON(e,n){let r={},s=n==null;n=n||new Map;let i=0;for(let o in this){if(!Object.prototype.hasOwnProperty.call(this,o)||o==="parent"||o==="proxyCache")continue;let a=this[o];if(Array.isArray(a))r[o]=a.map(u=>typeof u=="object"&&u.toJSON?u.toJSON(null,n):u);else if(typeof a=="object"&&a.toJSON)r[o]=a.toJSON(null,n);else if(o==="source"){let u=n.get(a.input);u==null&&(u=i,n.set(a.input,i),i++),r[o]={end:a.end,inputId:u,start:a.start};}else r[o]=a;}return s&&(r.inputs=[...n.keys()].map(o=>o.toJSON())),r}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(e=ef){e.stringify&&(e=e.stringify);let n="";return e(this,r=>{n+=r;}),n}warn(e,n,r){let s={node:this};for(let i in r)s[i]=r[i];return e.warn(n,s)}};Hi.exports=at;at.default=at;});var ct=y((kx,Qi)=>{var tf=ut(),lt=class extends tf{constructor(e){e&&typeof e.value<"u"&&typeof e.value!="string"&&(e={...e,value:String(e.value)}),super(e),this.type="decl";}get variable(){return this.prop.startsWith("--")||this.prop[0]==="$"}};Qi.exports=lt;lt.default=lt;});var Ae=y((_x,ji)=>{var rf=ut(),ft=class extends rf{constructor(e){super(e),this.type="comment";}};ji.exports=ft;ft.default=ft;});var se=y((Tx,io)=>{var{isClean:Ji,my:Xi}=zt(),Zi=ct(),eo=Ae(),nf=ut(),to,kn,_n,ro;function no(t){return t.map(e=>(e.nodes&&(e.nodes=no(e.nodes)),delete e.source,e))}function so(t){if(t[Ji]=!1,t.proxyOf.nodes)for(let e of t.proxyOf.nodes)so(e);}var z=class t extends nf{append(...e){for(let n of e){let r=this.normalize(n,this.last);for(let s of r)this.proxyOf.nodes.push(s);}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let n of this.nodes)n.cleanRaws(e);}each(e){if(!this.proxyOf.nodes)return;let n=this.getIterator(),r,s;for(;this.indexes[n]<this.proxyOf.nodes.length&&(r=this.indexes[n],s=e(this.proxyOf.nodes[r],r),s!==!1);)this.indexes[n]+=1;return delete this.indexes[n],s}every(e){return this.nodes.every(e)}get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}getIterator(){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach+=1;let e=this.lastEach;return this.indexes[e]=0,e}getProxyProcessor(){return {get(e,n){return n==="proxyOf"?e:e[n]?n==="each"||typeof n=="string"&&n.startsWith("walk")?(...r)=>e[n](...r.map(s=>typeof s=="function"?(i,o)=>s(i.toProxy(),o):s)):n==="every"||n==="some"?r=>e[n]((s,...i)=>r(s.toProxy(),...i)):n==="root"?()=>e.root().toProxy():n==="nodes"?e.nodes.map(r=>r.toProxy()):n==="first"||n==="last"?e[n].toProxy():e[n]:e[n]},set(e,n,r){return e[n]===r||(e[n]=r,(n==="name"||n==="params"||n==="selector")&&e.markDirty()),!0}}}index(e){return typeof e=="number"?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,n){let r=this.index(e),s=this.normalize(n,this.proxyOf.nodes[r]).reverse();r=this.index(e);for(let o of s)this.proxyOf.nodes.splice(r+1,0,o);let i;for(let o in this.indexes)i=this.indexes[o],r<i&&(this.indexes[o]=i+s.length);return this.markDirty(),this}insertBefore(e,n){let r=this.index(e),s=r===0?"prepend":!1,i=this.normalize(n,this.proxyOf.nodes[r],s).reverse();r=this.index(e);for(let a of i)this.proxyOf.nodes.splice(r,0,a);let o;for(let a in this.indexes)o=this.indexes[a],r<=o&&(this.indexes[a]=o+i.length);return this.markDirty(),this}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}normalize(e,n){if(typeof e=="string")e=no(to(e).nodes);else if(Array.isArray(e)){e=e.slice(0);for(let s of e)s.parent&&s.parent.removeChild(s,"ignore");}else if(e.type==="root"&&this.type!=="document"){e=e.nodes.slice(0);for(let s of e)s.parent&&s.parent.removeChild(s,"ignore");}else if(e.type)e=[e];else if(e.prop){if(typeof e.value>"u")throw new Error("Value field is missed in node creation");typeof e.value!="string"&&(e.value=String(e.value)),e=[new Zi(e)];}else if(e.selector)e=[new kn(e)];else if(e.name)e=[new _n(e)];else if(e.text)e=[new eo(e)];else throw new Error("Unknown node type in node creation");return e.map(s=>(s[Xi]||t.rebuild(s),s=s.proxyOf,s.parent&&s.parent.removeChild(s),s[Ji]&&so(s),typeof s.raws.before>"u"&&n&&typeof n.raws.before<"u"&&(s.raws.before=n.raws.before.replace(/\S/g,"")),s.parent=this.proxyOf,s))}prepend(...e){e=e.reverse();for(let n of e){let r=this.normalize(n,this.first,"prepend").reverse();for(let s of r)this.proxyOf.nodes.unshift(s);for(let s in this.indexes)this.indexes[s]=this.indexes[s]+r.length;}return this.markDirty(),this}push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);let n;for(let r in this.indexes)n=this.indexes[r],n>=e&&(this.indexes[r]=n-1);return this.markDirty(),this}replaceValues(e,n,r){return r||(r=n,n={}),this.walkDecls(s=>{n.props&&!n.props.includes(s.prop)||n.fast&&!s.value.includes(n.fast)||(s.value=s.value.replace(e,r));}),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each((n,r)=>{let s;try{s=e(n,r);}catch(i){throw n.addToError(i)}return s!==!1&&n.walk&&(s=n.walk(e)),s})}walkAtRules(e,n){return n?e instanceof RegExp?this.walk((r,s)=>{if(r.type==="atrule"&&e.test(r.name))return n(r,s)}):this.walk((r,s)=>{if(r.type==="atrule"&&r.name===e)return n(r,s)}):(n=e,this.walk((r,s)=>{if(r.type==="atrule")return n(r,s)}))}walkComments(e){return this.walk((n,r)=>{if(n.type==="comment")return e(n,r)})}walkDecls(e,n){return n?e instanceof RegExp?this.walk((r,s)=>{if(r.type==="decl"&&e.test(r.prop))return n(r,s)}):this.walk((r,s)=>{if(r.type==="decl"&&r.prop===e)return n(r,s)}):(n=e,this.walk((r,s)=>{if(r.type==="decl")return n(r,s)}))}walkRules(e,n){return n?e instanceof RegExp?this.walk((r,s)=>{if(r.type==="rule"&&e.test(r.selector))return n(r,s)}):this.walk((r,s)=>{if(r.type==="rule"&&r.selector===e)return n(r,s)}):(n=e,this.walk((r,s)=>{if(r.type==="rule")return n(r,s)}))}};z.registerParse=t=>{to=t;};z.registerRule=t=>{kn=t;};z.registerAtRule=t=>{_n=t;};z.registerRoot=t=>{ro=t;};io.exports=z;z.default=z;z.rebuild=t=>{t.type==="atrule"?Object.setPrototypeOf(t,_n.prototype):t.type==="rule"?Object.setPrototypeOf(t,kn.prototype):t.type==="decl"?Object.setPrototypeOf(t,Zi.prototype):t.type==="comment"?Object.setPrototypeOf(t,eo.prototype):t.type==="root"&&Object.setPrototypeOf(t,ro.prototype),t[Xi]=!0,t.nodes&&t.nodes.forEach(e=>{z.rebuild(e);});};});var er=y((Ex,lo)=>{var Tn="'".charCodeAt(0),oo='"'.charCodeAt(0),Kt="\\".charCodeAt(0),ao="/".charCodeAt(0),Ht=` +`.charCodeAt(0),pt=" ".charCodeAt(0),Qt="\f".charCodeAt(0),jt=" ".charCodeAt(0),Jt="\r".charCodeAt(0),sf="[".charCodeAt(0),of="]".charCodeAt(0),af="(".charCodeAt(0),uf=")".charCodeAt(0),lf="{".charCodeAt(0),cf="}".charCodeAt(0),ff=";".charCodeAt(0),pf="*".charCodeAt(0),hf=":".charCodeAt(0),df="@".charCodeAt(0),Xt=/[\t\n\f\r "#'()/;[\\\]{}]/g,Zt=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,mf=/.[\n"'(/\\]/,uo=/[\da-f]/i;lo.exports=function(e,n={}){let r=e.css.valueOf(),s=n.ignoreErrors,i,o,a,u,c,f,p,l,g,x,h=r.length,d=0,m=[],b=[];function w(){return d}function v(U){throw e.error("Unclosed "+U,d)}function N(){return b.length===0&&d>=h}function $(U){if(b.length)return b.pop();if(d>=h)return;let S=U?U.ignoreUnclosed:!1;switch(i=r.charCodeAt(d),i){case Ht:case pt:case jt:case Jt:case Qt:{o=d;do o+=1,i=r.charCodeAt(o);while(i===pt||i===Ht||i===jt||i===Jt||i===Qt);x=["space",r.slice(d,o)],d=o-1;break}case sf:case of:case lf:case cf:case hf:case ff:case uf:{let C=String.fromCharCode(i);x=[C,C,d];break}case af:{if(l=m.length?m.pop()[1]:"",g=r.charCodeAt(d+1),l==="url"&&g!==Tn&&g!==oo&&g!==pt&&g!==Ht&&g!==jt&&g!==Qt&&g!==Jt){o=d;do{if(f=!1,o=r.indexOf(")",o+1),o===-1)if(s||S){o=d;break}else v("bracket");for(p=o;r.charCodeAt(p-1)===Kt;)p-=1,f=!f;}while(f);x=["brackets",r.slice(d,o+1),d,o],d=o;}else o=r.indexOf(")",d+1),u=r.slice(d,o+1),o===-1||mf.test(u)?x=["(","(",d]:(x=["brackets",u,d,o],d=o);break}case Tn:case oo:{a=i===Tn?"'":'"',o=d;do{if(f=!1,o=r.indexOf(a,o+1),o===-1)if(s||S){o=d+1;break}else v("string");for(p=o;r.charCodeAt(p-1)===Kt;)p-=1,f=!f;}while(f);x=["string",r.slice(d,o+1),d,o],d=o;break}case df:{Xt.lastIndex=d+1,Xt.test(r),Xt.lastIndex===0?o=r.length-1:o=Xt.lastIndex-2,x=["at-word",r.slice(d,o+1),d,o],d=o;break}case Kt:{for(o=d,c=!0;r.charCodeAt(o+1)===Kt;)o+=1,c=!c;if(i=r.charCodeAt(o+1),c&&i!==ao&&i!==pt&&i!==Ht&&i!==jt&&i!==Jt&&i!==Qt&&(o+=1,uo.test(r.charAt(o)))){for(;uo.test(r.charAt(o+1));)o+=1;r.charCodeAt(o+1)===pt&&(o+=1);}x=["word",r.slice(d,o+1),d,o],d=o;break}default:{i===ao&&r.charCodeAt(d+1)===pf?(o=r.indexOf("*/",d+2)+1,o===0&&(s||S?o=r.length:v("comment")),x=["comment",r.slice(d,o+1),d,o],d=o):(Zt.lastIndex=d+1,Zt.test(r),Zt.lastIndex===0?o=r.length-1:o=Zt.lastIndex-2,x=["word",r.slice(d,o+1),d,o],m.push(x),d=o);break}}return d++,x}function H(U){b.push(U);}return {back:H,endOfFile:N,nextToken:$,position:w}};});var tr=y((Sx,fo)=>{var co=se(),Ne=class extends co{constructor(e){super(e),this.type="atrule";}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};fo.exports=Ne;Ne.default=Ne;co.registerAtRule(Ne);});var Pe=y((Cx,yo)=>{var po=se(),ho,mo,ie=class extends po{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[]);}normalize(e,n,r){let s=super.normalize(e);if(n){if(r==="prepend")this.nodes.length>1?n.raws.before=this.nodes[1].raws.before:delete n.raws.before;else if(this.first!==n)for(let i of s)i.raws.before=n.raws.before;}return s}removeChild(e,n){let r=this.index(e);return !n&&r===0&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[r].raws.before),super.removeChild(e)}toResult(e={}){return new ho(new mo,this,e).stringify()}};ie.registerLazyResult=t=>{ho=t;};ie.registerProcessor=t=>{mo=t;};yo.exports=ie;ie.default=ie;po.registerRoot(ie);});var En=y((Ox,go)=>{var ht={comma(t){return ht.split(t,[","],!0)},space(t){let e=[" ",` +`," "];return ht.split(t,e)},split(t,e,n){let r=[],s="",i=!1,o=0,a=!1,u="",c=!1;for(let f of t)c?c=!1:f==="\\"?c=!0:a?f===u&&(a=!1):f==='"'||f==="'"?(a=!0,u=f):f==="("?o+=1:f===")"?o>0&&(o-=1):o===0&&e.includes(f)&&(i=!0),i?(s!==""&&r.push(s.trim()),s="",i=!1):s+=f;return (n||s!=="")&&r.push(s.trim()),r}};go.exports=ht;ht.default=ht;});var rr=y((Ax,vo)=>{var wo=se(),yf=En(),Re=class extends wo{constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[]);}get selectors(){return yf.comma(this.selector)}set selectors(e){let n=this.selector?this.selector.match(/,\s*/):null,r=n?n[0]:","+this.raw("between","beforeOpen");this.selector=e.join(r);}};vo.exports=Re;Re.default=Re;wo.registerRule(Re);});var nr=y((Nx,ko)=>{var gf=ct(),wf=er(),vf=Ae(),xf=tr(),bf=Pe(),xo=rr(),bo={empty:!0,space:!0};function kf(t){for(let e=t.length-1;e>=0;e--){let n=t[e],r=n[3]||n[2];if(r)return r}}var Sn=class{constructor(e){this.input=e,this.root=new bf,this.current=this.root,this.spaces="",this.semicolon=!1,this.customProperty=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}};}atrule(e){let n=new xf;n.name=e[1].slice(1),n.name===""&&this.unnamedAtrule(n,e),this.init(n,e[2]);let r,s,i,o=!1,a=!1,u=[],c=[];for(;!this.tokenizer.endOfFile();){if(e=this.tokenizer.nextToken(),r=e[0],r==="("||r==="["?c.push(r==="("?")":"]"):r==="{"&&c.length>0?c.push("}"):r===c[c.length-1]&&c.pop(),c.length===0)if(r===";"){n.source.end=this.getPosition(e[2]),this.semicolon=!0;break}else if(r==="{"){a=!0;break}else if(r==="}"){if(u.length>0){for(i=u.length-1,s=u[i];s&&s[0]==="space";)s=u[--i];s&&(n.source.end=this.getPosition(s[3]||s[2]));}this.end(e);break}else u.push(e);else u.push(e);if(this.tokenizer.endOfFile()){o=!0;break}}n.raws.between=this.spacesAndCommentsFromEnd(u),u.length?(n.raws.afterName=this.spacesAndCommentsFromStart(u),this.raw(n,"params",u),o&&(e=u[u.length-1],n.source.end=this.getPosition(e[3]||e[2]),this.spaces=n.raws.between,n.raws.between="")):(n.raws.afterName="",n.params=""),a&&(n.nodes=[],this.current=n);}checkMissedSemicolon(e){let n=this.colon(e);if(n===!1)return;let r=0,s;for(let i=n-1;i>=0&&(s=e[i],!(s[0]!=="space"&&(r+=1,r===2)));i--);throw this.input.error("Missed semicolon",s[0]==="word"?s[3]+1:s[2])}colon(e){let n=0,r,s,i;for(let[o,a]of e.entries()){if(r=a,s=r[0],s==="("&&(n+=1),s===")"&&(n-=1),n===0&&s===":")if(!i)this.doubleColon(r);else {if(i[0]==="word"&&i[1]==="progid")continue;return o}i=r;}return !1}comment(e){let n=new vf;this.init(n,e[2]),n.source.end=this.getPosition(e[3]||e[2]);let r=e[1].slice(2,-2);if(/^\s*$/.test(r))n.text="",n.raws.left=r,n.raws.right="";else {let s=r.match(/^(\s*)([^]*\S)(\s*)$/);n.text=s[2],n.raws.left=s[1],n.raws.right=s[3];}}createTokenizer(){this.tokenizer=wf(this.input);}decl(e,n){let r=new gf;this.init(r,e[0][2]);let s=e[e.length-1];for(s[0]===";"&&(this.semicolon=!0,e.pop()),r.source.end=this.getPosition(s[3]||s[2]||kf(e));e[0][0]!=="word";)e.length===1&&this.unknownWord(e),r.raws.before+=e.shift()[1];for(r.source.start=this.getPosition(e[0][2]),r.prop="";e.length;){let c=e[0][0];if(c===":"||c==="space"||c==="comment")break;r.prop+=e.shift()[1];}r.raws.between="";let i;for(;e.length;)if(i=e.shift(),i[0]===":"){r.raws.between+=i[1];break}else i[0]==="word"&&/\w/.test(i[1])&&this.unknownWord([i]),r.raws.between+=i[1];(r.prop[0]==="_"||r.prop[0]==="*")&&(r.raws.before+=r.prop[0],r.prop=r.prop.slice(1));let o=[],a;for(;e.length&&(a=e[0][0],!(a!=="space"&&a!=="comment"));)o.push(e.shift());this.precheckMissedSemicolon(e);for(let c=e.length-1;c>=0;c--){if(i=e[c],i[1].toLowerCase()==="!important"){r.important=!0;let f=this.stringFrom(e,c);f=this.spacesFromEnd(e)+f,f!==" !important"&&(r.raws.important=f);break}else if(i[1].toLowerCase()==="important"){let f=e.slice(0),p="";for(let l=c;l>0;l--){let g=f[l][0];if(p.trim().indexOf("!")===0&&g!=="space")break;p=f.pop()[1]+p;}p.trim().indexOf("!")===0&&(r.important=!0,r.raws.important=p,e=f);}if(i[0]!=="space"&&i[0]!=="comment")break}e.some(c=>c[0]!=="space"&&c[0]!=="comment")&&(r.raws.between+=o.map(c=>c[1]).join(""),o=[]),this.raw(r,"value",o.concat(e),n),r.value.includes(":")&&!n&&this.checkMissedSemicolon(e);}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let n=new xo;this.init(n,e[2]),n.selector="",n.raws.between="",this.current=n;}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current=this.current.parent):this.unexpectedClose(e);}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position());}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let n=this.current.nodes[this.current.nodes.length-1];n&&n.type==="rule"&&!n.raws.ownSemicolon&&(n.raws.ownSemicolon=this.spaces,this.spaces="");}}getPosition(e){let n=this.input.fromOffset(e);return {column:n.col,line:n.line,offset:e}}init(e,n){this.current.push(e),e.source={input:this.input,start:this.getPosition(n)},e.raws.before=this.spaces,this.spaces="",e.type!=="comment"&&(this.semicolon=!1);}other(e){let n=!1,r=null,s=!1,i=null,o=[],a=e[1].startsWith("--"),u=[],c=e;for(;c;){if(r=c[0],u.push(c),r==="("||r==="[")i||(i=c),o.push(r==="("?")":"]");else if(a&&s&&r==="{")i||(i=c),o.push("}");else if(o.length===0)if(r===";")if(s){this.decl(u,a);return}else break;else if(r==="{"){this.rule(u);return}else if(r==="}"){this.tokenizer.back(u.pop()),n=!0;break}else r===":"&&(s=!0);else r===o[o.length-1]&&(o.pop(),o.length===0&&(i=null));c=this.tokenizer.nextToken();}if(this.tokenizer.endOfFile()&&(n=!0),o.length>0&&this.unclosedBracket(i),n&&s){if(!a)for(;u.length&&(c=u[u.length-1][0],!(c!=="space"&&c!=="comment"));)this.tokenizer.back(u.pop());this.decl(u,a);}else this.unknownWord(u);}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e);break}this.endFile();}precheckMissedSemicolon(){}raw(e,n,r,s){let i,o,a=r.length,u="",c=!0,f,p;for(let l=0;l<a;l+=1)i=r[l],o=i[0],o==="space"&&l===a-1&&!s?c=!1:o==="comment"?(p=r[l-1]?r[l-1][0]:"empty",f=r[l+1]?r[l+1][0]:"empty",!bo[p]&&!bo[f]?u.slice(-1)===","?c=!1:u+=i[1]:c=!1):u+=i[1];if(!c){let l=r.reduce((g,x)=>g+x[1],"");e.raws[n]={raw:l,value:u};}e[n]=u;}rule(e){e.pop();let n=new xo;this.init(n,e[0][2]),n.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(n,"selector",e),this.current=n;}spacesAndCommentsFromEnd(e){let n,r="";for(;e.length&&(n=e[e.length-1][0],!(n!=="space"&&n!=="comment"));)r=e.pop()[1]+r;return r}spacesAndCommentsFromStart(e){let n,r="";for(;e.length&&(n=e[0][0],!(n!=="space"&&n!=="comment"));)r+=e.shift()[1];return r}spacesFromEnd(e){let n,r="";for(;e.length&&(n=e[e.length-1][0],n==="space");)r=e.pop()[1]+r;return r}stringFrom(e,n){let r="";for(let s=n;s<e.length;s++)r+=e[s][1];return e.splice(n,e.length-n),r}unclosedBlock(){let e=this.current.source.start;throw this.input.error("Unclosed block",e.line,e.column)}unclosedBracket(e){throw this.input.error("Unclosed bracket",{offset:e[2]},{offset:e[2]+1})}unexpectedClose(e){throw this.input.error("Unexpected }",{offset:e[2]},{offset:e[2]+1})}unknownWord(e){throw this.input.error("Unknown word",{offset:e[0][2]},{offset:e[0][2]+e[0][1].length})}unnamedAtrule(e,n){throw this.input.error("At-rule without name",{offset:n[2]},{offset:n[2]+n[1].length})}};ko.exports=Sn;});var _o=y(()=>{});var Eo=y((Ix,To)=>{var _f="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",Tf=(t,e=21)=>(n=e)=>{let r="",s=n;for(;s--;)r+=t[Math.random()*t.length|0];return r},Ef=(t=21)=>{let e="",n=t;for(;n--;)e+=_f[Math.random()*64|0];return e};To.exports={nanoid:Ef,customAlphabet:Tf};});var Cn=y((qx,So)=>{So.exports=class{};});var qe=y((Lx,No)=>{var{SourceMapConsumer:Sf,SourceMapGenerator:Cf}=_o(),{fileURLToPath:Co,pathToFileURL:sr}={},{isAbsolute:Nn,resolve:Pn}={},{nanoid:Of}=Eo(),On=vn(),Oo=Vt(),Af=Cn(),An=Symbol("fromOffsetCache"),Nf=!!(Sf&&Cf),Ao=!!(Pn&&Nn),Ie=class{constructor(e,n={}){if(e===null||typeof e>"u"||typeof e=="object"&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),this.css[0]==="\uFEFF"||this.css[0]==="\uFFFE"?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,n.from&&(!Ao||/^\w+:\/\//.test(n.from)||Nn(n.from)?this.file=n.from:this.file=Pn(n.from)),Ao&&Nf){let r=new Af(this.css,n);if(r.text){this.map=r;let s=r.consumer().file;!this.file&&s&&(this.file=this.mapResolve(s));}}this.file||(this.id="<input css "+Of(6)+">"),this.map&&(this.map.file=this.from);}error(e,n,r,s={}){let i,o,a;if(n&&typeof n=="object"){let c=n,f=r;if(typeof c.offset=="number"){let p=this.fromOffset(c.offset);n=p.line,r=p.col;}else n=c.line,r=c.column;if(typeof f.offset=="number"){let p=this.fromOffset(f.offset);o=p.line,a=p.col;}else o=f.line,a=f.column;}else if(!r){let c=this.fromOffset(n);n=c.line,r=c.col;}let u=this.origin(n,r,o,a);return u?i=new Oo(e,u.endLine===void 0?u.line:{column:u.column,line:u.line},u.endLine===void 0?u.column:{column:u.endColumn,line:u.endLine},u.source,u.file,s.plugin):i=new Oo(e,o===void 0?n:{column:r,line:n},o===void 0?r:{column:a,line:o},this.css,this.file,s.plugin),i.input={column:r,endColumn:a,endLine:o,line:n,source:this.css},this.file&&(sr&&(i.input.url=sr(this.file).toString()),i.input.file=this.file),i}get from(){return this.file||this.id}fromOffset(e){let n,r;if(this[An])r=this[An];else {let i=this.css.split(` +`);r=new Array(i.length);let o=0;for(let a=0,u=i.length;a<u;a++)r[a]=o,o+=i[a].length+1;this[An]=r;}n=r[r.length-1];let s=0;if(e>=n)s=r.length-1;else {let i=r.length-2,o;for(;s<i;)if(o=s+(i-s>>1),e<r[o])i=o-1;else if(e>=r[o+1])s=o+1;else {s=o;break}}return {col:e-r[s]+1,line:s+1}}mapResolve(e){return /^\w+:\/\//.test(e)?e:Pn(this.map.consumer().sourceRoot||this.map.root||".",e)}origin(e,n,r,s){if(!this.map)return !1;let i=this.map.consumer(),o=i.originalPositionFor({column:n,line:e});if(!o.source)return !1;let a;typeof r=="number"&&(a=i.originalPositionFor({column:s,line:r}));let u;Nn(o.source)?u=sr(o.source):u=new URL(o.source,this.map.consumer().sourceRoot||sr(this.map.mapFile));let c={column:o.column,endColumn:a&&a.column,endLine:a&&a.line,line:o.line,url:u.toString()};if(u.protocol==="file:")if(Co)c.file=Co(u);else throw new Error("file: protocol is not available in this PostCSS build");let f=i.sourceContentFor(o.source);return f&&(c.source=f),c}toJSON(){let e={};for(let n of ["hasBOM","css","file","id"])this[n]!=null&&(e[n]=this[n]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}};No.exports=Ie;Ie.default=Ie;On&&On.registerInput&&On.registerInput(Ie);});var dt=y((Mx,Po)=>{var Pf=se(),Rf=nr(),If=qe();function ir(t,e){let n=new If(t,e),r=new Rf(n);try{r.parse();}catch(s){throw s}return r.root}Po.exports=ir;ir.default=ir;Pf.registerParse(ir);});var Ro=y((Bx,Rn)=>{var qf=er(),Df=qe();Rn.exports={isInlineComment(t){if(t[0]==="word"&&t[1].slice(0,2)==="//"){let e=t,n=[],r,s;for(;t;){if(/\r?\n/.test(t[1])){if(/['"].*\r?\n/.test(t[1])){n.push(t[1].substring(0,t[1].indexOf(` +`))),s=t[1].substring(t[1].indexOf(` +`));let o=this.input.css.valueOf().substring(this.tokenizer.position());s+=o,r=t[3]+o.length-s.length;}else this.tokenizer.back(t);break}n.push(t[1]),r=t[2],t=this.tokenizer.nextToken({ignoreUnclosed:!0});}let i=["comment",n.join(""),e[2],r];return this.inlineComment(i),s&&(this.input=new Df(s),this.tokenizer=qf(this.input)),!0}else if(t[1]==="/"){let e=this.tokenizer.nextToken({ignoreUnclosed:!0});if(e[0]==="comment"&&/^\/\*/.test(e[1]))return e[0]="word",e[1]=e[1].slice(1),t[1]="//",this.tokenizer.back(e),Rn.exports.isInlineComment.bind(this)(t)}return !1}};});var qo=y((Fx,Io)=>{Io.exports={interpolation(t){let e=[t,this.tokenizer.nextToken()],n=["word","}"];if(e[0][1].length>1||e[1][0]!=="{")return this.tokenizer.back(e[1]),!1;for(t=this.tokenizer.nextToken();t&&n.includes(t[0]);)e.push(t),t=this.tokenizer.nextToken();let r=e.map(a=>a[1]),[s]=e,i=e.pop(),o=["word",r.join(""),s[2],i[2]];return this.tokenizer.back(t),this.tokenizer.back(o),!0}};});var Lo=y(($x,Do)=>{var Lf=/^#[0-9a-fA-F]{6}$|^#[0-9a-fA-F]{3}$/,Mf=/\.[0-9]/,Bf=t=>{let[,e]=t,[n]=e;return (n==="."||n==="#")&&Lf.test(e)===!1&&Mf.test(e)===!1};Do.exports={isMixinToken:Bf};});var Bo=y((Ux,Mo)=>{var Ff=er(),$f=/^url\((.+)\)/;Mo.exports=t=>{let{name:e,params:n=""}=t;if(e==="import"&&n.length){t.import=!0;let r=Ff({css:n});for(t.filename=n.replace($f,"$1");!r.endOfFile();){let[s,i]=r.nextToken();if(s==="word"&&i==="url")return;if(s==="brackets"){t.options=i,t.filename=n.replace(i,"").trim();break}}}};});var Wo=y((Wx,Uo)=>{var Fo=/:$/,$o=/^:(\s+)?/;Uo.exports=t=>{let{name:e,params:n=""}=t;if(t.name.slice(-1)===":"){if(Fo.test(e)){let[r]=e.match(Fo);t.name=e.replace(r,""),t.raws.afterName=r+(t.raws.afterName||""),t.variable=!0,t.value=t.params;}if($o.test(n)){let[r]=n.match($o);t.value=n.replace(r,""),t.raws.afterName=(t.raws.afterName||"")+r,t.variable=!0;}}};});var Yo=y((Vx,Vo)=>{var Uf=Ae(),Wf=nr(),{isInlineComment:zf}=Ro(),{interpolation:zo}=qo(),{isMixinToken:Vf}=Lo(),Yf=Bo(),Gf=Wo(),Kf=/(!\s*important)$/i;Vo.exports=class extends Wf{constructor(...e){super(...e),this.lastNode=null;}atrule(e){zo.bind(this)(e)||(super.atrule(e),Yf(this.lastNode),Gf(this.lastNode));}decl(...e){super.decl(...e),/extend\(.+\)/i.test(this.lastNode.value)&&(this.lastNode.extend=!0);}each(e){e[0][1]=` ${e[0][1]}`;let n=e.findIndex(a=>a[0]==="("),r=e.reverse().find(a=>a[0]===")"),s=e.reverse().indexOf(r),o=e.splice(n,s).map(a=>a[1]).join("");for(let a of e.reverse())this.tokenizer.back(a);this.atrule(this.tokenizer.nextToken()),this.lastNode.function=!0,this.lastNode.params=o;}init(e,n,r){super.init(e,n,r),this.lastNode=e;}inlineComment(e){let n=new Uf,r=e[1].slice(2);if(this.init(n,e[2]),n.source.end=this.getPosition(e[3]||e[2]),n.inline=!0,n.raws.begin="//",/^\s*$/.test(r))n.text="",n.raws.left=r,n.raws.right="";else {let s=r.match(/^(\s*)([^]*[^\s])(\s*)$/);[,n.raws.left,n.text,n.raws.right]=s;}}mixin(e){let[n]=e,r=n[1].slice(0,1),s=e.findIndex(c=>c[0]==="brackets"),i=e.findIndex(c=>c[0]==="("),o="";if((s<0||s>3)&&i>0){let c=e.reduce((w,v,N)=>v[0]===")"?N:w),p=e.slice(i,c+i).map(w=>w[1]).join(""),[l]=e.slice(i),g=[l[2],l[3]],[x]=e.slice(c,c+1),h=[x[2],x[3]],d=["brackets",p].concat(g,h),m=e.slice(0,i),b=e.slice(c+1);e=m,e.push(d),e=e.concat(b);}let a=[];for(let c of e)if((c[1]==="!"||a.length)&&a.push(c),c[1]==="important")break;if(a.length){let[c]=a,f=e.indexOf(c),p=a[a.length-1],l=[c[2],c[3]],g=[p[4],p[5]],h=["word",a.map(d=>d[1]).join("")].concat(l,g);e.splice(f,a.length,h);}let u=e.findIndex(c=>Kf.test(c[1]));u>0&&([,o]=e[u],e.splice(u,1));for(let c of e.reverse())this.tokenizer.back(c);this.atrule(this.tokenizer.nextToken()),this.lastNode.mixin=!0,this.lastNode.raws.identifier=r,o&&(this.lastNode.important=!0,this.lastNode.raws.important=o);}other(e){zf.bind(this)(e)||super.other(e);}rule(e){let n=e[e.length-1],r=e[e.length-2];if(r[0]==="at-word"&&n[0]==="{"&&(this.tokenizer.back(n),zo.bind(this)(r))){let i=this.tokenizer.nextToken();e=e.slice(0,e.length-2).concat([i]);for(let o of e.reverse())this.tokenizer.back(o);return}super.rule(e),/:extend\(.+\)/i.test(this.lastNode.selector)&&(this.lastNode.extend=!0);}unknownWord(e){let[n]=e;if(e[0][1]==="each"&&e[1][0]==="("){this.each(e);return}if(Vf(n)){this.mixin(e);return}super.unknownWord(e);}};});var Ko=y((Gx,Go)=>{var Hf=Yt();Go.exports=class extends Hf{atrule(e,n){if(!e.mixin&&!e.variable&&!e.function){super.atrule(e,n);return}let s=`${e.function?"":e.raws.identifier||"@"}${e.name}`,i=e.params?this.rawValue(e,"params"):"",o=e.raws.important||"";if(e.variable&&(i=e.value),typeof e.raws.afterName<"u"?s+=e.raws.afterName:i&&(s+=" "),e.nodes)this.block(e,s+i+o);else {let a=(e.raws.between||"")+o+(n?";":"");this.builder(s+i+a,e);}}comment(e){if(e.inline){let n=this.raw(e,"left","commentLeft"),r=this.raw(e,"right","commentRight");this.builder(`//${n}${e.text}${r}`,e);}else super.comment(e);}};});var Ho=y((Kx,In)=>{var Qf=qe(),jf=Yo(),Jf=Ko();In.exports={parse(t,e){let n=new Qf(t,e),r=new jf(n);return r.parse(),r.root.walk(s=>{let i=n.css.lastIndexOf(s.source.input.css);if(i===0)return;if(i+s.source.input.css.length!==n.css.length)throw new Error("Invalid state detected in postcss-less");let o=i+s.source.start.offset,a=n.fromOffset(i+s.source.start.offset);if(s.source.start={offset:o,line:a.line,column:a.col},s.source.end){let u=i+s.source.end.offset,c=n.fromOffset(i+s.source.end.offset);s.source.end={offset:u,line:c.line,column:c.col};}}),r.root},stringify(t,e){new Jf(e).stringify(t);},nodeToString(t){let e="";return In.exports.stringify(t,n=>{e+=n;}),e}};});var qn=y((Hx,Qo)=>{Qo.exports=class{generate(){}};});var or=y((jx,Xo)=>{var Xf=se(),jo,Jo,ye=class extends Xf{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[]);}toResult(e={}){return new jo(new Jo,this,e).stringify()}};ye.registerLazyResult=t=>{jo=t;};ye.registerProcessor=t=>{Jo=t;};Xo.exports=ye;ye.default=ye;});var Dn=y((Jx,ea)=>{var Zo={};ea.exports=function(e){Zo[e]||(Zo[e]=!0,typeof console<"u"&&console.warn&&console.warn(e));};});var Ln=y((Xx,ta)=>{var mt=class{constructor(e,n={}){if(this.type="warning",this.text=e,n.node&&n.node.source){let r=n.node.rangeBy(n);this.line=r.start.line,this.column=r.start.column,this.endLine=r.end.line,this.endColumn=r.end.column;}for(let r in n)this[r]=n[r];}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};ta.exports=mt;mt.default=mt;});var ar=y((Zx,ra)=>{var Zf=Ln(),yt=class{constructor(e,n,r){this.processor=e,this.messages=[],this.root=n,this.opts=r,this.css=void 0,this.map=void 0;}get content(){return this.css}toString(){return this.css}warn(e,n={}){n.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(n.plugin=this.lastPlugin.postcssPlugin);let r=new Zf(e,n);return this.messages.push(r),r}warnings(){return this.messages.filter(e=>e.type==="warning")}};ra.exports=yt;yt.default=yt;});var Fn=y((tb,oa)=>{var {isClean:K,my:ep}=zt(),tp=qn(),rp=ot(),np=se(),sp=or();Dn();var na=ar(),ip=dt(),op=Pe(),ap={atrule:"AtRule",comment:"Comment",decl:"Declaration",document:"Document",root:"Root",rule:"Rule"},up={AtRule:!0,AtRuleExit:!0,Comment:!0,CommentExit:!0,Declaration:!0,DeclarationExit:!0,Document:!0,DocumentExit:!0,Once:!0,OnceExit:!0,postcssPlugin:!0,prepare:!0,Root:!0,RootExit:!0,Rule:!0,RuleExit:!0},lp={Once:!0,postcssPlugin:!0,prepare:!0},De=0;function gt(t){return typeof t=="object"&&typeof t.then=="function"}function ia(t){let e=!1,n=ap[t.type];return t.type==="decl"?e=t.prop.toLowerCase():t.type==="atrule"&&(e=t.name.toLowerCase()),e&&t.append?[n,n+"-"+e,De,n+"Exit",n+"Exit-"+e]:e?[n,n+"-"+e,n+"Exit",n+"Exit-"+e]:t.append?[n,De,n+"Exit"]:[n,n+"Exit"]}function sa(t){let e;return t.type==="document"?e=["Document",De,"DocumentExit"]:t.type==="root"?e=["Root",De,"RootExit"]:e=ia(t),{eventIndex:0,events:e,iterator:0,node:t,visitorIndex:0,visitors:[]}}function Mn(t){return t[K]=!1,t.nodes&&t.nodes.forEach(e=>Mn(e)),t}var Bn={},oe=class t{constructor(e,n,r){this.stringified=!1,this.processed=!1;let s;if(typeof n=="object"&&n!==null&&(n.type==="root"||n.type==="document"))s=Mn(n);else if(n instanceof t||n instanceof na)s=Mn(n.root),n.map&&(typeof r.map>"u"&&(r.map={}),r.map.inline||(r.map.inline=!1),r.map.prev=n.map);else {let i=ip;r.syntax&&(i=r.syntax.parse),r.parser&&(i=r.parser),i.parse&&(i=i.parse);try{s=i(n,r);}catch(o){this.processed=!0,this.error=o;}s&&!s[ep]&&np.rebuild(s);}this.result=new na(e,s,r),this.helpers={...Bn,postcss:Bn,result:this.result},this.plugins=this.processor.plugins.map(i=>typeof i=="object"&&i.prepare?{...i,...i.prepare(this.result)}:i);}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(e){return this.async().catch(e)}get content(){return this.stringify().content}get css(){return this.stringify().css}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,n){let r=this.result.lastPlugin;try{n&&n.addToError(e),this.error=e,e.name==="CssSyntaxError"&&!e.plugin?(e.plugin=r.postcssPlugin,e.setMessage()):r.postcssVersion;}catch(s){console&&console.error&&console.error(s);}return e}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}prepareVisitors(){this.listeners={};let e=(n,r,s)=>{this.listeners[r]||(this.listeners[r]=[]),this.listeners[r].push([n,s]);};for(let n of this.plugins)if(typeof n=="object")for(let r in n){if(!up[r]&&/^[A-Z]/.test(r))throw new Error(`Unknown event ${r} in ${n.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!lp[r])if(typeof n[r]=="object")for(let s in n[r])s==="*"?e(n,r,n[r][s]):e(n,r+"-"+s.toLowerCase(),n[r][s]);else typeof n[r]=="function"&&e(n,r,n[r]);}this.hasListener=Object.keys(this.listeners).length>0;}get processor(){return this.result.processor}get root(){return this.sync().root}async runAsync(){this.plugin=0;for(let e=0;e<this.plugins.length;e++){let n=this.plugins[e],r=this.runOnRoot(n);if(gt(r))try{await r;}catch(s){throw this.handleError(s)}}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[K];){e[K]=!0;let n=[sa(e)];for(;n.length>0;){let r=this.visitTick(n);if(gt(r))try{await r;}catch(s){let i=n[n.length-1].node;throw this.handleError(s,i)}}}if(this.listeners.OnceExit)for(let[n,r]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if(e.type==="document"){let s=e.nodes.map(i=>r(i,this.helpers));await Promise.all(s);}else await r(e,this.helpers);}catch(s){throw this.handleError(s)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if(typeof e=="object"&&e.Once){if(this.result.root.type==="document"){let n=this.result.root.nodes.map(r=>e.Once(r,this.helpers));return gt(n[0])?Promise.all(n):n}return e.Once(this.result.root,this.helpers)}else if(typeof e=="function")return e(this.result.root,this.result)}catch(n){throw this.handleError(n)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,n=rp;e.syntax&&(n=e.syntax.stringify),e.stringifier&&(n=e.stringifier),n.stringify&&(n=n.stringify);let s=new tp(n,this.result.root,this.result.opts).generate();return this.result.css=s[0],this.result.map=s[1],this.result}get[Symbol.toStringTag](){return "LazyResult"}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){let n=this.runOnRoot(e);if(gt(n))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[K];)e[K]=!0,this.walkSync(e);if(this.listeners.OnceExit)if(e.type==="document")for(let n of e.nodes)this.visitSync(this.listeners.OnceExit,n);else this.visitSync(this.listeners.OnceExit,e);}return this.result}then(e,n){return this.async().then(e,n)}toString(){return this.css}visitSync(e,n){for(let[r,s]of e){this.result.lastPlugin=r;let i;try{i=s(n,this.helpers);}catch(o){throw this.handleError(o,n.proxyOf)}if(n.type!=="root"&&n.type!=="document"&&!n.parent)return !0;if(gt(i))throw this.getAsyncError()}}visitTick(e){let n=e[e.length-1],{node:r,visitors:s}=n;if(r.type!=="root"&&r.type!=="document"&&!r.parent){e.pop();return}if(s.length>0&&n.visitorIndex<s.length){let[o,a]=s[n.visitorIndex];n.visitorIndex+=1,n.visitorIndex===s.length&&(n.visitors=[],n.visitorIndex=0),this.result.lastPlugin=o;try{return a(r.toProxy(),this.helpers)}catch(u){throw this.handleError(u,r)}}if(n.iterator!==0){let o=n.iterator,a;for(;a=r.nodes[r.indexes[o]];)if(r.indexes[o]+=1,!a[K]){a[K]=!0,e.push(sa(a));return}n.iterator=0,delete r.indexes[o];}let i=n.events;for(;n.eventIndex<i.length;){let o=i[n.eventIndex];if(n.eventIndex+=1,o===De){r.nodes&&r.nodes.length&&(r[K]=!0,n.iterator=r.getIterator());return}else if(this.listeners[o]){n.visitors=this.listeners[o];return}}e.pop();}walkSync(e){e[K]=!0;let n=ia(e);for(let r of n)if(r===De)e.nodes&&e.each(s=>{s[K]||this.walkSync(s);});else {let s=this.listeners[r];if(s&&this.visitSync(s,e.toProxy()))return}}warnings(){return this.sync().warnings()}};oe.registerPostcss=t=>{Bn=t;};oa.exports=oe;oe.default=oe;op.registerLazyResult(oe);sp.registerLazyResult(oe);});var ua=y((nb,aa)=>{var cp=qn(),fp=ot();Dn();var pp=dt(),hp=ar(),wt=class{constructor(e,n,r){n=n.toString(),this.stringified=!1,this._processor=e,this._css=n,this._opts=r,this._map=void 0;let s,i=fp;this.result=new hp(this._processor,s,this._opts),this.result.css=n;let o=this;Object.defineProperty(this.result,"root",{get(){return o.root}});let a=new cp(i,s,this._opts,n);if(a.isMap()){let[u,c]=a.generate();u&&(this.result.css=u),c&&(this.result.map=c);}}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}get content(){return this.result.css}get css(){return this.result.css}finally(e){return this.async().then(e,e)}get map(){return this.result.map}get messages(){return []}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let e,n=pp;try{e=n(this._css,this._opts);}catch(r){this.error=r;}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return "NoWorkResult"}sync(){if(this.error)throw this.error;return this.result}then(e,n){return this.async().then(e,n)}toString(){return this._css}warnings(){return []}};aa.exports=wt;wt.default=wt;});var ca=y((sb,la)=>{var dp=ua(),mp=Fn(),yp=or(),gp=Pe(),ge=class{constructor(e=[]){this.version="8.4.28",this.plugins=this.normalize(e);}normalize(e){let n=[];for(let r of e)if(r.postcss===!0?r=r():r.postcss&&(r=r.postcss),typeof r=="object"&&Array.isArray(r.plugins))n=n.concat(r.plugins);else if(typeof r=="object"&&r.postcssPlugin)n.push(r);else if(typeof r=="function")n.push(r);else if(!(typeof r=="object"&&(r.parse||r.stringify)))throw new Error(r+" is not a PostCSS plugin");return n}process(e,n={}){return this.plugins.length===0&&typeof n.parser>"u"&&typeof n.stringifier>"u"&&typeof n.syntax>"u"?new dp(this,e,n):new mp(this,e,n)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}};la.exports=ge;ge.default=ge;gp.registerProcessor(ge);yp.registerProcessor(ge);});var pa=y((ib,fa)=>{var wp=ct(),vp=Cn(),xp=Ae(),bp=tr(),kp=qe(),_p=Pe(),Tp=rr();function vt(t,e){if(Array.isArray(t))return t.map(s=>vt(s));let{inputs:n,...r}=t;if(n){e=[];for(let s of n){let i={...s,__proto__:kp.prototype};i.map&&(i.map={...i.map,__proto__:vp.prototype}),e.push(i);}}if(r.nodes&&(r.nodes=t.nodes.map(s=>vt(s,e))),r.source){let{inputId:s,...i}=r.source;r.source=i,s!=null&&(r.source.input=e[s]);}if(r.type==="root")return new _p(r);if(r.type==="decl")return new wp(r);if(r.type==="rule")return new Tp(r);if(r.type==="comment")return new xp(r);if(r.type==="atrule")return new bp(r);throw new Error("Unknown node type: "+t.type)}fa.exports=vt;vt.default=vt;});var ur=y((ob,va)=>{var Ep=Vt(),ha=ct(),Sp=Fn(),Cp=se(),$n=ca(),Op=ot(),Ap=pa(),da=or(),Np=Ln(),ma=Ae(),ya=tr(),Pp=ar(),Rp=qe(),Ip=dt(),qp=En(),ga=rr(),wa=Pe(),Dp=ut();function k(...t){return t.length===1&&Array.isArray(t[0])&&(t=t[0]),new $n(t)}k.plugin=function(e,n){let r=!1;function s(...o){console&&console.warn&&!r&&(r=!0,console.warn(e+`: postcss.plugin was deprecated. Migration guide: +https://evilmartians.com/chronicles/postcss-8-plugin-migration`));let a=n(...o);return a.postcssPlugin=e,a.postcssVersion=new $n().version,a}let i;return Object.defineProperty(s,"postcss",{get(){return i||(i=s()),i}}),s.process=function(o,a,u){return k([s(u)]).process(o,a)},s};k.stringify=Op;k.parse=Ip;k.fromJSON=Ap;k.list=qp;k.comment=t=>new ma(t);k.atRule=t=>new ya(t);k.decl=t=>new ha(t);k.rule=t=>new ga(t);k.root=t=>new wa(t);k.document=t=>new da(t);k.CssSyntaxError=Ep;k.Declaration=ha;k.Container=Cp;k.Processor=$n;k.Document=da;k.Comment=ma;k.Warning=Np;k.AtRule=ya;k.Result=Pp;k.Input=Rp;k.Rule=ga;k.Root=wa;k.Node=Dp;Sp.registerPostcss(k);va.exports=k;k.default=k;});var ba=y((ab,xa)=>{var{Container:Lp}=ur(),Un=class extends Lp{constructor(e){super(e),this.type="decl",this.isNested=!0,this.nodes||(this.nodes=[]);}};xa.exports=Un;});var Ca=y((ub,Sa)=>{var Wn="'".charCodeAt(0),zn='"'.charCodeAt(0),xt="\\".charCodeAt(0),lr="/".charCodeAt(0),Vn=` +`.charCodeAt(0),cr=" ".charCodeAt(0),Yn="\f".charCodeAt(0),Gn=" ".charCodeAt(0),Kn="\r".charCodeAt(0),Mp="[".charCodeAt(0),Bp="]".charCodeAt(0),ka="(".charCodeAt(0),_a=")".charCodeAt(0),fr="{".charCodeAt(0),Ta="}".charCodeAt(0),Fp=";".charCodeAt(0),$p="*".charCodeAt(0),Up=":".charCodeAt(0),Wp="@".charCodeAt(0),zp=",".charCodeAt(0),Hn="#".charCodeAt(0),pr=/[\t\n\f\r "#'()/;[\\\]{}]/g,hr=/[,\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,Vp=/.[\n"'(/\\]/,Ea=/[\da-f]/i,dr=/[\n\f\r]/g;Sa.exports=function(e,n={}){let r=e.css.valueOf(),s=n.ignoreErrors,i,o,a,u,c,f,p,l,g,x=r.length,h=0,d=[],m=[],b;function w(){return h}function v(S){throw e.error("Unclosed "+S,h)}function N(){return m.length===0&&h>=x}function $(){let S=1,C=!1,O=!1;for(;S>0;)o+=1,r.length<=o&&v("interpolation"),i=r.charCodeAt(o),l=r.charCodeAt(o+1),C?!O&&i===C?(C=!1,O=!1):i===xt?O=!O:O&&(O=!1):i===Wn||i===zn?C=i:i===Ta?S-=1:i===Hn&&l===fr&&(S+=1);}function H(S){if(m.length)return m.pop();if(h>=x)return;let C=S?S.ignoreUnclosed:!1;switch(i=r.charCodeAt(h),i){case Vn:case cr:case Gn:case Kn:case Yn:{o=h;do o+=1,i=r.charCodeAt(o);while(i===cr||i===Vn||i===Gn||i===Kn||i===Yn);g=["space",r.slice(h,o)],h=o-1;break}case Mp:case Bp:case fr:case Ta:case Up:case Fp:case _a:{let O=String.fromCharCode(i);g=[O,O,h];break}case zp:{g=["word",",",h,h+1];break}case ka:{if(p=d.length?d.pop()[1]:"",l=r.charCodeAt(h+1),p==="url"&&l!==Wn&&l!==zn){for(b=1,f=!1,o=h+1;o<=r.length-1;){if(l=r.charCodeAt(o),l===xt)f=!f;else if(l===ka)b+=1;else if(l===_a&&(b-=1,b===0))break;o+=1;}u=r.slice(h,o+1),g=["brackets",u,h,o],h=o;}else o=r.indexOf(")",h+1),u=r.slice(h,o+1),o===-1||Vp.test(u)?g=["(","(",h]:(g=["brackets",u,h,o],h=o);break}case Wn:case zn:{for(a=i,o=h,f=!1;o<x&&(o++,o===x&&v("string"),i=r.charCodeAt(o),l=r.charCodeAt(o+1),!(!f&&i===a));)i===xt?f=!f:f?f=!1:i===Hn&&l===fr&&$();g=["string",r.slice(h,o+1),h,o],h=o;break}case Wp:{pr.lastIndex=h+1,pr.test(r),pr.lastIndex===0?o=r.length-1:o=pr.lastIndex-2,g=["at-word",r.slice(h,o+1),h,o],h=o;break}case xt:{for(o=h,c=!0;r.charCodeAt(o+1)===xt;)o+=1,c=!c;if(i=r.charCodeAt(o+1),c&&i!==lr&&i!==cr&&i!==Vn&&i!==Gn&&i!==Kn&&i!==Yn&&(o+=1,Ea.test(r.charAt(o)))){for(;Ea.test(r.charAt(o+1));)o+=1;r.charCodeAt(o+1)===cr&&(o+=1);}g=["word",r.slice(h,o+1),h,o],h=o;break}default:l=r.charCodeAt(h+1),i===Hn&&l===fr?(o=h,$(),u=r.slice(h,o+1),g=["word",u,h,o],h=o):i===lr&&l===$p?(o=r.indexOf("*/",h+2)+1,o===0&&(s||C?o=r.length:v("comment")),g=["comment",r.slice(h,o+1),h,o],h=o):i===lr&&l===lr?(dr.lastIndex=h+1,dr.test(r),dr.lastIndex===0?o=r.length-1:o=dr.lastIndex-2,u=r.slice(h,o+1),g=["comment",u,h,o,"inline"],h=o):(hr.lastIndex=h+1,hr.test(r),hr.lastIndex===0?o=r.length-1:o=hr.lastIndex-2,g=["word",r.slice(h,o+1),h,o],d.push(g),h=o);break}return h++,g}function U(S){m.push(S);}return {back:U,endOfFile:N,nextToken:H,position:w}};});var Aa=y((lb,Oa)=>{var{Comment:Yp}=ur(),Gp=nr(),Kp=ba(),Hp=Ca(),Qn=class extends Gp{atrule(e){let n=e[1],r=e;for(;!this.tokenizer.endOfFile();){let s=this.tokenizer.nextToken();if(s[0]==="word"&&s[2]===r[3]+1)n+=s[1],r=s;else {this.tokenizer.back(s);break}}super.atrule(["at-word",n,e[2],r[3]]);}comment(e){if(e[4]==="inline"){let n=new Yp;this.init(n,e[2]),n.raws.inline=!0;let r=this.input.fromOffset(e[3]);n.source.end={column:r.col,line:r.line,offset:e[3]};let s=e[1].slice(2);if(/^\s*$/.test(s))n.text="",n.raws.left=s,n.raws.right="";else {let i=s.match(/^(\s*)([^]*\S)(\s*)$/),o=i[2].replace(/(\*\/|\/\*)/g,"*//*");n.text=o,n.raws.left=i[1],n.raws.right=i[3],n.raws.text=i[2];}}else super.comment(e);}createTokenizer(){this.tokenizer=Hp(this.input);}raw(e,n,r,s){if(super.raw(e,n,r,s),e.raws[n]){let i=e.raws[n].raw;e.raws[n].raw=r.reduce((o,a)=>{if(a[0]==="comment"&&a[4]==="inline"){let u=a[1].slice(2).replace(/(\*\/|\/\*)/g,"*//*");return o+"/*"+u+"*/"}else return o+a[1]},""),i!==e.raws[n].raw&&(e.raws[n].scss=i);}}rule(e){let n=!1,r=0,s="";for(let i of e)if(n)i[0]!=="comment"&&i[0]!=="{"&&(s+=i[1]);else {if(i[0]==="space"&&i[1].includes(` +`))break;i[0]==="("?r+=1:i[0]===")"?r-=1:r===0&&i[0]===":"&&(n=!0);}if(!n||s.trim()===""||/^[#:A-Za-z-]/.test(s))super.rule(e);else {e.pop();let i=new Kp;this.init(i,e[0][2]);let o;for(let u=e.length-1;u>=0;u--)if(e[u][0]!=="space"){o=e[u];break}if(o[3]){let u=this.input.fromOffset(o[3]);i.source.end={column:u.col,line:u.line,offset:o[3]};}else {let u=this.input.fromOffset(o[2]);i.source.end={column:u.col,line:u.line,offset:o[2]};}for(;e[0][0]!=="word";)i.raws.before+=e.shift()[1];if(e[0][2]){let u=this.input.fromOffset(e[0][2]);i.source.start={column:u.col,line:u.line,offset:e[0][2]};}for(i.prop="";e.length;){let u=e[0][0];if(u===":"||u==="space"||u==="comment")break;i.prop+=e.shift()[1];}i.raws.between="";let a;for(;e.length;)if(a=e.shift(),a[0]===":"){i.raws.between+=a[1];break}else i.raws.between+=a[1];(i.prop[0]==="_"||i.prop[0]==="*")&&(i.raws.before+=i.prop[0],i.prop=i.prop.slice(1)),i.raws.between+=this.spacesAndCommentsFromStart(e),this.precheckMissedSemicolon(e);for(let u=e.length-1;u>0;u--){if(a=e[u],a[1]==="!important"){i.important=!0;let c=this.stringFrom(e,u);c=this.spacesFromEnd(e)+c,c!==" !important"&&(i.raws.important=c);break}else if(a[1]==="important"){let c=e.slice(0),f="";for(let p=u;p>0;p--){let l=c[p][0];if(f.trim().indexOf("!")===0&&l!=="space")break;f=c.pop()[1]+f;}f.trim().indexOf("!")===0&&(i.important=!0,i.raws.important=f,e=c);}if(a[0]!=="space"&&a[0]!=="comment")break}this.raw(i,"value",e),i.value.includes(":")&&this.checkMissedSemicolon(e),this.current=i;}}};Oa.exports=Qn;});var Pa=y((cb,Na)=>{var{Input:Qp}=ur(),jp=Aa();Na.exports=function(e,n){let r=new Qp(e,n),s=new jp(r);return s.parse(),s.root};});var V=y((mb,Da)=>{var jn=function(t,e){let n=new t.constructor;for(let r in t){if(!t.hasOwnProperty(r))continue;let s=t[r],i=typeof s;r==="parent"&&i==="object"?e&&(n[r]=e):r==="source"?n[r]=s:s instanceof Array?n[r]=s.map(o=>jn(o,n)):r!=="before"&&r!=="after"&&r!=="between"&&r!=="semicolon"&&(i==="object"&&s!==null&&(s=jn(s)),n[r]=s);}return n};Da.exports=class{constructor(e){e=e||{},this.raws={before:"",after:""};for(let n in e)this[n]=e[n];}remove(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this}toString(){return [this.raws.before,String(this.value),this.raws.after].join("")}clone(e){e=e||{};let n=jn(this);for(let r in e)n[r]=e[r];return n}cloneBefore(e){e=e||{};let n=this.clone(e);return this.parent.insertBefore(this,n),n}cloneAfter(e){e=e||{};let n=this.clone(e);return this.parent.insertAfter(this,n),n}replaceWith(){let e=Array.prototype.slice.call(arguments);if(this.parent){for(let n of e)this.parent.insertBefore(this,n);this.remove();}return this}moveTo(e){return this.cleanRaws(this.root()===e.root()),this.remove(),e.append(this),this}moveBefore(e){return this.cleanRaws(this.root()===e.root()),this.remove(),e.parent.insertBefore(e,this),this}moveAfter(e){return this.cleanRaws(this.root()===e.root()),this.remove(),e.parent.insertAfter(e,this),this}next(){let e=this.parent.index(this);return this.parent.nodes[e+1]}prev(){let e=this.parent.index(this);return this.parent.nodes[e-1]}toJSON(){let e={};for(let n in this){if(!this.hasOwnProperty(n)||n==="parent")continue;let r=this[n];r instanceof Array?e[n]=r.map(s=>typeof s=="object"&&s.toJSON?s.toJSON():s):typeof r=="object"&&r.toJSON?e[n]=r.toJSON():e[n]=r;}return e}root(){let e=this;for(;e.parent;)e=e.parent;return e}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between;}positionInside(e){let n=this.toString(),r=this.source.start.column,s=this.source.start.line;for(let i=0;i<e;i++)n[i]===` +`?(r=1,s+=1):r+=1;return {line:s,column:r}}positionBy(e){let n=this.source.start;if(Object(e).index)n=this.positionInside(e.index);else if(Object(e).word){let r=this.toString().indexOf(e.word);r!==-1&&(n=this.positionInside(r));}return n}};});var B=y((yb,La)=>{var th=V(),Le=class extends th{constructor(e){super(e),this.nodes||(this.nodes=[]);}push(e){return e.parent=this,this.nodes.push(e),this}each(e){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach+=1;let n=this.lastEach,r,s;if(this.indexes[n]=0,!!this.nodes){for(;this.indexes[n]<this.nodes.length&&(r=this.indexes[n],s=e(this.nodes[r],r),s!==!1);)this.indexes[n]+=1;return delete this.indexes[n],s}}walk(e){return this.each((n,r)=>{let s=e(n,r);return s!==!1&&n.walk&&(s=n.walk(e)),s})}walkType(e,n){if(!e||!n)throw new Error("Parameters {type} and {callback} are required.");let r=typeof e=="function";return this.walk((s,i)=>{if(r&&s instanceof e||!r&&s.type===e)return n.call(this,s,i)})}append(e){return e.parent=this,this.nodes.push(e),this}prepend(e){return e.parent=this,this.nodes.unshift(e),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let n of this.nodes)n.cleanRaws(e);}insertAfter(e,n){let r=this.index(e),s;this.nodes.splice(r+1,0,n);for(let i in this.indexes)s=this.indexes[i],r<=s&&(this.indexes[i]=s+this.nodes.length);return this}insertBefore(e,n){let r=this.index(e),s;this.nodes.splice(r,0,n);for(let i in this.indexes)s=this.indexes[i],r<=s&&(this.indexes[i]=s+this.nodes.length);return this}removeChild(e){e=this.index(e),this.nodes[e].parent=void 0,this.nodes.splice(e,1);let n;for(let r in this.indexes)n=this.indexes[r],n>=e&&(this.indexes[r]=n-1);return this}removeAll(){for(let e of this.nodes)e.parent=void 0;return this.nodes=[],this}every(e){return this.nodes.every(e)}some(e){return this.nodes.some(e)}index(e){return typeof e=="number"?e:this.nodes.indexOf(e)}get first(){if(this.nodes)return this.nodes[0]}get last(){if(this.nodes)return this.nodes[this.nodes.length-1]}toString(){let e=this.nodes.map(String).join("");return this.value&&(e=this.value+e),this.raws.before&&(e=this.raws.before+e),this.raws.after&&(e+=this.raws.after),e}};Le.registerWalker=t=>{let e="walk"+t.name;e.lastIndexOf("s")!==e.length-1&&(e+="s"),!Le.prototype[e]&&(Le.prototype[e]=function(n){return this.walkType(t,n)});};La.exports=Le;});var Ba=y((wb,Ma)=>{var rh=B();Ma.exports=class extends rh{constructor(e){super(e),this.type="root";}};});var $a=y((xb,Fa)=>{var nh=B();Fa.exports=class extends nh{constructor(e){super(e),this.type="value",this.unbalanced=0;}};});var za=y((bb,Wa)=>{var Ua=B(),mr=class extends Ua{constructor(e){super(e),this.type="atword";}toString(){this.quoted?this.raws.quote:"";return [this.raws.before,"@",String.prototype.toString.call(this.value),this.raws.after].join("")}};Ua.registerWalker(mr);Wa.exports=mr;});var Ya=y((kb,Va)=>{var sh=B(),ih=V(),yr=class extends ih{constructor(e){super(e),this.type="colon";}};sh.registerWalker(yr);Va.exports=yr;});var Ka=y((_b,Ga)=>{var oh=B(),ah=V(),gr=class extends ah{constructor(e){super(e),this.type="comma";}};oh.registerWalker(gr);Ga.exports=gr;});var Qa=y((Tb,Ha)=>{var uh=B(),lh=V(),wr=class extends lh{constructor(e){super(e),this.type="comment",this.inline=Object(e).inline||!1;}toString(){return [this.raws.before,this.inline?"//":"/*",String(this.value),this.inline?"":"*/",this.raws.after].join("")}};uh.registerWalker(wr);Ha.exports=wr;});var Xa=y((Eb,Ja)=>{var ja=B(),vr=class extends ja{constructor(e){super(e),this.type="func",this.unbalanced=-1;}};ja.registerWalker(vr);Ja.exports=vr;});var eu=y((Sb,Za)=>{var ch=B(),fh=V(),xr=class extends fh{constructor(e){super(e),this.type="number",this.unit=Object(e).unit||"";}toString(){return [this.raws.before,String(this.value),this.unit,this.raws.after].join("")}};ch.registerWalker(xr);Za.exports=xr;});var ru=y((Cb,tu)=>{var ph=B(),hh=V(),br=class extends hh{constructor(e){super(e),this.type="operator";}};ph.registerWalker(br);tu.exports=br;});var su=y((Ob,nu)=>{var dh=B(),mh=V(),kr=class extends mh{constructor(e){super(e),this.type="paren",this.parenType="";}};dh.registerWalker(kr);nu.exports=kr;});var ou=y((Ab,iu)=>{var yh=B(),gh=V(),_r=class extends gh{constructor(e){super(e),this.type="string";}toString(){let e=this.quoted?this.raws.quote:"";return [this.raws.before,e,this.value+"",e,this.raws.after].join("")}};yh.registerWalker(_r);iu.exports=_r;});var uu=y((Nb,au)=>{var wh=B(),vh=V(),Tr=class extends vh{constructor(e){super(e),this.type="word";}};wh.registerWalker(Tr);au.exports=Tr;});var cu=y((Pb,lu)=>{var xh=B(),bh=V(),Er=class extends bh{constructor(e){super(e),this.type="unicode-range";}};xh.registerWalker(Er);lu.exports=Er;});var pu=y((Rb,fu)=>{var Jn=class extends Error{constructor(e){super(e),this.name=this.constructor.name,this.message=e||"An error ocurred while tokzenizing.",typeof Error.captureStackTrace=="function"?Error.captureStackTrace(this,this.constructor):this.stack=new Error(e).stack;}};fu.exports=Jn;});var vu=y((Ib,wu)=>{var kh="{".charCodeAt(0),_h="}".charCodeAt(0),Th="(".charCodeAt(0),Eh=")".charCodeAt(0),hu="'".charCodeAt(0),Sh='"'.charCodeAt(0),du="\\".charCodeAt(0),Sr="/".charCodeAt(0),Ch=".".charCodeAt(0),Oh=",".charCodeAt(0),Ah=":".charCodeAt(0),Xn="*".charCodeAt(0),Cr="-".charCodeAt(0),Zn="+".charCodeAt(0),Nh="#".charCodeAt(0),bt=` +`.charCodeAt(0),es=" ".charCodeAt(0),ts="\f".charCodeAt(0),rs=" ".charCodeAt(0),ns="\r".charCodeAt(0),Ph="@".charCodeAt(0),Rh="e".charCodeAt(0),Ih="E".charCodeAt(0),mu="0".charCodeAt(0),yu="9".charCodeAt(0),qh="u".charCodeAt(0),Dh="U".charCodeAt(0),Or=/[ \n\t\r\{\(\)'"\\;,/]/g,Lh=/[ \n\t\r\(\)\{\}\*:;@!&'"\+\|~>,\[\]\\]|\/(?=\*)/g,Me=/[ \n\t\r\(\)\{\}\*:;@!&'"\-\+\|~>,\[\]\\]|\//g,Mh=/^[a-z0-9]/i,Bh=/^[a-f0-9?\-]/i,gu=pu();wu.exports=function(e,n){n=n||{};let r=[],s=e.valueOf(),i=s.length,o=-1,a=1,u=0,c=0,f=null,p,l,g,x,h,d,b,w,v,N,$;function H(S){let C=`Unclosed ${S} at line: ${a}, column: ${u-o}, token: ${u}`;throw new gu(C)}for(;u<i;){switch(p=s.charCodeAt(u),p===bt&&(o=u,a+=1),p){case bt:case es:case rs:case ns:case ts:l=u;do l+=1,p=s.charCodeAt(l),p===bt&&(o=l,a+=1);while(p===es||p===bt||p===rs||p===ns||p===ts);r.push(["space",s.slice(u,l),a,u-o,a,l-o,u]),u=l-1;break;case Ah:l=u+1,r.push(["colon",s.slice(u,l),a,u-o,a,l-o,u]),u=l-1;break;case Oh:l=u+1,r.push(["comma",s.slice(u,l),a,u-o,a,l-o,u]),u=l-1;break;case kh:r.push(["{","{",a,u-o,a,l-o,u]);break;case _h:r.push(["}","}",a,u-o,a,l-o,u]);break;case Th:c++,f=!f&&c===1&&r.length>0&&r[r.length-1][0]==="word"&&r[r.length-1][1]==="url",r.push(["(","(",a,u-o,a,l-o,u]);break;case Eh:c--,f=f&&c>0,r.push([")",")",a,u-o,a,l-o,u]);break;case hu:case Sh:g=p===hu?"'":'"',l=u;do for(v=!1,l=s.indexOf(g,l+1),l===-1&&H("quote"),N=l;s.charCodeAt(N-1)===du;)N-=1,v=!v;while(v);r.push(["string",s.slice(u,l+1),a,u-o,a,l-o,u]),u=l;break;case Ph:Or.lastIndex=u+1,Or.test(s),Or.lastIndex===0?l=s.length-1:l=Or.lastIndex-2,r.push(["atword",s.slice(u,l+1),a,u-o,a,l-o,u]),u=l;break;case du:l=u,p=s.charCodeAt(l+1),r.push(["word",s.slice(u,l+1),a,u-o,a,l-o,u]),u=l;break;case Zn:case Cr:case Xn:l=u+1,$=s.slice(u+1,l+1);s.slice(u-1,u);if(p===Cr&&$.charCodeAt(0)===Cr){l++,r.push(["word",s.slice(u,l),a,u-o,a,l-o,u]),u=l-1;break}r.push(["operator",s.slice(u,l),a,u-o,a,l-o,u]),u=l-1;break;default:if(p===Sr&&(s.charCodeAt(u+1)===Xn||n.loose&&!f&&s.charCodeAt(u+1)===Sr)){if(s.charCodeAt(u+1)===Xn)l=s.indexOf("*/",u+2)+1,l===0&&H("comment");else {let O=s.indexOf(` +`,u+2);l=O!==-1?O-1:i;}d=s.slice(u,l+1),x=d.split(` +`),h=x.length-1,h>0?(b=a+h,w=l-x[h].length):(b=a,w=o),r.push(["comment",d,a,u-o,b,l-w,u]),o=w,a=b,u=l;}else if(p===Nh&&!Mh.test(s.slice(u+1,u+2)))l=u+1,r.push(["#",s.slice(u,l),a,u-o,a,l-o,u]),u=l-1;else if((p===qh||p===Dh)&&s.charCodeAt(u+1)===Zn){l=u+2;do l+=1,p=s.charCodeAt(l);while(l<i&&Bh.test(s.slice(l,l+1)));r.push(["unicoderange",s.slice(u,l),a,u-o,a,l-o,u]),u=l-1;}else if(p===Sr)l=u+1,r.push(["operator",s.slice(u,l),a,u-o,a,l-o,u]),u=l-1;else {let C=Lh;if(p>=mu&&p<=yu&&(C=Me),C.lastIndex=u+1,C.test(s),C.lastIndex===0?l=s.length-1:l=C.lastIndex-2,C===Me||p===Ch){let O=s.charCodeAt(l),ve=s.charCodeAt(l+1),Cs=s.charCodeAt(l+2);(O===Rh||O===Ih)&&(ve===Cr||ve===Zn)&&Cs>=mu&&Cs<=yu&&(Me.lastIndex=l+2,Me.test(s),Me.lastIndex===0?l=s.length-1:l=Me.lastIndex-2);}r.push(["word",s.slice(u,l+1),a,u-o,a,l-o,u]),u=l;}break}u++;}return r};});var ss=y((qb,xu)=>{xu.exports=function(e,n){if(n=typeof n=="number"?n:1/0,!n)return Array.isArray(e)?e.map(function(s){return s}):e;return r(e,1);function r(s,i){return s.reduce(function(o,a){return Array.isArray(a)&&i<n?o.concat(r(a,i+1)):o.concat(a)},[])}};});var is=y((Db,bu)=>{bu.exports=function(t,e){for(var n=-1,r=[];(n=t.indexOf(e,n+1))!==-1;)r.push(n);return r};});var os=y((Lb,ku)=>{function Fh(t,e){for(var n=1,r=t.length,s=t[0],i=t[0],o=1;o<r;++o)if(i=s,s=t[o],e(s,i)){if(o===n){n++;continue}t[n++]=s;}return t.length=n,t}function $h(t){for(var e=1,n=t.length,r=t[0],s=t[0],i=1;i<n;++i,s=r)if(s=r,r=t[i],r!==s){if(i===e){e++;continue}t[e++]=r;}return t.length=e,t}function Uh(t,e,n){return t.length===0?t:e?(n||t.sort(e),Fh(t,e)):(n||t.sort(),$h(t))}ku.exports=Uh;});var Tu=y((Mb,_u)=>{var as=class extends Error{constructor(e){super(e),this.name=this.constructor.name,this.message=e||"An error ocurred while parsing.",typeof Error.captureStackTrace=="function"?Error.captureStackTrace(this,this.constructor):this.stack=new Error(e).stack;}};_u.exports=as;});var Ou=y((Fb,Cu)=>{var Wh=Ba(),zh=$a(),Vh=za(),Yh=Ya(),Gh=Ka(),Kh=Qa(),Hh=Xa(),Qh=eu(),jh=ru(),Eu=su(),Jh=ou(),Su=uu(),Xh=cu(),Zh=vu(),ed=ss(),td=is(),rd=os(),nd=Tu();function sd(t){return t.sort((e,n)=>e-n)}Cu.exports=class{constructor(e,n){let r={loose:!1};this.cache=[],this.input=e,this.options=Object.assign({},r,n),this.position=0,this.unbalanced=0,this.root=new Wh;let s=new zh;this.root.append(s),this.current=s,this.tokens=Zh(e,this.options);}parse(){return this.loop()}colon(){let e=this.currToken;this.newNode(new Yh({value:e[1],source:{start:{line:e[2],column:e[3]},end:{line:e[4],column:e[5]}},sourceIndex:e[6]})),this.position++;}comma(){let e=this.currToken;this.newNode(new Gh({value:e[1],source:{start:{line:e[2],column:e[3]},end:{line:e[4],column:e[5]}},sourceIndex:e[6]})),this.position++;}comment(){let e=!1,n=this.currToken[1].replace(/\/\*|\*\//g,""),r;this.options.loose&&n.startsWith("//")&&(n=n.substring(2),e=!0),r=new Kh({value:n,inline:e,source:{start:{line:this.currToken[2],column:this.currToken[3]},end:{line:this.currToken[4],column:this.currToken[5]}},sourceIndex:this.currToken[6]}),this.newNode(r),this.position++;}error(e,n){throw new nd(e+` at line: ${n[2]}, column ${n[3]}`)}loop(){for(;this.position<this.tokens.length;)this.parseTokens();return !this.current.last&&this.spaces?this.current.raws.before+=this.spaces:this.spaces&&(this.current.last.raws.after+=this.spaces),this.spaces="",this.root}operator(){let e=this.currToken[1],n;if(e==="+"||e==="-"){if(this.options.loose||this.position>0&&(this.current.type==="func"&&this.current.value==="calc"?this.prevToken[0]!=="space"&&this.prevToken[0]!=="("?this.error("Syntax Error",this.currToken):this.nextToken[0]!=="space"&&this.nextToken[0]!=="word"?this.error("Syntax Error",this.currToken):this.nextToken[0]==="word"&&this.current.last.type!=="operator"&&this.current.last.value!=="("&&this.error("Syntax Error",this.currToken):(this.nextToken[0]==="space"||this.nextToken[0]==="operator"||this.prevToken[0]==="operator")&&this.error("Syntax Error",this.currToken)),this.options.loose){if((!this.current.nodes.length||this.current.last&&this.current.last.type==="operator")&&this.nextToken[0]==="word")return this.word()}else if(this.nextToken[0]==="word")return this.word()}return n=new jh({value:this.currToken[1],source:{start:{line:this.currToken[2],column:this.currToken[3]},end:{line:this.currToken[2],column:this.currToken[3]}},sourceIndex:this.currToken[4]}),this.position++,this.newNode(n)}parseTokens(){switch(this.currToken[0]){case"space":this.space();break;case"colon":this.colon();break;case"comma":this.comma();break;case"comment":this.comment();break;case"(":this.parenOpen();break;case")":this.parenClose();break;case"atword":case"word":this.word();break;case"operator":this.operator();break;case"string":this.string();break;case"unicoderange":this.unicodeRange();break;default:this.word();break}}parenOpen(){let e=1,n=this.position+1,r=this.currToken,s;for(;n<this.tokens.length&&e;){let i=this.tokens[n];i[0]==="("&&e++,i[0]===")"&&e--,n++;}if(e&&this.error("Expected closing parenthesis",r),s=this.current.last,s&&s.type==="func"&&s.unbalanced<0&&(s.unbalanced=0,this.current=s),this.current.unbalanced++,this.newNode(new Eu({value:r[1],source:{start:{line:r[2],column:r[3]},end:{line:r[4],column:r[5]}},sourceIndex:r[6]})),this.position++,this.current.type==="func"&&this.current.unbalanced&&this.current.value==="url"&&this.currToken[0]!=="string"&&this.currToken[0]!==")"&&!this.options.loose){let i=this.nextToken,o=this.currToken[1],a={line:this.currToken[2],column:this.currToken[3]};for(;i&&i[0]!==")"&&this.current.unbalanced;)this.position++,o+=this.currToken[1],i=this.nextToken;this.position!==this.tokens.length-1&&(this.position++,this.newNode(new Su({value:o,source:{start:a,end:{line:this.currToken[4],column:this.currToken[5]}},sourceIndex:this.currToken[6]})));}}parenClose(){let e=this.currToken;this.newNode(new Eu({value:e[1],source:{start:{line:e[2],column:e[3]},end:{line:e[4],column:e[5]}},sourceIndex:e[6]})),this.position++,!(this.position>=this.tokens.length-1&&!this.current.unbalanced)&&(this.current.unbalanced--,this.current.unbalanced<0&&this.error("Expected opening parenthesis",e),!this.current.unbalanced&&this.cache.length&&(this.current=this.cache.pop()));}space(){let e=this.currToken;this.position===this.tokens.length-1||this.nextToken[0]===","||this.nextToken[0]===")"?(this.current.last.raws.after+=e[1],this.position++):(this.spaces=e[1],this.position++);}unicodeRange(){let e=this.currToken;this.newNode(new Xh({value:e[1],source:{start:{line:e[2],column:e[3]},end:{line:e[4],column:e[5]}},sourceIndex:e[6]})),this.position++;}splitWord(){let e=this.nextToken,n=this.currToken[1],r=/^[\+\-]?((\d+(\.\d*)?)|(\.\d+))([eE][\+\-]?\d+)?/,s=/^(?!\#([a-z0-9]+))[\#\{\}]/gi,i,o;if(!s.test(n))for(;e&&e[0]==="word";){this.position++;let a=this.currToken[1];n+=a,e=this.nextToken;}i=td(n,"@"),o=sd(rd(ed([[0],i]))),o.forEach((a,u)=>{let c=o[u+1]||n.length,f=n.slice(a,c),p;if(~i.indexOf(a))p=new Vh({value:f.slice(1),source:{start:{line:this.currToken[2],column:this.currToken[3]+a},end:{line:this.currToken[4],column:this.currToken[3]+(c-1)}},sourceIndex:this.currToken[6]+o[u]});else if(r.test(this.currToken[1])){let l=f.replace(r,"");p=new Qh({value:f.replace(l,""),source:{start:{line:this.currToken[2],column:this.currToken[3]+a},end:{line:this.currToken[4],column:this.currToken[3]+(c-1)}},sourceIndex:this.currToken[6]+o[u],unit:l});}else p=new(e&&e[0]==="("?Hh:Su)({value:f,source:{start:{line:this.currToken[2],column:this.currToken[3]+a},end:{line:this.currToken[4],column:this.currToken[3]+(c-1)}},sourceIndex:this.currToken[6]+o[u]}),p.type==="word"?(p.isHex=/^#(.+)/.test(f),p.isColor=/^#([0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(f)):this.cache.push(this.current);this.newNode(p);}),this.position++;}string(){let e=this.currToken,n=this.currToken[1],r=/^(\"|\')/,s=r.test(n),i="",o;s&&(i=n.match(r)[0],n=n.slice(1,n.length-1)),o=new Jh({value:n,source:{start:{line:e[2],column:e[3]},end:{line:e[4],column:e[5]}},sourceIndex:e[6],quoted:s}),o.raws.quote=i,this.newNode(o),this.position++;}word(){return this.splitWord()}newNode(e){return this.spaces&&(e.raws.before+=this.spaces,this.spaces=""),this.current.append(e)}get currToken(){return this.tokens[this.position]}get nextToken(){return this.tokens[this.position+1]}get prevToken(){return this.tokens[this.position-1]}};});var we=y((Nr,qu)=>{Nr.__esModule=!0;var Iu=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function cd(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var fd=function t(e,n){if((typeof e>"u"?"undefined":Iu(e))!=="object")return e;var r=new e.constructor;for(var s in e)if(e.hasOwnProperty(s)){var i=e[s],o=typeof i>"u"?"undefined":Iu(i);s==="parent"&&o==="object"?n&&(r[s]=n):i instanceof Array?r[s]=i.map(function(a){return t(a,r)}):r[s]=t(i,r);}return r},pd=function(){function t(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};cd(this,t);for(var n in e)this[n]=e[n];var r=e.spaces;r=r===void 0?{}:r;var s=r.before,i=s===void 0?"":s,o=r.after,a=o===void 0?"":o;this.spaces={before:i,after:a};}return t.prototype.remove=function(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this},t.prototype.replaceWith=function(){if(this.parent){for(var n in arguments)this.parent.insertBefore(this,arguments[n]);this.remove();}return this},t.prototype.next=function(){return this.parent.at(this.parent.index(this)+1)},t.prototype.prev=function(){return this.parent.at(this.parent.index(this)-1)},t.prototype.clone=function(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=fd(this);for(var s in n)r[s]=n[s];return r},t.prototype.toString=function(){return [this.spaces.before,String(this.value),this.spaces.after].join("")},t}();Nr.default=pd;qu.exports=Nr.default;});var L=y(F=>{F.__esModule=!0;F.TAG="tag";F.STRING="string";F.SELECTOR="selector";F.ROOT="root";F.PSEUDO="pseudo";F.NESTING="nesting";F.ID="id";F.COMMENT="comment";F.COMBINATOR="combinator";F.CLASS="class";F.ATTRIBUTE="attribute";F.UNIVERSAL="universal";});var Rr=y((Pr,Du)=>{Pr.__esModule=!0;var hd=function(){function t(e,n){for(var r=0;r<n.length;r++){var s=n[r];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(e,s.key,s);}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),dd=we(),md=wd(dd),yd=L(),J=gd(yd);function gd(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}function wd(t){return t&&t.__esModule?t:{default:t}}function vd(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function xd(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e&&(typeof e=="object"||typeof e=="function")?e:t}function bd(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}var kd=function(t){bd(e,t);function e(n){vd(this,e);var r=xd(this,t.call(this,n));return r.nodes||(r.nodes=[]),r}return e.prototype.append=function(r){return r.parent=this,this.nodes.push(r),this},e.prototype.prepend=function(r){return r.parent=this,this.nodes.unshift(r),this},e.prototype.at=function(r){return this.nodes[r]},e.prototype.index=function(r){return typeof r=="number"?r:this.nodes.indexOf(r)},e.prototype.removeChild=function(r){r=this.index(r),this.at(r).parent=void 0,this.nodes.splice(r,1);var s=void 0;for(var i in this.indexes)s=this.indexes[i],s>=r&&(this.indexes[i]=s-1);return this},e.prototype.removeAll=function(){for(var i=this.nodes,r=Array.isArray(i),s=0,i=r?i:i[Symbol.iterator]();;){var o;if(r){if(s>=i.length)break;o=i[s++];}else {if(s=i.next(),s.done)break;o=s.value;}var a=o;a.parent=void 0;}return this.nodes=[],this},e.prototype.empty=function(){return this.removeAll()},e.prototype.insertAfter=function(r,s){var i=this.index(r);this.nodes.splice(i+1,0,s);var o=void 0;for(var a in this.indexes)o=this.indexes[a],i<=o&&(this.indexes[a]=o+this.nodes.length);return this},e.prototype.insertBefore=function(r,s){var i=this.index(r);this.nodes.splice(i,0,s);var o=void 0;for(var a in this.indexes)o=this.indexes[a],i<=o&&(this.indexes[a]=o+this.nodes.length);return this},e.prototype.each=function(r){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach++;var s=this.lastEach;if(this.indexes[s]=0,!!this.length){for(var i=void 0,o=void 0;this.indexes[s]<this.length&&(i=this.indexes[s],o=r(this.at(i),i),o!==!1);)this.indexes[s]+=1;if(delete this.indexes[s],o===!1)return !1}},e.prototype.walk=function(r){return this.each(function(s,i){var o=r(s,i);if(o!==!1&&s.length&&(o=s.walk(r)),o===!1)return !1})},e.prototype.walkAttributes=function(r){var s=this;return this.walk(function(i){if(i.type===J.ATTRIBUTE)return r.call(s,i)})},e.prototype.walkClasses=function(r){var s=this;return this.walk(function(i){if(i.type===J.CLASS)return r.call(s,i)})},e.prototype.walkCombinators=function(r){var s=this;return this.walk(function(i){if(i.type===J.COMBINATOR)return r.call(s,i)})},e.prototype.walkComments=function(r){var s=this;return this.walk(function(i){if(i.type===J.COMMENT)return r.call(s,i)})},e.prototype.walkIds=function(r){var s=this;return this.walk(function(i){if(i.type===J.ID)return r.call(s,i)})},e.prototype.walkNesting=function(r){var s=this;return this.walk(function(i){if(i.type===J.NESTING)return r.call(s,i)})},e.prototype.walkPseudos=function(r){var s=this;return this.walk(function(i){if(i.type===J.PSEUDO)return r.call(s,i)})},e.prototype.walkTags=function(r){var s=this;return this.walk(function(i){if(i.type===J.TAG)return r.call(s,i)})},e.prototype.walkUniversals=function(r){var s=this;return this.walk(function(i){if(i.type===J.UNIVERSAL)return r.call(s,i)})},e.prototype.split=function(r){var s=this,i=[];return this.reduce(function(o,a,u){var c=r.call(s,a);return i.push(a),c?(o.push(i),i=[]):u===s.length-1&&o.push(i),o},[])},e.prototype.map=function(r){return this.nodes.map(r)},e.prototype.reduce=function(r,s){return this.nodes.reduce(r,s)},e.prototype.every=function(r){return this.nodes.every(r)},e.prototype.some=function(r){return this.nodes.some(r)},e.prototype.filter=function(r){return this.nodes.filter(r)},e.prototype.sort=function(r){return this.nodes.sort(r)},e.prototype.toString=function(){return this.map(String).join("")},hd(e,[{key:"first",get:function(){return this.at(0)}},{key:"last",get:function(){return this.at(this.length-1)}},{key:"length",get:function(){return this.nodes.length}}]),e}(md.default);Pr.default=kd;Du.exports=Pr.default;});var Mu=y((Ir,Lu)=>{Ir.__esModule=!0;var _d=Rr(),Td=Sd(_d),Ed=L();function Sd(t){return t&&t.__esModule?t:{default:t}}function Cd(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Od(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e&&(typeof e=="object"||typeof e=="function")?e:t}function Ad(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}var Nd=function(t){Ad(e,t);function e(n){Cd(this,e);var r=Od(this,t.call(this,n));return r.type=Ed.ROOT,r}return e.prototype.toString=function(){var r=this.reduce(function(s,i){var o=String(i);return o?s+o+",":""},"").slice(0,-1);return this.trailingComma?r+",":r},e}(Td.default);Ir.default=Nd;Lu.exports=Ir.default;});var Fu=y((qr,Bu)=>{qr.__esModule=!0;var Pd=Rr(),Rd=qd(Pd),Id=L();function qd(t){return t&&t.__esModule?t:{default:t}}function Dd(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Ld(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e&&(typeof e=="object"||typeof e=="function")?e:t}function Md(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}var Bd=function(t){Md(e,t);function e(n){Dd(this,e);var r=Ld(this,t.call(this,n));return r.type=Id.SELECTOR,r}return e}(Rd.default);qr.default=Bd;Bu.exports=qr.default;});var Be=y((Dr,$u)=>{Dr.__esModule=!0;var Fd=function(){function t(e,n){for(var r=0;r<n.length;r++){var s=n[r];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(e,s.key,s);}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),$d=we(),Ud=Wd($d);function Wd(t){return t&&t.__esModule?t:{default:t}}function zd(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Vd(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e&&(typeof e=="object"||typeof e=="function")?e:t}function Yd(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}var Gd=function(t){Yd(e,t);function e(){return zd(this,e),Vd(this,t.apply(this,arguments))}return e.prototype.toString=function(){return [this.spaces.before,this.ns,String(this.value),this.spaces.after].join("")},Fd(e,[{key:"ns",get:function(){var r=this.namespace;return r?(typeof r=="string"?r:"")+"|":""}}]),e}(Ud.default);Dr.default=Gd;$u.exports=Dr.default;});var Wu=y((Lr,Uu)=>{Lr.__esModule=!0;var Kd=Be(),Hd=jd(Kd),Qd=L();function jd(t){return t&&t.__esModule?t:{default:t}}function Jd(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Xd(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e&&(typeof e=="object"||typeof e=="function")?e:t}function Zd(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}var em=function(t){Zd(e,t);function e(n){Jd(this,e);var r=Xd(this,t.call(this,n));return r.type=Qd.CLASS,r}return e.prototype.toString=function(){return [this.spaces.before,this.ns,"."+this.value,this.spaces.after].join("")},e}(Hd.default);Lr.default=em;Uu.exports=Lr.default;});var Vu=y((Mr,zu)=>{Mr.__esModule=!0;var tm=we(),rm=sm(tm),nm=L();function sm(t){return t&&t.__esModule?t:{default:t}}function im(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function om(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e&&(typeof e=="object"||typeof e=="function")?e:t}function am(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}var um=function(t){am(e,t);function e(n){im(this,e);var r=om(this,t.call(this,n));return r.type=nm.COMMENT,r}return e}(rm.default);Mr.default=um;zu.exports=Mr.default;});var Gu=y((Br,Yu)=>{Br.__esModule=!0;var lm=Be(),cm=pm(lm),fm=L();function pm(t){return t&&t.__esModule?t:{default:t}}function hm(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function dm(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e&&(typeof e=="object"||typeof e=="function")?e:t}function mm(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}var ym=function(t){mm(e,t);function e(n){hm(this,e);var r=dm(this,t.call(this,n));return r.type=fm.ID,r}return e.prototype.toString=function(){return [this.spaces.before,this.ns,"#"+this.value,this.spaces.after].join("")},e}(cm.default);Br.default=ym;Yu.exports=Br.default;});var Hu=y((Fr,Ku)=>{Fr.__esModule=!0;var gm=Be(),wm=xm(gm),vm=L();function xm(t){return t&&t.__esModule?t:{default:t}}function bm(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function km(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e&&(typeof e=="object"||typeof e=="function")?e:t}function _m(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}var Tm=function(t){_m(e,t);function e(n){bm(this,e);var r=km(this,t.call(this,n));return r.type=vm.TAG,r}return e}(wm.default);Fr.default=Tm;Ku.exports=Fr.default;});var ju=y(($r,Qu)=>{$r.__esModule=!0;var Em=we(),Sm=Om(Em),Cm=L();function Om(t){return t&&t.__esModule?t:{default:t}}function Am(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Nm(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e&&(typeof e=="object"||typeof e=="function")?e:t}function Pm(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}var Rm=function(t){Pm(e,t);function e(n){Am(this,e);var r=Nm(this,t.call(this,n));return r.type=Cm.STRING,r}return e}(Sm.default);$r.default=Rm;Qu.exports=$r.default;});var Xu=y((Ur,Ju)=>{Ur.__esModule=!0;var Im=Rr(),qm=Lm(Im),Dm=L();function Lm(t){return t&&t.__esModule?t:{default:t}}function Mm(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Bm(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e&&(typeof e=="object"||typeof e=="function")?e:t}function Fm(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}var $m=function(t){Fm(e,t);function e(n){Mm(this,e);var r=Bm(this,t.call(this,n));return r.type=Dm.PSEUDO,r}return e.prototype.toString=function(){var r=this.length?"("+this.map(String).join(",")+")":"";return [this.spaces.before,String(this.value),r,this.spaces.after].join("")},e}(qm.default);Ur.default=$m;Ju.exports=Ur.default;});var el=y((Wr,Zu)=>{Wr.__esModule=!0;var Um=Be(),Wm=Vm(Um),zm=L();function Vm(t){return t&&t.__esModule?t:{default:t}}function Ym(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Gm(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e&&(typeof e=="object"||typeof e=="function")?e:t}function Km(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}var Hm=function(t){Km(e,t);function e(n){Ym(this,e);var r=Gm(this,t.call(this,n));return r.type=zm.ATTRIBUTE,r.raws={},r}return e.prototype.toString=function(){var r=[this.spaces.before,"[",this.ns,this.attribute];return this.operator&&r.push(this.operator),this.value&&r.push(this.value),this.raws.insensitive?r.push(this.raws.insensitive):this.insensitive&&r.push(" i"),r.push("]"),r.concat(this.spaces.after).join("")},e}(Wm.default);Wr.default=Hm;Zu.exports=Wr.default;});var rl=y((zr,tl)=>{zr.__esModule=!0;var Qm=Be(),jm=Xm(Qm),Jm=L();function Xm(t){return t&&t.__esModule?t:{default:t}}function Zm(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function ey(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e&&(typeof e=="object"||typeof e=="function")?e:t}function ty(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}var ry=function(t){ty(e,t);function e(n){Zm(this,e);var r=ey(this,t.call(this,n));return r.type=Jm.UNIVERSAL,r.value="*",r}return e}(jm.default);zr.default=ry;tl.exports=zr.default;});var sl=y((Vr,nl)=>{Vr.__esModule=!0;var ny=we(),sy=oy(ny),iy=L();function oy(t){return t&&t.__esModule?t:{default:t}}function ay(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function uy(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e&&(typeof e=="object"||typeof e=="function")?e:t}function ly(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}var cy=function(t){ly(e,t);function e(n){ay(this,e);var r=uy(this,t.call(this,n));return r.type=iy.COMBINATOR,r}return e}(sy.default);Vr.default=cy;nl.exports=Vr.default;});var ol=y((Yr,il)=>{Yr.__esModule=!0;var fy=we(),py=dy(fy),hy=L();function dy(t){return t&&t.__esModule?t:{default:t}}function my(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function yy(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e&&(typeof e=="object"||typeof e=="function")?e:t}function gy(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}var wy=function(t){gy(e,t);function e(n){my(this,e);var r=yy(this,t.call(this,n));return r.type=hy.NESTING,r.value="&",r}return e}(py.default);Yr.default=wy;il.exports=Yr.default;});var ul=y((Gr,al)=>{Gr.__esModule=!0;Gr.default=vy;function vy(t){return t.sort(function(e,n){return e-n})}al.exports=Gr.default;});var gl=y((Qr,yl)=>{Qr.__esModule=!0;Qr.default=Ny;var ll=39,xy=34,us=92,cl=47,kt=10,ls=32,cs=12,fs=9,ps=13,fl=43,pl=62,hl=126,dl=124,by=44,ky=40,_y=41,Ty=91,Ey=93,Sy=59,ml=42,Cy=58,Oy=38,Ay=64,Kr=/[ \n\t\r\{\(\)'"\\;/]/g,Hr=/[ \n\t\r\(\)\*:;@!&'"\+\|~>,\[\]\\]|\/(?=\*)/g;function Ny(t){for(var e=[],n=t.css.valueOf(),r=void 0,s=void 0,i=void 0,o=void 0,a=void 0,u=void 0,c=void 0,f=void 0,p=void 0,l=void 0,g=void 0,x=n.length,h=-1,d=1,m=0,b=function(v,N){if(t.safe)n+=N,s=n.length-1;else throw t.error("Unclosed "+v,d,m-h,m)};m<x;){switch(r=n.charCodeAt(m),r===kt&&(h=m,d+=1),r){case kt:case ls:case fs:case ps:case cs:s=m;do s+=1,r=n.charCodeAt(s),r===kt&&(h=s,d+=1);while(r===ls||r===kt||r===fs||r===ps||r===cs);e.push(["space",n.slice(m,s),d,m-h,m]),m=s-1;break;case fl:case pl:case hl:case dl:s=m;do s+=1,r=n.charCodeAt(s);while(r===fl||r===pl||r===hl||r===dl);e.push(["combinator",n.slice(m,s),d,m-h,m]),m=s-1;break;case ml:e.push(["*","*",d,m-h,m]);break;case Oy:e.push(["&","&",d,m-h,m]);break;case by:e.push([",",",",d,m-h,m]);break;case Ty:e.push(["[","[",d,m-h,m]);break;case Ey:e.push(["]","]",d,m-h,m]);break;case Cy:e.push([":",":",d,m-h,m]);break;case Sy:e.push([";",";",d,m-h,m]);break;case ky:e.push(["(","(",d,m-h,m]);break;case _y:e.push([")",")",d,m-h,m]);break;case ll:case xy:i=r===ll?"'":'"',s=m;do for(l=!1,s=n.indexOf(i,s+1),s===-1&&b("quote",i),g=s;n.charCodeAt(g-1)===us;)g-=1,l=!l;while(l);e.push(["string",n.slice(m,s+1),d,m-h,d,s-h,m]),m=s;break;case Ay:Kr.lastIndex=m+1,Kr.test(n),Kr.lastIndex===0?s=n.length-1:s=Kr.lastIndex-2,e.push(["at-word",n.slice(m,s+1),d,m-h,d,s-h,m]),m=s;break;case us:for(s=m,c=!0;n.charCodeAt(s+1)===us;)s+=1,c=!c;r=n.charCodeAt(s+1),c&&r!==cl&&r!==ls&&r!==kt&&r!==fs&&r!==ps&&r!==cs&&(s+=1),e.push(["word",n.slice(m,s+1),d,m-h,d,s-h,m]),m=s;break;default:r===cl&&n.charCodeAt(m+1)===ml?(s=n.indexOf("*/",m+2)+1,s===0&&b("comment","*/"),u=n.slice(m,s+1),o=u.split(` +`),a=o.length-1,a>0?(f=d+a,p=s-o[a].length):(f=d,p=h),e.push(["comment",u,d,m-h,f,s-p,m]),h=p,d=f,m=s):(Hr.lastIndex=m+1,Hr.test(n),Hr.lastIndex===0?s=n.length-1:s=Hr.lastIndex-2,e.push(["word",n.slice(m,s+1),d,m-h,d,s-h,m]),m=s);break}m++;}return e}yl.exports=Qr.default;});var xl=y((jr,vl)=>{jr.__esModule=!0;var Py=function(){function t(e,n){for(var r=0;r<n.length;r++){var s=n[r];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(e,s.key,s);}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),Ry=ss(),Iy=I(Ry),qy=is(),hs=I(qy),Dy=os(),Ly=I(Dy),My=Mu(),By=I(My),Fy=Fu(),ds=I(Fy),$y=Wu(),Uy=I($y),Wy=Vu(),zy=I(Wy),Vy=Gu(),Yy=I(Vy),Gy=Hu(),Ky=I(Gy),Hy=ju(),Qy=I(Hy),jy=Xu(),Jy=I(jy),Xy=el(),Zy=I(Xy),eg=rl(),tg=I(eg),rg=sl(),ng=I(rg),sg=ol(),ig=I(sg),og=ul(),ag=I(og),ug=gl(),wl=I(ug),lg=L(),cg=fg(lg);function fg(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}function I(t){return t&&t.__esModule?t:{default:t}}function pg(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var hg=function(){function t(e){pg(this,t),this.input=e,this.lossy=e.options.lossless===!1,this.position=0,this.root=new By.default;var n=new ds.default;return this.root.append(n),this.current=n,this.lossy?this.tokens=(0, wl.default)({safe:e.safe,css:e.css.trim()}):this.tokens=(0, wl.default)(e),this.loop()}return t.prototype.attribute=function(){var n="",r=void 0,s=this.currToken;for(this.position++;this.position<this.tokens.length&&this.currToken[0]!=="]";)n+=this.tokens[this.position][1],this.position++;this.position===this.tokens.length&&!~n.indexOf("]")&&this.error("Expected a closing square bracket.");var i=n.split(/((?:[*~^$|]?=))([^]*)/),o=i[0].split(/(\|)/g),a={operator:i[1],value:i[2],source:{start:{line:s[2],column:s[3]},end:{line:this.currToken[2],column:this.currToken[3]}},sourceIndex:s[4]};if(o.length>1?(o[0]===""&&(o[0]=!0),a.attribute=this.parseValue(o[2]),a.namespace=this.parseNamespace(o[0])):a.attribute=this.parseValue(i[0]),r=new Zy.default(a),i[2]){var u=i[2].split(/(\s+i\s*?)$/),c=u[0].trim();r.value=this.lossy?c:u[0],u[1]&&(r.insensitive=!0,this.lossy||(r.raws.insensitive=u[1])),r.quoted=c[0]==="'"||c[0]==='"',r.raws.unquoted=r.quoted?c.slice(1,-1):c;}this.newNode(r),this.position++;},t.prototype.combinator=function(){if(this.currToken[1]==="|")return this.namespace();for(var n=new ng.default({value:"",source:{start:{line:this.currToken[2],column:this.currToken[3]},end:{line:this.currToken[2],column:this.currToken[3]}},sourceIndex:this.currToken[4]});this.position<this.tokens.length&&this.currToken&&(this.currToken[0]==="space"||this.currToken[0]==="combinator");)this.nextToken&&this.nextToken[0]==="combinator"?(n.spaces.before=this.parseSpace(this.currToken[1]),n.source.start.line=this.nextToken[2],n.source.start.column=this.nextToken[3],n.source.end.column=this.nextToken[3],n.source.end.line=this.nextToken[2],n.sourceIndex=this.nextToken[4]):this.prevToken&&this.prevToken[0]==="combinator"?n.spaces.after=this.parseSpace(this.currToken[1]):this.currToken[0]==="combinator"?n.value=this.currToken[1]:this.currToken[0]==="space"&&(n.value=this.parseSpace(this.currToken[1]," ")),this.position++;return this.newNode(n)},t.prototype.comma=function(){if(this.position===this.tokens.length-1){this.root.trailingComma=!0,this.position++;return}var n=new ds.default;this.current.parent.append(n),this.current=n,this.position++;},t.prototype.comment=function(){var n=new zy.default({value:this.currToken[1],source:{start:{line:this.currToken[2],column:this.currToken[3]},end:{line:this.currToken[4],column:this.currToken[5]}},sourceIndex:this.currToken[6]});this.newNode(n),this.position++;},t.prototype.error=function(n){throw new this.input.error(n)},t.prototype.missingBackslash=function(){return this.error("Expected a backslash preceding the semicolon.")},t.prototype.missingParenthesis=function(){return this.error("Expected opening parenthesis.")},t.prototype.missingSquareBracket=function(){return this.error("Expected opening square bracket.")},t.prototype.namespace=function(){var n=this.prevToken&&this.prevToken[1]||!0;if(this.nextToken[0]==="word")return this.position++,this.word(n);if(this.nextToken[0]==="*")return this.position++,this.universal(n)},t.prototype.nesting=function(){this.newNode(new ig.default({value:this.currToken[1],source:{start:{line:this.currToken[2],column:this.currToken[3]},end:{line:this.currToken[2],column:this.currToken[3]}},sourceIndex:this.currToken[4]})),this.position++;},t.prototype.parentheses=function(){var n=this.current.last;if(n&&n.type===cg.PSEUDO){var r=new ds.default,s=this.current;n.append(r),this.current=r;var i=1;for(this.position++;this.position<this.tokens.length&&i;)this.currToken[0]==="("&&i++,this.currToken[0]===")"&&i--,i?this.parse():(r.parent.source.end.line=this.currToken[2],r.parent.source.end.column=this.currToken[3],this.position++);i&&this.error("Expected closing parenthesis."),this.current=s;}else {var o=1;for(this.position++,n.value+="(";this.position<this.tokens.length&&o;)this.currToken[0]==="("&&o++,this.currToken[0]===")"&&o--,n.value+=this.parseParenthesisToken(this.currToken),this.position++;o&&this.error("Expected closing parenthesis.");}},t.prototype.pseudo=function(){for(var n=this,r="",s=this.currToken;this.currToken&&this.currToken[0]===":";)r+=this.currToken[1],this.position++;if(!this.currToken)return this.error("Expected pseudo-class or pseudo-element");if(this.currToken[0]==="word"){var i=void 0;this.splitWord(!1,function(o,a){r+=o,i=new Jy.default({value:r,source:{start:{line:s[2],column:s[3]},end:{line:n.currToken[4],column:n.currToken[5]}},sourceIndex:s[4]}),n.newNode(i),a>1&&n.nextToken&&n.nextToken[0]==="("&&n.error("Misplaced parenthesis.");});}else this.error('Unexpected "'+this.currToken[0]+'" found.');},t.prototype.space=function(){var n=this.currToken;this.position===0||this.prevToken[0]===","||this.prevToken[0]==="("?(this.spaces=this.parseSpace(n[1]),this.position++):this.position===this.tokens.length-1||this.nextToken[0]===","||this.nextToken[0]===")"?(this.current.last.spaces.after=this.parseSpace(n[1]),this.position++):this.combinator();},t.prototype.string=function(){var n=this.currToken;this.newNode(new Qy.default({value:this.currToken[1],source:{start:{line:n[2],column:n[3]},end:{line:n[4],column:n[5]}},sourceIndex:n[6]})),this.position++;},t.prototype.universal=function(n){var r=this.nextToken;if(r&&r[1]==="|")return this.position++,this.namespace();this.newNode(new tg.default({value:this.currToken[1],source:{start:{line:this.currToken[2],column:this.currToken[3]},end:{line:this.currToken[2],column:this.currToken[3]}},sourceIndex:this.currToken[4]}),n),this.position++;},t.prototype.splitWord=function(n,r){for(var s=this,i=this.nextToken,o=this.currToken[1];i&&i[0]==="word";){this.position++;var a=this.currToken[1];if(o+=a,a.lastIndexOf("\\")===a.length-1){var u=this.nextToken;u&&u[0]==="space"&&(o+=this.parseSpace(u[1]," "),this.position++);}i=this.nextToken;}var c=(0, hs.default)(o,"."),f=(0, hs.default)(o,"#"),p=(0, hs.default)(o,"#{");p.length&&(f=f.filter(function(g){return !~p.indexOf(g)}));var l=(0, ag.default)((0, Ly.default)((0, Iy.default)([[0],c,f])));l.forEach(function(g,x){var h=l[x+1]||o.length,d=o.slice(g,h);if(x===0&&r)return r.call(s,d,l.length);var m=void 0;~c.indexOf(g)?m=new Uy.default({value:d.slice(1),source:{start:{line:s.currToken[2],column:s.currToken[3]+g},end:{line:s.currToken[4],column:s.currToken[3]+(h-1)}},sourceIndex:s.currToken[6]+l[x]}):~f.indexOf(g)?m=new Yy.default({value:d.slice(1),source:{start:{line:s.currToken[2],column:s.currToken[3]+g},end:{line:s.currToken[4],column:s.currToken[3]+(h-1)}},sourceIndex:s.currToken[6]+l[x]}):m=new Ky.default({value:d,source:{start:{line:s.currToken[2],column:s.currToken[3]+g},end:{line:s.currToken[4],column:s.currToken[3]+(h-1)}},sourceIndex:s.currToken[6]+l[x]}),s.newNode(m,n);}),this.position++;},t.prototype.word=function(n){var r=this.nextToken;return r&&r[1]==="|"?(this.position++,this.namespace()):this.splitWord(n)},t.prototype.loop=function(){for(;this.position<this.tokens.length;)this.parse(!0);return this.root},t.prototype.parse=function(n){switch(this.currToken[0]){case"space":this.space();break;case"comment":this.comment();break;case"(":this.parentheses();break;case")":n&&this.missingParenthesis();break;case"[":this.attribute();break;case"]":this.missingSquareBracket();break;case"at-word":case"word":this.word();break;case":":this.pseudo();break;case";":this.missingBackslash();break;case",":this.comma();break;case"*":this.universal();break;case"&":this.nesting();break;case"combinator":this.combinator();break;case"string":this.string();break}},t.prototype.parseNamespace=function(n){if(this.lossy&&typeof n=="string"){var r=n.trim();return r.length?r:!0}return n},t.prototype.parseSpace=function(n,r){return this.lossy?r||"":n},t.prototype.parseValue=function(n){return this.lossy&&n&&typeof n=="string"?n.trim():n},t.prototype.parseParenthesisToken=function(n){return this.lossy?n[0]==="space"?this.parseSpace(n[1]," "):this.parseValue(n[1]):n[1]},t.prototype.newNode=function(n,r){return r&&(n.namespace=this.parseNamespace(r)),this.spaces&&(n.spaces.before=this.spaces,this.spaces=""),this.current.append(n)},Py(t,[{key:"currToken",get:function(){return this.tokens[this.position]}},{key:"nextToken",get:function(){return this.tokens[this.position+1]}},{key:"prevToken",get:function(){return this.tokens[this.position-1]}}]),t}();jr.default=hg;vl.exports=jr.default;});var kl=y((Jr,bl)=>{Jr.__esModule=!0;var dg=function(){function t(e,n){for(var r=0;r<n.length;r++){var s=n[r];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(e,s.key,s);}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),mg=xl(),yg=gg(mg);function gg(t){return t&&t.__esModule?t:{default:t}}function wg(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var vg=function(){function t(e){return wg(this,t),this.func=e||function(){},this}return t.prototype.process=function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=new yg.default({css:n,error:function(o){throw new Error(o)},options:r});return this.res=s,this.func(s),this},dg(t,[{key:"result",get:function(){return String(this.res)}}]),t}();Jr.default=vg;bl.exports=Jr.default;});var gs=y(ys=>{Object.defineProperty(ys,"__esModule",{value:!0});function _g(t){this.after=t.after,this.before=t.before,this.type=t.type,this.value=t.value,this.sourceIndex=t.sourceIndex;}ys.default=_g;});var vs=y(ws=>{Object.defineProperty(ws,"__esModule",{value:!0});var Tg=gs(),Sl=Eg(Tg);function Eg(t){return t&&t.__esModule?t:{default:t}}function _t(t){var e=this;this.constructor(t),this.nodes=t.nodes,this.after===void 0&&(this.after=this.nodes.length>0?this.nodes[this.nodes.length-1].after:""),this.before===void 0&&(this.before=this.nodes.length>0?this.nodes[0].before:""),this.sourceIndex===void 0&&(this.sourceIndex=this.before.length),this.nodes.forEach(function(n){n.parent=e;});}_t.prototype=Object.create(Sl.default.prototype);_t.constructor=Sl.default;_t.prototype.walk=function(e,n){for(var r=typeof e=="string"||e instanceof RegExp,s=r?n:e,i=typeof e=="string"?new RegExp(e):e,o=0;o<this.nodes.length;o++){var a=this.nodes[o],u=r?i.test(a.type):!0;if(u&&s&&s(a,o,this.nodes)===!1||a.nodes&&a.walk(e,n)===!1)return !1}return !0};_t.prototype.each=function(){for(var e=arguments.length<=0||arguments[0]===void 0?function(){}:arguments[0],n=0;n<this.nodes.length;n++){var r=this.nodes[n];if(e(r,n,this.nodes)===!1)return !1}return !0};ws.default=_t;});var Nl=y(Tt=>{Object.defineProperty(Tt,"__esModule",{value:!0});Tt.parseMediaFeature=Al;Tt.parseMediaQuery=bs;Tt.parseMediaList=Og;var Sg=gs(),Cl=Ol(Sg),Cg=vs(),xs=Ol(Cg);function Ol(t){return t&&t.__esModule?t:{default:t}}function Al(t){var e=arguments.length<=1||arguments[1]===void 0?0:arguments[1],n=[{mode:"normal",character:null}],r=[],s=0,i="",o=null,a=null,u=e,c=t;t[0]==="("&&t[t.length-1]===")"&&(c=t.substring(1,t.length-1),u++);for(var f=0;f<c.length;f++){var p=c[f];if((p==="'"||p==='"')&&(n[s].isCalculationEnabled===!0?(n.push({mode:"string",isCalculationEnabled:!1,character:p}),s++):n[s].mode==="string"&&n[s].character===p&&c[f-1]!=="\\"&&(n.pop(),s--)),p==="{"?(n.push({mode:"interpolation",isCalculationEnabled:!0}),s++):p==="}"&&(n.pop(),s--),n[s].mode==="normal"&&p===":"){var l=c.substring(f+1);a={type:"value",before:/^(\s*)/.exec(l)[1],after:/(\s*)$/.exec(l)[1],value:l.trim()},a.sourceIndex=a.before.length+f+1+u,o={type:"colon",sourceIndex:f+u,after:a.before,value:":"};break}i+=p;}return i={type:"media-feature",before:/^(\s*)/.exec(i)[1],after:/(\s*)$/.exec(i)[1],value:i.trim()},i.sourceIndex=i.before.length+u,r.push(i),o!==null&&(o.before=i.after,r.push(o)),a!==null&&r.push(a),r}function bs(t){var e=arguments.length<=1||arguments[1]===void 0?0:arguments[1],n=[],r=0,s=!1,i=void 0;function o(){return {before:"",after:"",value:""}}i=o();for(var a=0;a<t.length;a++){var u=t[a];s?(i.value+=u,(u==="{"||u==="(")&&r++,(u===")"||u==="}")&&r--):u.search(/\s/)!==-1?i.before+=u:(u==="("&&(i.type="media-feature-expression",r++),i.value=u,i.sourceIndex=e+a,s=!0),s&&r===0&&(u===")"||a===t.length-1||t[a+1].search(/\s/)!==-1)&&(["not","only","and"].indexOf(i.value)!==-1&&(i.type="keyword"),i.type==="media-feature-expression"&&(i.nodes=Al(i.value,i.sourceIndex)),n.push(Array.isArray(i.nodes)?new xs.default(i):new Cl.default(i)),i=o(),s=!1);}for(var c=0;c<n.length;c++)if(i=n[c],c>0&&(n[c-1].after=i.before),i.type===void 0){if(c>0){if(n[c-1].type==="media-feature-expression"){i.type="keyword";continue}if(n[c-1].value==="not"||n[c-1].value==="only"){i.type="media-type";continue}if(n[c-1].value==="and"){i.type="media-feature-expression";continue}n[c-1].type==="media-type"&&(n[c+1]?i.type=n[c+1].type==="media-feature-expression"?"keyword":"media-feature-expression":i.type="media-feature-expression");}if(c===0){if(!n[c+1]){i.type="media-type";continue}if(n[c+1]&&(n[c+1].type==="media-feature-expression"||n[c+1].type==="keyword")){i.type="media-type";continue}if(n[c+2]){if(n[c+2].type==="media-feature-expression"){i.type="media-type",n[c+1].type="keyword";continue}if(n[c+2].type==="keyword"){i.type="keyword",n[c+1].type="media-type";continue}}if(n[c+3]&&n[c+3].type==="media-feature-expression"){i.type="keyword",n[c+1].type="media-type",n[c+2].type="keyword";continue}}}return n}function Og(t){var e=[],n=0,r=0,s=/^(\s*)url\s*\(/.exec(t);if(s!==null){for(var i=s[0].length,o=1;o>0;){var a=t[i];a==="("&&o++,a===")"&&o--,i++;}e.unshift(new Cl.default({type:"url",value:t.substring(0,i).trim(),sourceIndex:s[1].length,before:s[1],after:/^(\s*)/.exec(t.substring(i))[1]})),n=i;}for(var u=n;u<t.length;u++){var c=t[u];if(c==="("&&r++,c===")"&&r--,r===0&&c===","){var f=t.substring(n,u),p=/^(\s*)/.exec(f)[1];e.push(new xs.default({type:"media-query",value:f.trim(),sourceIndex:n+p.length,nodes:bs(f,n),before:p,after:/(\s*)$/.exec(f)[1]})),n=u+1;}}var l=t.substring(n),g=/^(\s*)/.exec(l)[1];return e.push(new xs.default({type:"media-query",value:l.trim(),sourceIndex:n+g.length,nodes:bs(l,n),before:g,after:/(\s*)$/.exec(l)[1]})),e}});var Pl=y(ks=>{Object.defineProperty(ks,"__esModule",{value:!0});ks.default=Ig;var Ag=vs(),Ng=Rg(Ag),Pg=Nl();function Rg(t){return t&&t.__esModule?t:{default:t}}function Ig(t){return new Ng.default({nodes:(0, Pg.parseMediaList)(t),type:"media-query-list",value:t.trim()})}});var Ss={};Os(Ss,{languages:()=>Ul,options:()=>zl,parsers:()=>Es,printers:()=>Wg});var jl=(t,e,n,r)=>{if(!(t&&e==null))return e.replaceAll?e.replaceAll(n,r):n.global?e.replace(n,r):e.split(n).join(r)},T=jl;var Et="'",As='"';function Jl(t,e){let n=e===!0||e===Et?Et:As,r=n===Et?As:Et,s=0,i=0;for(let o of t)o===n?s++:o===r&&i++;return s>i?r:n}var Ns=Jl;function Xl(t,e,n){let r=e==='"'?"'":'"',i=T(!1,t,/\\(.)|(["'])/gs,(o,a,u)=>a===r?a:u===e?"\\"+u:u||(n&&/^[^\n\r"'0-7\\bfnrt-vx\u2028\u2029]$/.test(a)?a:"\\"+a));return e+i+e}var Ps=Xl;function Zl(t,e){let n=t.slice(1,-1),r=e.parser==="json"||e.parser==="json5"&&e.quoteProps==="preserve"&&!e.singleQuote?'"':e.__isInHtmlAttribute?"'":Ns(n,e.singleQuote);return Ps(n,r,!(e.parser==="css"||e.parser==="less"||e.parser==="scss"||e.__embeddedInHtml))}var St=Zl;function ec(t){return Array.isArray(t)&&t.length>0}var ee=ec;var Fe="string",$e="array",Ue="cursor",xe="indent",be="align",We="trim",ke="group",te="fill",le="if-break",ze="indent-if-break",Ve="line-suffix",Ye="line-suffix-boundary",Q="line",Ge="label",_e="break-parent",Ct=new Set([Ue,xe,be,We,ke,te,le,ze,Ve,Ye,Q,Ge,_e]);function tc(t){if(typeof t=="string")return Fe;if(Array.isArray(t))return $e;if(!t)return;let{type:e}=t;if(Ct.has(e))return e}var Ke=tc;var rc=t=>new Intl.ListFormat("en-US",{type:"disjunction"}).format(t);function nc(t){let e=t===null?"null":typeof t;if(e!=="string"&&e!=="object")return `Unexpected doc '${e}', +Expected it to be 'string' or 'object'.`;if(Ke(t))throw new Error("doc is valid.");let n=Object.prototype.toString.call(t);if(n!=="[object Object]")return `Unexpected doc '${n}'.`;let r=rc([...Ct].map(s=>`'${s}'`));return `Unexpected doc.type '${t.type}'. +Expected it to be ${r}.`}var en=class extends Error{name="InvalidDocError";constructor(e){super(nc(e)),this.doc=e;}},tn=en;var Rs=()=>{},Ot=Rs;function q(t){return {type:xe,contents:t}}function Is(t,e){return {type:be,contents:e,n:t}}function D(t,e={}){return Ot(e.expandedStates),{type:ke,id:e.id,contents:t,break:!!e.shouldBreak,expandedStates:e.expandedStates}}function qs(t){return Is({type:"root"},t)}function fe(t){return Is(-1,t)}function He(t){return {type:te,parts:t}}function At(t,e="",n={}){return {type:le,breakContents:t,flatContents:e,groupId:n.groupId}}var Qe={type:_e};var sc={type:Q,hard:!0};var A={type:Q},M={type:Q,soft:!0},_=[sc,Qe];function Y(t,e){let n=[];for(let r=0;r<e.length;r++)r!==0&&n.push(t),n.push(e[r]);return n}var ic=(t,e,n)=>{if(!(t&&e==null))return Array.isArray(e)||typeof e=="string"?e[n<0?e.length+n:n]:e.at(n)},G=ic;var Ds=t=>{if(Array.isArray(t))return t;if(t.type!==te)throw new Error(`Expect doc to be 'array' or '${te}'.`);return t.parts};function oc(t,e){if(typeof t=="string")return e(t);let n=new Map;return r(t);function r(i){if(n.has(i))return n.get(i);let o=s(i);return n.set(i,o),o}function s(i){switch(Ke(i)){case $e:return e(i.map(r));case te:return e({...i,parts:i.parts.map(r)});case le:return e({...i,breakContents:r(i.breakContents),flatContents:r(i.flatContents)});case ke:{let{expandedStates:o,contents:a}=i;return o?(o=o.map(r),a=o[0]):a=r(a),e({...i,contents:a,expandedStates:o})}case be:case xe:case ze:case Ge:case Ve:return e({...i,contents:r(i.contents)});case Fe:case Ue:case We:case Ye:case Q:case _e:return e(i);default:throw new tn(i)}}}function ac(t){return t.type===Q&&!t.hard?t.soft?"":" ":t.type===le?t.flatContents:t}function Ls(t){return oc(t,ac)}var rn=class extends Error{name="UnexpectedNodeError";constructor(e,n,r="type"){super(`Unexpected ${n} node ${r}: ${JSON.stringify(e[r])}.`),this.node=e;}},Ms=rn;function uc(t){return (t==null?void 0:t.type)==="front-matter"}var Te=uc;var lc=new Set(["raw","raws","sourceIndex","source","before","after","trailingComma","spaces"]);function Bs(t,e,n){if(Te(t)&&t.lang==="yaml"&&delete e.value,t.type==="css-comment"&&n.type==="css-root"&&n.nodes.length>0&&((n.nodes[0]===t||Te(n.nodes[0])&&n.nodes[1]===t)&&(delete e.text,/^\*\s*@(?:format|prettier)\s*$/.test(t.text))||n.type==="css-root"&&G(!1,n.nodes,-1)===t))return null;if(t.type==="value-root"&&delete e.text,(t.type==="media-query"||t.type==="media-query-list"||t.type==="media-feature-expression")&&delete e.value,t.type==="css-rule"&&delete e.params,t.type==="selector-combinator"&&(e.value=T(!1,e.value,/\s+/g," ")),t.type==="media-feature"&&(e.value=T(!1,e.value," ","")),(t.type==="value-word"&&(t.isColor&&t.isHex||["initial","inherit","unset","revert"].includes(e.value.toLowerCase()))||t.type==="media-feature"||t.type==="selector-root-invalid"||t.type==="selector-pseudo")&&(e.value=e.value.toLowerCase()),t.type==="css-decl"&&(e.prop=e.prop.toLowerCase()),(t.type==="css-atrule"||t.type==="css-import")&&(e.name=e.name.toLowerCase()),t.type==="value-number"&&(e.unit=e.unit.toLowerCase()),t.type==="value-unknown"&&(e.value=T(!1,e.value,/;$/g,"")),(t.type==="media-feature"||t.type==="media-keyword"||t.type==="media-type"||t.type==="media-unknown"||t.type==="media-url"||t.type==="media-value"||t.type==="selector-attribute"||t.type==="selector-string"||t.type==="selector-class"||t.type==="selector-combinator"||t.type==="value-string")&&e.value&&(e.value=cc(e.value)),t.type==="selector-attribute"&&(e.attribute=e.attribute.trim(),e.namespace&&typeof e.namespace=="string"&&(e.namespace=e.namespace.trim(),e.namespace.length===0&&(e.namespace=!0)),e.value&&(e.value=T(!1,e.value.trim(),/^["']|["']$/g,""),delete e.quoted)),(t.type==="media-value"||t.type==="media-type"||t.type==="value-number"||t.type==="selector-root-invalid"||t.type==="selector-class"||t.type==="selector-combinator"||t.type==="selector-tag")&&e.value&&(e.value=T(!1,e.value,/([\d+.Ee-]+)([A-Za-z]*)/g,(r,s,i)=>{let o=Number(s);return Number.isNaN(o)?r:o+i.toLowerCase()})),t.type==="selector-tag"){let r=t.value.toLowerCase();["from","to"].includes(r)&&(e.value=r);}if(t.type==="css-atrule"&&t.name.toLowerCase()==="supports"&&delete e.value,t.type==="selector-unknown"&&delete e.value,t.type==="value-comma_group"){let r=t.groups.findIndex(s=>s.type==="value-number"&&s.unit==="...");r!==-1&&(e.groups[r].unit="",e.groups.splice(r+1,0,{type:"value-word",value:"...",isColor:!1,isHex:!1}));}if(t.type==="value-comma_group"&&t.groups.some(r=>r.type==="value-atword"&&r.value.endsWith("[")||r.type==="value-word"&&r.value.startsWith("]")))return {type:"value-atword",value:t.groups.map(r=>r.value).join(""),group:{open:null,close:null,groups:[],type:"value-paren_group"}}}Bs.ignoredProperties=lc;function cc(t){return T(!1,T(!1,t,"'",'"'),/\\([^\dA-Fa-f])/g,"$1")}var Fs=Bs;async function fc(t,e){if(t.lang==="yaml"){let n=t.value.trim(),r=n?await e(n,{parser:"yaml"}):"";return qs([t.startDelimiter,_,r,r?_:"",t.endDelimiter])}}var $s=fc;function Us(t){let{node:e}=t;if(e.type==="front-matter")return async n=>{let r=await $s(e,n);return r?[r,_]:void 0}}Us.getVisitorKeys=t=>t.type==="css-root"?["frontMatter"]:[];var Ws=Us;var re=ue(Qs(),1);function bc(t){if(!t.startsWith("#!"))return "";let e=t.indexOf(` +`);return e===-1?t:t.slice(0,e)}var js=bc;function Js(t){let e=js(t);e&&(t=t.slice(e.length+1));let n=(0, re.extract)(t),{pragmas:r,comments:s}=(0, re.parseWithComments)(n);return {shebang:e,text:t,pragmas:r,comments:s}}function Xs(t){let{pragmas:e}=Js(t);return Object.prototype.hasOwnProperty.call(e,"prettier")||Object.prototype.hasOwnProperty.call(e,"format")}function Zs(t){let{shebang:e,text:n,pragmas:r,comments:s}=Js(t),i=(0, re.strip)(n),o=(0, re.print)({pragmas:{format:"",...r},comments:s.trimStart()});return (e?`${e} +`:"")+o+(i.startsWith(` `)?` `:` -`)+v}i.exports={hasPragma:c,insertPragma:t};}}),ll=C({"src/language-css/pragma.js"(r,i){I();var s=cl(),l=Os();function o(f){return s.hasPragma(l(f).content)}function h(f){let{frontMatter:p,content:g}=l(f);return (p?p.raw+` +`)+i}var kc=new RegExp("^(?<startDelimiter>-{3}|\\+{3})(?<language>[^\\n]*)\\n(?:|(?<value>.*?)\\n)(?<endDelimiter>\\k<startDelimiter>|\\.{3})[^\\S\\n]*(?:\\n|$)","s");function _c(t){let e=t.match(kc);if(!e)return {content:t};let{startDelimiter:n,language:r,value:s="",endDelimiter:i}=e.groups,o=r.trim()||"yaml";if(n==="+++"&&(o="toml"),o!=="yaml"&&n!==i)return {content:t};let[a]=e;return {frontMatter:{type:"front-matter",lang:o,value:s,startDelimiter:n,endDelimiter:i,raw:a.replace(/\n$/,"")},content:T(!1,a,/[^\n]/g," ")+t.slice(a.length)}}var je=_c;function ei(t){return Xs(je(t).content)}function ti(t){let{frontMatter:e,content:n}=je(t);return (e?e.raw+` -`:"")+s.insertPragma(g)}i.exports={hasPragma:o,insertPragma:h};}}),fl=C({"src/utils/text/skip.js"(r,i){I();function s(p){return (g,c,t)=>{let e=t&&t.backwards;if(c===!1)return !1;let{length:a}=g,n=c;for(;n>=0&&n<a;){let u=g.charAt(n);if(p instanceof RegExp){if(!p.test(u))return n}else if(!p.includes(u))return n;e?n--:n++;}return n===-1||n===a?n:!1}}var l=s(/\s/),o=s(" "),h=s(",; "),f=s(/[^\n\r]/);i.exports={skipWhitespace:l,skipSpaces:o,skipToLineEnd:h,skipEverythingButNewLine:f};}}),pl=C({"src/utils/line-column-to-index.js"(r,i){I(),i.exports=function(s,l){let o=0;for(let h=0;h<s.line-1;++h)o=l.indexOf(` -`,o)+1;return o+s.column};}}),ss=C({"src/language-css/loc.js"(r,i){I();var{skipEverythingButNewLine:s}=fl(),l=Ss(),o=pl();function h(n,u){return typeof n.sourceIndex=="number"?n.sourceIndex:n.source?o(n.source.start,u)-1:null}function f(n,u){if(n.type==="css-comment"&&n.inline)return s(u,n.source.startOffset);let m=n.nodes&&l(n.nodes);return m&&n.source&&!n.source.end&&(n=m),n.source&&n.source.end?o(n.source.end,u):null}function p(n,u){n.source&&(n.source.startOffset=h(n,u),n.source.endOffset=f(n,u));for(let m in n){let v=n[m];m==="source"||!v||typeof v!="object"||(v.type==="value-root"||v.type==="value-unknown"?g(v,c(n),v.text||v.value):p(v,u));}}function g(n,u,m){n.source&&(n.source.startOffset=h(n,m)+u,n.source.endOffset=f(n,m)+u);for(let v in n){let y=n[v];v==="source"||!y||typeof y!="object"||g(y,u,m);}}function c(n){let u=n.source.startOffset;return typeof n.prop=="string"&&(u+=n.prop.length),n.type==="css-atrule"&&typeof n.name=="string"&&(u+=1+n.name.length+n.raws.afterName.match(/^\s*:?\s*/)[0].length),n.type!=="css-atrule"&&n.raws&&typeof n.raws.between=="string"&&(u+=n.raws.between.length),u}function t(n){let u="initial",m="initial",v,y=!1,w=[];for(let d=0;d<n.length;d++){let _=n[d];switch(u){case"initial":if(_==="'"){u="single-quotes";continue}if(_==='"'){u="double-quotes";continue}if((_==="u"||_==="U")&&n.slice(d,d+4).toLowerCase()==="url("){u="url",d+=3;continue}if(_==="*"&&n[d-1]==="/"){u="comment-block";continue}if(_==="/"&&n[d-1]==="/"){u="comment-inline",v=d-1;continue}continue;case"single-quotes":if(_==="'"&&n[d-1]!=="\\"&&(u=m,m="initial"),_===` -`||_==="\r")return n;continue;case"double-quotes":if(_==='"'&&n[d-1]!=="\\"&&(u=m,m="initial"),_===` -`||_==="\r")return n;continue;case"url":if(_===")"&&(u="initial"),_===` -`||_==="\r")return n;if(_==="'"){u="single-quotes",m="url";continue}if(_==='"'){u="double-quotes",m="url";continue}continue;case"comment-block":_==="/"&&n[d-1]==="*"&&(u="initial");continue;case"comment-inline":(_==='"'||_==="'"||_==="*")&&(y=!0),(_===` -`||_==="\r")&&(y&&w.push([v,d]),u="initial",y=!1);continue}}for(let[d,_]of w)n=n.slice(0,d)+n.slice(d,_).replace(/["'*]/g," ")+n.slice(_);return n}function e(n){return n.source.startOffset}function a(n){return n.source.endOffset}i.exports={locStart:e,locEnd:a,calculateLoc:p,replaceQuotesInInlineComments:t};}}),hl=C({"src/utils/is-non-empty-array.js"(r,i){I();function s(l){return Array.isArray(l)&&l.length>0}i.exports=s;}}),dl=C({"src/language-css/utils/has-scss-interpolation.js"(r,i){I();var s=hl();function l(o){if(s(o)){for(let h=o.length-1;h>0;h--)if(o[h].type==="word"&&o[h].value==="{"&&o[h-1].type==="word"&&o[h-1].value.endsWith("#"))return !0}return !1}i.exports=l;}}),vl=C({"src/language-css/utils/has-string-or-function.js"(r,i){I();function s(l){return l.some(o=>o.type==="string"||o.type==="func")}i.exports=s;}}),ml=C({"src/language-css/utils/is-less-parser.js"(r,i){I();function s(l){return l.parser==="css"||l.parser==="less"}i.exports=s;}}),gl=C({"src/language-css/utils/is-scss.js"(r,i){I();function s(l,o){return l==="less"||l==="scss"?l==="scss":/(?:\w\s*:\s*[^:}]+|#){|@import[^\n]+(?:url|,)/.test(o)}i.exports=s;}}),yl=C({"src/language-css/utils/is-scss-nested-property-node.js"(r,i){I();function s(l){return l.selector?l.selector.replace(/\/\*.*?\*\//,"").replace(/\/\/.*\n/,"").trim().endsWith(":"):!1}i.exports=s;}}),wl=C({"src/language-css/utils/is-scss-variable.js"(r,i){I();function s(l){return Boolean((l==null?void 0:l.type)==="word"&&l.value.startsWith("$"))}i.exports=s;}}),_l=C({"src/language-css/utils/stringify-node.js"(r,i){I();function s(l){var o,h,f;if(l.groups){var p,g,c;let y=((p=l.open)===null||p===void 0?void 0:p.value)||"",w=l.groups.map(_=>s(_)).join(((g=l.groups[0])===null||g===void 0?void 0:g.type)==="comma_group"?",":""),d=((c=l.close)===null||c===void 0?void 0:c.value)||"";return y+w+d}let t=((o=l.raws)===null||o===void 0?void 0:o.before)||"",e=((h=l.raws)===null||h===void 0?void 0:h.quote)||"",a=l.type==="atword"?"@":"",n=l.value||"",u=l.unit||"",m=l.group?s(l.group):"",v=((f=l.raws)===null||f===void 0?void 0:f.after)||"";return t+e+a+n+e+u+m+v}i.exports=s;}}),bl=C({"src/language-css/utils/is-module-rule-name.js"(r,i){I();var s=new Set(["import","use","forward"]);function l(o){return s.has(o)}i.exports=l;}}),we=C({"node_modules/postcss-values-parser/lib/node.js"(r,i){I();var s=function(l,o){let h=new l.constructor;for(let f in l){if(!l.hasOwnProperty(f))continue;let p=l[f],g=typeof p;f==="parent"&&g==="object"?o&&(h[f]=o):f==="source"?h[f]=p:p instanceof Array?h[f]=p.map(c=>s(c,h)):f!=="before"&&f!=="after"&&f!=="between"&&f!=="semicolon"&&(g==="object"&&p!==null&&(p=s(p)),h[f]=p);}return h};i.exports=class{constructor(o){o=o||{},this.raws={before:"",after:""};for(let h in o)this[h]=o[h];}remove(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this}toString(){return [this.raws.before,String(this.value),this.raws.after].join("")}clone(o){o=o||{};let h=s(this);for(let f in o)h[f]=o[f];return h}cloneBefore(o){o=o||{};let h=this.clone(o);return this.parent.insertBefore(this,h),h}cloneAfter(o){o=o||{};let h=this.clone(o);return this.parent.insertAfter(this,h),h}replaceWith(){let o=Array.prototype.slice.call(arguments);if(this.parent){for(let h of o)this.parent.insertBefore(this,h);this.remove();}return this}moveTo(o){return this.cleanRaws(this.root()===o.root()),this.remove(),o.append(this),this}moveBefore(o){return this.cleanRaws(this.root()===o.root()),this.remove(),o.parent.insertBefore(o,this),this}moveAfter(o){return this.cleanRaws(this.root()===o.root()),this.remove(),o.parent.insertAfter(o,this),this}next(){let o=this.parent.index(this);return this.parent.nodes[o+1]}prev(){let o=this.parent.index(this);return this.parent.nodes[o-1]}toJSON(){let o={};for(let h in this){if(!this.hasOwnProperty(h)||h==="parent")continue;let f=this[h];f instanceof Array?o[h]=f.map(p=>typeof p=="object"&&p.toJSON?p.toJSON():p):typeof f=="object"&&f.toJSON?o[h]=f.toJSON():o[h]=f;}return o}root(){let o=this;for(;o.parent;)o=o.parent;return o}cleanRaws(o){delete this.raws.before,delete this.raws.after,o||delete this.raws.between;}positionInside(o){let h=this.toString(),f=this.source.start.column,p=this.source.start.line;for(let g=0;g<o;g++)h[g]===` -`?(f=1,p+=1):f+=1;return {line:p,column:f}}positionBy(o){let h=this.source.start;if(Object(o).index)h=this.positionInside(o.index);else if(Object(o).word){let f=this.toString().indexOf(o.word);f!==-1&&(h=this.positionInside(f));}return h}};}}),ue=C({"node_modules/postcss-values-parser/lib/container.js"(r,i){I();var s=we(),l=class extends s{constructor(o){super(o),this.nodes||(this.nodes=[]);}push(o){return o.parent=this,this.nodes.push(o),this}each(o){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach+=1;let h=this.lastEach,f,p;if(this.indexes[h]=0,!!this.nodes){for(;this.indexes[h]<this.nodes.length&&(f=this.indexes[h],p=o(this.nodes[f],f),p!==!1);)this.indexes[h]+=1;return delete this.indexes[h],p}}walk(o){return this.each((h,f)=>{let p=o(h,f);return p!==!1&&h.walk&&(p=h.walk(o)),p})}walkType(o,h){if(!o||!h)throw new Error("Parameters {type} and {callback} are required.");let f=typeof o=="function";return this.walk((p,g)=>{if(f&&p instanceof o||!f&&p.type===o)return h.call(this,p,g)})}append(o){return o.parent=this,this.nodes.push(o),this}prepend(o){return o.parent=this,this.nodes.unshift(o),this}cleanRaws(o){if(super.cleanRaws(o),this.nodes)for(let h of this.nodes)h.cleanRaws(o);}insertAfter(o,h){let f=this.index(o),p;this.nodes.splice(f+1,0,h);for(let g in this.indexes)p=this.indexes[g],f<=p&&(this.indexes[g]=p+this.nodes.length);return this}insertBefore(o,h){let f=this.index(o),p;this.nodes.splice(f,0,h);for(let g in this.indexes)p=this.indexes[g],f<=p&&(this.indexes[g]=p+this.nodes.length);return this}removeChild(o){o=this.index(o),this.nodes[o].parent=void 0,this.nodes.splice(o,1);let h;for(let f in this.indexes)h=this.indexes[f],h>=o&&(this.indexes[f]=h-1);return this}removeAll(){for(let o of this.nodes)o.parent=void 0;return this.nodes=[],this}every(o){return this.nodes.every(o)}some(o){return this.nodes.some(o)}index(o){return typeof o=="number"?o:this.nodes.indexOf(o)}get first(){if(!!this.nodes)return this.nodes[0]}get last(){if(!!this.nodes)return this.nodes[this.nodes.length-1]}toString(){let o=this.nodes.map(String).join("");return this.value&&(o=this.value+o),this.raws.before&&(o=this.raws.before+o),this.raws.after&&(o+=this.raws.after),o}};l.registerWalker=o=>{let h="walk"+o.name;h.lastIndexOf("s")!==h.length-1&&(h+="s"),!l.prototype[h]&&(l.prototype[h]=function(f){return this.walkType(o,f)});},i.exports=l;}}),xl=C({"node_modules/postcss-values-parser/lib/root.js"(r,i){I();var s=ue();i.exports=class extends s{constructor(o){super(o),this.type="root";}};}}),zs=C({"node_modules/postcss-values-parser/lib/value.js"(r,i){I();var s=ue();i.exports=class extends s{constructor(o){super(o),this.type="value",this.unbalanced=0;}};}}),Bs=C({"node_modules/postcss-values-parser/lib/atword.js"(r,i){I();var s=ue(),l=class extends s{constructor(o){super(o),this.type="atword";}toString(){this.quoted?this.raws.quote:"";return [this.raws.before,"@",String.prototype.toString.call(this.value),this.raws.after].join("")}};s.registerWalker(l),i.exports=l;}}),Fs=C({"node_modules/postcss-values-parser/lib/colon.js"(r,i){I();var s=ue(),l=we(),o=class extends l{constructor(h){super(h),this.type="colon";}};s.registerWalker(o),i.exports=o;}}),Us=C({"node_modules/postcss-values-parser/lib/comma.js"(r,i){I();var s=ue(),l=we(),o=class extends l{constructor(h){super(h),this.type="comma";}};s.registerWalker(o),i.exports=o;}}),Ws=C({"node_modules/postcss-values-parser/lib/comment.js"(r,i){I();var s=ue(),l=we(),o=class extends l{constructor(h){super(h),this.type="comment",this.inline=Object(h).inline||!1;}toString(){return [this.raws.before,this.inline?"//":"/*",String(this.value),this.inline?"":"*/",this.raws.after].join("")}};s.registerWalker(o),i.exports=o;}}),$s=C({"node_modules/postcss-values-parser/lib/function.js"(r,i){I();var s=ue(),l=class extends s{constructor(o){super(o),this.type="func",this.unbalanced=-1;}};s.registerWalker(l),i.exports=l;}}),Vs=C({"node_modules/postcss-values-parser/lib/number.js"(r,i){I();var s=ue(),l=we(),o=class extends l{constructor(h){super(h),this.type="number",this.unit=Object(h).unit||"";}toString(){return [this.raws.before,String(this.value),this.unit,this.raws.after].join("")}};s.registerWalker(o),i.exports=o;}}),Gs=C({"node_modules/postcss-values-parser/lib/operator.js"(r,i){I();var s=ue(),l=we(),o=class extends l{constructor(h){super(h),this.type="operator";}};s.registerWalker(o),i.exports=o;}}),Hs=C({"node_modules/postcss-values-parser/lib/paren.js"(r,i){I();var s=ue(),l=we(),o=class extends l{constructor(h){super(h),this.type="paren",this.parenType="";}};s.registerWalker(o),i.exports=o;}}),Js=C({"node_modules/postcss-values-parser/lib/string.js"(r,i){I();var s=ue(),l=we(),o=class extends l{constructor(h){super(h),this.type="string";}toString(){let h=this.quoted?this.raws.quote:"";return [this.raws.before,h,this.value+"",h,this.raws.after].join("")}};s.registerWalker(o),i.exports=o;}}),Ks=C({"node_modules/postcss-values-parser/lib/word.js"(r,i){I();var s=ue(),l=we(),o=class extends l{constructor(h){super(h),this.type="word";}};s.registerWalker(o),i.exports=o;}}),Qs=C({"node_modules/postcss-values-parser/lib/unicode-range.js"(r,i){I();var s=ue(),l=we(),o=class extends l{constructor(h){super(h),this.type="unicode-range";}};s.registerWalker(o),i.exports=o;}});function Ys(){throw new Error("setTimeout has not been defined")}function Xs(){throw new Error("clearTimeout has not been defined")}function Zs(r){if(be===setTimeout)return setTimeout(r,0);if((be===Ys||!be)&&setTimeout)return be=setTimeout,setTimeout(r,0);try{return be(r,0)}catch{try{return be.call(null,r,0)}catch{return be.call(this,r,0)}}}function kl(r){if(xe===clearTimeout)return clearTimeout(r);if((xe===Xs||!xe)&&clearTimeout)return xe=clearTimeout,clearTimeout(r);try{return xe(r)}catch{try{return xe.call(null,r)}catch{return xe.call(this,r)}}}function Sl(){!Ie||!Re||(Ie=!1,Re.length?me=Re.concat(me):Ue=-1,me.length&&eo());}function eo(){if(!Ie){var r=Zs(Sl);Ie=!0;for(var i=me.length;i;){for(Re=me,me=[];++Ue<i;)Re&&Re[Ue].run();Ue=-1,i=me.length;}Re=null,Ie=!1,kl(r);}}function Ol(r){var i=new Array(arguments.length-1);if(arguments.length>1)for(var s=1;s<arguments.length;s++)i[s-1]=arguments[s];me.push(new ro(r,i)),me.length===1&&!Ie&&Zs(eo);}function ro(r,i){this.fun=r,this.array=i;}function Ae(){}function Tl(r){throw new Error("process.binding is not supported")}function El(){return "/"}function ql(r){throw new Error("process.chdir is not supported")}function Al(){return 0}function Pl(r){var i=to.call(Pe)*.001,s=Math.floor(i),l=Math.floor(i%1*1e9);return r&&(s=s-r[0],l=l-r[1],l<0&&(s--,l+=1e9)),[s,l]}function Rl(){var r=new Date,i=r-no;return i/1e3}var be,xe,me,Ie,Re,Ue,os,as,us,cs,ls,fs,ps,hs,ds,vs,ms,gs,ys,ws,_s,bs,Pe,to,no,xs,We,Il=Me({"node-modules-polyfills:process"(){I(),be=Ys,xe=Xs,typeof globalThis.setTimeout=="function"&&(be=setTimeout),typeof globalThis.clearTimeout=="function"&&(xe=clearTimeout),me=[],Ie=!1,Ue=-1,ro.prototype.run=function(){this.fun.apply(null,this.array);},os="browser",as="browser",us=!0,cs={},ls=[],fs="",ps={},hs={},ds={},vs=Ae,ms=Ae,gs=Ae,ys=Ae,ws=Ae,_s=Ae,bs=Ae,Pe=globalThis.performance||{},to=Pe.now||Pe.mozNow||Pe.msNow||Pe.oNow||Pe.webkitNow||function(){return new Date().getTime()},no=new Date,xs={nextTick:Ol,title:os,browser:us,env:cs,argv:ls,version:fs,versions:ps,on:vs,addListener:ms,once:gs,off:ys,removeListener:ws,removeAllListeners:_s,emit:bs,binding:Tl,cwd:El,chdir:ql,umask:Al,hrtime:Pl,platform:as,release:hs,config:ds,uptime:Rl},We=xs;}}),it,yt,Cl=Me({"node_modules/rollup-plugin-node-polyfills/polyfills/inherits.js"(){I(),typeof Object.create=="function"?it=function(i,s){i.super_=s,i.prototype=Object.create(s.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}});}:it=function(i,s){i.super_=s;var l=function(){};l.prototype=s.prototype,i.prototype=new l,i.prototype.constructor=i;},yt=it;}}),io={};mt(io,{_extend:()=>kt,debuglog:()=>so,default:()=>vo,deprecate:()=>wt,format:()=>hr,inherits:()=>yt,inspect:()=>ye,isArray:()=>_t,isBoolean:()=>dr,isBuffer:()=>co,isDate:()=>fr,isError:()=>Ve,isFunction:()=>Ge,isNull:()=>He,isNullOrUndefined:()=>oo,isNumber:()=>bt,isObject:()=>Ce,isPrimitive:()=>uo,isRegExp:()=>$e,isString:()=>Je,isSymbol:()=>ao,isUndefined:()=>ge,log:()=>lo});function hr(r){if(!Je(r)){for(var i=[],s=0;s<arguments.length;s++)i.push(ye(arguments[s]));return i.join(" ")}for(var s=1,l=arguments,o=l.length,h=String(r).replace(po,function(p){if(p==="%%")return "%";if(s>=o)return p;switch(p){case"%s":return String(l[s++]);case"%d":return Number(l[s++]);case"%j":try{return JSON.stringify(l[s++])}catch{return "[Circular]"}default:return p}}),f=l[s];s<o;f=l[++s])He(f)||!Ce(f)?h+=" "+f:h+=" "+ye(f);return h}function wt(r,i){if(ge(globalThis.process))return function(){return wt(r,i).apply(this,arguments)};if(We.noDeprecation===!0)return r;var s=!1;function l(){if(!s){if(We.throwDeprecation)throw new Error(i);We.traceDeprecation?console.trace(i):console.error(i),s=!0;}return r.apply(this,arguments)}return l}function so(r){if(ge(at)&&(at=We.env.NODE_DEBUG||""),r=r.toUpperCase(),!Fe[r])if(new RegExp("\\b"+r+"\\b","i").test(at)){var i=0;Fe[r]=function(){var s=hr.apply(null,arguments);console.error("%s %d: %s",r,i,s);};}else Fe[r]=function(){};return Fe[r]}function ye(r,i){var s={seen:[],stylize:jl};return arguments.length>=3&&(s.depth=arguments[2]),arguments.length>=4&&(s.colors=arguments[3]),dr(i)?s.showHidden=i:i&&kt(s,i),ge(s.showHidden)&&(s.showHidden=!1),ge(s.depth)&&(s.depth=2),ge(s.colors)&&(s.colors=!1),ge(s.customInspect)&&(s.customInspect=!0),s.colors&&(s.stylize=Nl),lr(s,r,s.depth)}function Nl(r,i){var s=ye.styles[i];return s?"\x1B["+ye.colors[s][0]+"m"+r+"\x1B["+ye.colors[s][1]+"m":r}function jl(r,i){return r}function Ml(r){var i={};return r.forEach(function(s,l){i[s]=!0;}),i}function lr(r,i,s){if(r.customInspect&&i&&Ge(i.inspect)&&i.inspect!==ye&&!(i.constructor&&i.constructor.prototype===i)){var l=i.inspect(s,r);return Je(l)||(l=lr(r,l,s)),l}var o=Dl(r,i);if(o)return o;var h=Object.keys(i),f=Ml(h);if(r.showHidden&&(h=Object.getOwnPropertyNames(i)),Ve(i)&&(h.indexOf("message")>=0||h.indexOf("description")>=0))return st(i);if(h.length===0){if(Ge(i)){var p=i.name?": "+i.name:"";return r.stylize("[Function"+p+"]","special")}if($e(i))return r.stylize(RegExp.prototype.toString.call(i),"regexp");if(fr(i))return r.stylize(Date.prototype.toString.call(i),"date");if(Ve(i))return st(i)}var g="",c=!1,t=["{","}"];if(_t(i)&&(c=!0,t=["[","]"]),Ge(i)){var e=i.name?": "+i.name:"";g=" [Function"+e+"]";}if($e(i)&&(g=" "+RegExp.prototype.toString.call(i)),fr(i)&&(g=" "+Date.prototype.toUTCString.call(i)),Ve(i)&&(g=" "+st(i)),h.length===0&&(!c||i.length==0))return t[0]+g+t[1];if(s<0)return $e(i)?r.stylize(RegExp.prototype.toString.call(i),"regexp"):r.stylize("[Object]","special");r.seen.push(i);var a;return c?a=Ll(r,i,s,f,h):a=h.map(function(n){return ft(r,i,s,f,n,c)}),r.seen.pop(),zl(a,g,t)}function Dl(r,i){if(ge(i))return r.stylize("undefined","undefined");if(Je(i)){var s="'"+JSON.stringify(i).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return r.stylize(s,"string")}if(bt(i))return r.stylize(""+i,"number");if(dr(i))return r.stylize(""+i,"boolean");if(He(i))return r.stylize("null","null")}function st(r){return "["+Error.prototype.toString.call(r)+"]"}function Ll(r,i,s,l,o){for(var h=[],f=0,p=i.length;f<p;++f)fo(i,String(f))?h.push(ft(r,i,s,l,String(f),!0)):h.push("");return o.forEach(function(g){g.match(/^\d+$/)||h.push(ft(r,i,s,l,g,!0));}),h}function ft(r,i,s,l,o,h){var f,p,g;if(g=Object.getOwnPropertyDescriptor(i,o)||{value:i[o]},g.get?g.set?p=r.stylize("[Getter/Setter]","special"):p=r.stylize("[Getter]","special"):g.set&&(p=r.stylize("[Setter]","special")),fo(l,o)||(f="["+o+"]"),p||(r.seen.indexOf(g.value)<0?(He(s)?p=lr(r,g.value,null):p=lr(r,g.value,s-1),p.indexOf(` -`)>-1&&(h?p=p.split(` -`).map(function(c){return " "+c}).join(` -`).substr(2):p=` -`+p.split(` -`).map(function(c){return " "+c}).join(` -`))):p=r.stylize("[Circular]","special")),ge(f)){if(h&&o.match(/^\d+$/))return p;f=JSON.stringify(""+o),f.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(f=f.substr(1,f.length-2),f=r.stylize(f,"name")):(f=f.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),f=r.stylize(f,"string"));}return f+": "+p}function zl(r,i,s){var l=0,o=r.reduce(function(h,f){return l++,f.indexOf(` -`)>=0&&l++,h+f.replace(/\u001b\[\d\d?m/g,"").length+1},0);return o>60?s[0]+(i===""?"":i+` - `)+" "+r.join(`, - `)+" "+s[1]:s[0]+i+" "+r.join(", ")+" "+s[1]}function _t(r){return Array.isArray(r)}function dr(r){return typeof r=="boolean"}function He(r){return r===null}function oo(r){return r==null}function bt(r){return typeof r=="number"}function Je(r){return typeof r=="string"}function ao(r){return typeof r=="symbol"}function ge(r){return r===void 0}function $e(r){return Ce(r)&&xt(r)==="[object RegExp]"}function Ce(r){return typeof r=="object"&&r!==null}function fr(r){return Ce(r)&&xt(r)==="[object Date]"}function Ve(r){return Ce(r)&&(xt(r)==="[object Error]"||r instanceof Error)}function Ge(r){return typeof r=="function"}function uo(r){return r===null||typeof r=="boolean"||typeof r=="number"||typeof r=="string"||typeof r=="symbol"||typeof r>"u"}function co(r){return Buffer.isBuffer(r)}function xt(r){return Object.prototype.toString.call(r)}function ot(r){return r<10?"0"+r.toString(10):r.toString(10)}function Bl(){var r=new Date,i=[ot(r.getHours()),ot(r.getMinutes()),ot(r.getSeconds())].join(":");return [r.getDate(),ho[r.getMonth()],i].join(" ")}function lo(){console.log("%s - %s",Bl(),hr.apply(null,arguments));}function kt(r,i){if(!i||!Ce(i))return r;for(var s=Object.keys(i),l=s.length;l--;)r[s[l]]=i[s[l]];return r}function fo(r,i){return Object.prototype.hasOwnProperty.call(r,i)}var po,Fe,at,ho,vo,Fl=Me({"node-modules-polyfills:util"(){I(),Il(),Cl(),po=/%[sdj%]/g,Fe={},ye.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},ye.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},ho=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],vo={inherits:yt,_extend:kt,log:lo,isBuffer:co,isPrimitive:uo,isFunction:Ge,isError:Ve,isDate:fr,isObject:Ce,isRegExp:$e,isUndefined:ge,isSymbol:ao,isString:Je,isNumber:bt,isNullOrUndefined:oo,isNull:He,isBoolean:dr,isArray:_t,inspect:ye,deprecate:wt,format:hr,debuglog:so};}}),Ul=C({"node-modules-polyfills-commonjs:util"(r,i){I();var s=(Fl(),gt(io));if(s&&s.default){i.exports=s.default;for(let l in s)i.exports[l]=s[l];}else s&&(i.exports=s);}}),Wl=C({"node_modules/postcss-values-parser/lib/errors/TokenizeError.js"(r,i){I();var s=class extends Error{constructor(l){super(l),this.name=this.constructor.name,this.message=l||"An error ocurred while tokzenizing.",typeof Error.captureStackTrace=="function"?Error.captureStackTrace(this,this.constructor):this.stack=new Error(l).stack;}};i.exports=s;}}),$l=C({"node_modules/postcss-values-parser/lib/tokenize.js"(r,i){I();var s="{".charCodeAt(0),l="}".charCodeAt(0),o="(".charCodeAt(0),h=")".charCodeAt(0),f="'".charCodeAt(0),p='"'.charCodeAt(0),g="\\".charCodeAt(0),c="/".charCodeAt(0),t=".".charCodeAt(0),e=",".charCodeAt(0),a=":".charCodeAt(0),n="*".charCodeAt(0),u="-".charCodeAt(0),m="+".charCodeAt(0),v="#".charCodeAt(0),y=` -`.charCodeAt(0),w=" ".charCodeAt(0),d="\f".charCodeAt(0),_=" ".charCodeAt(0),O="\r".charCodeAt(0),S="@".charCodeAt(0),M="e".charCodeAt(0),R="E".charCodeAt(0),$="0".charCodeAt(0),J="9".charCodeAt(0),X="u".charCodeAt(0),F="U".charCodeAt(0),K=/[ \n\t\r\{\(\)'"\\;,/]/g,W=/[ \n\t\r\(\)\{\}\*:;@!&'"\+\|~>,\[\]\\]|\/(?=\*)/g,T=/[ \n\t\r\(\)\{\}\*:;@!&'"\-\+\|~>,\[\]\\]|\//g,D=/^[a-z0-9]/i,j=/^[a-f0-9?\-]/i,N=Ul(),b=Wl();i.exports=function(G,L){L=L||{};let B=[],P=G.valueOf(),Z=P.length,V=-1,q=1,x=0,k=0,z=null,A,E,H,U,re,ne,fe,te,ie,ae,se;function le(Qe){let _e=N.format("Unclosed %s at line: %d, column: %d, token: %d",Qe,q,x-V,x);throw new b(_e)}for(;x<Z;){switch(A=P.charCodeAt(x),A===y&&(V=x,q+=1),A){case y:case w:case _:case O:case d:E=x;do E+=1,A=P.charCodeAt(E),A===y&&(V=E,q+=1);while(A===w||A===y||A===_||A===O||A===d);B.push(["space",P.slice(x,E),q,x-V,q,E-V,x]),x=E-1;break;case a:E=x+1,B.push(["colon",P.slice(x,E),q,x-V,q,E-V,x]),x=E-1;break;case e:E=x+1,B.push(["comma",P.slice(x,E),q,x-V,q,E-V,x]),x=E-1;break;case s:B.push(["{","{",q,x-V,q,E-V,x]);break;case l:B.push(["}","}",q,x-V,q,E-V,x]);break;case o:k++,z=!z&&k===1&&B.length>0&&B[B.length-1][0]==="word"&&B[B.length-1][1]==="url",B.push(["(","(",q,x-V,q,E-V,x]);break;case h:k--,z=z&&k>0,B.push([")",")",q,x-V,q,E-V,x]);break;case f:case p:H=A===f?"'":'"',E=x;do for(ie=!1,E=P.indexOf(H,E+1),E===-1&&le("quote"),ae=E;P.charCodeAt(ae-1)===g;)ae-=1,ie=!ie;while(ie);B.push(["string",P.slice(x,E+1),q,x-V,q,E-V,x]),x=E;break;case S:K.lastIndex=x+1,K.test(P),K.lastIndex===0?E=P.length-1:E=K.lastIndex-2,B.push(["atword",P.slice(x,E+1),q,x-V,q,E-V,x]),x=E;break;case g:E=x,A=P.charCodeAt(E+1),B.push(["word",P.slice(x,E+1),q,x-V,q,E-V,x]),x=E;break;case m:case u:case n:E=x+1,se=P.slice(x+1,E+1);P.slice(x-1,x);if(A===u&&se.charCodeAt(0)===u){E++,B.push(["word",P.slice(x,E),q,x-V,q,E-V,x]),x=E-1;break}B.push(["operator",P.slice(x,E),q,x-V,q,E-V,x]),x=E-1;break;default:if(A===c&&(P.charCodeAt(x+1)===n||L.loose&&!z&&P.charCodeAt(x+1)===c)){if(P.charCodeAt(x+1)===n)E=P.indexOf("*/",x+2)+1,E===0&&le("comment");else {let Le=P.indexOf(` -`,x+2);E=Le!==-1?Le-1:Z;}ne=P.slice(x,E+1),U=ne.split(` -`),re=U.length-1,re>0?(fe=q+re,te=E-U[re].length):(fe=q,te=V),B.push(["comment",ne,q,x-V,fe,E-te,x]),V=te,q=fe,x=E;}else if(A===v&&!D.test(P.slice(x+1,x+2)))E=x+1,B.push(["#",P.slice(x,E),q,x-V,q,E-V,x]),x=E-1;else if((A===X||A===F)&&P.charCodeAt(x+1)===m){E=x+2;do E+=1,A=P.charCodeAt(E);while(E<Z&&j.test(P.slice(E,E+1)));B.push(["unicoderange",P.slice(x,E),q,x-V,q,E-V,x]),x=E-1;}else if(A===c)E=x+1,B.push(["operator",P.slice(x,E),q,x-V,q,E-V,x]),x=E-1;else {let _e=W;if(A>=$&&A<=J&&(_e=T),_e.lastIndex=x+1,_e.test(P),_e.lastIndex===0?E=P.length-1:E=_e.lastIndex-2,_e===T||A===t){let Le=P.charCodeAt(E),Rt=P.charCodeAt(E+1),It=P.charCodeAt(E+2);(Le===M||Le===R)&&(Rt===u||Rt===m)&&It>=$&&It<=J&&(T.lastIndex=E+2,T.test(P),T.lastIndex===0?E=P.length-1:E=T.lastIndex-2);}B.push(["word",P.slice(x,E+1),q,x-V,q,E-V,x]),x=E;}break}x++;}return B};}}),mo=C({"node_modules/flatten/index.js"(r,i){I(),i.exports=function(l,o){if(o=typeof o=="number"?o:1/0,!o)return Array.isArray(l)?l.map(function(f){return f}):l;return h(l,1);function h(f,p){return f.reduce(function(g,c){return Array.isArray(c)&&p<o?g.concat(h(c,p+1)):g.concat(c)},[])}};}}),go=C({"node_modules/indexes-of/index.js"(r,i){I(),i.exports=function(s,l){for(var o=-1,h=[];(o=s.indexOf(l,o+1))!==-1;)h.push(o);return h};}}),yo=C({"node_modules/uniq/uniq.js"(r,i){I();function s(h,f){for(var p=1,g=h.length,c=h[0],t=h[0],e=1;e<g;++e)if(t=c,c=h[e],f(c,t)){if(e===p){p++;continue}h[p++]=c;}return h.length=p,h}function l(h){for(var f=1,p=h.length,g=h[0],c=h[0],t=1;t<p;++t,c=g)if(c=g,g=h[t],g!==c){if(t===f){f++;continue}h[f++]=g;}return h.length=f,h}function o(h,f,p){return h.length===0?h:f?(p||h.sort(f),s(h,f)):(p||h.sort(),l(h))}i.exports=o;}}),Vl=C({"node_modules/postcss-values-parser/lib/errors/ParserError.js"(r,i){I();var s=class extends Error{constructor(l){super(l),this.name=this.constructor.name,this.message=l||"An error ocurred while parsing.",typeof Error.captureStackTrace=="function"?Error.captureStackTrace(this,this.constructor):this.stack=new Error(l).stack;}};i.exports=s;}}),Gl=C({"node_modules/postcss-values-parser/lib/parser.js"(r,i){I();var s=xl(),l=zs(),o=Bs(),h=Fs(),f=Us(),p=Ws(),g=$s(),c=Vs(),t=Gs(),e=Hs(),a=Js(),n=Ks(),u=Qs(),m=$l(),v=mo(),y=go(),w=yo(),d=Vl();function _(O){return O.sort((S,M)=>S-M)}i.exports=class{constructor(S,M){let R={loose:!1};this.cache=[],this.input=S,this.options=Object.assign({},R,M),this.position=0,this.unbalanced=0,this.root=new s;let $=new l;this.root.append($),this.current=$,this.tokens=m(S,this.options);}parse(){return this.loop()}colon(){let S=this.currToken;this.newNode(new h({value:S[1],source:{start:{line:S[2],column:S[3]},end:{line:S[4],column:S[5]}},sourceIndex:S[6]})),this.position++;}comma(){let S=this.currToken;this.newNode(new f({value:S[1],source:{start:{line:S[2],column:S[3]},end:{line:S[4],column:S[5]}},sourceIndex:S[6]})),this.position++;}comment(){let S=!1,M=this.currToken[1].replace(/\/\*|\*\//g,""),R;this.options.loose&&M.startsWith("//")&&(M=M.substring(2),S=!0),R=new p({value:M,inline:S,source:{start:{line:this.currToken[2],column:this.currToken[3]},end:{line:this.currToken[4],column:this.currToken[5]}},sourceIndex:this.currToken[6]}),this.newNode(R),this.position++;}error(S,M){throw new d(S+" at line: ".concat(M[2],", column ").concat(M[3]))}loop(){for(;this.position<this.tokens.length;)this.parseTokens();return !this.current.last&&this.spaces?this.current.raws.before+=this.spaces:this.spaces&&(this.current.last.raws.after+=this.spaces),this.spaces="",this.root}operator(){let S=this.currToken[1],M;if(S==="+"||S==="-"){if(this.options.loose||this.position>0&&(this.current.type==="func"&&this.current.value==="calc"?this.prevToken[0]!=="space"&&this.prevToken[0]!=="("?this.error("Syntax Error",this.currToken):this.nextToken[0]!=="space"&&this.nextToken[0]!=="word"?this.error("Syntax Error",this.currToken):this.nextToken[0]==="word"&&this.current.last.type!=="operator"&&this.current.last.value!=="("&&this.error("Syntax Error",this.currToken):(this.nextToken[0]==="space"||this.nextToken[0]==="operator"||this.prevToken[0]==="operator")&&this.error("Syntax Error",this.currToken)),this.options.loose){if((!this.current.nodes.length||this.current.last&&this.current.last.type==="operator")&&this.nextToken[0]==="word")return this.word()}else if(this.nextToken[0]==="word")return this.word()}return M=new t({value:this.currToken[1],source:{start:{line:this.currToken[2],column:this.currToken[3]},end:{line:this.currToken[2],column:this.currToken[3]}},sourceIndex:this.currToken[4]}),this.position++,this.newNode(M)}parseTokens(){switch(this.currToken[0]){case"space":this.space();break;case"colon":this.colon();break;case"comma":this.comma();break;case"comment":this.comment();break;case"(":this.parenOpen();break;case")":this.parenClose();break;case"atword":case"word":this.word();break;case"operator":this.operator();break;case"string":this.string();break;case"unicoderange":this.unicodeRange();break;default:this.word();break}}parenOpen(){let S=1,M=this.position+1,R=this.currToken,$;for(;M<this.tokens.length&&S;){let J=this.tokens[M];J[0]==="("&&S++,J[0]===")"&&S--,M++;}if(S&&this.error("Expected closing parenthesis",R),$=this.current.last,$&&$.type==="func"&&$.unbalanced<0&&($.unbalanced=0,this.current=$),this.current.unbalanced++,this.newNode(new e({value:R[1],source:{start:{line:R[2],column:R[3]},end:{line:R[4],column:R[5]}},sourceIndex:R[6]})),this.position++,this.current.type==="func"&&this.current.unbalanced&&this.current.value==="url"&&this.currToken[0]!=="string"&&this.currToken[0]!==")"&&!this.options.loose){let J=this.nextToken,X=this.currToken[1],F={line:this.currToken[2],column:this.currToken[3]};for(;J&&J[0]!==")"&&this.current.unbalanced;)this.position++,X+=this.currToken[1],J=this.nextToken;this.position!==this.tokens.length-1&&(this.position++,this.newNode(new n({value:X,source:{start:F,end:{line:this.currToken[4],column:this.currToken[5]}},sourceIndex:this.currToken[6]})));}}parenClose(){let S=this.currToken;this.newNode(new e({value:S[1],source:{start:{line:S[2],column:S[3]},end:{line:S[4],column:S[5]}},sourceIndex:S[6]})),this.position++,!(this.position>=this.tokens.length-1&&!this.current.unbalanced)&&(this.current.unbalanced--,this.current.unbalanced<0&&this.error("Expected opening parenthesis",S),!this.current.unbalanced&&this.cache.length&&(this.current=this.cache.pop()));}space(){let S=this.currToken;this.position===this.tokens.length-1||this.nextToken[0]===","||this.nextToken[0]===")"?(this.current.last.raws.after+=S[1],this.position++):(this.spaces=S[1],this.position++);}unicodeRange(){let S=this.currToken;this.newNode(new u({value:S[1],source:{start:{line:S[2],column:S[3]},end:{line:S[4],column:S[5]}},sourceIndex:S[6]})),this.position++;}splitWord(){let S=this.nextToken,M=this.currToken[1],R=/^[\+\-]?((\d+(\.\d*)?)|(\.\d+))([eE][\+\-]?\d+)?/,$=/^(?!\#([a-z0-9]+))[\#\{\}]/gi,J,X;if(!$.test(M))for(;S&&S[0]==="word";)this.position++,M+=this.currToken[1],S=this.nextToken;J=y(M,"@"),X=_(w(v([[0],J]))),X.forEach((F,K)=>{let W=X[K+1]||M.length,T=M.slice(F,W),D;if(~J.indexOf(F))D=new o({value:T.slice(1),source:{start:{line:this.currToken[2],column:this.currToken[3]+F},end:{line:this.currToken[4],column:this.currToken[3]+(W-1)}},sourceIndex:this.currToken[6]+X[K]});else if(R.test(this.currToken[1])){let j=T.replace(R,"");D=new c({value:T.replace(j,""),source:{start:{line:this.currToken[2],column:this.currToken[3]+F},end:{line:this.currToken[4],column:this.currToken[3]+(W-1)}},sourceIndex:this.currToken[6]+X[K],unit:j});}else D=new(S&&S[0]==="("?g:n)({value:T,source:{start:{line:this.currToken[2],column:this.currToken[3]+F},end:{line:this.currToken[4],column:this.currToken[3]+(W-1)}},sourceIndex:this.currToken[6]+X[K]}),D.type==="word"?(D.isHex=/^#(.+)/.test(T),D.isColor=/^#([0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(T)):this.cache.push(this.current);this.newNode(D);}),this.position++;}string(){let S=this.currToken,M=this.currToken[1],R=/^(\"|\')/,$=R.test(M),J="",X;$&&(J=M.match(R)[0],M=M.slice(1,M.length-1)),X=new a({value:M,source:{start:{line:S[2],column:S[3]},end:{line:S[4],column:S[5]}},sourceIndex:S[6],quoted:$}),X.raws.quote=J,this.newNode(X),this.position++;}word(){return this.splitWord()}newNode(S){return this.spaces&&(S.raws.before+=this.spaces,this.spaces=""),this.current.append(S)}get currToken(){return this.tokens[this.position]}get nextToken(){return this.tokens[this.position+1]}get prevToken(){return this.tokens[this.position-1]}};}}),Hl=C({"node_modules/postcss-values-parser/lib/index.js"(r,i){I();var s=Gl(),l=Bs(),o=Fs(),h=Us(),f=Ws(),p=$s(),g=Vs(),c=Gs(),t=Hs(),e=Js(),a=Qs(),n=zs(),u=Ks(),m=function(v,y){return new s(v,y)};m.atword=function(v){return new l(v)},m.colon=function(v){return new o(Object.assign({value:":"},v))},m.comma=function(v){return new h(Object.assign({value:","},v))},m.comment=function(v){return new f(v)},m.func=function(v){return new p(v)},m.number=function(v){return new g(v)},m.operator=function(v){return new c(v)},m.paren=function(v){return new t(Object.assign({value:"("},v))},m.string=function(v){return new e(Object.assign({quote:"'"},v))},m.value=function(v){return new n(v)},m.word=function(v){return new u(v)},m.unicodeRange=function(v){return new a(v)},i.exports=m;}}),De=C({"node_modules/postcss-selector-parser/dist/selectors/node.js"(r,i){I(),r.__esModule=!0;var s=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(f){return typeof f}:function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f};function l(f,p){if(!(f instanceof p))throw new TypeError("Cannot call a class as a function")}var o=function f(p,g){if((typeof p>"u"?"undefined":s(p))!=="object")return p;var c=new p.constructor;for(var t in p)if(!!p.hasOwnProperty(t)){var e=p[t],a=typeof e>"u"?"undefined":s(e);t==="parent"&&a==="object"?g&&(c[t]=g):e instanceof Array?c[t]=e.map(function(n){return f(n,c)}):c[t]=f(e,c);}return c},h=function(){function f(){var p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};l(this,f);for(var g in p)this[g]=p[g];var c=p.spaces;c=c===void 0?{}:c;var t=c.before,e=t===void 0?"":t,a=c.after,n=a===void 0?"":a;this.spaces={before:e,after:n};}return f.prototype.remove=function(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this},f.prototype.replaceWith=function(){if(this.parent){for(var g in arguments)this.parent.insertBefore(this,arguments[g]);this.remove();}return this},f.prototype.next=function(){return this.parent.at(this.parent.index(this)+1)},f.prototype.prev=function(){return this.parent.at(this.parent.index(this)-1)},f.prototype.clone=function(){var g=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},c=o(this);for(var t in g)c[t]=g[t];return c},f.prototype.toString=function(){return [this.spaces.before,String(this.value),this.spaces.after].join("")},f}();r.default=h,i.exports=r.default;}}),oe=C({"node_modules/postcss-selector-parser/dist/selectors/types.js"(r){I(),r.__esModule=!0;r.TAG="tag";r.STRING="string";r.SELECTOR="selector";r.ROOT="root";r.PSEUDO="pseudo";r.NESTING="nesting";r.ID="id";r.COMMENT="comment";r.COMBINATOR="combinator";r.CLASS="class";r.ATTRIBUTE="attribute";r.UNIVERSAL="universal";}}),St=C({"node_modules/postcss-selector-parser/dist/selectors/container.js"(r,i){I(),r.__esModule=!0;var s=function(){function n(u,m){for(var v=0;v<m.length;v++){var y=m[v];y.enumerable=y.enumerable||!1,y.configurable=!0,"value"in y&&(y.writable=!0),Object.defineProperty(u,y.key,y);}}return function(u,m,v){return m&&n(u.prototype,m),v&&n(u,v),u}}(),l=De(),o=g(l),h=oe(),f=p(h);function p(n){if(n&&n.__esModule)return n;var u={};if(n!=null)for(var m in n)Object.prototype.hasOwnProperty.call(n,m)&&(u[m]=n[m]);return u.default=n,u}function g(n){return n&&n.__esModule?n:{default:n}}function c(n,u){if(!(n instanceof u))throw new TypeError("Cannot call a class as a function")}function t(n,u){if(!n)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return u&&(typeof u=="object"||typeof u=="function")?u:n}function e(n,u){if(typeof u!="function"&&u!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof u);n.prototype=Object.create(u&&u.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),u&&(Object.setPrototypeOf?Object.setPrototypeOf(n,u):n.__proto__=u);}var a=function(n){e(u,n);function u(m){c(this,u);var v=t(this,n.call(this,m));return v.nodes||(v.nodes=[]),v}return u.prototype.append=function(v){return v.parent=this,this.nodes.push(v),this},u.prototype.prepend=function(v){return v.parent=this,this.nodes.unshift(v),this},u.prototype.at=function(v){return this.nodes[v]},u.prototype.index=function(v){return typeof v=="number"?v:this.nodes.indexOf(v)},u.prototype.removeChild=function(v){v=this.index(v),this.at(v).parent=void 0,this.nodes.splice(v,1);var y=void 0;for(var w in this.indexes)y=this.indexes[w],y>=v&&(this.indexes[w]=y-1);return this},u.prototype.removeAll=function(){for(var w=this.nodes,v=Array.isArray(w),y=0,w=v?w:w[Symbol.iterator]();;){var d;if(v){if(y>=w.length)break;d=w[y++];}else {if(y=w.next(),y.done)break;d=y.value;}var _=d;_.parent=void 0;}return this.nodes=[],this},u.prototype.empty=function(){return this.removeAll()},u.prototype.insertAfter=function(v,y){var w=this.index(v);this.nodes.splice(w+1,0,y);var d=void 0;for(var _ in this.indexes)d=this.indexes[_],w<=d&&(this.indexes[_]=d+this.nodes.length);return this},u.prototype.insertBefore=function(v,y){var w=this.index(v);this.nodes.splice(w,0,y);var d=void 0;for(var _ in this.indexes)d=this.indexes[_],w<=d&&(this.indexes[_]=d+this.nodes.length);return this},u.prototype.each=function(v){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach++;var y=this.lastEach;if(this.indexes[y]=0,!!this.length){for(var w=void 0,d=void 0;this.indexes[y]<this.length&&(w=this.indexes[y],d=v(this.at(w),w),d!==!1);)this.indexes[y]+=1;if(delete this.indexes[y],d===!1)return !1}},u.prototype.walk=function(v){return this.each(function(y,w){var d=v(y,w);if(d!==!1&&y.length&&(d=y.walk(v)),d===!1)return !1})},u.prototype.walkAttributes=function(v){var y=this;return this.walk(function(w){if(w.type===f.ATTRIBUTE)return v.call(y,w)})},u.prototype.walkClasses=function(v){var y=this;return this.walk(function(w){if(w.type===f.CLASS)return v.call(y,w)})},u.prototype.walkCombinators=function(v){var y=this;return this.walk(function(w){if(w.type===f.COMBINATOR)return v.call(y,w)})},u.prototype.walkComments=function(v){var y=this;return this.walk(function(w){if(w.type===f.COMMENT)return v.call(y,w)})},u.prototype.walkIds=function(v){var y=this;return this.walk(function(w){if(w.type===f.ID)return v.call(y,w)})},u.prototype.walkNesting=function(v){var y=this;return this.walk(function(w){if(w.type===f.NESTING)return v.call(y,w)})},u.prototype.walkPseudos=function(v){var y=this;return this.walk(function(w){if(w.type===f.PSEUDO)return v.call(y,w)})},u.prototype.walkTags=function(v){var y=this;return this.walk(function(w){if(w.type===f.TAG)return v.call(y,w)})},u.prototype.walkUniversals=function(v){var y=this;return this.walk(function(w){if(w.type===f.UNIVERSAL)return v.call(y,w)})},u.prototype.split=function(v){var y=this,w=[];return this.reduce(function(d,_,O){var S=v.call(y,_);return w.push(_),S?(d.push(w),w=[]):O===y.length-1&&d.push(w),d},[])},u.prototype.map=function(v){return this.nodes.map(v)},u.prototype.reduce=function(v,y){return this.nodes.reduce(v,y)},u.prototype.every=function(v){return this.nodes.every(v)},u.prototype.some=function(v){return this.nodes.some(v)},u.prototype.filter=function(v){return this.nodes.filter(v)},u.prototype.sort=function(v){return this.nodes.sort(v)},u.prototype.toString=function(){return this.map(String).join("")},s(u,[{key:"first",get:function(){return this.at(0)}},{key:"last",get:function(){return this.at(this.length-1)}},{key:"length",get:function(){return this.nodes.length}}]),u}(o.default);r.default=a,i.exports=r.default;}}),wo=C({"node_modules/postcss-selector-parser/dist/selectors/root.js"(r,i){I(),r.__esModule=!0;var s=St(),l=h(s),o=oe();function h(t){return t&&t.__esModule?t:{default:t}}function f(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function p(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e&&(typeof e=="object"||typeof e=="function")?e:t}function g(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}var c=function(t){g(e,t);function e(a){f(this,e);var n=p(this,t.call(this,a));return n.type=o.ROOT,n}return e.prototype.toString=function(){var n=this.reduce(function(u,m){var v=String(m);return v?u+v+",":""},"").slice(0,-1);return this.trailingComma?n+",":n},e}(l.default);r.default=c,i.exports=r.default;}}),_o=C({"node_modules/postcss-selector-parser/dist/selectors/selector.js"(r,i){I(),r.__esModule=!0;var s=St(),l=h(s),o=oe();function h(t){return t&&t.__esModule?t:{default:t}}function f(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function p(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e&&(typeof e=="object"||typeof e=="function")?e:t}function g(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}var c=function(t){g(e,t);function e(a){f(this,e);var n=p(this,t.call(this,a));return n.type=o.SELECTOR,n}return e}(l.default);r.default=c,i.exports=r.default;}}),Ke=C({"node_modules/postcss-selector-parser/dist/selectors/namespace.js"(r,i){I(),r.__esModule=!0;var s=function(){function t(e,a){for(var n=0;n<a.length;n++){var u=a[n];u.enumerable=u.enumerable||!1,u.configurable=!0,"value"in u&&(u.writable=!0),Object.defineProperty(e,u.key,u);}}return function(e,a,n){return a&&t(e.prototype,a),n&&t(e,n),e}}(),l=De(),o=h(l);function h(t){return t&&t.__esModule?t:{default:t}}function f(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function p(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e&&(typeof e=="object"||typeof e=="function")?e:t}function g(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}var c=function(t){g(e,t);function e(){return f(this,e),p(this,t.apply(this,arguments))}return e.prototype.toString=function(){return [this.spaces.before,this.ns,String(this.value),this.spaces.after].join("")},s(e,[{key:"ns",get:function(){var n=this.namespace;return n?(typeof n=="string"?n:"")+"|":""}}]),e}(o.default);r.default=c,i.exports=r.default;}}),bo=C({"node_modules/postcss-selector-parser/dist/selectors/className.js"(r,i){I(),r.__esModule=!0;var s=Ke(),l=h(s),o=oe();function h(t){return t&&t.__esModule?t:{default:t}}function f(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function p(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e&&(typeof e=="object"||typeof e=="function")?e:t}function g(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}var c=function(t){g(e,t);function e(a){f(this,e);var n=p(this,t.call(this,a));return n.type=o.CLASS,n}return e.prototype.toString=function(){return [this.spaces.before,this.ns,String("."+this.value),this.spaces.after].join("")},e}(l.default);r.default=c,i.exports=r.default;}}),xo=C({"node_modules/postcss-selector-parser/dist/selectors/comment.js"(r,i){I(),r.__esModule=!0;var s=De(),l=h(s),o=oe();function h(t){return t&&t.__esModule?t:{default:t}}function f(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function p(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e&&(typeof e=="object"||typeof e=="function")?e:t}function g(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}var c=function(t){g(e,t);function e(a){f(this,e);var n=p(this,t.call(this,a));return n.type=o.COMMENT,n}return e}(l.default);r.default=c,i.exports=r.default;}}),ko=C({"node_modules/postcss-selector-parser/dist/selectors/id.js"(r,i){I(),r.__esModule=!0;var s=Ke(),l=h(s),o=oe();function h(t){return t&&t.__esModule?t:{default:t}}function f(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function p(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e&&(typeof e=="object"||typeof e=="function")?e:t}function g(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}var c=function(t){g(e,t);function e(a){f(this,e);var n=p(this,t.call(this,a));return n.type=o.ID,n}return e.prototype.toString=function(){return [this.spaces.before,this.ns,String("#"+this.value),this.spaces.after].join("")},e}(l.default);r.default=c,i.exports=r.default;}}),So=C({"node_modules/postcss-selector-parser/dist/selectors/tag.js"(r,i){I(),r.__esModule=!0;var s=Ke(),l=h(s),o=oe();function h(t){return t&&t.__esModule?t:{default:t}}function f(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function p(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e&&(typeof e=="object"||typeof e=="function")?e:t}function g(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}var c=function(t){g(e,t);function e(a){f(this,e);var n=p(this,t.call(this,a));return n.type=o.TAG,n}return e}(l.default);r.default=c,i.exports=r.default;}}),Oo=C({"node_modules/postcss-selector-parser/dist/selectors/string.js"(r,i){I(),r.__esModule=!0;var s=De(),l=h(s),o=oe();function h(t){return t&&t.__esModule?t:{default:t}}function f(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function p(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e&&(typeof e=="object"||typeof e=="function")?e:t}function g(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}var c=function(t){g(e,t);function e(a){f(this,e);var n=p(this,t.call(this,a));return n.type=o.STRING,n}return e}(l.default);r.default=c,i.exports=r.default;}}),To=C({"node_modules/postcss-selector-parser/dist/selectors/pseudo.js"(r,i){I(),r.__esModule=!0;var s=St(),l=h(s),o=oe();function h(t){return t&&t.__esModule?t:{default:t}}function f(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function p(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e&&(typeof e=="object"||typeof e=="function")?e:t}function g(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}var c=function(t){g(e,t);function e(a){f(this,e);var n=p(this,t.call(this,a));return n.type=o.PSEUDO,n}return e.prototype.toString=function(){var n=this.length?"("+this.map(String).join(",")+")":"";return [this.spaces.before,String(this.value),n,this.spaces.after].join("")},e}(l.default);r.default=c,i.exports=r.default;}}),Eo=C({"node_modules/postcss-selector-parser/dist/selectors/attribute.js"(r,i){I(),r.__esModule=!0;var s=Ke(),l=h(s),o=oe();function h(t){return t&&t.__esModule?t:{default:t}}function f(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function p(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e&&(typeof e=="object"||typeof e=="function")?e:t}function g(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}var c=function(t){g(e,t);function e(a){f(this,e);var n=p(this,t.call(this,a));return n.type=o.ATTRIBUTE,n.raws={},n}return e.prototype.toString=function(){var n=[this.spaces.before,"[",this.ns,this.attribute];return this.operator&&n.push(this.operator),this.value&&n.push(this.value),this.raws.insensitive?n.push(this.raws.insensitive):this.insensitive&&n.push(" i"),n.push("]"),n.concat(this.spaces.after).join("")},e}(l.default);r.default=c,i.exports=r.default;}}),qo=C({"node_modules/postcss-selector-parser/dist/selectors/universal.js"(r,i){I(),r.__esModule=!0;var s=Ke(),l=h(s),o=oe();function h(t){return t&&t.__esModule?t:{default:t}}function f(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function p(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e&&(typeof e=="object"||typeof e=="function")?e:t}function g(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}var c=function(t){g(e,t);function e(a){f(this,e);var n=p(this,t.call(this,a));return n.type=o.UNIVERSAL,n.value="*",n}return e}(l.default);r.default=c,i.exports=r.default;}}),Ao=C({"node_modules/postcss-selector-parser/dist/selectors/combinator.js"(r,i){I(),r.__esModule=!0;var s=De(),l=h(s),o=oe();function h(t){return t&&t.__esModule?t:{default:t}}function f(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function p(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e&&(typeof e=="object"||typeof e=="function")?e:t}function g(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}var c=function(t){g(e,t);function e(a){f(this,e);var n=p(this,t.call(this,a));return n.type=o.COMBINATOR,n}return e}(l.default);r.default=c,i.exports=r.default;}}),Po=C({"node_modules/postcss-selector-parser/dist/selectors/nesting.js"(r,i){I(),r.__esModule=!0;var s=De(),l=h(s),o=oe();function h(t){return t&&t.__esModule?t:{default:t}}function f(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function p(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e&&(typeof e=="object"||typeof e=="function")?e:t}function g(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}var c=function(t){g(e,t);function e(a){f(this,e);var n=p(this,t.call(this,a));return n.type=o.NESTING,n.value="&",n}return e}(l.default);r.default=c,i.exports=r.default;}}),Jl=C({"node_modules/postcss-selector-parser/dist/sortAscending.js"(r,i){I(),r.__esModule=!0,r.default=s;function s(l){return l.sort(function(o,h){return o-h})}i.exports=r.default;}}),Kl=C({"node_modules/postcss-selector-parser/dist/tokenize.js"(r,i){I(),r.__esModule=!0,r.default=X;var s=39,l=34,o=92,h=47,f=10,p=32,g=12,c=9,t=13,e=43,a=62,n=126,u=124,m=44,v=40,y=41,w=91,d=93,_=59,O=42,S=58,M=38,R=64,$=/[ \n\t\r\{\(\)'"\\;/]/g,J=/[ \n\t\r\(\)\*:;@!&'"\+\|~>,\[\]\\]|\/(?=\*)/g;function X(F){for(var K=[],W=F.css.valueOf(),T=void 0,D=void 0,j=void 0,N=void 0,b=void 0,Q=void 0,G=void 0,L=void 0,B=void 0,P=void 0,Z=void 0,V=W.length,q=-1,x=1,k=0,z=function(E,H){if(F.safe)W+=H,D=W.length-1;else throw F.error("Unclosed "+E,x,k-q,k)};k<V;){switch(T=W.charCodeAt(k),T===f&&(q=k,x+=1),T){case f:case p:case c:case t:case g:D=k;do D+=1,T=W.charCodeAt(D),T===f&&(q=D,x+=1);while(T===p||T===f||T===c||T===t||T===g);K.push(["space",W.slice(k,D),x,k-q,k]),k=D-1;break;case e:case a:case n:case u:D=k;do D+=1,T=W.charCodeAt(D);while(T===e||T===a||T===n||T===u);K.push(["combinator",W.slice(k,D),x,k-q,k]),k=D-1;break;case O:K.push(["*","*",x,k-q,k]);break;case M:K.push(["&","&",x,k-q,k]);break;case m:K.push([",",",",x,k-q,k]);break;case w:K.push(["[","[",x,k-q,k]);break;case d:K.push(["]","]",x,k-q,k]);break;case S:K.push([":",":",x,k-q,k]);break;case _:K.push([";",";",x,k-q,k]);break;case v:K.push(["(","(",x,k-q,k]);break;case y:K.push([")",")",x,k-q,k]);break;case s:case l:j=T===s?"'":'"',D=k;do for(P=!1,D=W.indexOf(j,D+1),D===-1&&z("quote",j),Z=D;W.charCodeAt(Z-1)===o;)Z-=1,P=!P;while(P);K.push(["string",W.slice(k,D+1),x,k-q,x,D-q,k]),k=D;break;case R:$.lastIndex=k+1,$.test(W),$.lastIndex===0?D=W.length-1:D=$.lastIndex-2,K.push(["at-word",W.slice(k,D+1),x,k-q,x,D-q,k]),k=D;break;case o:for(D=k,G=!0;W.charCodeAt(D+1)===o;)D+=1,G=!G;T=W.charCodeAt(D+1),G&&T!==h&&T!==p&&T!==f&&T!==c&&T!==t&&T!==g&&(D+=1),K.push(["word",W.slice(k,D+1),x,k-q,x,D-q,k]),k=D;break;default:T===h&&W.charCodeAt(k+1)===O?(D=W.indexOf("*/",k+2)+1,D===0&&z("comment","*/"),Q=W.slice(k,D+1),N=Q.split(` -`),b=N.length-1,b>0?(L=x+b,B=D-N[b].length):(L=x,B=q),K.push(["comment",Q,x,k-q,L,D-B,k]),q=B,x=L,k=D):(J.lastIndex=k+1,J.test(W),J.lastIndex===0?D=W.length-1:D=J.lastIndex-2,K.push(["word",W.slice(k,D+1),x,k-q,x,D-q,k]),k=D);break}k++;}return K}i.exports=r.default;}}),Ql=C({"node_modules/postcss-selector-parser/dist/parser.js"(r,i){I(),r.__esModule=!0;var s=function(){function q(x,k){for(var z=0;z<k.length;z++){var A=k[z];A.enumerable=A.enumerable||!1,A.configurable=!0,"value"in A&&(A.writable=!0),Object.defineProperty(x,A.key,A);}}return function(x,k,z){return k&&q(x.prototype,k),z&&q(x,z),x}}(),l=mo(),o=P(l),h=go(),f=P(h),p=yo(),g=P(p),c=wo(),t=P(c),e=_o(),a=P(e),n=bo(),u=P(n),m=xo(),v=P(m),y=ko(),w=P(y),d=So(),_=P(d),O=Oo(),S=P(O),M=To(),R=P(M),$=Eo(),J=P($),X=qo(),F=P(X),K=Ao(),W=P(K),T=Po(),D=P(T),j=Jl(),N=P(j),b=Kl(),Q=P(b),G=oe(),L=B(G);function B(q){if(q&&q.__esModule)return q;var x={};if(q!=null)for(var k in q)Object.prototype.hasOwnProperty.call(q,k)&&(x[k]=q[k]);return x.default=q,x}function P(q){return q&&q.__esModule?q:{default:q}}function Z(q,x){if(!(q instanceof x))throw new TypeError("Cannot call a class as a function")}var V=function(){function q(x){Z(this,q),this.input=x,this.lossy=x.options.lossless===!1,this.position=0,this.root=new t.default;var k=new a.default;return this.root.append(k),this.current=k,this.lossy?this.tokens=(0, Q.default)({safe:x.safe,css:x.css.trim()}):this.tokens=(0, Q.default)(x),this.loop()}return q.prototype.attribute=function(){var k="",z=void 0,A=this.currToken;for(this.position++;this.position<this.tokens.length&&this.currToken[0]!=="]";)k+=this.tokens[this.position][1],this.position++;this.position===this.tokens.length&&!~k.indexOf("]")&&this.error("Expected a closing square bracket.");var E=k.split(/((?:[*~^$|]?=))([^]*)/),H=E[0].split(/(\|)/g),U={operator:E[1],value:E[2],source:{start:{line:A[2],column:A[3]},end:{line:this.currToken[2],column:this.currToken[3]}},sourceIndex:A[4]};if(H.length>1?(H[0]===""&&(H[0]=!0),U.attribute=this.parseValue(H[2]),U.namespace=this.parseNamespace(H[0])):U.attribute=this.parseValue(E[0]),z=new J.default(U),E[2]){var re=E[2].split(/(\s+i\s*?)$/),ne=re[0].trim();z.value=this.lossy?ne:re[0],re[1]&&(z.insensitive=!0,this.lossy||(z.raws.insensitive=re[1])),z.quoted=ne[0]==="'"||ne[0]==='"',z.raws.unquoted=z.quoted?ne.slice(1,-1):ne;}this.newNode(z),this.position++;},q.prototype.combinator=function(){if(this.currToken[1]==="|")return this.namespace();for(var k=new W.default({value:"",source:{start:{line:this.currToken[2],column:this.currToken[3]},end:{line:this.currToken[2],column:this.currToken[3]}},sourceIndex:this.currToken[4]});this.position<this.tokens.length&&this.currToken&&(this.currToken[0]==="space"||this.currToken[0]==="combinator");)this.nextToken&&this.nextToken[0]==="combinator"?(k.spaces.before=this.parseSpace(this.currToken[1]),k.source.start.line=this.nextToken[2],k.source.start.column=this.nextToken[3],k.source.end.column=this.nextToken[3],k.source.end.line=this.nextToken[2],k.sourceIndex=this.nextToken[4]):this.prevToken&&this.prevToken[0]==="combinator"?k.spaces.after=this.parseSpace(this.currToken[1]):this.currToken[0]==="combinator"?k.value=this.currToken[1]:this.currToken[0]==="space"&&(k.value=this.parseSpace(this.currToken[1]," ")),this.position++;return this.newNode(k)},q.prototype.comma=function(){if(this.position===this.tokens.length-1){this.root.trailingComma=!0,this.position++;return}var k=new a.default;this.current.parent.append(k),this.current=k,this.position++;},q.prototype.comment=function(){var k=new v.default({value:this.currToken[1],source:{start:{line:this.currToken[2],column:this.currToken[3]},end:{line:this.currToken[4],column:this.currToken[5]}},sourceIndex:this.currToken[6]});this.newNode(k),this.position++;},q.prototype.error=function(k){throw new this.input.error(k)},q.prototype.missingBackslash=function(){return this.error("Expected a backslash preceding the semicolon.")},q.prototype.missingParenthesis=function(){return this.error("Expected opening parenthesis.")},q.prototype.missingSquareBracket=function(){return this.error("Expected opening square bracket.")},q.prototype.namespace=function(){var k=this.prevToken&&this.prevToken[1]||!0;if(this.nextToken[0]==="word")return this.position++,this.word(k);if(this.nextToken[0]==="*")return this.position++,this.universal(k)},q.prototype.nesting=function(){this.newNode(new D.default({value:this.currToken[1],source:{start:{line:this.currToken[2],column:this.currToken[3]},end:{line:this.currToken[2],column:this.currToken[3]}},sourceIndex:this.currToken[4]})),this.position++;},q.prototype.parentheses=function(){var k=this.current.last;if(k&&k.type===L.PSEUDO){var z=new a.default,A=this.current;k.append(z),this.current=z;var E=1;for(this.position++;this.position<this.tokens.length&&E;)this.currToken[0]==="("&&E++,this.currToken[0]===")"&&E--,E?this.parse():(z.parent.source.end.line=this.currToken[2],z.parent.source.end.column=this.currToken[3],this.position++);E&&this.error("Expected closing parenthesis."),this.current=A;}else {var H=1;for(this.position++,k.value+="(";this.position<this.tokens.length&&H;)this.currToken[0]==="("&&H++,this.currToken[0]===")"&&H--,k.value+=this.parseParenthesisToken(this.currToken),this.position++;H&&this.error("Expected closing parenthesis.");}},q.prototype.pseudo=function(){for(var k=this,z="",A=this.currToken;this.currToken&&this.currToken[0]===":";)z+=this.currToken[1],this.position++;if(!this.currToken)return this.error("Expected pseudo-class or pseudo-element");if(this.currToken[0]==="word"){var E=void 0;this.splitWord(!1,function(H,U){z+=H,E=new R.default({value:z,source:{start:{line:A[2],column:A[3]},end:{line:k.currToken[4],column:k.currToken[5]}},sourceIndex:A[4]}),k.newNode(E),U>1&&k.nextToken&&k.nextToken[0]==="("&&k.error("Misplaced parenthesis.");});}else this.error('Unexpected "'+this.currToken[0]+'" found.');},q.prototype.space=function(){var k=this.currToken;this.position===0||this.prevToken[0]===","||this.prevToken[0]==="("?(this.spaces=this.parseSpace(k[1]),this.position++):this.position===this.tokens.length-1||this.nextToken[0]===","||this.nextToken[0]===")"?(this.current.last.spaces.after=this.parseSpace(k[1]),this.position++):this.combinator();},q.prototype.string=function(){var k=this.currToken;this.newNode(new S.default({value:this.currToken[1],source:{start:{line:k[2],column:k[3]},end:{line:k[4],column:k[5]}},sourceIndex:k[6]})),this.position++;},q.prototype.universal=function(k){var z=this.nextToken;if(z&&z[1]==="|")return this.position++,this.namespace();this.newNode(new F.default({value:this.currToken[1],source:{start:{line:this.currToken[2],column:this.currToken[3]},end:{line:this.currToken[2],column:this.currToken[3]}},sourceIndex:this.currToken[4]}),k),this.position++;},q.prototype.splitWord=function(k,z){for(var A=this,E=this.nextToken,H=this.currToken[1];E&&E[0]==="word";){this.position++;var U=this.currToken[1];if(H+=U,U.lastIndexOf("\\")===U.length-1){var re=this.nextToken;re&&re[0]==="space"&&(H+=this.parseSpace(re[1]," "),this.position++);}E=this.nextToken;}var ne=(0, f.default)(H,"."),ce=(0, f.default)(H,"#"),fe=(0, f.default)(H,"#{");fe.length&&(ce=ce.filter(function(ie){return !~fe.indexOf(ie)}));var te=(0, N.default)((0, g.default)((0, o.default)([[0],ne,ce])));te.forEach(function(ie,ae){var se=te[ae+1]||H.length,le=H.slice(ie,se);if(ae===0&&z)return z.call(A,le,te.length);var pe=void 0;~ne.indexOf(ie)?pe=new u.default({value:le.slice(1),source:{start:{line:A.currToken[2],column:A.currToken[3]+ie},end:{line:A.currToken[4],column:A.currToken[3]+(se-1)}},sourceIndex:A.currToken[6]+te[ae]}):~ce.indexOf(ie)?pe=new w.default({value:le.slice(1),source:{start:{line:A.currToken[2],column:A.currToken[3]+ie},end:{line:A.currToken[4],column:A.currToken[3]+(se-1)}},sourceIndex:A.currToken[6]+te[ae]}):pe=new _.default({value:le,source:{start:{line:A.currToken[2],column:A.currToken[3]+ie},end:{line:A.currToken[4],column:A.currToken[3]+(se-1)}},sourceIndex:A.currToken[6]+te[ae]}),A.newNode(pe,k);}),this.position++;},q.prototype.word=function(k){var z=this.nextToken;return z&&z[1]==="|"?(this.position++,this.namespace()):this.splitWord(k)},q.prototype.loop=function(){for(;this.position<this.tokens.length;)this.parse(!0);return this.root},q.prototype.parse=function(k){switch(this.currToken[0]){case"space":this.space();break;case"comment":this.comment();break;case"(":this.parentheses();break;case")":k&&this.missingParenthesis();break;case"[":this.attribute();break;case"]":this.missingSquareBracket();break;case"at-word":case"word":this.word();break;case":":this.pseudo();break;case";":this.missingBackslash();break;case",":this.comma();break;case"*":this.universal();break;case"&":this.nesting();break;case"combinator":this.combinator();break;case"string":this.string();break}},q.prototype.parseNamespace=function(k){if(this.lossy&&typeof k=="string"){var z=k.trim();return z.length?z:!0}return k},q.prototype.parseSpace=function(k,z){return this.lossy?z||"":k},q.prototype.parseValue=function(k){return this.lossy&&k&&typeof k=="string"?k.trim():k},q.prototype.parseParenthesisToken=function(k){return this.lossy?k[0]==="space"?this.parseSpace(k[1]," "):this.parseValue(k[1]):k[1]},q.prototype.newNode=function(k,z){return z&&(k.namespace=this.parseNamespace(z)),this.spaces&&(k.spaces.before=this.spaces,this.spaces=""),this.current.append(k)},s(q,[{key:"currToken",get:function(){return this.tokens[this.position]}},{key:"nextToken",get:function(){return this.tokens[this.position+1]}},{key:"prevToken",get:function(){return this.tokens[this.position-1]}}]),q}();r.default=V,i.exports=r.default;}}),Yl=C({"node_modules/postcss-selector-parser/dist/processor.js"(r,i){I(),r.__esModule=!0;var s=function(){function g(c,t){for(var e=0;e<t.length;e++){var a=t[e];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a);}}return function(c,t,e){return t&&g(c.prototype,t),e&&g(c,e),c}}(),l=Ql(),o=h(l);function h(g){return g&&g.__esModule?g:{default:g}}function f(g,c){if(!(g instanceof c))throw new TypeError("Cannot call a class as a function")}var p=function(){function g(c){return f(this,g),this.func=c||function(){},this}return g.prototype.process=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=new o.default({css:t,error:function(u){throw new Error(u)},options:e});return this.res=a,this.func(a),this},s(g,[{key:"result",get:function(){return String(this.res)}}]),g}();r.default=p,i.exports=r.default;}}),Xl=C({"node_modules/postcss-selector-parser/dist/index.js"(r,i){I(),r.__esModule=!0;var s=Yl(),l=T(s),o=Eo(),h=T(o),f=bo(),p=T(f),g=Ao(),c=T(g),t=xo(),e=T(t),a=ko(),n=T(a),u=Po(),m=T(u),v=To(),y=T(v),w=wo(),d=T(w),_=_o(),O=T(_),S=Oo(),M=T(S),R=So(),$=T(R),J=qo(),X=T(J),F=oe(),K=W(F);function W(j){if(j&&j.__esModule)return j;var N={};if(j!=null)for(var b in j)Object.prototype.hasOwnProperty.call(j,b)&&(N[b]=j[b]);return N.default=j,N}function T(j){return j&&j.__esModule?j:{default:j}}var D=function(N){return new l.default(N)};D.attribute=function(j){return new h.default(j)},D.className=function(j){return new p.default(j)},D.combinator=function(j){return new c.default(j)},D.comment=function(j){return new e.default(j)},D.id=function(j){return new n.default(j)},D.nesting=function(j){return new m.default(j)},D.pseudo=function(j){return new y.default(j)},D.root=function(j){return new d.default(j)},D.selector=function(j){return new O.default(j)},D.string=function(j){return new M.default(j)},D.tag=function(j){return new $.default(j)},D.universal=function(j){return new X.default(j)},Object.keys(K).forEach(function(j){j!=="__esModule"&&(D[j]=K[j]);}),r.default=D,i.exports=r.default;}}),Ro=C({"node_modules/postcss-media-query-parser/dist/nodes/Node.js"(r){I(),Object.defineProperty(r,"__esModule",{value:!0});function i(s){this.after=s.after,this.before=s.before,this.type=s.type,this.value=s.value,this.sourceIndex=s.sourceIndex;}r.default=i;}}),Io=C({"node_modules/postcss-media-query-parser/dist/nodes/Container.js"(r){I(),Object.defineProperty(r,"__esModule",{value:!0});var i=Ro(),s=l(i);function l(h){return h&&h.__esModule?h:{default:h}}function o(h){var f=this;this.constructor(h),this.nodes=h.nodes,this.after===void 0&&(this.after=this.nodes.length>0?this.nodes[this.nodes.length-1].after:""),this.before===void 0&&(this.before=this.nodes.length>0?this.nodes[0].before:""),this.sourceIndex===void 0&&(this.sourceIndex=this.before.length),this.nodes.forEach(function(p){p.parent=f;});}o.prototype=Object.create(s.default.prototype),o.constructor=s.default,o.prototype.walk=function(f,p){for(var g=typeof f=="string"||f instanceof RegExp,c=g?p:f,t=typeof f=="string"?new RegExp(f):f,e=0;e<this.nodes.length;e++){var a=this.nodes[e],n=g?t.test(a.type):!0;if(n&&c&&c(a,e,this.nodes)===!1||a.nodes&&a.walk(f,p)===!1)return !1}return !0},o.prototype.each=function(){for(var f=arguments.length<=0||arguments[0]===void 0?function(){}:arguments[0],p=0;p<this.nodes.length;p++){var g=this.nodes[p];if(f(g,p,this.nodes)===!1)return !1}return !0},r.default=o;}}),Zl=C({"node_modules/postcss-media-query-parser/dist/parsers.js"(r){I(),Object.defineProperty(r,"__esModule",{value:!0}),r.parseMediaFeature=f,r.parseMediaQuery=p,r.parseMediaList=g;var i=Ro(),s=h(i),l=Io(),o=h(l);function h(c){return c&&c.__esModule?c:{default:c}}function f(c){var t=arguments.length<=1||arguments[1]===void 0?0:arguments[1],e=[{mode:"normal",character:null}],a=[],n=0,u="",m=null,v=null,y=t,w=c;c[0]==="("&&c[c.length-1]===")"&&(w=c.substring(1,c.length-1),y++);for(var d=0;d<w.length;d++){var _=w[d];if((_==="'"||_==='"')&&(e[n].isCalculationEnabled===!0?(e.push({mode:"string",isCalculationEnabled:!1,character:_}),n++):e[n].mode==="string"&&e[n].character===_&&w[d-1]!=="\\"&&(e.pop(),n--)),_==="{"?(e.push({mode:"interpolation",isCalculationEnabled:!0}),n++):_==="}"&&(e.pop(),n--),e[n].mode==="normal"&&_===":"){var O=w.substring(d+1);v={type:"value",before:/^(\s*)/.exec(O)[1],after:/(\s*)$/.exec(O)[1],value:O.trim()},v.sourceIndex=v.before.length+d+1+y,m={type:"colon",sourceIndex:d+y,after:v.before,value:":"};break}u+=_;}return u={type:"media-feature",before:/^(\s*)/.exec(u)[1],after:/(\s*)$/.exec(u)[1],value:u.trim()},u.sourceIndex=u.before.length+y,a.push(u),m!==null&&(m.before=u.after,a.push(m)),v!==null&&a.push(v),a}function p(c){var t=arguments.length<=1||arguments[1]===void 0?0:arguments[1],e=[],a=0,n=!1,u=void 0;function m(){return {before:"",after:"",value:""}}u=m();for(var v=0;v<c.length;v++){var y=c[v];n?(u.value+=y,(y==="{"||y==="(")&&a++,(y===")"||y==="}")&&a--):y.search(/\s/)!==-1?u.before+=y:(y==="("&&(u.type="media-feature-expression",a++),u.value=y,u.sourceIndex=t+v,n=!0),n&&a===0&&(y===")"||v===c.length-1||c[v+1].search(/\s/)!==-1)&&(["not","only","and"].indexOf(u.value)!==-1&&(u.type="keyword"),u.type==="media-feature-expression"&&(u.nodes=f(u.value,u.sourceIndex)),e.push(Array.isArray(u.nodes)?new o.default(u):new s.default(u)),u=m(),n=!1);}for(var w=0;w<e.length;w++)if(u=e[w],w>0&&(e[w-1].after=u.before),u.type===void 0){if(w>0){if(e[w-1].type==="media-feature-expression"){u.type="keyword";continue}if(e[w-1].value==="not"||e[w-1].value==="only"){u.type="media-type";continue}if(e[w-1].value==="and"){u.type="media-feature-expression";continue}e[w-1].type==="media-type"&&(e[w+1]?u.type=e[w+1].type==="media-feature-expression"?"keyword":"media-feature-expression":u.type="media-feature-expression");}if(w===0){if(!e[w+1]){u.type="media-type";continue}if(e[w+1]&&(e[w+1].type==="media-feature-expression"||e[w+1].type==="keyword")){u.type="media-type";continue}if(e[w+2]){if(e[w+2].type==="media-feature-expression"){u.type="media-type",e[w+1].type="keyword";continue}if(e[w+2].type==="keyword"){u.type="keyword",e[w+1].type="media-type";continue}}if(e[w+3]&&e[w+3].type==="media-feature-expression"){u.type="keyword",e[w+1].type="media-type",e[w+2].type="keyword";continue}}}return e}function g(c){var t=[],e=0,a=0,n=/^(\s*)url\s*\(/.exec(c);if(n!==null){for(var u=n[0].length,m=1;m>0;){var v=c[u];v==="("&&m++,v===")"&&m--,u++;}t.unshift(new s.default({type:"url",value:c.substring(0,u).trim(),sourceIndex:n[1].length,before:n[1],after:/^(\s*)/.exec(c.substring(u))[1]})),e=u;}for(var y=e;y<c.length;y++){var w=c[y];if(w==="("&&a++,w===")"&&a--,a===0&&w===","){var d=c.substring(e,y),_=/^(\s*)/.exec(d)[1];t.push(new o.default({type:"media-query",value:d.trim(),sourceIndex:e+_.length,nodes:p(d,e),before:_,after:/(\s*)$/.exec(d)[1]})),e=y+1;}}var O=c.substring(e),S=/^(\s*)/.exec(O)[1];return t.push(new o.default({type:"media-query",value:O.trim(),sourceIndex:e+S.length,nodes:p(O,e),before:S,after:/(\s*)$/.exec(O)[1]})),t}}}),ef=C({"node_modules/postcss-media-query-parser/dist/index.js"(r){I(),Object.defineProperty(r,"__esModule",{value:!0}),r.default=h;var i=Io(),s=o(i),l=Zl();function o(f){return f&&f.__esModule?f:{default:f}}function h(f){return new s.default({nodes:(0, l.parseMediaList)(f),type:"media-query-list",value:f.trim()})}}}),Co={};mt(Co,{basename:()=>Lo,default:()=>Bo,delimiter:()=>ht,dirname:()=>Do,extname:()=>zo,isAbsolute:()=>Tt,join:()=>jo,normalize:()=>Ot,relative:()=>Mo,resolve:()=>pr,sep:()=>pt});function No(r,i){for(var s=0,l=r.length-1;l>=0;l--){var o=r[l];o==="."?r.splice(l,1):o===".."?(r.splice(l,1),s++):s&&(r.splice(l,1),s--);}if(i)for(;s--;s)r.unshift("..");return r}function pr(){for(var r="",i=!1,s=arguments.length-1;s>=-1&&!i;s--){var l=s>=0?arguments[s]:"/";if(typeof l!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!l)continue;r=l+"/"+r,i=l.charAt(0)==="/";}return r=No(Et(r.split("/"),function(o){return !!o}),!i).join("/"),(i?"/":"")+r||"."}function Ot(r){var i=Tt(r),s=Fo(r,-1)==="/";return r=No(Et(r.split("/"),function(l){return !!l}),!i).join("/"),!r&&!i&&(r="."),r&&s&&(r+="/"),(i?"/":"")+r}function Tt(r){return r.charAt(0)==="/"}function jo(){var r=Array.prototype.slice.call(arguments,0);return Ot(Et(r,function(i,s){if(typeof i!="string")throw new TypeError("Arguments to path.join must be strings");return i}).join("/"))}function Mo(r,i){r=pr(r).substr(1),i=pr(i).substr(1);function s(c){for(var t=0;t<c.length&&c[t]==="";t++);for(var e=c.length-1;e>=0&&c[e]==="";e--);return t>e?[]:c.slice(t,e-t+1)}for(var l=s(r.split("/")),o=s(i.split("/")),h=Math.min(l.length,o.length),f=h,p=0;p<h;p++)if(l[p]!==o[p]){f=p;break}for(var g=[],p=f;p<l.length;p++)g.push("..");return g=g.concat(o.slice(f)),g.join("/")}function Do(r){var i=vr(r),s=i[0],l=i[1];return !s&&!l?".":(l&&(l=l.substr(0,l.length-1)),s+l)}function Lo(r,i){var s=vr(r)[2];return i&&s.substr(-1*i.length)===i&&(s=s.substr(0,s.length-i.length)),s}function zo(r){return vr(r)[3]}function Et(r,i){if(r.filter)return r.filter(i);for(var s=[],l=0;l<r.length;l++)i(r[l],l,r)&&s.push(r[l]);return s}var ks,vr,pt,ht,Bo,Fo,rf=Me({"node-modules-polyfills:path"(){I(),ks=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,vr=function(r){return ks.exec(r).slice(1)},pt="/",ht=":",Bo={extname:zo,basename:Lo,dirname:Do,sep:pt,delimiter:ht,relative:Mo,join:jo,isAbsolute:Tt,normalize:Ot,resolve:pr},Fo="ab".substr(-1)==="b"?function(r,i,s){return r.substr(i,s)}:function(r,i,s){return i<0&&(i=r.length+i),r.substr(i,s)};}}),tf=C({"node-modules-polyfills-commonjs:path"(r,i){I();var s=(rf(),gt(Co));if(s&&s.default){i.exports=s.default;for(let l in s)i.exports[l]=s[l];}else s&&(i.exports=s);}}),nf=C({"node_modules/picocolors/picocolors.browser.js"(r,i){I();var s=String,l=function(){return {isColorSupported:!1,reset:s,bold:s,dim:s,italic:s,underline:s,inverse:s,hidden:s,strikethrough:s,black:s,red:s,green:s,yellow:s,blue:s,magenta:s,cyan:s,white:s,gray:s,bgBlack:s,bgRed:s,bgGreen:s,bgYellow:s,bgBlue:s,bgMagenta:s,bgCyan:s,bgWhite:s}};i.exports=l(),i.exports.createColors=l;}}),sf=C({"(disabled):node_modules/postcss/lib/terminal-highlight"(){I();}}),Uo=C({"node_modules/postcss/lib/css-syntax-error.js"(r,i){I(),r.__esModule=!0,r.default=void 0;var s=o(nf()),l=o(sf());function o(m){return m&&m.__esModule?m:{default:m}}function h(m){if(m===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return m}function f(m,v){m.prototype=Object.create(v.prototype),m.prototype.constructor=m,m.__proto__=v;}function p(m){var v=typeof Map=="function"?new Map:void 0;return p=function(w){if(w===null||!t(w))return w;if(typeof w!="function")throw new TypeError("Super expression must either be null or a function");if(typeof v<"u"){if(v.has(w))return v.get(w);v.set(w,d);}function d(){return g(w,arguments,a(this).constructor)}return d.prototype=Object.create(w.prototype,{constructor:{value:d,enumerable:!1,writable:!0,configurable:!0}}),e(d,w)},p(m)}function g(m,v,y){return c()?g=Reflect.construct:g=function(d,_,O){var S=[null];S.push.apply(S,_);var M=Function.bind.apply(d,S),R=new M;return O&&e(R,O.prototype),R},g.apply(null,arguments)}function c(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return !1;if(typeof Proxy=="function")return !0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return !1}}function t(m){return Function.toString.call(m).indexOf("[native code]")!==-1}function e(m,v){return e=Object.setPrototypeOf||function(w,d){return w.__proto__=d,w},e(m,v)}function a(m){return a=Object.setPrototypeOf?Object.getPrototypeOf:function(y){return y.__proto__||Object.getPrototypeOf(y)},a(m)}var n=function(m){f(v,m);function v(w,d,_,O,S,M){var R;return R=m.call(this,w)||this,R.name="CssSyntaxError",R.reason=w,S&&(R.file=S),O&&(R.source=O),M&&(R.plugin=M),typeof d<"u"&&typeof _<"u"&&(R.line=d,R.column=_),R.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(h(R),v),R}var y=v.prototype;return y.setMessage=function(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"<css input>",typeof this.line<"u"&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason;},y.showSourceCode=function(d){var _=this;if(!this.source)return "";var O=this.source;l.default&&(typeof d>"u"&&(d=s.default.isColorSupported),d&&(O=(0, l.default)(O)));var S=O.split(/\r?\n/),M=Math.max(this.line-3,0),R=Math.min(this.line+2,S.length),$=String(R).length;function J(F){return d&&s.default.red?s.default.red(s.default.bold(F)):F}function X(F){return d&&s.default.gray?s.default.gray(F):F}return S.slice(M,R).map(function(F,K){var W=M+1+K,T=" "+(" "+W).slice(-$)+" | ";if(W===_.line){var D=X(T.replace(/\d/g," "))+F.slice(0,_.column-1).replace(/[^\t]/g," ");return J(">")+X(T)+F+` - `+D+J("^")}return " "+X(T)+F}).join(` -`)},y.toString=function(){var d=this.showSourceCode();return d&&(d=` - -`+d+` -`),this.name+": "+this.message+d},v}(p(Error)),u=n;r.default=u,i.exports=r.default;}}),of=C({"node_modules/postcss/lib/previous-map.js"(r,i){I(),i.exports=class{};}}),mr=C({"node_modules/postcss/lib/input.js"(r,i){I(),r.__esModule=!0,r.default=void 0;var s=h(tf()),l=h(Uo()),o=h(of());function h(e){return e&&e.__esModule?e:{default:e}}function f(e,a){for(var n=0;n<a.length;n++){var u=a[n];u.enumerable=u.enumerable||!1,u.configurable=!0,"value"in u&&(u.writable=!0),Object.defineProperty(e,u.key,u);}}function p(e,a,n){return a&&f(e.prototype,a),n&&f(e,n),e}var g=0,c=function(){function e(n,u){if(u===void 0&&(u={}),n===null||typeof n>"u"||typeof n=="object"&&!n.toString)throw new Error("PostCSS received "+n+" instead of CSS string");this.css=n.toString(),this.css[0]==="\uFEFF"||this.css[0]==="\uFFFE"?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,u.from&&(/^\w+:\/\//.test(u.from)||s.default.isAbsolute(u.from)?this.file=u.from:this.file=s.default.resolve(u.from));var m=new o.default(this.css,u);if(m.text){this.map=m;var v=m.consumer().file;!this.file&&v&&(this.file=this.mapResolve(v));}this.file||(g+=1,this.id="<input css "+g+">"),this.map&&(this.map.file=this.from);}var a=e.prototype;return a.error=function(u,m,v,y){y===void 0&&(y={});var w,d=this.origin(m,v);return d?w=new l.default(u,d.line,d.column,d.source,d.file,y.plugin):w=new l.default(u,m,v,this.css,this.file,y.plugin),w.input={line:m,column:v,source:this.css},this.file&&(w.input.file=this.file),w},a.origin=function(u,m){if(!this.map)return !1;var v=this.map.consumer(),y=v.originalPositionFor({line:u,column:m});if(!y.source)return !1;var w={file:this.mapResolve(y.source),line:y.line,column:y.column},d=v.sourceContentFor(y.source);return d&&(w.source=d),w},a.mapResolve=function(u){return /^\w+:\/\//.test(u)?u:s.default.resolve(this.map.consumer().sourceRoot||".",u)},p(e,[{key:"from",get:function(){return this.file||this.id}}]),e}(),t=c;r.default=t,i.exports=r.default;}}),gr=C({"node_modules/postcss/lib/stringifier.js"(r,i){I(),r.__esModule=!0,r.default=void 0;var s={colon:": ",indent:" ",beforeDecl:` -`,beforeRule:` -`,beforeOpen:" ",beforeClose:` -`,beforeComment:` -`,after:` -`,emptyBody:"",commentLeft:" ",commentRight:" ",semicolon:!1};function l(f){return f[0].toUpperCase()+f.slice(1)}var o=function(){function f(g){this.builder=g;}var p=f.prototype;return p.stringify=function(c,t){this[c.type](c,t);},p.root=function(c){this.body(c),c.raws.after&&this.builder(c.raws.after);},p.comment=function(c){var t=this.raw(c,"left","commentLeft"),e=this.raw(c,"right","commentRight");this.builder("/*"+t+c.text+e+"*/",c);},p.decl=function(c,t){var e=this.raw(c,"between","colon"),a=c.prop+e+this.rawValue(c,"value");c.important&&(a+=c.raws.important||" !important"),t&&(a+=";"),this.builder(a,c);},p.rule=function(c){this.block(c,this.rawValue(c,"selector")),c.raws.ownSemicolon&&this.builder(c.raws.ownSemicolon,c,"end");},p.atrule=function(c,t){var e="@"+c.name,a=c.params?this.rawValue(c,"params"):"";if(typeof c.raws.afterName<"u"?e+=c.raws.afterName:a&&(e+=" "),c.nodes)this.block(c,e+a);else {var n=(c.raws.between||"")+(t?";":"");this.builder(e+a+n,c);}},p.body=function(c){for(var t=c.nodes.length-1;t>0&&c.nodes[t].type==="comment";)t-=1;for(var e=this.raw(c,"semicolon"),a=0;a<c.nodes.length;a++){var n=c.nodes[a],u=this.raw(n,"before");u&&this.builder(u),this.stringify(n,t!==a||e);}},p.block=function(c,t){var e=this.raw(c,"between","beforeOpen");this.builder(t+e+"{",c,"start");var a;c.nodes&&c.nodes.length?(this.body(c),a=this.raw(c,"after")):a=this.raw(c,"after","emptyBody"),a&&this.builder(a),this.builder("}",c,"end");},p.raw=function(c,t,e){var a;if(e||(e=t),t&&(a=c.raws[t],typeof a<"u"))return a;var n=c.parent;if(e==="before"&&(!n||n.type==="root"&&n.first===c))return "";if(!n)return s[e];var u=c.root();if(u.rawCache||(u.rawCache={}),typeof u.rawCache[e]<"u")return u.rawCache[e];if(e==="before"||e==="after")return this.beforeAfter(c,e);var m="raw"+l(e);return this[m]?a=this[m](u,c):u.walk(function(v){if(a=v.raws[t],typeof a<"u")return !1}),typeof a>"u"&&(a=s[e]),u.rawCache[e]=a,a},p.rawSemicolon=function(c){var t;return c.walk(function(e){if(e.nodes&&e.nodes.length&&e.last.type==="decl"&&(t=e.raws.semicolon,typeof t<"u"))return !1}),t},p.rawEmptyBody=function(c){var t;return c.walk(function(e){if(e.nodes&&e.nodes.length===0&&(t=e.raws.after,typeof t<"u"))return !1}),t},p.rawIndent=function(c){if(c.raws.indent)return c.raws.indent;var t;return c.walk(function(e){var a=e.parent;if(a&&a!==c&&a.parent&&a.parent===c&&typeof e.raws.before<"u"){var n=e.raws.before.split(` -`);return t=n[n.length-1],t=t.replace(/[^\s]/g,""),!1}}),t},p.rawBeforeComment=function(c,t){var e;return c.walkComments(function(a){if(typeof a.raws.before<"u")return e=a.raws.before,e.indexOf(` -`)!==-1&&(e=e.replace(/[^\n]+$/,"")),!1}),typeof e>"u"?e=this.raw(t,null,"beforeDecl"):e&&(e=e.replace(/[^\s]/g,"")),e},p.rawBeforeDecl=function(c,t){var e;return c.walkDecls(function(a){if(typeof a.raws.before<"u")return e=a.raws.before,e.indexOf(` -`)!==-1&&(e=e.replace(/[^\n]+$/,"")),!1}),typeof e>"u"?e=this.raw(t,null,"beforeRule"):e&&(e=e.replace(/[^\s]/g,"")),e},p.rawBeforeRule=function(c){var t;return c.walk(function(e){if(e.nodes&&(e.parent!==c||c.first!==e)&&typeof e.raws.before<"u")return t=e.raws.before,t.indexOf(` -`)!==-1&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/[^\s]/g,"")),t},p.rawBeforeClose=function(c){var t;return c.walk(function(e){if(e.nodes&&e.nodes.length>0&&typeof e.raws.after<"u")return t=e.raws.after,t.indexOf(` -`)!==-1&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/[^\s]/g,"")),t},p.rawBeforeOpen=function(c){var t;return c.walk(function(e){if(e.type!=="decl"&&(t=e.raws.between,typeof t<"u"))return !1}),t},p.rawColon=function(c){var t;return c.walkDecls(function(e){if(typeof e.raws.between<"u")return t=e.raws.between.replace(/[^\s:]/g,""),!1}),t},p.beforeAfter=function(c,t){var e;c.type==="decl"?e=this.raw(c,null,"beforeDecl"):c.type==="comment"?e=this.raw(c,null,"beforeComment"):t==="before"?e=this.raw(c,null,"beforeRule"):e=this.raw(c,null,"beforeClose");for(var a=c.parent,n=0;a&&a.type!=="root";)n+=1,a=a.parent;if(e.indexOf(` -`)!==-1){var u=this.raw(c,null,"indent");if(u.length)for(var m=0;m<n;m++)e+=u;}return e},p.rawValue=function(c,t){var e=c[t],a=c.raws[t];return a&&a.value===e?a.raw:e},f}(),h=o;r.default=h,i.exports=r.default;}}),Wo=C({"node_modules/postcss/lib/stringify.js"(r,i){I(),r.__esModule=!0,r.default=void 0;var s=l(gr());function l(f){return f&&f.__esModule?f:{default:f}}function o(f,p){var g=new s.default(p);g.stringify(f);}var h=o;r.default=h,i.exports=r.default;}}),qt=C({"node_modules/postcss/lib/node.js"(r,i){I(),r.__esModule=!0,r.default=void 0;var s=h(Uo()),l=h(gr()),o=h(Wo());function h(c){return c&&c.__esModule?c:{default:c}}function f(c,t){var e=new c.constructor;for(var a in c)if(!!c.hasOwnProperty(a)){var n=c[a],u=typeof n;a==="parent"&&u==="object"?t&&(e[a]=t):a==="source"?e[a]=n:n instanceof Array?e[a]=n.map(function(m){return f(m,e)}):(u==="object"&&n!==null&&(n=f(n)),e[a]=n);}return e}var p=function(){function c(e){e===void 0&&(e={}),this.raws={};for(var a in e)this[a]=e[a];}var t=c.prototype;return t.error=function(a,n){if(n===void 0&&(n={}),this.source){var u=this.positionBy(n);return this.source.input.error(a,u.line,u.column,n)}return new s.default(a)},t.warn=function(a,n,u){var m={node:this};for(var v in u)m[v]=u[v];return a.warn(n,m)},t.remove=function(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this},t.toString=function(a){a===void 0&&(a=o.default),a.stringify&&(a=a.stringify);var n="";return a(this,function(u){n+=u;}),n},t.clone=function(a){a===void 0&&(a={});var n=f(this);for(var u in a)n[u]=a[u];return n},t.cloneBefore=function(a){a===void 0&&(a={});var n=this.clone(a);return this.parent.insertBefore(this,n),n},t.cloneAfter=function(a){a===void 0&&(a={});var n=this.clone(a);return this.parent.insertAfter(this,n),n},t.replaceWith=function(){if(this.parent){for(var a=arguments.length,n=new Array(a),u=0;u<a;u++)n[u]=arguments[u];for(var m=0,v=n;m<v.length;m++){var y=v[m];this.parent.insertBefore(this,y);}this.remove();}return this},t.next=function(){if(!!this.parent){var a=this.parent.index(this);return this.parent.nodes[a+1]}},t.prev=function(){if(!!this.parent){var a=this.parent.index(this);return this.parent.nodes[a-1]}},t.before=function(a){return this.parent.insertBefore(this,a),this},t.after=function(a){return this.parent.insertAfter(this,a),this},t.toJSON=function(){var a={};for(var n in this)if(!!this.hasOwnProperty(n)&&n!=="parent"){var u=this[n];u instanceof Array?a[n]=u.map(function(m){return typeof m=="object"&&m.toJSON?m.toJSON():m}):typeof u=="object"&&u.toJSON?a[n]=u.toJSON():a[n]=u;}return a},t.raw=function(a,n){var u=new l.default;return u.raw(this,a,n)},t.root=function(){for(var a=this;a.parent;)a=a.parent;return a},t.cleanRaws=function(a){delete this.raws.before,delete this.raws.after,a||delete this.raws.between;},t.positionInside=function(a){for(var n=this.toString(),u=this.source.start.column,m=this.source.start.line,v=0;v<a;v++)n[v]===` -`?(u=1,m+=1):u+=1;return {line:m,column:u}},t.positionBy=function(a){var n=this.source.start;if(a.index)n=this.positionInside(a.index);else if(a.word){var u=this.toString().indexOf(a.word);u!==-1&&(n=this.positionInside(u));}return n},c}(),g=p;r.default=g,i.exports=r.default;}}),yr=C({"node_modules/postcss/lib/comment.js"(r,i){I(),r.__esModule=!0,r.default=void 0;var s=l(qt());function l(p){return p&&p.__esModule?p:{default:p}}function o(p,g){p.prototype=Object.create(g.prototype),p.prototype.constructor=p,p.__proto__=g;}var h=function(p){o(g,p);function g(c){var t;return t=p.call(this,c)||this,t.type="comment",t}return g}(s.default),f=h;r.default=f,i.exports=r.default;}}),$o=C({"node_modules/postcss/lib/declaration.js"(r,i){I(),r.__esModule=!0,r.default=void 0;var s=l(qt());function l(p){return p&&p.__esModule?p:{default:p}}function o(p,g){p.prototype=Object.create(g.prototype),p.prototype.constructor=p,p.__proto__=g;}var h=function(p){o(g,p);function g(c){var t;return t=p.call(this,c)||this,t.type="decl",t}return g}(s.default),f=h;r.default=f,i.exports=r.default;}}),At=C({"node_modules/postcss/lib/tokenize.js"(r,i){I(),r.__esModule=!0,r.default=$;var s="'".charCodeAt(0),l='"'.charCodeAt(0),o="\\".charCodeAt(0),h="/".charCodeAt(0),f=` -`.charCodeAt(0),p=" ".charCodeAt(0),g="\f".charCodeAt(0),c=" ".charCodeAt(0),t="\r".charCodeAt(0),e="[".charCodeAt(0),a="]".charCodeAt(0),n="(".charCodeAt(0),u=")".charCodeAt(0),m="{".charCodeAt(0),v="}".charCodeAt(0),y=";".charCodeAt(0),w="*".charCodeAt(0),d=":".charCodeAt(0),_="@".charCodeAt(0),O=/[ \n\t\r\f{}()'"\\;/[\]#]/g,S=/[ \n\t\r\f(){}:;@!'"\\\][#]|\/(?=\*)/g,M=/.[\\/("'\n]/,R=/[a-f0-9]/i;function $(J,X){X===void 0&&(X={});var F=J.css.valueOf(),K=X.ignoreErrors,W,T,D,j,N,b,Q,G,L,B,P,Z,V,q,x=F.length,k=-1,z=1,A=0,E=[],H=[];function U(){return A}function re(te){throw J.error("Unclosed "+te,z,A-k)}function ne(){return H.length===0&&A>=x}function ce(te){if(H.length)return H.pop();if(!(A>=x)){var ie=te?te.ignoreUnclosed:!1;switch(W=F.charCodeAt(A),(W===f||W===g||W===t&&F.charCodeAt(A+1)!==f)&&(k=A,z+=1),W){case f:case p:case c:case t:case g:T=A;do T+=1,W=F.charCodeAt(T),W===f&&(k=T,z+=1);while(W===p||W===f||W===c||W===t||W===g);q=["space",F.slice(A,T)],A=T-1;break;case e:case a:case m:case v:case d:case y:case u:var ae=String.fromCharCode(W);q=[ae,ae,z,A-k];break;case n:if(Z=E.length?E.pop()[1]:"",V=F.charCodeAt(A+1),Z==="url"&&V!==s&&V!==l&&V!==p&&V!==f&&V!==c&&V!==g&&V!==t){T=A;do{if(B=!1,T=F.indexOf(")",T+1),T===-1)if(K||ie){T=A;break}else re("bracket");for(P=T;F.charCodeAt(P-1)===o;)P-=1,B=!B;}while(B);q=["brackets",F.slice(A,T+1),z,A-k,z,T-k],A=T;}else T=F.indexOf(")",A+1),b=F.slice(A,T+1),T===-1||M.test(b)?q=["(","(",z,A-k]:(q=["brackets",b,z,A-k,z,T-k],A=T);break;case s:case l:D=W===s?"'":'"',T=A;do{if(B=!1,T=F.indexOf(D,T+1),T===-1)if(K||ie){T=A+1;break}else re("string");for(P=T;F.charCodeAt(P-1)===o;)P-=1,B=!B;}while(B);b=F.slice(A,T+1),j=b.split(` -`),N=j.length-1,N>0?(G=z+N,L=T-j[N].length):(G=z,L=k),q=["string",F.slice(A,T+1),z,A-k,G,T-L],k=L,z=G,A=T;break;case _:O.lastIndex=A+1,O.test(F),O.lastIndex===0?T=F.length-1:T=O.lastIndex-2,q=["at-word",F.slice(A,T+1),z,A-k,z,T-k],A=T;break;case o:for(T=A,Q=!0;F.charCodeAt(T+1)===o;)T+=1,Q=!Q;if(W=F.charCodeAt(T+1),Q&&W!==h&&W!==p&&W!==f&&W!==c&&W!==t&&W!==g&&(T+=1,R.test(F.charAt(T)))){for(;R.test(F.charAt(T+1));)T+=1;F.charCodeAt(T+1)===p&&(T+=1);}q=["word",F.slice(A,T+1),z,A-k,z,T-k],A=T;break;default:W===h&&F.charCodeAt(A+1)===w?(T=F.indexOf("*/",A+2)+1,T===0&&(K||ie?T=F.length:re("comment")),b=F.slice(A,T+1),j=b.split(` -`),N=j.length-1,N>0?(G=z+N,L=T-j[N].length):(G=z,L=k),q=["comment",b,z,A-k,G,T-L],k=L,z=G,A=T):(S.lastIndex=A+1,S.test(F),S.lastIndex===0?T=F.length-1:T=S.lastIndex-2,q=["word",F.slice(A,T+1),z,A-k,z,T-k],E.push(q),A=T);break}return A++,q}}function fe(te){H.push(te);}return {back:fe,nextToken:ce,endOfFile:ne,position:U}}i.exports=r.default;}}),Vo=C({"node_modules/postcss/lib/parse.js"(r,i){I(),r.__esModule=!0,r.default=void 0;var s=o(Pt()),l=o(mr());function o(p){return p&&p.__esModule?p:{default:p}}function h(p,g){var c=new l.default(p,g),t=new s.default(c);try{t.parse();}catch(e){throw e}return t.root}var f=h;r.default=f,i.exports=r.default;}}),af=C({"node_modules/postcss/lib/list.js"(r,i){I(),r.__esModule=!0,r.default=void 0;var s={split:function(h,f,p){for(var g=[],c="",t=!1,e=0,a=!1,n=!1,u=0;u<h.length;u++){var m=h[u];a?n?n=!1:m==="\\"?n=!0:m===a&&(a=!1):m==='"'||m==="'"?a=m:m==="("?e+=1:m===")"?e>0&&(e-=1):e===0&&f.indexOf(m)!==-1&&(t=!0),t?(c!==""&&g.push(c.trim()),c="",t=!1):c+=m;}return (p||c!=="")&&g.push(c.trim()),g},space:function(h){var f=[" ",` -`," "];return s.split(h,f)},comma:function(h){return s.split(h,[","],!0)}},l=s;r.default=l,i.exports=r.default;}}),Go=C({"node_modules/postcss/lib/rule.js"(r,i){I(),r.__esModule=!0,r.default=void 0;var s=o(wr()),l=o(af());function o(t){return t&&t.__esModule?t:{default:t}}function h(t,e){for(var a=0;a<e.length;a++){var n=e[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n);}}function f(t,e,a){return e&&h(t.prototype,e),a&&h(t,a),t}function p(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e;}var g=function(t){p(e,t);function e(a){var n;return n=t.call(this,a)||this,n.type="rule",n.nodes||(n.nodes=[]),n}return f(e,[{key:"selectors",get:function(){return l.default.comma(this.selector)},set:function(n){var u=this.selector?this.selector.match(/,\s*/):null,m=u?u[0]:","+this.raw("between","beforeOpen");this.selector=n.join(m);}}]),e}(s.default),c=g;r.default=c,i.exports=r.default;}}),wr=C({"node_modules/postcss/lib/container.js"(r,i){I(),r.__esModule=!0,r.default=void 0;var s=h($o()),l=h(yr()),o=h(qt());function h(m){return m&&m.__esModule?m:{default:m}}function f(m,v){var y;if(typeof Symbol>"u"||m[Symbol.iterator]==null){if(Array.isArray(m)||(y=p(m))||v&&m&&typeof m.length=="number"){y&&(m=y);var w=0;return function(){return w>=m.length?{done:!0}:{done:!1,value:m[w++]}}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return y=m[Symbol.iterator](),y.next.bind(y)}function p(m,v){if(!!m){if(typeof m=="string")return g(m,v);var y=Object.prototype.toString.call(m).slice(8,-1);if(y==="Object"&&m.constructor&&(y=m.constructor.name),y==="Map"||y==="Set")return Array.from(m);if(y==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(y))return g(m,v)}}function g(m,v){(v==null||v>m.length)&&(v=m.length);for(var y=0,w=new Array(v);y<v;y++)w[y]=m[y];return w}function c(m,v){for(var y=0;y<v.length;y++){var w=v[y];w.enumerable=w.enumerable||!1,w.configurable=!0,"value"in w&&(w.writable=!0),Object.defineProperty(m,w.key,w);}}function t(m,v,y){return v&&c(m.prototype,v),y&&c(m,y),m}function e(m,v){m.prototype=Object.create(v.prototype),m.prototype.constructor=m,m.__proto__=v;}function a(m){return m.map(function(v){return v.nodes&&(v.nodes=a(v.nodes)),delete v.source,v})}var n=function(m){e(v,m);function v(){return m.apply(this,arguments)||this}var y=v.prototype;return y.push=function(d){return d.parent=this,this.nodes.push(d),this},y.each=function(d){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach+=1;var _=this.lastEach;if(this.indexes[_]=0,!!this.nodes){for(var O,S;this.indexes[_]<this.nodes.length&&(O=this.indexes[_],S=d(this.nodes[O],O),S!==!1);)this.indexes[_]+=1;return delete this.indexes[_],S}},y.walk=function(d){return this.each(function(_,O){var S;try{S=d(_,O);}catch(R){if(R.postcssNode=_,R.stack&&_.source&&/\n\s{4}at /.test(R.stack)){var M=_.source;R.stack=R.stack.replace(/\n\s{4}at /,"$&"+M.input.from+":"+M.start.line+":"+M.start.column+"$&");}throw R}return S!==!1&&_.walk&&(S=_.walk(d)),S})},y.walkDecls=function(d,_){return _?d instanceof RegExp?this.walk(function(O,S){if(O.type==="decl"&&d.test(O.prop))return _(O,S)}):this.walk(function(O,S){if(O.type==="decl"&&O.prop===d)return _(O,S)}):(_=d,this.walk(function(O,S){if(O.type==="decl")return _(O,S)}))},y.walkRules=function(d,_){return _?d instanceof RegExp?this.walk(function(O,S){if(O.type==="rule"&&d.test(O.selector))return _(O,S)}):this.walk(function(O,S){if(O.type==="rule"&&O.selector===d)return _(O,S)}):(_=d,this.walk(function(O,S){if(O.type==="rule")return _(O,S)}))},y.walkAtRules=function(d,_){return _?d instanceof RegExp?this.walk(function(O,S){if(O.type==="atrule"&&d.test(O.name))return _(O,S)}):this.walk(function(O,S){if(O.type==="atrule"&&O.name===d)return _(O,S)}):(_=d,this.walk(function(O,S){if(O.type==="atrule")return _(O,S)}))},y.walkComments=function(d){return this.walk(function(_,O){if(_.type==="comment")return d(_,O)})},y.append=function(){for(var d=arguments.length,_=new Array(d),O=0;O<d;O++)_[O]=arguments[O];for(var S=0,M=_;S<M.length;S++)for(var R=M[S],$=this.normalize(R,this.last),J=f($),X;!(X=J()).done;){var F=X.value;this.nodes.push(F);}return this},y.prepend=function(){for(var d=arguments.length,_=new Array(d),O=0;O<d;O++)_[O]=arguments[O];_=_.reverse();for(var S=f(_),M;!(M=S()).done;){for(var R=M.value,$=this.normalize(R,this.first,"prepend").reverse(),J=f($),X;!(X=J()).done;){var F=X.value;this.nodes.unshift(F);}for(var K in this.indexes)this.indexes[K]=this.indexes[K]+$.length;}return this},y.cleanRaws=function(d){if(m.prototype.cleanRaws.call(this,d),this.nodes)for(var _=f(this.nodes),O;!(O=_()).done;){var S=O.value;S.cleanRaws(d);}},y.insertBefore=function(d,_){d=this.index(d);for(var O=d===0?"prepend":!1,S=this.normalize(_,this.nodes[d],O).reverse(),M=f(S),R;!(R=M()).done;){var $=R.value;this.nodes.splice(d,0,$);}var J;for(var X in this.indexes)J=this.indexes[X],d<=J&&(this.indexes[X]=J+S.length);return this},y.insertAfter=function(d,_){d=this.index(d);for(var O=this.normalize(_,this.nodes[d]).reverse(),S=f(O),M;!(M=S()).done;){var R=M.value;this.nodes.splice(d+1,0,R);}var $;for(var J in this.indexes)$=this.indexes[J],d<$&&(this.indexes[J]=$+O.length);return this},y.removeChild=function(d){d=this.index(d),this.nodes[d].parent=void 0,this.nodes.splice(d,1);var _;for(var O in this.indexes)_=this.indexes[O],_>=d&&(this.indexes[O]=_-1);return this},y.removeAll=function(){for(var d=f(this.nodes),_;!(_=d()).done;){var O=_.value;O.parent=void 0;}return this.nodes=[],this},y.replaceValues=function(d,_,O){return O||(O=_,_={}),this.walkDecls(function(S){_.props&&_.props.indexOf(S.prop)===-1||_.fast&&S.value.indexOf(_.fast)===-1||(S.value=S.value.replace(d,O));}),this},y.every=function(d){return this.nodes.every(d)},y.some=function(d){return this.nodes.some(d)},y.index=function(d){return typeof d=="number"?d:this.nodes.indexOf(d)},y.normalize=function(d,_){var O=this;if(typeof d=="string"){var S=Vo();d=a(S(d).nodes);}else if(Array.isArray(d)){d=d.slice(0);for(var M=f(d),R;!(R=M()).done;){var $=R.value;$.parent&&$.parent.removeChild($,"ignore");}}else if(d.type==="root"){d=d.nodes.slice(0);for(var J=f(d),X;!(X=J()).done;){var F=X.value;F.parent&&F.parent.removeChild(F,"ignore");}}else if(d.type)d=[d];else if(d.prop){if(typeof d.value>"u")throw new Error("Value field is missed in node creation");typeof d.value!="string"&&(d.value=String(d.value)),d=[new s.default(d)];}else if(d.selector){var K=Go();d=[new K(d)];}else if(d.name){var W=Ho();d=[new W(d)];}else if(d.text)d=[new l.default(d)];else throw new Error("Unknown node type in node creation");var T=d.map(function(D){return D.parent&&D.parent.removeChild(D),typeof D.raws.before>"u"&&_&&typeof _.raws.before<"u"&&(D.raws.before=_.raws.before.replace(/[^\s]/g,"")),D.parent=O,D});return T},t(v,[{key:"first",get:function(){if(!!this.nodes)return this.nodes[0]}},{key:"last",get:function(){if(!!this.nodes)return this.nodes[this.nodes.length-1]}}]),v}(o.default),u=n;r.default=u,i.exports=r.default;}}),Ho=C({"node_modules/postcss/lib/at-rule.js"(r,i){I(),r.__esModule=!0,r.default=void 0;var s=l(wr());function l(p){return p&&p.__esModule?p:{default:p}}function o(p,g){p.prototype=Object.create(g.prototype),p.prototype.constructor=p,p.__proto__=g;}var h=function(p){o(g,p);function g(t){var e;return e=p.call(this,t)||this,e.type="atrule",e}var c=g.prototype;return c.append=function(){var e;this.nodes||(this.nodes=[]);for(var a=arguments.length,n=new Array(a),u=0;u<a;u++)n[u]=arguments[u];return (e=p.prototype.append).call.apply(e,[this].concat(n))},c.prepend=function(){var e;this.nodes||(this.nodes=[]);for(var a=arguments.length,n=new Array(a),u=0;u<a;u++)n[u]=arguments[u];return (e=p.prototype.prepend).call.apply(e,[this].concat(n))},g}(s.default),f=h;r.default=f,i.exports=r.default;}}),uf=C({"node_modules/postcss/lib/map-generator.js"(r,i){I(),i.exports=class{generate(){}};}}),cf=C({"node_modules/postcss/lib/warn-once.js"(r,i){I(),r.__esModule=!0,r.default=l;var s={};function l(o){s[o]||(s[o]=!0,typeof console<"u"&&console.warn&&console.warn(o));}i.exports=r.default;}}),lf=C({"node_modules/postcss/lib/warning.js"(r,i){I(),r.__esModule=!0,r.default=void 0;var s=function(){function o(f,p){if(p===void 0&&(p={}),this.type="warning",this.text=f,p.node&&p.node.source){var g=p.node.positionBy(p);this.line=g.line,this.column=g.column;}for(var c in p)this[c]=p[c];}var h=o.prototype;return h.toString=function(){return this.node?this.node.error(this.text,{plugin:this.plugin,index:this.index,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text},o}(),l=s;r.default=l,i.exports=r.default;}}),ff=C({"node_modules/postcss/lib/result.js"(r,i){I(),r.__esModule=!0,r.default=void 0;var s=l(lf());function l(g){return g&&g.__esModule?g:{default:g}}function o(g,c){for(var t=0;t<c.length;t++){var e=c[t];e.enumerable=e.enumerable||!1,e.configurable=!0,"value"in e&&(e.writable=!0),Object.defineProperty(g,e.key,e);}}function h(g,c,t){return c&&o(g.prototype,c),t&&o(g,t),g}var f=function(){function g(t,e,a){this.processor=t,this.messages=[],this.root=e,this.opts=a,this.css=void 0,this.map=void 0;}var c=g.prototype;return c.toString=function(){return this.css},c.warn=function(e,a){a===void 0&&(a={}),a.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(a.plugin=this.lastPlugin.postcssPlugin);var n=new s.default(e,a);return this.messages.push(n),n},c.warnings=function(){return this.messages.filter(function(e){return e.type==="warning"})},h(g,[{key:"content",get:function(){return this.css}}]),g}(),p=f;r.default=p,i.exports=r.default;}}),Jo=C({"node_modules/postcss/lib/lazy-result.js"(r,i){I(),r.__esModule=!0,r.default=void 0;var s=p(uf()),l=p(Wo());p(cf());var h=p(ff()),f=p(Vo());function p(v){return v&&v.__esModule?v:{default:v}}function g(v,y){var w;if(typeof Symbol>"u"||v[Symbol.iterator]==null){if(Array.isArray(v)||(w=c(v))||y&&v&&typeof v.length=="number"){w&&(v=w);var d=0;return function(){return d>=v.length?{done:!0}:{done:!1,value:v[d++]}}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return w=v[Symbol.iterator](),w.next.bind(w)}function c(v,y){if(!!v){if(typeof v=="string")return t(v,y);var w=Object.prototype.toString.call(v).slice(8,-1);if(w==="Object"&&v.constructor&&(w=v.constructor.name),w==="Map"||w==="Set")return Array.from(v);if(w==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(w))return t(v,y)}}function t(v,y){(y==null||y>v.length)&&(y=v.length);for(var w=0,d=new Array(y);w<y;w++)d[w]=v[w];return d}function e(v,y){for(var w=0;w<y.length;w++){var d=y[w];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(v,d.key,d);}}function a(v,y,w){return y&&e(v.prototype,y),w&&e(v,w),v}function n(v){return typeof v=="object"&&typeof v.then=="function"}var u=function(){function v(w,d,_){this.stringified=!1,this.processed=!1;var O;if(typeof d=="object"&&d!==null&&d.type==="root")O=d;else if(d instanceof v||d instanceof h.default)O=d.root,d.map&&(typeof _.map>"u"&&(_.map={}),_.map.inline||(_.map.inline=!1),_.map.prev=d.map);else {var S=f.default;_.syntax&&(S=_.syntax.parse),_.parser&&(S=_.parser),S.parse&&(S=S.parse);try{O=S(d,_);}catch(M){this.error=M;}}this.result=new h.default(w,O,_);}var y=v.prototype;return y.warnings=function(){return this.sync().warnings()},y.toString=function(){return this.css},y.then=function(d,_){return this.async().then(d,_)},y.catch=function(d){return this.async().catch(d)},y.finally=function(d){return this.async().then(d,d)},y.handleError=function(d,_){try{if(this.error=d,d.name==="CssSyntaxError"&&!d.plugin)d.plugin=_.postcssPlugin,d.setMessage();else if(_.postcssVersion&&!1)var O,S,M,R,$;}catch(J){console&&console.error&&console.error(J);}},y.asyncTick=function(d,_){var O=this;if(this.plugin>=this.processor.plugins.length)return this.processed=!0,d();try{var S=this.processor.plugins[this.plugin],M=this.run(S);this.plugin+=1,n(M)?M.then(function(){O.asyncTick(d,_);}).catch(function(R){O.handleError(R,S),O.processed=!0,_(R);}):this.asyncTick(d,_);}catch(R){this.processed=!0,_(R);}},y.async=function(){var d=this;return this.processed?new Promise(function(_,O){d.error?O(d.error):_(d.stringify());}):this.processing?this.processing:(this.processing=new Promise(function(_,O){if(d.error)return O(d.error);d.plugin=0,d.asyncTick(_,O);}).then(function(){return d.processed=!0,d.stringify()}),this.processing)},y.sync=function(){if(this.processed)return this.result;if(this.processed=!0,this.processing)throw new Error("Use process(css).then(cb) to work with async plugins");if(this.error)throw this.error;for(var d=g(this.result.processor.plugins),_;!(_=d()).done;){var O=_.value,S=this.run(O);if(n(S))throw new Error("Use process(css).then(cb) to work with async plugins")}return this.result},y.run=function(d){this.result.lastPlugin=d;try{return d(this.result.root,this.result)}catch(_){throw this.handleError(_,d),_}},y.stringify=function(){if(this.stringified)return this.result;this.stringified=!0,this.sync();var d=this.result.opts,_=l.default;d.syntax&&(_=d.syntax.stringify),d.stringifier&&(_=d.stringifier),_.stringify&&(_=_.stringify);var O=new s.default(_,this.result.root,this.result.opts),S=O.generate();return this.result.css=S[0],this.result.map=S[1],this.result},a(v,[{key:"processor",get:function(){return this.result.processor}},{key:"opts",get:function(){return this.result.opts}},{key:"css",get:function(){return this.stringify().css}},{key:"content",get:function(){return this.stringify().content}},{key:"map",get:function(){return this.stringify().map}},{key:"root",get:function(){return this.sync().root}},{key:"messages",get:function(){return this.sync().messages}}]),v}(),m=u;r.default=m,i.exports=r.default;}}),pf=C({"node_modules/postcss/lib/processor.js"(r,i){I(),r.__esModule=!0,r.default=void 0;var s=l(Jo());function l(c){return c&&c.__esModule?c:{default:c}}function o(c,t){var e;if(typeof Symbol>"u"||c[Symbol.iterator]==null){if(Array.isArray(c)||(e=h(c))||t&&c&&typeof c.length=="number"){e&&(c=e);var a=0;return function(){return a>=c.length?{done:!0}:{done:!1,value:c[a++]}}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=c[Symbol.iterator](),e.next.bind(e)}function h(c,t){if(!!c){if(typeof c=="string")return f(c,t);var e=Object.prototype.toString.call(c).slice(8,-1);if(e==="Object"&&c.constructor&&(e=c.constructor.name),e==="Map"||e==="Set")return Array.from(c);if(e==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return f(c,t)}}function f(c,t){(t==null||t>c.length)&&(t=c.length);for(var e=0,a=new Array(t);e<t;e++)a[e]=c[e];return a}var p=function(){function c(e){e===void 0&&(e=[]),this.version="7.0.39",this.plugins=this.normalize(e);}var t=c.prototype;return t.use=function(a){return this.plugins=this.plugins.concat(this.normalize([a])),this},t.process=function(e){function a(n){return e.apply(this,arguments)}return a.toString=function(){return e.toString()},a}(function(e,a){return a===void 0&&(a={}),this.plugins.length===0&&(a.parser,a.stringifier),new s.default(this,e,a)}),t.normalize=function(a){for(var n=[],u=o(a),m;!(m=u()).done;){var v=m.value;if(v.postcss===!0){var y=v();throw new Error("PostCSS plugin "+y.postcssPlugin+` requires PostCSS 8. -Migration guide for end-users: -https://github.com/postcss/postcss/wiki/PostCSS-8-for-end-users`)}if(v.postcss&&(v=v.postcss),typeof v=="object"&&Array.isArray(v.plugins))n=n.concat(v.plugins);else if(typeof v=="function")n.push(v);else if(!(typeof v=="object"&&(v.parse||v.stringify)))throw typeof v=="object"&&v.postcssPlugin?new Error("PostCSS plugin "+v.postcssPlugin+` requires PostCSS 8. -Migration guide for end-users: -https://github.com/postcss/postcss/wiki/PostCSS-8-for-end-users`):new Error(v+" is not a PostCSS plugin")}return n},c}(),g=p;r.default=g,i.exports=r.default;}}),hf=C({"node_modules/postcss/lib/root.js"(r,i){I(),r.__esModule=!0,r.default=void 0;var s=l(wr());function l(t){return t&&t.__esModule?t:{default:t}}function o(t,e){var a;if(typeof Symbol>"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(a=h(t))||e&&t&&typeof t.length=="number"){a&&(t=a);var n=0;return function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return a=t[Symbol.iterator](),a.next.bind(a)}function h(t,e){if(!!t){if(typeof t=="string")return f(t,e);var a=Object.prototype.toString.call(t).slice(8,-1);if(a==="Object"&&t.constructor&&(a=t.constructor.name),a==="Map"||a==="Set")return Array.from(t);if(a==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a))return f(t,e)}}function f(t,e){(e==null||e>t.length)&&(e=t.length);for(var a=0,n=new Array(e);a<e;a++)n[a]=t[a];return n}function p(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e;}var g=function(t){p(e,t);function e(n){var u;return u=t.call(this,n)||this,u.type="root",u.nodes||(u.nodes=[]),u}var a=e.prototype;return a.removeChild=function(u,m){var v=this.index(u);return !m&&v===0&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[v].raws.before),t.prototype.removeChild.call(this,u)},a.normalize=function(u,m,v){var y=t.prototype.normalize.call(this,u);if(m){if(v==="prepend")this.nodes.length>1?m.raws.before=this.nodes[1].raws.before:delete m.raws.before;else if(this.first!==m)for(var w=o(y),d;!(d=w()).done;){var _=d.value;_.raws.before=m.raws.before;}}return y},a.toResult=function(u){u===void 0&&(u={});var m=Jo(),v=pf(),y=new m(new v,this,u);return y.stringify()},e}(s.default),c=g;r.default=c,i.exports=r.default;}}),Pt=C({"node_modules/postcss/lib/parser.js"(r,i){I(),r.__esModule=!0,r.default=void 0;var s=g($o()),l=g(At()),o=g(yr()),h=g(Ho()),f=g(hf()),p=g(Go());function g(t){return t&&t.__esModule?t:{default:t}}var c=function(){function t(a){this.input=a,this.root=new f.default,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:a,start:{line:1,column:1}};}var e=t.prototype;return e.createTokenizer=function(){this.tokenizer=(0, l.default)(this.input);},e.parse=function(){for(var n;!this.tokenizer.endOfFile();)switch(n=this.tokenizer.nextToken(),n[0]){case"space":this.spaces+=n[1];break;case";":this.freeSemicolon(n);break;case"}":this.end(n);break;case"comment":this.comment(n);break;case"at-word":this.atrule(n);break;case"{":this.emptyRule(n);break;default:this.other(n);break}this.endFile();},e.comment=function(n){var u=new o.default;this.init(u,n[2],n[3]),u.source.end={line:n[4],column:n[5]};var m=n[1].slice(2,-2);if(/^\s*$/.test(m))u.text="",u.raws.left=m,u.raws.right="";else {var v=m.match(/^(\s*)([^]*[^\s])(\s*)$/);u.text=v[2],u.raws.left=v[1],u.raws.right=v[3];}},e.emptyRule=function(n){var u=new p.default;this.init(u,n[2],n[3]),u.selector="",u.raws.between="",this.current=u;},e.other=function(n){for(var u=!1,m=null,v=!1,y=null,w=[],d=[],_=n;_;){if(m=_[0],d.push(_),m==="("||m==="[")y||(y=_),w.push(m==="("?")":"]");else if(w.length===0)if(m===";")if(v){this.decl(d);return}else break;else if(m==="{"){this.rule(d);return}else if(m==="}"){this.tokenizer.back(d.pop()),u=!0;break}else m===":"&&(v=!0);else m===w[w.length-1]&&(w.pop(),w.length===0&&(y=null));_=this.tokenizer.nextToken();}if(this.tokenizer.endOfFile()&&(u=!0),w.length>0&&this.unclosedBracket(y),u&&v){for(;d.length&&(_=d[d.length-1][0],!(_!=="space"&&_!=="comment"));)this.tokenizer.back(d.pop());this.decl(d);}else this.unknownWord(d);},e.rule=function(n){n.pop();var u=new p.default;this.init(u,n[0][2],n[0][3]),u.raws.between=this.spacesAndCommentsFromEnd(n),this.raw(u,"selector",n),this.current=u;},e.decl=function(n){var u=new s.default;this.init(u);var m=n[n.length-1];for(m[0]===";"&&(this.semicolon=!0,n.pop()),m[4]?u.source.end={line:m[4],column:m[5]}:u.source.end={line:m[2],column:m[3]};n[0][0]!=="word";)n.length===1&&this.unknownWord(n),u.raws.before+=n.shift()[1];for(u.source.start={line:n[0][2],column:n[0][3]},u.prop="";n.length;){var v=n[0][0];if(v===":"||v==="space"||v==="comment")break;u.prop+=n.shift()[1];}u.raws.between="";for(var y;n.length;)if(y=n.shift(),y[0]===":"){u.raws.between+=y[1];break}else y[0]==="word"&&/\w/.test(y[1])&&this.unknownWord([y]),u.raws.between+=y[1];(u.prop[0]==="_"||u.prop[0]==="*")&&(u.raws.before+=u.prop[0],u.prop=u.prop.slice(1)),u.raws.between+=this.spacesAndCommentsFromStart(n),this.precheckMissedSemicolon(n);for(var w=n.length-1;w>0;w--){if(y=n[w],y[1].toLowerCase()==="!important"){u.important=!0;var d=this.stringFrom(n,w);d=this.spacesFromEnd(n)+d,d!==" !important"&&(u.raws.important=d);break}else if(y[1].toLowerCase()==="important"){for(var _=n.slice(0),O="",S=w;S>0;S--){var M=_[S][0];if(O.trim().indexOf("!")===0&&M!=="space")break;O=_.pop()[1]+O;}O.trim().indexOf("!")===0&&(u.important=!0,u.raws.important=O,n=_);}if(y[0]!=="space"&&y[0]!=="comment")break}this.raw(u,"value",n),u.value.indexOf(":")!==-1&&this.checkMissedSemicolon(n);},e.atrule=function(n){var u=new h.default;u.name=n[1].slice(1),u.name===""&&this.unnamedAtrule(u,n),this.init(u,n[2],n[3]);for(var m,v,y=!1,w=!1,d=[];!this.tokenizer.endOfFile();){if(n=this.tokenizer.nextToken(),n[0]===";"){u.source.end={line:n[2],column:n[3]},this.semicolon=!0;break}else if(n[0]==="{"){w=!0;break}else if(n[0]==="}"){if(d.length>0){for(v=d.length-1,m=d[v];m&&m[0]==="space";)m=d[--v];m&&(u.source.end={line:m[4],column:m[5]});}this.end(n);break}else d.push(n);if(this.tokenizer.endOfFile()){y=!0;break}}u.raws.between=this.spacesAndCommentsFromEnd(d),d.length?(u.raws.afterName=this.spacesAndCommentsFromStart(d),this.raw(u,"params",d),y&&(n=d[d.length-1],u.source.end={line:n[4],column:n[5]},this.spaces=u.raws.between,u.raws.between="")):(u.raws.afterName="",u.params=""),w&&(u.nodes=[],this.current=u);},e.end=function(n){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end={line:n[2],column:n[3]},this.current=this.current.parent):this.unexpectedClose(n);},e.endFile=function(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces;},e.freeSemicolon=function(n){if(this.spaces+=n[1],this.current.nodes){var u=this.current.nodes[this.current.nodes.length-1];u&&u.type==="rule"&&!u.raws.ownSemicolon&&(u.raws.ownSemicolon=this.spaces,this.spaces="");}},e.init=function(n,u,m){this.current.push(n),n.source={start:{line:u,column:m},input:this.input},n.raws.before=this.spaces,this.spaces="",n.type!=="comment"&&(this.semicolon=!1);},e.raw=function(n,u,m){for(var v,y,w=m.length,d="",_=!0,O,S,M=/^([.|#])?([\w])+/i,R=0;R<w;R+=1){if(v=m[R],y=v[0],y==="comment"&&n.type==="rule"){S=m[R-1],O=m[R+1],S[0]!=="space"&&O[0]!=="space"&&M.test(S[1])&&M.test(O[1])?d+=v[1]:_=!1;continue}y==="comment"||y==="space"&&R===w-1?_=!1:d+=v[1];}if(!_){var $=m.reduce(function(J,X){return J+X[1]},"");n.raws[u]={value:d,raw:$};}n[u]=d;},e.spacesAndCommentsFromEnd=function(n){for(var u,m="";n.length&&(u=n[n.length-1][0],!(u!=="space"&&u!=="comment"));)m=n.pop()[1]+m;return m},e.spacesAndCommentsFromStart=function(n){for(var u,m="";n.length&&(u=n[0][0],!(u!=="space"&&u!=="comment"));)m+=n.shift()[1];return m},e.spacesFromEnd=function(n){for(var u,m="";n.length&&(u=n[n.length-1][0],u==="space");)m=n.pop()[1]+m;return m},e.stringFrom=function(n,u){for(var m="",v=u;v<n.length;v++)m+=n[v][1];return n.splice(u,n.length-u),m},e.colon=function(n){for(var u=0,m,v,y,w=0;w<n.length;w++){if(m=n[w],v=m[0],v==="("&&(u+=1),v===")"&&(u-=1),u===0&&v===":")if(!y)this.doubleColon(m);else {if(y[0]==="word"&&y[1]==="progid")continue;return w}y=m;}return !1},e.unclosedBracket=function(n){throw this.input.error("Unclosed bracket",n[2],n[3])},e.unknownWord=function(n){throw this.input.error("Unknown word",n[0][2],n[0][3])},e.unexpectedClose=function(n){throw this.input.error("Unexpected }",n[2],n[3])},e.unclosedBlock=function(){var n=this.current.source.start;throw this.input.error("Unclosed block",n.line,n.column)},e.doubleColon=function(n){throw this.input.error("Double colon",n[2],n[3])},e.unnamedAtrule=function(n,u){throw this.input.error("At-rule without name",u[2],u[3])},e.precheckMissedSemicolon=function(){},e.checkMissedSemicolon=function(n){var u=this.colon(n);if(u!==!1){for(var m=0,v,y=u-1;y>=0&&(v=n[y],!(v[0]!=="space"&&(m+=1,m===2)));y--);throw this.input.error("Missed semicolon",v[2],v[3])}},t}();r.default=c,i.exports=r.default;}}),df=C({"node_modules/postcss-less/lib/nodes/inline-comment.js"(r,i){I();var s=At(),l=mr();i.exports={isInlineComment(o){if(o[0]==="word"&&o[1].slice(0,2)==="//"){let h=o,f=[],p;for(;o;){if(/\r?\n/.test(o[1])){if(/['"].*\r?\n/.test(o[1])){f.push(o[1].substring(0,o[1].indexOf(` -`)));let c=o[1].substring(o[1].indexOf(` -`));c+=this.input.css.valueOf().substring(this.tokenizer.position()),this.input=new l(c),this.tokenizer=s(this.input);}else this.tokenizer.back(o);break}f.push(o[1]),p=o,o=this.tokenizer.nextToken({ignoreUnclosed:!0});}let g=["comment",f.join(""),h[2],h[3],p[2],p[3]];return this.inlineComment(g),!0}else if(o[1]==="/"){let h=this.tokenizer.nextToken({ignoreUnclosed:!0});if(h[0]==="comment"&&/^\/\*/.test(h[1]))return h[0]="word",h[1]=h[1].slice(1),o[1]="//",this.tokenizer.back(h),i.exports.isInlineComment.bind(this)(o)}return !1}};}}),vf=C({"node_modules/postcss-less/lib/nodes/interpolation.js"(r,i){I(),i.exports={interpolation(s){let l=s,o=[s],h=["word","{","}"];if(s=this.tokenizer.nextToken(),l[1].length>1||s[0]!=="{")return this.tokenizer.back(s),!1;for(;s&&h.includes(s[0]);)o.push(s),s=this.tokenizer.nextToken();let f=o.map(e=>e[1]);[l]=o;let p=o.pop(),g=[l[2],l[3]],c=[p[4]||p[2],p[5]||p[3]],t=["word",f.join("")].concat(g,c);return this.tokenizer.back(s),this.tokenizer.back(t),!0}};}}),mf=C({"node_modules/postcss-less/lib/nodes/mixin.js"(r,i){I();var s=/^#[0-9a-fA-F]{6}$|^#[0-9a-fA-F]{3}$/,l=/\.[0-9]/,o=h=>{let[,f]=h,[p]=f;return (p==="."||p==="#")&&s.test(f)===!1&&l.test(f)===!1};i.exports={isMixinToken:o};}}),gf=C({"node_modules/postcss-less/lib/nodes/import.js"(r,i){I();var s=At(),l=/^url\((.+)\)/;i.exports=o=>{let{name:h,params:f=""}=o;if(h==="import"&&f.length){o.import=!0;let p=s({css:f});for(o.filename=f.replace(l,"$1");!p.endOfFile();){let[g,c]=p.nextToken();if(g==="word"&&c==="url")return;if(g==="brackets"){o.options=c,o.filename=f.replace(c,"").trim();break}}}};}}),yf=C({"node_modules/postcss-less/lib/nodes/variable.js"(r,i){I();var s=/:$/,l=/^:(\s+)?/;i.exports=o=>{let{name:h,params:f=""}=o;if(o.name.slice(-1)===":"){if(s.test(h)){let[p]=h.match(s);o.name=h.replace(p,""),o.raws.afterName=p+(o.raws.afterName||""),o.variable=!0,o.value=o.params;}if(l.test(f)){let[p]=f.match(l);o.value=f.replace(p,""),o.raws.afterName=(o.raws.afterName||"")+p,o.variable=!0;}}};}}),wf=C({"node_modules/postcss-less/lib/LessParser.js"(r,i){I();var s=yr(),l=Pt(),{isInlineComment:o}=df(),{interpolation:h}=vf(),{isMixinToken:f}=mf(),p=gf(),g=yf(),c=/(!\s*important)$/i;i.exports=class extends l{constructor(){super(...arguments),this.lastNode=null;}atrule(e){h.bind(this)(e)||(super.atrule(e),p(this.lastNode),g(this.lastNode));}decl(){super.decl(...arguments),/extend\(.+\)/i.test(this.lastNode.value)&&(this.lastNode.extend=!0);}each(e){e[0][1]=" ".concat(e[0][1]);let a=e.findIndex(y=>y[0]==="("),n=e.reverse().find(y=>y[0]===")"),u=e.reverse().indexOf(n),v=e.splice(a,u).map(y=>y[1]).join("");for(let y of e.reverse())this.tokenizer.back(y);this.atrule(this.tokenizer.nextToken()),this.lastNode.function=!0,this.lastNode.params=v;}init(e,a,n){super.init(e,a,n),this.lastNode=e;}inlineComment(e){let a=new s,n=e[1].slice(2);if(this.init(a,e[2],e[3]),a.source.end={line:e[4],column:e[5]},a.inline=!0,a.raws.begin="//",/^\s*$/.test(n))a.text="",a.raws.left=n,a.raws.right="";else {let u=n.match(/^(\s*)([^]*[^\s])(\s*)$/);[,a.raws.left,a.text,a.raws.right]=u;}}mixin(e){let[a]=e,n=a[1].slice(0,1),u=e.findIndex(d=>d[0]==="brackets"),m=e.findIndex(d=>d[0]==="("),v="";if((u<0||u>3)&&m>0){let d=e.reduce((K,W,T)=>W[0]===")"?T:K),O=e.slice(m,d+m).map(K=>K[1]).join(""),[S]=e.slice(m),M=[S[2],S[3]],[R]=e.slice(d,d+1),$=[R[2],R[3]],J=["brackets",O].concat(M,$),X=e.slice(0,m),F=e.slice(d+1);e=X,e.push(J),e=e.concat(F);}let y=[];for(let d of e)if((d[1]==="!"||y.length)&&y.push(d),d[1]==="important")break;if(y.length){let[d]=y,_=e.indexOf(d),O=y[y.length-1],S=[d[2],d[3]],M=[O[4],O[5]],R=y.map(J=>J[1]).join(""),$=["word",R].concat(S,M);e.splice(_,y.length,$);}let w=e.findIndex(d=>c.test(d[1]));w>0&&([,v]=e[w],e.splice(w,1));for(let d of e.reverse())this.tokenizer.back(d);this.atrule(this.tokenizer.nextToken()),this.lastNode.mixin=!0,this.lastNode.raws.identifier=n,v&&(this.lastNode.important=!0,this.lastNode.raws.important=v);}other(e){o.bind(this)(e)||super.other(e);}rule(e){let a=e[e.length-1],n=e[e.length-2];if(n[0]==="at-word"&&a[0]==="{"&&(this.tokenizer.back(a),h.bind(this)(n))){let m=this.tokenizer.nextToken();e=e.slice(0,e.length-2).concat([m]);for(let v of e.reverse())this.tokenizer.back(v);return}super.rule(e),/:extend\(.+\)/i.test(this.lastNode.selector)&&(this.lastNode.extend=!0);}unknownWord(e){let[a]=e;if(e[0][1]==="each"&&e[1][0]==="("){this.each(e);return}if(f(a)){this.mixin(e);return}super.unknownWord(e);}};}}),_f=C({"node_modules/postcss-less/lib/LessStringifier.js"(r,i){I();var s=gr();i.exports=class extends s{atrule(o,h){if(!o.mixin&&!o.variable&&!o.function){super.atrule(o,h);return}let f=o.function?"":o.raws.identifier||"@",p="".concat(f).concat(o.name),g=o.params?this.rawValue(o,"params"):"",c=o.raws.important||"";if(o.variable&&(g=o.value),typeof o.raws.afterName<"u"?p+=o.raws.afterName:g&&(p+=" "),o.nodes)this.block(o,p+g+c);else {let t=(o.raws.between||"")+c+(h?";":"");this.builder(p+g+t,o);}}comment(o){if(o.inline){let h=this.raw(o,"left","commentLeft"),f=this.raw(o,"right","commentRight");this.builder("//".concat(h).concat(o.text).concat(f),o);}else super.comment(o);}};}}),bf=C({"node_modules/postcss-less/lib/index.js"(r,i){I();var s=mr(),l=wf(),o=_f();i.exports={parse(h,f){let p=new s(h,f),g=new l(p);return g.parse(),g.root},stringify(h,f){new o(f).stringify(h);},nodeToString(h){let f="";return i.exports.stringify(h,p=>{f+=p;}),f}};}}),xf=C({"node_modules/postcss-scss/lib/scss-stringifier.js"(r,i){I();function s(h,f){h.prototype=Object.create(f.prototype),h.prototype.constructor=h,h.__proto__=f;}var l=gr(),o=function(h){s(f,h);function f(){return h.apply(this,arguments)||this}var p=f.prototype;return p.comment=function(c){var t=this.raw(c,"left","commentLeft"),e=this.raw(c,"right","commentRight");if(c.raws.inline){var a=c.raws.text||c.text;this.builder("//"+t+a+e,c);}else this.builder("/*"+t+c.text+e+"*/",c);},p.decl=function(c,t){if(!c.isNested)h.prototype.decl.call(this,c,t);else {var e=this.raw(c,"between","colon"),a=c.prop+e+this.rawValue(c,"value");c.important&&(a+=c.raws.important||" !important"),this.builder(a+"{",c,"start");var n;c.nodes&&c.nodes.length?(this.body(c),n=this.raw(c,"after")):n=this.raw(c,"after","emptyBody"),n&&this.builder(n),this.builder("}",c,"end");}},p.rawValue=function(c,t){var e=c[t],a=c.raws[t];return a&&a.value===e?a.scss?a.scss:a.raw:e},f}(l);i.exports=o;}}),kf=C({"node_modules/postcss-scss/lib/scss-stringify.js"(r,i){I();var s=xf();i.exports=function(o,h){var f=new s(h);f.stringify(o);};}}),Sf=C({"node_modules/postcss-scss/lib/nested-declaration.js"(r,i){I();function s(h,f){h.prototype=Object.create(f.prototype),h.prototype.constructor=h,h.__proto__=f;}var l=wr(),o=function(h){s(f,h);function f(p){var g;return g=h.call(this,p)||this,g.type="decl",g.isNested=!0,g.nodes||(g.nodes=[]),g}return f}(l);i.exports=o;}}),Of=C({"node_modules/postcss-scss/lib/scss-tokenize.js"(r,i){I();var s="'".charCodeAt(0),l='"'.charCodeAt(0),o="\\".charCodeAt(0),h="/".charCodeAt(0),f=` -`.charCodeAt(0),p=" ".charCodeAt(0),g="\f".charCodeAt(0),c=" ".charCodeAt(0),t="\r".charCodeAt(0),e="[".charCodeAt(0),a="]".charCodeAt(0),n="(".charCodeAt(0),u=")".charCodeAt(0),m="{".charCodeAt(0),v="}".charCodeAt(0),y=";".charCodeAt(0),w="*".charCodeAt(0),d=":".charCodeAt(0),_="@".charCodeAt(0),O=",".charCodeAt(0),S="#".charCodeAt(0),M=/[ \n\t\r\f{}()'"\\;/[\]#]/g,R=/[ \n\t\r\f(){}:;@!'"\\\][#]|\/(?=\*)/g,$=/.[\\/("'\n]/,J=/[a-f0-9]/i,X=/[\r\f\n]/g;i.exports=function(K,W){W===void 0&&(W={});var T=K.css.valueOf(),D=W.ignoreErrors,j,N,b,Q,G,L,B,P,Z,V,q,x,k,z,A=T.length,E=-1,H=1,U=0,re=[],ne=[];function ce(se){throw K.error("Unclosed "+se,H,U-E)}function fe(){return ne.length===0&&U>=A}function te(){for(var se=1,le=!1,pe=!1;se>0;)N+=1,T.length<=N&&ce("interpolation"),j=T.charCodeAt(N),x=T.charCodeAt(N+1),le?!pe&&j===le?(le=!1,pe=!1):j===o?pe=!V:pe&&(pe=!1):j===s||j===l?le=j:j===v?se-=1:j===S&&x===m&&(se+=1);}function ie(){if(ne.length)return ne.pop();if(!(U>=A)){switch(j=T.charCodeAt(U),(j===f||j===g||j===t&&T.charCodeAt(U+1)!==f)&&(E=U,H+=1),j){case f:case p:case c:case t:case g:N=U;do N+=1,j=T.charCodeAt(N),j===f&&(E=N,H+=1);while(j===p||j===f||j===c||j===t||j===g);k=["space",T.slice(U,N)],U=N-1;break;case e:k=["[","[",H,U-E];break;case a:k=["]","]",H,U-E];break;case m:k=["{","{",H,U-E];break;case v:k=["}","}",H,U-E];break;case O:k=["word",",",H,U-E,H,U-E+1];break;case d:k=[":",":",H,U-E];break;case y:k=[";",";",H,U-E];break;case n:if(q=re.length?re.pop()[1]:"",x=T.charCodeAt(U+1),q==="url"&&x!==s&&x!==l){for(z=1,V=!1,N=U+1;N<=T.length-1;){if(x=T.charCodeAt(N),x===o)V=!V;else if(x===n)z+=1;else if(x===u&&(z-=1,z===0))break;N+=1;}L=T.slice(U,N+1),Q=L.split(` -`),G=Q.length-1,G>0?(P=H+G,Z=N-Q[G].length):(P=H,Z=E),k=["brackets",L,H,U-E,P,N-Z],E=Z,H=P,U=N;}else N=T.indexOf(")",U+1),L=T.slice(U,N+1),N===-1||$.test(L)?k=["(","(",H,U-E]:(k=["brackets",L,H,U-E,H,N-E],U=N);break;case u:k=[")",")",H,U-E];break;case s:case l:for(b=j,N=U,V=!1;N<A&&(N++,N===A&&ce("string"),j=T.charCodeAt(N),x=T.charCodeAt(N+1),!(!V&&j===b));)j===o?V=!V:V?V=!1:j===S&&x===m&&te();L=T.slice(U,N+1),Q=L.split(` -`),G=Q.length-1,G>0?(P=H+G,Z=N-Q[G].length):(P=H,Z=E),k=["string",T.slice(U,N+1),H,U-E,P,N-Z],E=Z,H=P,U=N;break;case _:M.lastIndex=U+1,M.test(T),M.lastIndex===0?N=T.length-1:N=M.lastIndex-2,k=["at-word",T.slice(U,N+1),H,U-E,H,N-E],U=N;break;case o:for(N=U,B=!0;T.charCodeAt(N+1)===o;)N+=1,B=!B;if(j=T.charCodeAt(N+1),B&&j!==h&&j!==p&&j!==f&&j!==c&&j!==t&&j!==g&&(N+=1,J.test(T.charAt(N)))){for(;J.test(T.charAt(N+1));)N+=1;T.charCodeAt(N+1)===p&&(N+=1);}k=["word",T.slice(U,N+1),H,U-E,H,N-E],U=N;break;default:x=T.charCodeAt(U+1),j===S&&x===m?(N=U,te(),L=T.slice(U,N+1),Q=L.split(` -`),G=Q.length-1,G>0?(P=H+G,Z=N-Q[G].length):(P=H,Z=E),k=["word",L,H,U-E,P,N-Z],E=Z,H=P,U=N):j===h&&x===w?(N=T.indexOf("*/",U+2)+1,N===0&&(D?N=T.length:ce("comment")),L=T.slice(U,N+1),Q=L.split(` -`),G=Q.length-1,G>0?(P=H+G,Z=N-Q[G].length):(P=H,Z=E),k=["comment",L,H,U-E,P,N-Z],E=Z,H=P,U=N):j===h&&x===h?(X.lastIndex=U+1,X.test(T),X.lastIndex===0?N=T.length-1:N=X.lastIndex-2,L=T.slice(U,N+1),k=["comment",L,H,U-E,H,N-E,"inline"],U=N):(R.lastIndex=U+1,R.test(T),R.lastIndex===0?N=T.length-1:N=R.lastIndex-2,k=["word",T.slice(U,N+1),H,U-E,H,N-E],re.push(k),U=N);break}return U++,k}}function ae(se){ne.push(se);}return {back:ae,nextToken:ie,endOfFile:fe}};}}),Tf=C({"node_modules/postcss-scss/lib/scss-parser.js"(r,i){I();function s(g,c){g.prototype=Object.create(c.prototype),g.prototype.constructor=g,g.__proto__=c;}var l=yr(),o=Pt(),h=Sf(),f=Of(),p=function(g){s(c,g);function c(){return g.apply(this,arguments)||this}var t=c.prototype;return t.createTokenizer=function(){this.tokenizer=f(this.input);},t.rule=function(a){for(var n=!1,u=0,m="",w=a,v=Array.isArray(w),y=0,w=v?w:w[Symbol.iterator]();;){var d;if(v){if(y>=w.length)break;d=w[y++];}else {if(y=w.next(),y.done)break;d=y.value;}var _=d;if(n)_[0]!=="comment"&&_[0]!=="{"&&(m+=_[1]);else {if(_[0]==="space"&&_[1].indexOf(` -`)!==-1)break;_[0]==="("?u+=1:_[0]===")"?u-=1:u===0&&_[0]===":"&&(n=!0);}}if(!n||m.trim()===""||/^[a-zA-Z-:#]/.test(m))g.prototype.rule.call(this,a);else {a.pop();var O=new h;this.init(O);var S=a[a.length-1];for(S[4]?O.source.end={line:S[4],column:S[5]}:O.source.end={line:S[2],column:S[3]};a[0][0]!=="word";)O.raws.before+=a.shift()[1];for(O.source.start={line:a[0][2],column:a[0][3]},O.prop="";a.length;){var M=a[0][0];if(M===":"||M==="space"||M==="comment")break;O.prop+=a.shift()[1];}O.raws.between="";for(var R;a.length;)if(R=a.shift(),R[0]===":"){O.raws.between+=R[1];break}else O.raws.between+=R[1];(O.prop[0]==="_"||O.prop[0]==="*")&&(O.raws.before+=O.prop[0],O.prop=O.prop.slice(1)),O.raws.between+=this.spacesAndCommentsFromStart(a),this.precheckMissedSemicolon(a);for(var $=a.length-1;$>0;$--){if(R=a[$],R[1]==="!important"){O.important=!0;var J=this.stringFrom(a,$);J=this.spacesFromEnd(a)+J,J!==" !important"&&(O.raws.important=J);break}else if(R[1]==="important"){for(var X=a.slice(0),F="",K=$;K>0;K--){var W=X[K][0];if(F.trim().indexOf("!")===0&&W!=="space")break;F=X.pop()[1]+F;}F.trim().indexOf("!")===0&&(O.important=!0,O.raws.important=F,a=X);}if(R[0]!=="space"&&R[0]!=="comment")break}this.raw(O,"value",a),O.value.indexOf(":")!==-1&&this.checkMissedSemicolon(a),this.current=O;}},t.comment=function(a){if(a[6]==="inline"){var n=new l;this.init(n,a[2],a[3]),n.raws.inline=!0,n.source.end={line:a[4],column:a[5]};var u=a[1].slice(2);if(/^\s*$/.test(u))n.text="",n.raws.left=u,n.raws.right="";else {var m=u.match(/^(\s*)([^]*[^\s])(\s*)$/),v=m[2].replace(/(\*\/|\/\*)/g,"*//*");n.text=v,n.raws.left=m[1],n.raws.right=m[3],n.raws.text=m[2];}}else g.prototype.comment.call(this,a);},t.raw=function(a,n,u){if(g.prototype.raw.call(this,a,n,u),a.raws[n]){var m=a.raws[n].raw;a.raws[n].raw=u.reduce(function(v,y){if(y[0]==="comment"&&y[6]==="inline"){var w=y[1].slice(2).replace(/(\*\/|\/\*)/g,"*//*");return v+"/*"+w+"*/"}else return v+y[1]},""),m!==a.raws[n].raw&&(a.raws[n].scss=m);}},c}(o);i.exports=p;}}),Ef=C({"node_modules/postcss-scss/lib/scss-parse.js"(r,i){I();var s=mr(),l=Tf();i.exports=function(h,f){var p=new s(h,f),g=new l(p);return g.parse(),g.root};}}),qf=C({"node_modules/postcss-scss/lib/scss-syntax.js"(r,i){I();var s=kf(),l=Ef();i.exports={parse:l,stringify:s};}}),Af=C({"src/language-css/parser-postcss.js"(r,i){I();var s=el(),l=Ss(),o=Os(),{hasPragma:h}=ll(),{locStart:f,locEnd:p}=ss(),{calculateLoc:g,replaceQuotesInInlineComments:c}=ss(),t=dl(),e=vl(),a=ml(),n=gl(),u=yl(),m=wl(),v=_l(),y=bl(),w=b=>{for(;b.parent;)b=b.parent;return b};function d(b,Q){let{nodes:G}=b,L={open:null,close:null,groups:[],type:"paren_group"},B=[L],P=L,Z={groups:[],type:"comma_group"},V=[Z];for(let q=0;q<G.length;++q){let x=G[q];if(n(Q.parser,x.value)&&x.type==="number"&&x.unit===".."&&l(x.value)==="."&&(x.value=x.value.slice(0,-1),x.unit="..."),x.type==="func"&&x.value==="selector"&&(x.group.groups=[$(w(b).text.slice(x.group.open.sourceIndex+1,x.group.close.sourceIndex))]),x.type==="func"&&x.value==="url"){let k=x.group&&x.group.groups||[],z=[];for(let A=0;A<k.length;A++){let E=k[A];E.type==="comma_group"?z=[...z,...E.groups]:z.push(E);}if(t(z)||!e(z)&&!m(z[0])){let A=v({groups:x.group.groups});x.group.groups=[A.trim()];}}if(x.type==="paren"&&x.value==="(")L={open:x,close:null,groups:[],type:"paren_group"},B.push(L),Z={groups:[],type:"comma_group"},V.push(Z);else if(x.type==="paren"&&x.value===")"){if(Z.groups.length>0&&L.groups.push(Z),L.close=x,V.length===1)throw new Error("Unbalanced parenthesis");V.pop(),Z=l(V),Z.groups.push(L),B.pop(),L=l(B);}else x.type==="comma"?(L.groups.push(Z),Z={groups:[],type:"comma_group"},V[V.length-1]=Z):Z.groups.push(x);}return Z.groups.length>0&&L.groups.push(Z),P}function _(b){return b.type==="paren_group"&&!b.open&&!b.close&&b.groups.length===1||b.type==="comma_group"&&b.groups.length===1?_(b.groups[0]):b.type==="paren_group"||b.type==="comma_group"?Object.assign(Object.assign({},b),{},{groups:b.groups.map(_)}):b}function O(b,Q,G){if(b&&typeof b=="object"){delete b.parent;for(let L in b)O(b[L],Q,G),L==="type"&&typeof b[L]=="string"&&!b[L].startsWith(Q)&&(!G||!G.test(b[L]))&&(b[L]=Q+b[L]);}return b}function S(b){if(b&&typeof b=="object"){delete b.parent;for(let Q in b)S(b[Q]);!Array.isArray(b)&&b.value&&!b.type&&(b.type="unknown");}return b}function M(b,Q){if(b&&typeof b=="object"){for(let G in b)G!=="parent"&&(M(b[G],Q),G==="nodes"&&(b.group=_(d(b,Q)),delete b[G]));delete b.parent;}return b}function R(b,Q){let G=Hl(),L=null;try{L=G(b,{loose:!0}).parse();}catch{return {type:"value-unknown",value:b}}L.text=b;let B=M(L,Q);return O(B,"value-",/^selector-/)}function $(b){if(/\/\/|\/\*/.test(b))return {type:"selector-unknown",value:b.trim()};let Q=Xl(),G=null;try{Q(L=>{G=L;}).process(b);}catch{return {type:"selector-unknown",value:b}}return O(G,"selector-")}function J(b){let Q=ef().default,G=null;try{G=Q(b);}catch{return {type:"selector-unknown",value:b}}return O(S(G),"media-")}var X=/(\s*)(!default).*$/,F=/(\s*)(!global).*$/;function K(b,Q){if(b&&typeof b=="object"){delete b.parent;for(let P in b)K(b[P],Q);if(!b.type)return b;b.raws||(b.raws={});let G="";typeof b.selector=="string"&&(G=b.raws.selector?b.raws.selector.scss?b.raws.selector.scss:b.raws.selector.raw:b.selector,b.raws.between&&b.raws.between.trim().length>0&&(G+=b.raws.between),b.raws.selector=G);let L="";typeof b.value=="string"&&(L=b.raws.value?b.raws.value.scss?b.raws.value.scss:b.raws.value.raw:b.value,L=L.trim(),b.raws.value=L);let B="";if(typeof b.params=="string"&&(B=b.raws.params?b.raws.params.scss?b.raws.params.scss:b.raws.params.raw:b.params,b.raws.afterName&&b.raws.afterName.trim().length>0&&(B=b.raws.afterName+B),b.raws.between&&b.raws.between.trim().length>0&&(B=B+b.raws.between),B=B.trim(),b.raws.params=B),G.trim().length>0)return G.startsWith("@")&&G.endsWith(":")?b:b.mixin?(b.selector=R(G,Q),b):(u(b)&&(b.isSCSSNesterProperty=!0),b.selector=$(G),b);if(L.length>0){let P=L.match(X);P&&(L=L.slice(0,P.index),b.scssDefault=!0,P[0].trim()!=="!default"&&(b.raws.scssDefault=P[0]));let Z=L.match(F);if(Z&&(L=L.slice(0,Z.index),b.scssGlobal=!0,Z[0].trim()!=="!global"&&(b.raws.scssGlobal=Z[0])),L.startsWith("progid:"))return {type:"value-unknown",value:L};b.value=R(L,Q);}if(a(Q)&&b.type==="css-decl"&&L.startsWith("extend(")&&(b.extend||(b.extend=b.raws.between===":"),b.extend&&!b.selector&&(delete b.value,b.selector=$(L.slice(7,-1)))),b.type==="css-atrule"){if(a(Q)){if(b.mixin){let P=b.raws.identifier+b.name+b.raws.afterName+b.raws.params;return b.selector=$(P),delete b.params,b}if(b.function)return b}if(Q.parser==="css"&&b.name==="custom-selector"){let P=b.params.match(/:--\S+\s+/)[0].trim();return b.customSelector=P,b.selector=$(b.params.slice(P.length).trim()),delete b.params,b}if(a(Q)){if(b.name.includes(":")&&!b.params){b.variable=!0;let P=b.name.split(":");b.name=P[0],b.value=R(P.slice(1).join(":"),Q);}if(!["page","nest","keyframes"].includes(b.name)&&b.params&&b.params[0]===":"&&(b.variable=!0,b.value=R(b.params.slice(1),Q),b.raws.afterName+=":"),b.variable)return delete b.params,b}}if(b.type==="css-atrule"&&B.length>0){let{name:P}=b,Z=b.name.toLowerCase();return P==="warn"||P==="error"?(b.params={type:"media-unknown",value:B},b):P==="extend"||P==="nest"?(b.selector=$(B),delete b.params,b):P==="at-root"?(/^\(\s*(?:without|with)\s*:.+\)$/s.test(B)?b.params=R(B,Q):(b.selector=$(B),delete b.params),b):y(Z)?(b.import=!0,delete b.filename,b.params=R(B,Q),b):["namespace","supports","if","else","for","each","while","debug","mixin","include","function","return","define-mixin","add-mixin"].includes(P)?(B=B.replace(/(\$\S+?)(\s+)?\.{3}/,"$1...$2"),B=B.replace(/^(?!if)(\S+)(\s+)\(/,"$1($2"),b.value=R(B,Q),delete b.params,b):["media","custom-media"].includes(Z)?B.includes("#{")?{type:"media-unknown",value:B}:(b.params=J(B),b):(b.params=B,b)}}return b}function W(b,Q,G){let L=o(Q),{frontMatter:B}=L;Q=L.content;let P;try{P=b(Q);}catch(Z){let{name:V,reason:q,line:x,column:k}=Z;throw typeof x!="number"?Z:s("".concat(V,": ").concat(q),{start:{line:x,column:k}})}return P=K(O(P,"css-"),G),g(P,Q),B&&(B.source={startOffset:0,endOffset:B.raw.length},P.nodes.unshift(B)),P}function T(b,Q){let G=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},B=n(G.parser,b)?[j,D]:[D,j],P;for(let Z of B)try{return Z(b,Q,G)}catch(V){P=P||V;}if(P)throw P}function D(b,Q){let G=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},L=bf();return W(B=>L.parse(c(B)),b,G)}function j(b,Q){let G=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},{parse:L}=qf();return W(L,b,G)}var N={astFormat:"postcss",hasPragma:h,locStart:f,locEnd:p};i.exports={parsers:{css:Object.assign(Object.assign({},N),{},{parse:T}),less:Object.assign(Object.assign({},N),{},{parse:D}),scss:Object.assign(Object.assign({},N),{},{parse:j})}};}}),Jp=Af(); +`:"")+Zs(n)}var Je=null;function Xe(t){if(Je!==null&&typeof Je.property){let e=Je;return Je=Xe.prototype=null,e}return Je=Xe.prototype=t??Object.create(null),new Xe}var Tc=10;for(let t=0;t<=Tc;t++)Xe();function nn(t){return Xe(t)}function Ec(t,e="type"){nn(t);function n(r){let s=r[e],i=t[s];if(!Array.isArray(i))throw Object.assign(new Error(`Missing visitor keys for '${s}'.`),{node:r});return i}return n}var ri=Ec;var Sc={"front-matter":[],"css-root":["frontMatter","nodes"],"css-comment":[],"css-rule":["selector","nodes"],"css-decl":["value","selector","nodes"],"css-atrule":["selector","params","value","nodes"],"media-query-list":["nodes"],"media-query":["nodes"],"media-type":[],"media-feature-expression":["nodes"],"media-feature":[],"media-colon":[],"media-value":[],"media-keyword":[],"media-url":[],"media-unknown":[],"selector-root":["nodes"],"selector-selector":["nodes"],"selector-comment":[],"selector-string":[],"selector-tag":[],"selector-id":[],"selector-class":[],"selector-attribute":[],"selector-combinator":["nodes"],"selector-universal":[],"selector-pseudo":["nodes"],"selector-nesting":[],"selector-unknown":[],"value-value":["group"],"value-root":["group"],"value-comment":[],"value-comma_group":["groups"],"value-paren_group":["open","groups","close"],"value-func":["group"],"value-paren":[],"value-number":[],"value-operator":[],"value-word":[],"value-colon":[],"value-comma":[],"value-string":[],"value-atword":[],"value-unicode-range":[],"value-unknown":[]},ni=Sc;var Cc=ri(ni),si=Cc;var Oc=new Set(["red","green","blue","alpha","a","rgb","hue","h","saturation","s","lightness","l","whiteness","w","blackness","b","tint","shade","blend","blenda","contrast","hsl","hsla","hwb","hwba"]);function ii(t){var e,n;return (n=(e=t.findAncestor(r=>r.type==="css-decl"))==null?void 0:e.prop)==null?void 0:n.toLowerCase()}var Ac=new Set(["initial","inherit","unset","revert"]);function oi(t){return Ac.has(t.toLowerCase())}function ai(t,e){var r;let n=t.findAncestor(s=>s.type==="css-atrule");return ((r=n==null?void 0:n.name)==null?void 0:r.toLowerCase().endsWith("keyframes"))&&["from","to"].includes(e.toLowerCase())}function ne(t){return t.includes("$")||t.includes("@")||t.includes("#")||t.startsWith("%")||t.startsWith("--")||t.startsWith(":--")||t.includes("(")&&t.includes(")")?t:t.toLowerCase()}function Ee(t,e){var r;let n=t.findAncestor(s=>s.type==="value-func");return ((r=n==null?void 0:n.value)==null?void 0:r.toLowerCase())===e}function ui(t){var r;let e=t.findAncestor(s=>s.type==="css-rule"),n=(r=e==null?void 0:e.raws)==null?void 0:r.selector;return n&&(n.startsWith(":import")||n.startsWith(":export"))}function Se(t,e){let n=Array.isArray(e)?e:[e],r=t.findAncestor(s=>s.type==="css-atrule");return r&&n.includes(r.name.toLowerCase())}function li(t){var n;let{node:e}=t;return e.groups[0].value==="url"&&e.groups.length===2&&((n=t.findAncestor(r=>r.type==="css-atrule"))==null?void 0:n.name)==="import"}function ci(t){return t.type==="value-func"&&t.value.toLowerCase()==="url"}function fi(t){return t.type==="value-func"&&t.value.toLowerCase()==="var"}function Nt(t,e){var r;let n=(r=t.parent)==null?void 0:r.nodes;return n&&n.indexOf(e)===n.length-1}function pi(t){let{selector:e}=t;return e?typeof e=="string"&&/^@.+:.*$/.test(e)||e.value&&/^@.+:.*$/.test(e.value):!1}function hi(t){return t.type==="value-word"&&["from","through","end"].includes(t.value)}function di(t){return t.type==="value-word"&&["and","or","not"].includes(t.value)}function mi(t){return t.type==="value-word"&&t.value==="in"}function Pt(t){return t.type==="value-operator"&&t.value==="*"}function Ze(t){return t.type==="value-operator"&&t.value==="/"}function j(t){return t.type==="value-operator"&&t.value==="+"}function he(t){return t.type==="value-operator"&&t.value==="-"}function Nc(t){return t.type==="value-operator"&&t.value==="%"}function Rt(t){return Pt(t)||Ze(t)||j(t)||he(t)||Nc(t)}function yi(t){return t.type==="value-word"&&["==","!="].includes(t.value)}function gi(t){return t.type==="value-word"&&["<",">","<=",">="].includes(t.value)}function et(t,e){return e.parser==="scss"&&t.type==="css-atrule"&&["if","else","for","each","while"].includes(t.name)}function on(t){var e;return ((e=t.raws)==null?void 0:e.params)&&/^\(\s*\)$/.test(t.raws.params)}function an(t){return t.name.startsWith("prettier-placeholder")}function wi(t){return t.prop.startsWith("@prettier-placeholder")}function vi(t,e){return t.value==="$$"&&t.type==="value-func"&&(e==null?void 0:e.type)==="value-word"&&!e.raws.before}function xi(t){var e,n;return ((e=t.value)==null?void 0:e.type)==="value-root"&&((n=t.value.group)==null?void 0:n.type)==="value-value"&&t.prop.toLowerCase()==="composes"}function bi(t){var e,n,r;return ((r=(n=(e=t.value)==null?void 0:e.group)==null?void 0:n.group)==null?void 0:r.type)==="value-paren_group"&&t.value.group.group.open!==null&&t.value.group.group.close!==null}function de(t){var e;return ((e=t.raws)==null?void 0:e.before)===""}function It(t){var e,n;return t.type==="value-comma_group"&&((n=(e=t.groups)==null?void 0:e[1])==null?void 0:n.type)==="value-colon"}function sn(t){var e;return t.type==="value-paren_group"&&((e=t.groups)==null?void 0:e[0])&&It(t.groups[0])}function un(t,e){var i;if(e.parser!=="scss")return !1;let{node:n}=t;if(n.groups.length===0)return !1;let r=t.grandparent;if(!sn(n)&&!(r&&sn(r)))return !1;let s=t.findAncestor(o=>o.type==="css-decl");return !!((i=s==null?void 0:s.prop)!=null&&i.startsWith("$")||sn(r)||r.type==="value-func")}function ln(t){return t.type==="value-comment"&&t.inline}function qt(t){return t.type==="value-word"&&t.value==="#"}function cn(t){return t.type==="value-word"&&t.value==="{"}function Dt(t){return t.type==="value-word"&&t.value==="}"}function tt(t){return ["value-word","value-atword"].includes(t.type)}function Lt(t){return (t==null?void 0:t.type)==="value-colon"}function ki(t,e){if(!It(e))return !1;let{groups:n}=e,r=n.indexOf(t);return r===-1?!1:Lt(n[r+1])}function _i(t){return t.value&&["not","and","or"].includes(t.value.toLowerCase())}function Ti(t){return t.type!=="value-func"?!1:Oc.has(t.value.toLowerCase())}function Ce(t){return /\/\//.test(t.split(/[\n\r]/).pop())}function rt(t){return (t==null?void 0:t.type)==="value-atword"&&t.value.startsWith("prettier-placeholder-")}function Ei(t,e){var n,r;if(((n=t.open)==null?void 0:n.value)!=="("||((r=t.close)==null?void 0:r.value)!==")"||t.groups.some(s=>s.type!=="value-comma_group"))return !1;if(e.type==="value-comma_group"){let s=e.groups.indexOf(t)-1,i=e.groups[s];if((i==null?void 0:i.type)==="value-word"&&i.value==="with")return !0}return !1}function nt(t){var e,n;return t.type==="value-paren_group"&&((e=t.open)==null?void 0:e.value)==="("&&((n=t.close)==null?void 0:n.value)===")"}function Mt(t){return (e,n,r)=>{let s=!!(r!=null&&r.backwards);if(n===!1)return !1;let{length:i}=e,o=n;for(;o>=0&&o<i;){let a=e.charAt(o);if(t instanceof RegExp){if(!t.test(a))return o}else if(!t.includes(a))return o;s?o--:o++;}return o===-1||o===i?o:!1}}var Bt=Mt(" "),Si=Mt(",; "),Ft=Mt(/[^\n\r]/);function Pc(t,e){let n=0;for(let r=0;r<t.line-1;++r)n=e.indexOf(` +`,n)+1;return n+t.column}var fn=Pc;function Ci(t,e){var n,r,s;if(typeof((r=(n=t.source)==null?void 0:n.start)==null?void 0:r.offset)=="number")return t.source.start.offset;if(typeof t.sourceIndex=="number")return t.sourceIndex;if((s=t.source)!=null&&s.start)return fn(t.source.start,e);throw Object.assign(new Error("Can not locate node."),{node:t})}function pn(t,e){var n,r;if(t.type==="css-comment"&&t.inline)return Ft(e,t.source.startOffset);if(typeof((r=(n=t.source)==null?void 0:n.end)==null?void 0:r.offset)=="number")return t.source.end.offset+1;if(t.source){if(t.source.end)return fn(t.source.end,e);if(ee(t.nodes))return pn(G(!1,t.nodes,-1),e)}return null}function hn(t,e){t.source&&(t.source.startOffset=Ci(t,e),t.source.endOffset=pn(t,e));for(let n in t){let r=t[n];n==="source"||!r||typeof r!="object"||(r.type==="value-root"||r.type==="value-unknown"?Oi(r,Rc(t),r.text||r.value):hn(r,e));}}function Oi(t,e,n){t.source&&(t.source.startOffset=Ci(t,n)+e,t.source.endOffset=pn(t,n)+e);for(let r in t){let s=t[r];r==="source"||!s||typeof s!="object"||Oi(s,e,n);}}function Rc(t){var n;let e=t.source.startOffset;return typeof t.prop=="string"&&(e+=t.prop.length),t.type==="css-atrule"&&typeof t.name=="string"&&(e+=1+t.name.length+t.raws.afterName.match(/^\s*:?\s*/)[0].length),t.type!=="css-atrule"&&typeof((n=t.raws)==null?void 0:n.between)=="string"&&(e+=t.raws.between.length),e}function Ai(t){let e="initial",n="initial",r,s=!1,i=[];for(let o=0;o<t.length;o++){let a=t[o];switch(e){case"initial":if(a==="'"){e="single-quotes";continue}if(a==='"'){e="double-quotes";continue}if((a==="u"||a==="U")&&t.slice(o,o+4).toLowerCase()==="url("){e="url",o+=3;continue}if(a==="*"&&t[o-1]==="/"){e="comment-block";continue}if(a==="/"&&t[o-1]==="/"){e="comment-inline",r=o-1;continue}continue;case"single-quotes":if(a==="'"&&t[o-1]!=="\\"&&(e=n,n="initial"),a===` +`||a==="\r")return t;continue;case"double-quotes":if(a==='"'&&t[o-1]!=="\\"&&(e=n,n="initial"),a===` +`||a==="\r")return t;continue;case"url":if(a===")"&&(e="initial"),a===` +`||a==="\r")return t;if(a==="'"){e="single-quotes",n="url";continue}if(a==='"'){e="double-quotes",n="url";continue}continue;case"comment-block":a==="/"&&t[o-1]==="*"&&(e="initial");continue;case"comment-inline":(a==='"'||a==="'"||a==="*")&&(s=!0),(a===` +`||a==="\r")&&(s&&i.push([r,o]),e="initial",s=!1);continue}}for(let[o,a]of i)t=t.slice(0,o)+T(!1,t.slice(o,a),/["'*]/g," ")+t.slice(a);return t}function P(t){var e;return (e=t.source)==null?void 0:e.startOffset}function R(t){var e;return (e=t.source)==null?void 0:e.endOffset}function Ic(t){return t.toLowerCase().replace(/^([+-]?[\d.]+e)(?:\+|(-))?0*(?=\d)/,"$1$2").replace(/^([+-]?[\d.]+)e[+-]?0+$/,"$1").replace(/^([+-])?\./,"$10.").replace(/(\.\d+?)0+(?=e|$)/,"$1").replace(/\.(?=e|$)/,"")}var Ni=Ic;var dn=new Map([["em","em"],["rem","rem"],["ex","ex"],["rex","rex"],["cap","cap"],["rcap","rcap"],["ch","ch"],["rch","rch"],["ic","ic"],["ric","ric"],["lh","lh"],["rlh","rlh"],["vw","vw"],["svw","svw"],["lvw","lvw"],["dvw","dvw"],["vh","vh"],["svh","svh"],["lvh","lvh"],["dvh","dvh"],["vi","vi"],["svi","svi"],["lvi","lvi"],["dvi","dvi"],["vb","vb"],["svb","svb"],["lvb","lvb"],["dvb","dvb"],["vmin","vmin"],["svmin","svmin"],["lvmin","lvmin"],["dvmin","dvmin"],["vmax","vmax"],["svmax","svmax"],["lvmax","lvmax"],["dvmax","dvmax"],["cm","cm"],["mm","mm"],["q","Q"],["in","in"],["pt","pt"],["pc","pc"],["px","px"],["deg","deg"],["grad","grad"],["rad","rad"],["turn","turn"],["s","s"],["ms","ms"],["hz","Hz"],["khz","kHz"],["dpi","dpi"],["dpcm","dpcm"],["dppx","dppx"],["x","x"],["cqw","cqw"],["cqh","cqh"],["cqi","cqi"],["cqb","cqb"],["cqmin","cqmin"],["cqmax","cqmax"]]);function Pi(t){let e=t.toLowerCase();return dn.has(e)?dn.get(e):t}var Ri=/(["'])(?:(?!\1)[^\\]|\\.)*\1/gs,qc=/(?:\d*\.\d+|\d+\.?)(?:[Ee][+-]?\d+)?/g,Dc=/[A-Za-z]+/g,Lc=/[$@]?[A-Z_a-z\u0080-\uFFFF][\w\u0080-\uFFFF-]*/g,Mc=new RegExp(Ri.source+`|(${Lc.source})?(${qc.source})(${Dc.source})?`,"g");function W(t,e){return T(!1,t,Ri,n=>St(n,e))}function Ii(t,e){let n=e.singleQuote?"'":'"';return t.includes('"')||t.includes("'")?t:n+t+n}function me(t){return T(!1,t,Mc,(e,n,r,s,i)=>!r&&s?mn(s)+ne(i||""):e)}function mn(t){return Ni(t).replace(/\.0(?=$|e)/,"")}function qi(t){return t.trailingComma==="es5"||t.trailingComma==="all"}function Bc(t,e,n){var d;let{node:r}=t,s=t.parent,i=t.grandparent,o=ii(t),a=o&&s.type==="value-value"&&(o==="grid"||o.startsWith("grid-template")),u=t.findAncestor(m=>m.type==="css-atrule"),c=u&&et(u,e),f=r.groups.some(m=>ln(m)),p=t.map(n,"groups"),l=[],g=Ee(t,"url"),x=!1,h=!1;for(let m=0;m<r.groups.length;++m){l.push(p[m]);let b=r.groups[m-1],w=r.groups[m],v=r.groups[m+1],N=r.groups[m+2];if(g){(v&&j(v)||j(w))&&l.push(" ");continue}if(Se(t,"forward")&&w.type==="value-word"&&w.value&&b!==void 0&&b.type==="value-word"&&b.value==="as"&&v.type==="value-operator"&&v.value==="*"||!v||w.type==="value-word"&&w.value.endsWith("-")&&rt(v))continue;if(w.type==="value-string"&&w.quoted){let O=w.value.lastIndexOf("#{"),ve=w.value.lastIndexOf("}");O!==-1&&ve!==-1?x=O>ve:O!==-1?x=!0:ve!==-1&&(x=!1);}if(x||Lt(w)||Lt(v)||w.type==="value-atword"&&(w.value===""||w.value.endsWith("["))||v.type==="value-word"&&v.value.startsWith("]")||w.value==="~"||w.type!=="value-string"&&w.value&&w.value.includes("\\")&&v&&v.type!=="value-comment"||b!=null&&b.value&&b.value.indexOf("\\")===b.value.length-1&&w.type==="value-operator"&&w.value==="/"||w.value==="\\"||vi(w,v)||qt(w)||cn(w)||Dt(v)||cn(v)&&de(v)||Dt(w)&&de(v)||w.value==="--"&&qt(v))continue;let $=Rt(w),H=Rt(v);if(($&&qt(v)||H&&Dt(w))&&de(v)||!b&&Ze(w)||Ee(t,"calc")&&(j(w)||j(v)||he(w)||he(v))&&de(v))continue;let U=(j(w)||he(w))&&m===0&&(v.type==="value-number"||v.isHex)&&i&&Ti(i)&&!de(v),S=(N==null?void 0:N.type)==="value-func"||N&&tt(N)||w.type==="value-func"||tt(w),C=v.type==="value-func"||tt(v)||(b==null?void 0:b.type)==="value-func"||b&&tt(b);if(e.parser==="scss"&&$&&w.value==="-"&&v.type==="value-func"){l.push(" ");continue}if(!(!(Pt(v)||Pt(w))&&!Ee(t,"calc")&&!U&&(Ze(v)&&!S||Ze(w)&&!C||j(v)&&!S||j(w)&&!C||he(v)||he(w))&&(de(v)||$&&(!b||b&&Rt(b))))&&!((e.parser==="scss"||e.parser==="less")&&$&&w.value==="-"&&nt(v)&&R(w)===P(v.open)&&v.open.value==="(")){if(ln(w)){if(s.type==="value-paren_group"){l.push(fe(_));continue}l.push(_);continue}if(c&&(yi(v)||gi(v)||di(v)||mi(w)||hi(w))){l.push(" ");continue}if(u&&u.name.toLowerCase()==="namespace"){l.push(" ");continue}if(a){w.source&&v.source&&w.source.start.line!==v.source.start.line?(l.push(_),h=!0):l.push(" ");continue}if(H){l.push(" ");continue}if((v==null?void 0:v.value)!=="..."&&!(rt(w)&&rt(v)&&R(w)===P(v))){if(rt(w)&&nt(v)&&R(w)===P(v.open)){l.push(M);continue}if(w.value==="with"&&nt(v)){l.push(" ");continue}(d=w.value)!=null&&d.endsWith("#")&&v.value==="{"&&nt(v.group)||l.push(A);}}}return f&&l.push(Qe),h&&l.unshift(_),c?D(q(l)):li(t)?D(He(l)):D(q(He(l)))}var Di=Bc;function Fc(t,e,n){let r=!!(n!=null&&n.backwards);if(e===!1)return !1;let s=t.charAt(e);if(r){if(t.charAt(e-1)==="\r"&&s===` +`)return e-2;if(s===` +`||s==="\r"||s==="\u2028"||s==="\u2029")return e-1}else {if(s==="\r"&&t.charAt(e+1)===` +`)return e+2;if(s===` +`||s==="\r"||s==="\u2028"||s==="\u2029")return e+1}return e}var $t=Fc;function $c(t,e){if(e===!1)return !1;if(t.charAt(e)==="/"&&t.charAt(e+1)==="*"){for(let n=e+2;n<t.length;++n)if(t.charAt(n)==="*"&&t.charAt(n+1)==="/")return n+2}return e}var Li=$c;function Uc(t,e){return e===!1?!1:t.charAt(e)==="/"&&t.charAt(e+1)==="/"?Ft(t,e):e}var Mi=Uc;function Wc(t,e,n={}){let r=Bt(t,n.backwards?e-1:e,n),s=$t(t,r,n);return r!==s}var Ut=Wc;function zc(t,e){let n=null,r=e;for(;r!==n;)n=r,r=Si(t,r),r=Li(t,r),r=Bt(t,r);return r=Mi(t,r),r=$t(t,r),r!==!1&&Ut(t,r)}var Wt=zc;function Vc({node:t,parent:e},n){return !!(t.source&&n.originalText.slice(P(t),P(e.close)).trimEnd().endsWith(","))}function Yc(t,e){return fi(t.grandparent)&&Vc(t,e)?",":t.node.type!=="value-comment"&&!(t.node.type==="value-comma_group"&&t.node.groups.every(n=>n.type==="value-comment"))&&qi(e)&&t.callParent(()=>un(t,e))?At(","):""}function Bi(t,e,n){let{node:r,parent:s}=t,i=t.map(({node:g})=>typeof g=="string"?g:n(),"groups");if(s&&ci(s)&&(r.groups.length===1||r.groups.length>0&&r.groups[0].type==="value-comma_group"&&r.groups[0].groups.length>0&&r.groups[0].groups[0].type==="value-word"&&r.groups[0].groups[0].value.startsWith("data:")))return [r.open?n("open"):"",Y(",",i),r.close?n("close"):""];if(!r.open){let g=yn(t),x=Y([",",g?_:A],i);return q(g?[_,x]:D(He(x)))}let o=t.map(({node:g,isLast:x,index:h})=>{var b;let d=i[h];if(It(g)&&g.type==="value-comma_group"&&g.groups&&g.groups[0].type!=="value-paren_group"&&((b=g.groups[2])==null?void 0:b.type)==="value-paren_group"){let w=Ds(d.contents.contents);w[1]=D(w[1]),d=D(fe(d));}let m=[d,x?Yc(t,e):","];if(!x&&g.type==="value-comma_group"&&ee(g.groups)){let w=G(!1,g.groups,-1);!w.source&&w.close&&(w=w.close),w.source&&Wt(e.originalText,R(w))&&m.push(_);}return m},"groups"),a=ki(r,s),u=Ei(r,s),c=un(t,e),f=u||c&&!a,p=u||a,l=D([r.open?n("open"):"",q([M,Y(A,o)]),M,r.close?n("close"):""],{shouldBreak:f});return p?fe(l):l}function yn(t){return t.match(e=>e.type==="value-paren_group"&&!e.open&&e.groups.some(n=>n.type==="value-comma_group"),(e,n)=>n==="group"&&e.type==="value-value",(e,n)=>n==="group"&&e.type==="value-root",(e,n)=>n==="value"&&(e.type==="css-decl"&&!e.prop.startsWith("--")||e.type==="css-atrule"&&e.variable))}function Gc(t,e,n){let r=[];return t.each(()=>{let{node:s,previous:i}=t;if((i==null?void 0:i.type)==="css-comment"&&i.text.trim()==="prettier-ignore"?r.push(e.originalText.slice(P(s),R(s))):r.push(n()),t.isLast)return;let{next:o}=t;o.type==="css-comment"&&!Ut(e.originalText,P(o),{backwards:!0})&&!Te(s)||o.type==="css-atrule"&&o.name==="else"&&s.type!=="css-comment"?r.push(" "):(r.push(e.__isHTMLStyleAttribute?A:_),Wt(e.originalText,R(s))&&!Te(s)&&r.push(_));},"nodes"),r}var Oe=Gc;function Kc(t,e,n){var s,i,o,a,u,c;let{node:r}=t;switch(r.type){case"front-matter":return [r.raw,_];case"css-root":{let f=Oe(t,e,n),p=r.raws.after.trim();return p.startsWith(";")&&(p=p.slice(1).trim()),[r.frontMatter?[n("frontMatter"),_]:"",f,p?` ${p}`:"",r.nodes.length>0?_:""]}case"css-comment":{let f=r.inline||r.raws.inline,p=e.originalText.slice(P(r),R(r));return f?p.trimEnd():p}case"css-rule":return [n("selector"),r.important?" !important":"",r.nodes?[((s=r.selector)==null?void 0:s.type)==="selector-unknown"&&Ce(r.selector.value)?A:r.selector?" ":"","{",r.nodes.length>0?q([_,Oe(t,e,n)]):"",_,"}",pi(r)?";":""]:";"];case"css-decl":{let f=t.parent,{between:p}=r.raws,l=p.trim(),g=l===":",x=typeof r.value=="string"&&/^ *$/.test(r.value),h=typeof r.value=="string"?r.value:n("value");return h=xi(r)?Ls(h):h,!g&&Ce(l)&&!((o=(i=r.value)==null?void 0:i.group)!=null&&o.group&&t.call(()=>yn(t),"value","group","group"))&&(h=q([_,fe(h)])),[T(!1,r.raws.before,/[\s;]/g,""),f.type==="css-atrule"&&f.variable||ui(t)?r.prop:ne(r.prop),l.startsWith("//")?" ":"",l,r.extend||x?"":" ",e.parser==="less"&&r.extend&&r.selector?["extend(",n("selector"),")"]:"",h,r.raws.important?r.raws.important.replace(/\s*!\s*important/i," !important"):r.important?" !important":"",r.raws.scssDefault?r.raws.scssDefault.replace(/\s*!default/i," !default"):r.scssDefault?" !default":"",r.raws.scssGlobal?r.raws.scssGlobal.replace(/\s*!global/i," !global"):r.scssGlobal?" !global":"",r.nodes?[" {",q([M,Oe(t,e,n)]),M,"}"]:wi(r)&&!f.raws.semicolon&&e.originalText[R(r)-1]!==";"?"":e.__isHTMLStyleAttribute&&Nt(t,r)?At(";"):";"]}case"css-atrule":{let f=t.parent,p=an(r)&&!f.raws.semicolon&&e.originalText[R(r)-1]!==";";if(e.parser==="less"){if(r.mixin)return [n("selector"),r.important?" !important":"",p?"":";"];if(r.function)return [r.name,typeof r.params=="string"?r.params:n("params"),p?"":";"];if(r.variable)return ["@",r.name,": ",r.value?n("value"):"",r.raws.between.trim()?r.raws.between.trim()+" ":"",r.nodes?["{",q([r.nodes.length>0?M:"",Oe(t,e,n)]),M,"}"]:"",p?"":";"]}let l=r.name==="import"&&((a=r.params)==null?void 0:a.type)==="value-unknown"&&r.params.value.endsWith(";");return ["@",on(r)||r.name.endsWith(":")?r.name:ne(r.name),r.params?[on(r)?"":an(r)?r.raws.afterName===""?"":r.name.endsWith(":")?" ":/^\s*\n\s*\n/.test(r.raws.afterName)?[_,_]:/^\s*\n/.test(r.raws.afterName)?_:" ":" ",typeof r.params=="string"?r.params:n("params")]:"",r.selector?q([" ",n("selector")]):"",r.value?D([" ",n("value"),et(r,e)?bi(r)?" ":A:""]):r.name==="else"?" ":"",r.nodes?[et(r,e)?"":r.selector&&!r.selector.nodes&&typeof r.selector.value=="string"&&Ce(r.selector.value)||!r.selector&&typeof r.params=="string"&&Ce(r.params)?A:" ","{",q([r.nodes.length>0?M:"",Oe(t,e,n)]),M,"}"]:p||l?"":";"]}case"media-query-list":{let f=[];return t.each(({node:p})=>{p.type==="media-query"&&p.value===""||f.push(n());},"nodes"),D(q(Y(A,f)))}case"media-query":return [Y(" ",t.map(n,"nodes")),Nt(t,r)?"":","];case"media-type":return me(W(r.value,e));case"media-feature-expression":return r.nodes?["(",...t.map(n,"nodes"),")"]:r.value;case"media-feature":return ne(W(T(!1,r.value,/ +/g," "),e));case"media-colon":return [r.value," "];case"media-value":return me(W(r.value,e));case"media-keyword":return W(r.value,e);case"media-url":return W(T(!1,T(!1,r.value,/^url\(\s+/gi,"url("),/\s+\)$/g,")"),e);case"media-unknown":return r.value;case"selector-root":return D([Se(t,"custom-selector")?[t.findAncestor(f=>f.type==="css-atrule").customSelector,A]:"",Y([",",Se(t,["extend","custom-selector","nest"])?A:_],t.map(n,"nodes"))]);case"selector-selector":return D(q(t.map(n,"nodes")));case"selector-comment":return r.value;case"selector-string":return W(r.value,e);case"selector-tag":return [r.namespace?[r.namespace===!0?"":r.namespace.trim(),"|"]:"",((u=t.previous)==null?void 0:u.type)==="selector-nesting"?r.value:me(ai(t,r.value)?r.value.toLowerCase():r.value)];case"selector-id":return ["#",r.value];case"selector-class":return [".",me(W(r.value,e))];case"selector-attribute":return ["[",r.namespace?[r.namespace===!0?"":r.namespace.trim(),"|"]:"",r.attribute.trim(),r.operator??"",r.value?Ii(W(r.value.trim(),e),e):"",r.insensitive?" i":"","]"];case"selector-combinator":{if(r.value==="+"||r.value===">"||r.value==="~"||r.value===">>>"){let l=t.parent;return [l.type==="selector-selector"&&l.nodes[0]===r?"":A,r.value,Nt(t,r)?"":" "]}let f=r.value.trim().startsWith("(")?A:"",p=me(W(r.value.trim(),e))||A;return [f,p]}case"selector-universal":return [r.namespace?[r.namespace===!0?"":r.namespace.trim(),"|"]:"",r.value];case"selector-pseudo":return [ne(r.value),ee(r.nodes)?D(["(",q([M,Y([",",A],t.map(n,"nodes"))]),M,")"]):""];case"selector-nesting":return r.value;case"selector-unknown":{let f=t.findAncestor(g=>g.type==="css-rule");if(f!=null&&f.isSCSSNesterProperty)return me(W(ne(r.value),e));let p=t.parent;if((c=p.raws)!=null&&c.selector){let g=P(p),x=g+p.raws.selector.length;return e.originalText.slice(g,x).trim()}let l=t.grandparent;if(p.type==="value-paren_group"&&(l==null?void 0:l.type)==="value-func"&&l.value==="selector"){let g=R(p.open)+1,x=P(p.close),h=e.originalText.slice(g,x).trim();return Ce(h)?[Qe,h]:h}return r.value}case"value-value":case"value-root":return n("group");case"value-comment":return e.originalText.slice(P(r),R(r));case"value-comma_group":return Di(t,e,n);case"value-paren_group":return Bi(t,e,n);case"value-func":return [r.value,Se(t,"supports")&&_i(r)?" ":"",n("group")];case"value-paren":return r.value;case"value-number":return [mn(r.value),Pi(r.unit)];case"value-operator":return r.value;case"value-word":return r.isColor&&r.isHex||oi(r.value)?r.value.toLowerCase():r.value;case"value-colon":{let{previous:f}=t;return [r.value,typeof(f==null?void 0:f.value)=="string"&&f.value.endsWith("\\")||Ee(t,"url")?"":A]}case"value-string":return St(r.raws.quote+r.value+r.raws.quote,e);case"value-atword":return ["@",r.value];case"value-unicode-range":return r.value;case"value-unknown":return r.value;case"value-comma":default:throw new Ms(r,"PostCSS")}}var Hc={print:Kc,embed:Ws,insertPragma:ti,massageAstNode:Fs,getVisitorKeys:si},Fi=Hc;var Es={};Os(Es,{css:()=>Bg,less:()=>Fg,scss:()=>$g});var ql=ue(dt(),1),Dl=ue(Ho(),1),Ll=ue(Pa(),1);function Jp(t,e){let n=new SyntaxError(t+" ("+e.loc.start.line+":"+e.loc.start.column+")");return Object.assign(n,e)}var Ra=Jp;function Xp(t,e){return e.parser!=="scss"||!t.selector?!1:t.selector.replace(/\/\*.*?\*\//,"").replace(/\/\/.*\n/,"").trim().endsWith(":")}var Ia=Xp;var Zp=new Set(["import","use","forward"]);function eh(t){return Zp.has(t)}var qa=eh;var Tl=ue(Ou(),1);var id=t=>{for(;t.parent;)t=t.parent;return t},Ar=id;function od(t){return Ar(t).text.slice(t.group.open.sourceIndex+1,t.group.close.sourceIndex).trim()}var Au=od;function ad(t){if(ee(t)){for(let e=t.length-1;e>0;e--)if(t[e].type==="word"&&t[e].value==="{"&&t[e-1].type==="word"&&t[e-1].value.endsWith("#"))return !0}return !1}var Nu=ad;function ud(t){return t.some(e=>e.type==="string"||e.type==="func"&&!e.value.endsWith("\\"))}var Pu=ud;function ld(t,e){return !!(e.parser==="scss"&&(t==null?void 0:t.type)==="word"&&t.value.startsWith("$"))}var Ru=ld;var _l=ue(kl(),1);function X(t,e,n){if(t&&typeof t=="object"){delete t.parent;for(let r in t)X(t[r],e,n),r==="type"&&typeof t[r]=="string"&&!t[r].startsWith(e)&&(!n||!n.test(t[r]))&&(t[r]=e+t[r]);}return t}function ms(t){if(t&&typeof t=="object"){delete t.parent;for(let e in t)ms(t[e]);!Array.isArray(t)&&t.value&&!t.type&&(t.type="unknown");}return t}function xg(t){if(/\/\/|\/\*/.test(t))return {type:"selector-unknown",value:t.trim()};let e;try{new _l.default(n=>{e=n;}).process(t);}catch{return {type:"selector-unknown",value:t}}return X(e,"selector-")}var Z=xg;function bg(t,e){var u;let{nodes:n}=t,r={open:null,close:null,groups:[],type:"paren_group"},s=[r],i=r,o={groups:[],type:"comma_group"},a=[o];for(let c=0;c<n.length;++c){let f=n[c];if(e.parser==="scss"&&f.type==="number"&&f.unit===".."&&f.value.endsWith(".")&&(f.value=f.value.slice(0,-1),f.unit="..."),f.type==="func"&&f.value==="selector"&&(f.group.groups=[Z(Ar(t).text.slice(f.group.open.sourceIndex+1,f.group.close.sourceIndex))]),f.type==="func"&&f.value==="url"){let p=((u=f.group)==null?void 0:u.groups)??[],l=[];for(let g=0;g<p.length;g++){let x=p[g];x.type==="comma_group"?l=[...l,...x.groups]:l.push(x);}(Nu(l)||!Pu(l)&&!Ru(l[0],e))&&(f.group.groups=[Au(f)]);}if(f.type==="paren"&&f.value==="(")r={open:f,close:null,groups:[],type:"paren_group"},s.push(r),o={groups:[],type:"comma_group"},a.push(o);else if(f.type==="paren"&&f.value===")"){if(o.groups.length>0&&r.groups.push(o),r.close=f,a.length===1)throw new Error("Unbalanced parenthesis");a.pop(),o=G(!1,a,-1),o.groups.push(r),s.pop(),r=G(!1,s,-1);}else f.type==="comma"?(r.groups.push(o),o={groups:[],type:"comma_group"},a[a.length-1]=o):o.groups.push(f);}return o.groups.length>0&&r.groups.push(o),i}function Xr(t){return t.type==="paren_group"&&!t.open&&!t.close&&t.groups.length===1||t.type==="comma_group"&&t.groups.length===1?Xr(t.groups[0]):t.type==="paren_group"||t.type==="comma_group"?{...t,groups:t.groups.map(Xr)}:t}function El(t,e){if(t&&typeof t=="object")for(let n in t)n!=="parent"&&(El(t[n],e),n==="nodes"&&(t.group=Xr(bg(t,e)),delete t[n]));return t}function kg(t,e){if(e.parser==="less"&&t.startsWith("~`"))return {type:"value-unknown",value:t};let n=null;try{n=new Tl.default(t,{loose:!0}).parse();}catch{return {type:"value-unknown",value:t}}n.text=t;let r=El(n,e);return X(r,"value-",/^selector-/)}var ae=kg;var Rl=ue(Pl(),1);var qg=Rl.default.default;function Dg(t){let e;try{e=qg(t);}catch{return {type:"selector-unknown",value:t}}return X(ms(e),"media-")}var Il=Dg;var Lg=/(\s*)(!default).*$/,Mg=/(\s*)(!global).*$/;function Ml(t,e){var n,r;if(t&&typeof t=="object"){delete t.parent;for(let a in t)Ml(t[a],e);if(!t.type)return t;if(t.raws??(t.raws={}),t.type==="css-decl"&&typeof t.prop=="string"&&t.prop.startsWith("--")&&typeof t.value=="string"&&t.value.startsWith("{")){let a;if(t.value.trimEnd().endsWith("}")){let u=e.originalText.slice(0,t.source.start.offset),c="a".repeat(t.prop.length)+e.originalText.slice(t.source.start.offset+t.prop.length,t.source.end.offset+1),f=T(!1,u,/[^\n]/g," ")+c,p;e.parser==="scss"?p=$l:e.parser==="less"?p=Fl:p=Bl;let l;try{l=p(f,{...e});}catch{}((n=l==null?void 0:l.nodes)==null?void 0:n.length)===1&&l.nodes[0].type==="css-rule"&&(a=l.nodes[0].nodes);}return a?t.value={type:"css-rule",nodes:a}:t.value={type:"value-unknown",value:t.raws.value.raw},t}let s="";typeof t.selector=="string"&&(s=t.raws.selector?t.raws.selector.scss??t.raws.selector.raw:t.selector,t.raws.between&&t.raws.between.trim().length>0&&(s+=t.raws.between),t.raws.selector=s);let i="";typeof t.value=="string"&&(i=t.raws.value?t.raws.value.scss??t.raws.value.raw:t.value,i=i.trim(),t.raws.value=i);let o="";if(typeof t.params=="string"&&(o=t.raws.params?t.raws.params.scss??t.raws.params.raw:t.params,t.raws.afterName&&t.raws.afterName.trim().length>0&&(o=t.raws.afterName+o),t.raws.between&&t.raws.between.trim().length>0&&(o=o+t.raws.between),o=o.trim(),t.raws.params=o),s.trim().length>0)return s.startsWith("@")&&s.endsWith(":")?t:t.mixin?(t.selector=ae(s,e),t):(Ia(t,e)&&(t.isSCSSNesterProperty=!0),t.selector=Z(s),t);if(i.length>0){let a=i.match(Lg);a&&(i=i.slice(0,a.index),t.scssDefault=!0,a[0].trim()!=="!default"&&(t.raws.scssDefault=a[0]));let u=i.match(Mg);if(u&&(i=i.slice(0,u.index),t.scssGlobal=!0,u[0].trim()!=="!global"&&(t.raws.scssGlobal=u[0])),i.startsWith("progid:"))return {type:"value-unknown",value:i};t.value=ae(i,e);}if(e.parser==="less"&&t.type==="css-decl"&&i.startsWith("extend(")&&(t.extend||(t.extend=t.raws.between===":"),t.extend&&!t.selector&&(delete t.value,t.selector=Z(i.slice(7,-1)))),t.type==="css-atrule"){if(e.parser==="less"){if(t.mixin){let a=t.raws.identifier+t.name+t.raws.afterName+t.raws.params;return t.selector=Z(a),delete t.params,t}if(t.function)return t}if(e.parser==="css"&&t.name==="custom-selector"){let a=t.params.match(/:--\S+\s+/)[0].trim();return t.customSelector=a,t.selector=Z(t.params.slice(a.length).trim()),delete t.params,t}if(e.parser==="less"){if(t.name.includes(":")&&!t.params){t.variable=!0;let a=t.name.split(":");t.name=a[0],t.value=ae(a.slice(1).join(":"),e);}if(!["page","nest","keyframes"].includes(t.name)&&((r=t.params)==null?void 0:r[0])===":"){t.variable=!0;let a=t.params.slice(1);a&&(t.value=ae(a,e)),t.raws.afterName+=":";}if(t.variable)return delete t.params,t.value||delete t.value,t}}if(t.type==="css-atrule"&&o.length>0){let{name:a}=t,u=t.name.toLowerCase();return a==="warn"||a==="error"?(t.params={type:"media-unknown",value:o},t):a==="extend"||a==="nest"?(t.selector=Z(o),delete t.params,t):a==="at-root"?(/^\(\s*(?:without|with)\s*:.+\)$/s.test(o)?t.params=ae(o,e):(t.selector=Z(o),delete t.params),t):qa(u)?(t.import=!0,delete t.filename,t.params=ae(o,e),t):["namespace","supports","if","else","for","each","while","debug","mixin","include","function","return","define-mixin","add-mixin"].includes(a)?(o=o.replace(/(\$\S+?)(\s+)?\.{3}/,"$1...$2"),o=o.replace(/^(?!if)(\S+)(\s+)\(/,"$1($2"),t.value=ae(o,e),delete t.params,t):["media","custom-media"].includes(u)?o.includes("#{")?{type:"media-unknown",value:o}:(t.params=Il(o),t):(t.params=o,t)}}return t}function _s(t,e,n){let r=je(e),{frontMatter:s}=r;e=r.content;let i;try{i=t(e,{map:!1});}catch(o){let{name:a,reason:u,line:c,column:f}=o;throw typeof c!="number"?o:Ra(`${a}: ${u}`,{loc:{start:{line:c,column:f}},cause:o})}return n.originalText=e,i=Ml(X(i,"css-"),n),hn(i,e),s&&(s.source={startOffset:0,endOffset:s.raw.length},i.frontMatter=s),i}function Bl(t,e={}){return _s(ql.default.default,t,e)}function Fl(t,e={}){return _s(n=>Dl.default.parse(Ai(n)),t,e)}function $l(t,e={}){return _s(Ll.default,t,e)}var Ts={astFormat:"postcss",hasPragma:ei,locStart:P,locEnd:R},Bg={...Ts,parse:Bl},Fg={...Ts,parse:Fl},$g={...Ts,parse:$l};var Ul=[{linguistLanguageId:50,name:"CSS",type:"markup",tmScope:"source.css",aceMode:"css",codemirrorMode:"css",codemirrorMimeType:"text/css",color:"#563d7c",extensions:[".css",".wxss"],parsers:["css"],vscodeLanguageIds:["css"]},{linguistLanguageId:262764437,name:"PostCSS",type:"markup",color:"#dc3a0c",tmScope:"source.postcss",group:"CSS",extensions:[".pcss",".postcss"],aceMode:"text",parsers:["css"],vscodeLanguageIds:["postcss"]},{linguistLanguageId:198,name:"Less",type:"markup",color:"#1d365d",aliases:["less-css"],extensions:[".less"],tmScope:"source.css.less",aceMode:"less",codemirrorMode:"css",codemirrorMimeType:"text/css",parsers:["less"],vscodeLanguageIds:["less"]},{linguistLanguageId:329,name:"SCSS",type:"markup",color:"#c6538c",tmScope:"source.css.scss",aceMode:"scss",codemirrorMode:"css",codemirrorMimeType:"text/x-scss",extensions:[".scss"],parsers:["scss"],vscodeLanguageIds:["scss"]}];var Wl={bracketSpacing:{category:"Common",type:"boolean",default:!0,description:"Print spaces between brackets.",oppositeDescription:"Do not print spaces between brackets."},singleQuote:{category:"Common",type:"boolean",default:!1,description:"Use single quotes instead of double quotes."},proseWrap:{category:"Common",type:"choice",default:"preserve",description:"How to wrap prose.",choices:[{value:"always",description:"Wrap prose if it exceeds the print width."},{value:"never",description:"Do not wrap prose."},{value:"preserve",description:"Wrap prose as-is."}]},bracketSameLine:{category:"Common",type:"boolean",default:!1,description:"Put > of opening tags on the last line instead of on a new line."},singleAttributePerLine:{category:"Common",type:"boolean",default:!1,description:"Enforce single attribute per line in HTML, Vue and JSX."}};var Ug={singleQuote:Wl.singleQuote},zl=Ug;var Wg={postcss:Fi};var Vk=Ss; -export { Jp as default }; +export { Vk as default, Ul as languages, zl as options, Es as parsers, Wg as printers }; diff --git a/src/lib/prettier-xml.js b/src/lib/prettier-xml.js deleted file mode 100644 index b1fcd8179..000000000 --- a/src/lib/prettier-xml.js +++ /dev/null @@ -1,10961 +0,0 @@ -var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - -function getAugmentedNamespace(n) { - var f = n.default; - if (typeof f == "function") { - var a = function () { - return f.apply(this, arguments); - }; - a.prototype = f.prototype; - } else a = {}; - Object.defineProperty(a, '__esModule', {value: true}); - Object.keys(n).forEach(function (k) { - var d = Object.getOwnPropertyDescriptor(n, k); - Object.defineProperty(a, k, d.get ? d : { - enumerable: true, - get: function () { - return n[k]; - } - }); - }); - return a; -} - -var parser$2 = {}; - -// needs a separate module as this is required inside chevrotain productive code -// and also in the entry point for webpack(api.ts). -// A separate file avoids cyclic dependencies and webpack errors. -var VERSION = "7.1.1"; - -/* - Utils using lodash style API. (not necessarily 100% compliant) for functional and other utils. - These utils should replace usage of lodash in the production code base. not because they are any better... - but for the purpose of being a dependency free library. - - The hotspots in the code are already written in imperative style for performance reasons. - so writing several dozen utils which may be slower than the original lodash, does not matter as much - considering they will not be invoked in hotspots... - */ -function isEmpty(arr) { - return arr && arr.length === 0; -} -function keys(obj) { - if (obj === undefined || obj === null) { - return []; - } - return Object.keys(obj); -} -function values(obj) { - var vals = []; - var keys = Object.keys(obj); - for (var i = 0; i < keys.length; i++) { - vals.push(obj[keys[i]]); - } - return vals; -} -function mapValues(obj, callback) { - var result = []; - var objKeys = keys(obj); - for (var idx = 0; idx < objKeys.length; idx++) { - var currKey = objKeys[idx]; - result.push(callback.call(null, obj[currKey], currKey)); - } - return result; -} -function map(arr, callback) { - var result = []; - for (var idx = 0; idx < arr.length; idx++) { - result.push(callback.call(null, arr[idx], idx)); - } - return result; -} -function flatten(arr) { - var result = []; - for (var idx = 0; idx < arr.length; idx++) { - var currItem = arr[idx]; - if (Array.isArray(currItem)) { - result = result.concat(flatten(currItem)); - } - else { - result.push(currItem); - } - } - return result; -} -function first$1(arr) { - return isEmpty(arr) ? undefined : arr[0]; -} -function last(arr) { - var len = arr && arr.length; - return len ? arr[len - 1] : undefined; -} -function forEach(collection, iteratorCallback) { - /* istanbul ignore else */ - if (Array.isArray(collection)) { - for (var i = 0; i < collection.length; i++) { - iteratorCallback.call(null, collection[i], i); - } - } - else if (isObject(collection)) { - var colKeys = keys(collection); - for (var i = 0; i < colKeys.length; i++) { - var key = colKeys[i]; - var value = collection[key]; - iteratorCallback.call(null, value, key); - } - } - else { - throw Error("non exhaustive match"); - } -} -function isString(item) { - return typeof item === "string"; -} -function isUndefined(item) { - return item === undefined; -} -function isFunction(item) { - return item instanceof Function; -} -function drop(arr, howMuch) { - if (howMuch === void 0) { howMuch = 1; } - return arr.slice(howMuch, arr.length); -} -function dropRight(arr, howMuch) { - if (howMuch === void 0) { howMuch = 1; } - return arr.slice(0, arr.length - howMuch); -} -function filter(arr, predicate) { - var result = []; - if (Array.isArray(arr)) { - for (var i = 0; i < arr.length; i++) { - var item = arr[i]; - if (predicate.call(null, item)) { - result.push(item); - } - } - } - return result; -} -function reject(arr, predicate) { - return filter(arr, function (item) { return !predicate(item); }); -} -function pick(obj, predicate) { - var keys = Object.keys(obj); - var result = {}; - for (var i = 0; i < keys.length; i++) { - var currKey = keys[i]; - var currItem = obj[currKey]; - if (predicate(currItem)) { - result[currKey] = currItem; - } - } - return result; -} -function has(obj, prop) { - if (isObject(obj)) { - return obj.hasOwnProperty(prop); - } - return false; -} -function contains(arr, item) { - return find(arr, function (currItem) { return currItem === item; }) !== undefined ? true : false; -} -/** - * shallow clone - */ -function cloneArr(arr) { - var newArr = []; - for (var i = 0; i < arr.length; i++) { - newArr.push(arr[i]); - } - return newArr; -} -/** - * shallow clone - */ -function cloneObj(obj) { - var clonedObj = {}; - for (var key in obj) { - /* istanbul ignore else */ - if (Object.prototype.hasOwnProperty.call(obj, key)) { - clonedObj[key] = obj[key]; - } - } - return clonedObj; -} -function find(arr, predicate) { - for (var i = 0; i < arr.length; i++) { - var item = arr[i]; - if (predicate.call(null, item)) { - return item; - } - } - return undefined; -} -function findAll(arr, predicate) { - var found = []; - for (var i = 0; i < arr.length; i++) { - var item = arr[i]; - if (predicate.call(null, item)) { - found.push(item); - } - } - return found; -} -function reduce(arrOrObj, iterator, initial) { - var isArr = Array.isArray(arrOrObj); - var vals = isArr ? arrOrObj : values(arrOrObj); - var objKeys = isArr ? [] : keys(arrOrObj); - var accumulator = initial; - for (var i = 0; i < vals.length; i++) { - accumulator = iterator.call(null, accumulator, vals[i], isArr ? i : objKeys[i]); - } - return accumulator; -} -function compact(arr) { - return reject(arr, function (item) { return item === null || item === undefined; }); -} -function uniq(arr, identity) { - if (identity === void 0) { identity = function (item) { return item; }; } - var identities = []; - return reduce(arr, function (result, currItem) { - var currIdentity = identity(currItem); - if (contains(identities, currIdentity)) { - return result; - } - else { - identities.push(currIdentity); - return result.concat(currItem); - } - }, []); -} -function isArray(obj) { - return Array.isArray(obj); -} -function isRegExp(obj) { - return obj instanceof RegExp; -} -function isObject(obj) { - return obj instanceof Object; -} -function every(arr, predicate) { - for (var i = 0; i < arr.length; i++) { - if (!predicate(arr[i], i)) { - return false; - } - } - return true; -} -function difference(arr, values) { - return reject(arr, function (item) { return contains(values, item); }); -} -function some(arr, predicate) { - for (var i = 0; i < arr.length; i++) { - if (predicate(arr[i])) { - return true; - } - } - return false; -} -function indexOf(arr, value) { - for (var i = 0; i < arr.length; i++) { - if (arr[i] === value) { - return i; - } - } - return -1; -} -/** - * mutates! (and returns) target - */ -function assign(target) { - var sources = []; - for (var _i = 1; _i < arguments.length; _i++) { - sources[_i - 1] = arguments[_i]; - } - for (var i = 0; i < sources.length; i++) { - var curSource = sources[i]; - var currSourceKeys = keys(curSource); - for (var j = 0; j < currSourceKeys.length; j++) { - var currKey = currSourceKeys[j]; - target[currKey] = curSource[currKey]; - } - } - return target; -} -/** - * mutates! (and returns) target - */ -function assignNoOverwrite(target) { - var sources = []; - for (var _i = 1; _i < arguments.length; _i++) { - sources[_i - 1] = arguments[_i]; - } - for (var i = 0; i < sources.length; i++) { - var curSource = sources[i]; - var currSourceKeys = keys(curSource); - for (var j = 0; j < currSourceKeys.length; j++) { - var currKey = currSourceKeys[j]; - if (!has(target, currKey)) { - target[currKey] = curSource[currKey]; - } - } - } - return target; -} -function defaults() { - var sources = []; - for (var _i = 0; _i < arguments.length; _i++) { - sources[_i] = arguments[_i]; - } - return assignNoOverwrite.apply(null, [{}].concat(sources)); -} -function groupBy(arr, groupKeyFunc) { - var result = {}; - forEach(arr, function (item) { - var currGroupKey = groupKeyFunc(item); - var currGroupArr = result[currGroupKey]; - if (currGroupArr) { - currGroupArr.push(item); - } - else { - result[currGroupKey] = [item]; - } - }); - return result; -} -/** - * Merge obj2 into obj1. - * Will overwrite existing properties with the same name - */ -function merge(obj1, obj2) { - var result = cloneObj(obj1); - var keys2 = keys(obj2); - for (var i = 0; i < keys2.length; i++) { - var key = keys2[i]; - var value = obj2[key]; - result[key] = value; - } - return result; -} -function NOOP() { } -function IDENTITY(item) { - return item; -} -/** - * Will return a new packed array with same values. - */ -function packArray(holeyArr) { - var result = []; - for (var i = 0; i < holeyArr.length; i++) { - var orgValue = holeyArr[i]; - result.push(orgValue !== undefined ? orgValue : undefined); - } - return result; -} -function PRINT_ERROR(msg) { - /* istanbul ignore else - can't override global.console in node.js */ - if (console && console.error) { - console.error("Error: " + msg); - } -} -function PRINT_WARNING(msg) { - /* istanbul ignore else - can't override global.console in node.js*/ - if (console && console.warn) { - // TODO: modify docs accordingly - console.warn("Warning: " + msg); - } -} -function isES2015MapSupported() { - return typeof Map === "function"; -} -function applyMixins(derivedCtor, baseCtors) { - baseCtors.forEach(function (baseCtor) { - var baseProto = baseCtor.prototype; - Object.getOwnPropertyNames(baseProto).forEach(function (propName) { - if (propName === "constructor") { - return; - } - var basePropDescriptor = Object.getOwnPropertyDescriptor(baseProto, propName); - // Handle Accessors - if (basePropDescriptor && - (basePropDescriptor.get || basePropDescriptor.set)) { - Object.defineProperty(derivedCtor.prototype, propName, basePropDescriptor); - } - else { - derivedCtor.prototype[propName] = baseCtor.prototype[propName]; - } - }); - }); -} -// base on: https://github.com/petkaantonov/bluebird/blob/b97c0d2d487e8c5076e8bd897e0dcd4622d31846/src/util.js#L201-L216 -function toFastProperties(toBecomeFast) { - function FakeConstructor() { } - // If our object is used as a constructor it would receive - FakeConstructor.prototype = toBecomeFast; - var fakeInstance = new FakeConstructor(); - function fakeAccess() { - return typeof fakeInstance.bar; - } - // help V8 understand this is a "real" prototype by actually using - // the fake instance. - fakeAccess(); - fakeAccess(); - return toBecomeFast; -} -function peek(arr) { - return arr[arr.length - 1]; -} -/* istanbul ignore next - for performance tracing*/ -function timer(func) { - var start = new Date().getTime(); - var val = func(); - var end = new Date().getTime(); - var total = end - start; - return { time: total, value: val }; -} - -var regexpToAst = {exports: {}}; - -(function (module) { -(function(root, factory) { - // istanbul ignore next - if (module.exports) { - module.exports = factory(); - } else { - // istanbul ignore next - root.regexpToAst = factory(); - } - })( - typeof self !== "undefined" - ? // istanbul ignore next - self - : commonjsGlobal, - function() { - // references - // https://hackernoon.com/the-madness-of-parsing-real-world-javascript-regexps-d9ee336df983 - // https://www.ecma-international.org/ecma-262/8.0/index.html#prod-Pattern - function RegExpParser() {} - - RegExpParser.prototype.saveState = function() { - return { - idx: this.idx, - input: this.input, - groupIdx: this.groupIdx - } - }; - - RegExpParser.prototype.restoreState = function(newState) { - this.idx = newState.idx; - this.input = newState.input; - this.groupIdx = newState.groupIdx; - }; - - RegExpParser.prototype.pattern = function(input) { - // parser state - this.idx = 0; - this.input = input; - this.groupIdx = 0; - - this.consumeChar("/"); - var value = this.disjunction(); - this.consumeChar("/"); - - var flags = { - type: "Flags", - loc: { begin: this.idx, end: input.length }, - global: false, - ignoreCase: false, - multiLine: false, - unicode: false, - sticky: false - }; - - while (this.isRegExpFlag()) { - switch (this.popChar()) { - case "g": - addFlag(flags, "global"); - break - case "i": - addFlag(flags, "ignoreCase"); - break - case "m": - addFlag(flags, "multiLine"); - break - case "u": - addFlag(flags, "unicode"); - break - case "y": - addFlag(flags, "sticky"); - break - } - } - - if (this.idx !== this.input.length) { - throw Error( - "Redundant input: " + this.input.substring(this.idx) - ) - } - return { - type: "Pattern", - flags: flags, - value: value, - loc: this.loc(0) - } - }; - - RegExpParser.prototype.disjunction = function() { - var alts = []; - var begin = this.idx; - - alts.push(this.alternative()); - - while (this.peekChar() === "|") { - this.consumeChar("|"); - alts.push(this.alternative()); - } - - return { type: "Disjunction", value: alts, loc: this.loc(begin) } - }; - - RegExpParser.prototype.alternative = function() { - var terms = []; - var begin = this.idx; - - while (this.isTerm()) { - terms.push(this.term()); - } - - return { type: "Alternative", value: terms, loc: this.loc(begin) } - }; - - RegExpParser.prototype.term = function() { - if (this.isAssertion()) { - return this.assertion() - } else { - return this.atom() - } - }; - - RegExpParser.prototype.assertion = function() { - var begin = this.idx; - switch (this.popChar()) { - case "^": - return { - type: "StartAnchor", - loc: this.loc(begin) - } - case "$": - return { type: "EndAnchor", loc: this.loc(begin) } - // '\b' or '\B' - case "\\": - switch (this.popChar()) { - case "b": - return { - type: "WordBoundary", - loc: this.loc(begin) - } - case "B": - return { - type: "NonWordBoundary", - loc: this.loc(begin) - } - } - // istanbul ignore next - throw Error("Invalid Assertion Escape") - // '(?=' or '(?!' - case "(": - this.consumeChar("?"); - - var type; - switch (this.popChar()) { - case "=": - type = "Lookahead"; - break - case "!": - type = "NegativeLookahead"; - break - } - ASSERT_EXISTS(type); - - var disjunction = this.disjunction(); - - this.consumeChar(")"); - - return { - type: type, - value: disjunction, - loc: this.loc(begin) - } - } - // istanbul ignore next - ASSERT_NEVER_REACH_HERE(); - }; - - RegExpParser.prototype.quantifier = function(isBacktracking) { - var range; - var begin = this.idx; - switch (this.popChar()) { - case "*": - range = { - atLeast: 0, - atMost: Infinity - }; - break - case "+": - range = { - atLeast: 1, - atMost: Infinity - }; - break - case "?": - range = { - atLeast: 0, - atMost: 1 - }; - break - case "{": - var atLeast = this.integerIncludingZero(); - switch (this.popChar()) { - case "}": - range = { - atLeast: atLeast, - atMost: atLeast - }; - break - case ",": - var atMost; - if (this.isDigit()) { - atMost = this.integerIncludingZero(); - range = { - atLeast: atLeast, - atMost: atMost - }; - } else { - range = { - atLeast: atLeast, - atMost: Infinity - }; - } - this.consumeChar("}"); - break - } - // throwing exceptions from "ASSERT_EXISTS" during backtracking - // causes severe performance degradations - if (isBacktracking === true && range === undefined) { - return undefined - } - ASSERT_EXISTS(range); - break - } - - // throwing exceptions from "ASSERT_EXISTS" during backtracking - // causes severe performance degradations - if (isBacktracking === true && range === undefined) { - return undefined - } - - ASSERT_EXISTS(range); - - if (this.peekChar(0) === "?") { - this.consumeChar("?"); - range.greedy = false; - } else { - range.greedy = true; - } - - range.type = "Quantifier"; - range.loc = this.loc(begin); - return range - }; - - RegExpParser.prototype.atom = function() { - var atom; - var begin = this.idx; - switch (this.peekChar()) { - case ".": - atom = this.dotAll(); - break - case "\\": - atom = this.atomEscape(); - break - case "[": - atom = this.characterClass(); - break - case "(": - atom = this.group(); - break - } - - if (atom === undefined && this.isPatternCharacter()) { - atom = this.patternCharacter(); - } - - ASSERT_EXISTS(atom); - - atom.loc = this.loc(begin); - - if (this.isQuantifier()) { - atom.quantifier = this.quantifier(); - } - - return atom - }; - - RegExpParser.prototype.dotAll = function() { - this.consumeChar("."); - return { - type: "Set", - complement: true, - value: [cc("\n"), cc("\r"), cc("\u2028"), cc("\u2029")] - } - }; - - RegExpParser.prototype.atomEscape = function() { - this.consumeChar("\\"); - - switch (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() - } - }; - - RegExpParser.prototype.decimalEscapeAtom = function() { - var value = this.positiveInteger(); - - return { type: "GroupBackReference", value: value } - }; - - RegExpParser.prototype.characterClassEscape = function() { - var set; - var complement = false; - switch (this.popChar()) { - case "d": - set = digitsCharCodes; - break - case "D": - set = digitsCharCodes; - complement = true; - break - case "s": - set = whitespaceCodes; - break - case "S": - set = whitespaceCodes; - complement = true; - break - case "w": - set = wordCharCodes; - break - case "W": - set = wordCharCodes; - complement = true; - break - } - - ASSERT_EXISTS(set); - - return { type: "Set", value: set, complement: complement } - }; - - RegExpParser.prototype.controlEscapeAtom = function() { - var escapeCode; - switch (this.popChar()) { - case "f": - escapeCode = cc("\f"); - break - case "n": - escapeCode = cc("\n"); - break - case "r": - escapeCode = cc("\r"); - break - case "t": - escapeCode = cc("\t"); - break - case "v": - escapeCode = cc("\v"); - break - } - ASSERT_EXISTS(escapeCode); - - return { type: "Character", value: escapeCode } - }; - - RegExpParser.prototype.controlLetterEscapeAtom = function() { - this.consumeChar("c"); - var letter = this.popChar(); - if (/[a-zA-Z]/.test(letter) === false) { - throw Error("Invalid ") - } - - var letterCode = letter.toUpperCase().charCodeAt(0) - 64; - return { type: "Character", value: letterCode } - }; - - RegExpParser.prototype.nulCharacterAtom = function() { - // TODO implement '[lookahead ∉ DecimalDigit]' - // TODO: for the deprecated octal escape sequence - this.consumeChar("0"); - return { type: "Character", value: cc("\0") } - }; - - RegExpParser.prototype.hexEscapeSequenceAtom = function() { - this.consumeChar("x"); - return this.parseHexDigits(2) - }; - - RegExpParser.prototype.regExpUnicodeEscapeSequenceAtom = function() { - this.consumeChar("u"); - return this.parseHexDigits(4) - }; - - RegExpParser.prototype.identityEscapeAtom = function() { - // TODO: implement "SourceCharacter but not UnicodeIDContinue" - // // http://unicode.org/reports/tr31/#Specific_Character_Adjustments - var escapedChar = this.popChar(); - return { type: "Character", value: cc(escapedChar) } - }; - - RegExpParser.prototype.classPatternCharacterAtom = function() { - switch (this.peekChar()) { - // istanbul ignore next - case "\n": - // istanbul ignore next - case "\r": - // istanbul ignore next - case "\u2028": - // istanbul ignore next - case "\u2029": - // istanbul ignore next - case "\\": - // istanbul ignore next - case "]": - throw Error("TBD") - default: - var nextChar = this.popChar(); - return { type: "Character", value: cc(nextChar) } - } - }; - - RegExpParser.prototype.characterClass = function() { - var set = []; - var complement = false; - this.consumeChar("["); - if (this.peekChar(0) === "^") { - this.consumeChar("^"); - complement = true; - } - - while (this.isClassAtom()) { - var from = this.classAtom(); - var isFromSingleChar = from.type === "Character"; - if (isFromSingleChar && this.isRangeDash()) { - this.consumeChar("-"); - var to = this.classAtom(); - var isToSingleChar = to.type === "Character"; - - // a range can only be used when both sides are single characters - if (isToSingleChar) { - if (to.value < from.value) { - throw Error("Range out of order in character class") - } - set.push({ from: from.value, to: to.value }); - } else { - // literal dash - insertToSet(from.value, set); - set.push(cc("-")); - insertToSet(to.value, set); - } - } else { - insertToSet(from.value, set); - } - } - - this.consumeChar("]"); - - return { type: "Set", complement: complement, value: set } - }; - - RegExpParser.prototype.classAtom = function() { - switch (this.peekChar()) { - // istanbul ignore next - case "]": - // istanbul ignore next - case "\n": - // istanbul ignore next - case "\r": - // istanbul ignore next - case "\u2028": - // istanbul ignore next - case "\u2029": - throw Error("TBD") - case "\\": - return this.classEscape() - default: - return this.classPatternCharacterAtom() - } - }; - - RegExpParser.prototype.classEscape = function() { - this.consumeChar("\\"); - switch (this.peekChar()) { - // Matches a backspace. - // (Not to be confused with \b word boundary outside characterClass) - case "b": - this.consumeChar("b"); - return { type: "Character", value: cc("\u0008") } - 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() - } - }; - - RegExpParser.prototype.group = function() { - var capturing = true; - this.consumeChar("("); - switch (this.peekChar(0)) { - case "?": - this.consumeChar("?"); - this.consumeChar(":"); - capturing = false; - break - default: - this.groupIdx++; - break - } - var value = this.disjunction(); - this.consumeChar(")"); - - var groupAst = { - type: "Group", - capturing: capturing, - value: value - }; - - if (capturing) { - groupAst.idx = this.groupIdx; - } - - return groupAst - }; - - RegExpParser.prototype.positiveInteger = function() { - var number = this.popChar(); - - // istanbul ignore next - can't ever get here due to previous lookahead checks - // still implementing this error checking in case this ever changes. - if (decimalPatternNoZero.test(number) === false) { - throw Error("Expecting a positive integer") - } - - while (decimalPattern.test(this.peekChar(0))) { - number += this.popChar(); - } - - return parseInt(number, 10) - }; - - RegExpParser.prototype.integerIncludingZero = function() { - var number = this.popChar(); - if (decimalPattern.test(number) === false) { - throw Error("Expecting an integer") - } - - while (decimalPattern.test(this.peekChar(0))) { - number += this.popChar(); - } - - return parseInt(number, 10) - }; - - RegExpParser.prototype.patternCharacter = function() { - var nextChar = this.popChar(); - switch (nextChar) { - // istanbul ignore next - case "\n": - // istanbul ignore next - case "\r": - // istanbul ignore next - case "\u2028": - // istanbul ignore next - case "\u2029": - // istanbul ignore next - case "^": - // istanbul ignore next - case "$": - // istanbul ignore next - case "\\": - // istanbul ignore next - case ".": - // istanbul ignore next - case "*": - // istanbul ignore next - case "+": - // istanbul ignore next - case "?": - // istanbul ignore next - case "(": - // istanbul ignore next - case ")": - // istanbul ignore next - case "[": - // istanbul ignore next - case "|": - // istanbul ignore next - throw Error("TBD") - default: - return { type: "Character", value: cc(nextChar) } - } - }; - RegExpParser.prototype.isRegExpFlag = function() { - switch (this.peekChar(0)) { - case "g": - case "i": - case "m": - case "u": - case "y": - return true - default: - return false - } - }; - - RegExpParser.prototype.isRangeDash = function() { - return this.peekChar() === "-" && this.isClassAtom(1) - }; - - RegExpParser.prototype.isDigit = function() { - return decimalPattern.test(this.peekChar(0)) - }; - - RegExpParser.prototype.isClassAtom = function(howMuch) { - if (howMuch === undefined) { - howMuch = 0; - } - - switch (this.peekChar(howMuch)) { - case "]": - case "\n": - case "\r": - case "\u2028": - case "\u2029": - return false - default: - return true - } - }; - - RegExpParser.prototype.isTerm = function() { - return this.isAtom() || this.isAssertion() - }; - - RegExpParser.prototype.isAtom = function() { - if (this.isPatternCharacter()) { - return true - } - - switch (this.peekChar(0)) { - case ".": - case "\\": // atomEscape - case "[": // characterClass - // TODO: isAtom must be called before isAssertion - disambiguate - case "(": // group - return true - default: - return false - } - }; - - RegExpParser.prototype.isAssertion = function() { - switch (this.peekChar(0)) { - case "^": - case "$": - return true - // '\b' or '\B' - case "\\": - switch (this.peekChar(1)) { - case "b": - case "B": - return true - default: - return false - } - // '(?=' or '(?!' - case "(": - return ( - this.peekChar(1) === "?" && - (this.peekChar(2) === "=" || this.peekChar(2) === "!") - ) - default: - return false - } - }; - - RegExpParser.prototype.isQuantifier = function() { - var prevState = this.saveState(); - try { - return this.quantifier(true) !== undefined - } catch (e) { - return false - } finally { - this.restoreState(prevState); - } - }; - - RegExpParser.prototype.isPatternCharacter = function() { - switch (this.peekChar()) { - case "^": - case "$": - case "\\": - case ".": - case "*": - case "+": - case "?": - case "(": - case ")": - case "[": - case "|": - case "/": - case "\n": - case "\r": - case "\u2028": - case "\u2029": - return false - default: - return true - } - }; - - RegExpParser.prototype.parseHexDigits = function(howMany) { - var hexString = ""; - for (var i = 0; i < howMany; i++) { - var hexChar = this.popChar(); - if (hexDigitPattern.test(hexChar) === false) { - throw Error("Expecting a HexDecimal digits") - } - hexString += hexChar; - } - var charCode = parseInt(hexString, 16); - return { type: "Character", value: charCode } - }; - - RegExpParser.prototype.peekChar = function(howMuch) { - if (howMuch === undefined) { - howMuch = 0; - } - return this.input[this.idx + howMuch] - }; - - RegExpParser.prototype.popChar = function() { - var nextChar = this.peekChar(0); - this.consumeChar(); - return nextChar - }; - - RegExpParser.prototype.consumeChar = function(char) { - if (char !== undefined && this.input[this.idx] !== char) { - throw Error( - "Expected: '" + - char + - "' but found: '" + - this.input[this.idx] + - "' at offset: " + - this.idx - ) - } - - if (this.idx >= this.input.length) { - throw Error("Unexpected end of input") - } - this.idx++; - }; - - RegExpParser.prototype.loc = function(begin) { - return { begin: begin, end: this.idx } - }; - - // consts and utilities - var hexDigitPattern = /[0-9a-fA-F]/; - var decimalPattern = /[0-9]/; - var decimalPatternNoZero = /[1-9]/; - - function cc(char) { - return char.charCodeAt(0) - } - - function insertToSet(item, set) { - if (item.length !== undefined) { - item.forEach(function(subItem) { - set.push(subItem); - }); - } else { - set.push(item); - } - } - - function addFlag(flagObj, flagKey) { - if (flagObj[flagKey] === true) { - throw "duplicate flag " + flagKey - } - - flagObj[flagKey] = true; - } - - function ASSERT_EXISTS(obj) { - // istanbul ignore next - if (obj === undefined) { - throw Error("Internal Error - Should never get here!") - } - } - - // istanbul ignore next - function ASSERT_NEVER_REACH_HERE() { - throw Error("Internal Error - Should never get here!") - } - - var i; - var digitsCharCodes = []; - for (i = cc("0"); i <= cc("9"); i++) { - digitsCharCodes.push(i); - } - - var wordCharCodes = [cc("_")].concat(digitsCharCodes); - for (i = cc("a"); i <= cc("z"); i++) { - wordCharCodes.push(i); - } - - for (i = cc("A"); i <= cc("Z"); i++) { - wordCharCodes.push(i); - } - - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#character-classes - var whitespaceCodes = [ - cc(" "), - cc("\f"), - cc("\n"), - cc("\r"), - cc("\t"), - cc("\v"), - cc("\t"), - cc("\u00a0"), - cc("\u1680"), - cc("\u2000"), - cc("\u2001"), - cc("\u2002"), - cc("\u2003"), - cc("\u2004"), - cc("\u2005"), - cc("\u2006"), - cc("\u2007"), - cc("\u2008"), - cc("\u2009"), - cc("\u200a"), - cc("\u2028"), - cc("\u2029"), - cc("\u202f"), - cc("\u205f"), - cc("\u3000"), - cc("\ufeff") - ]; - - function BaseRegExpVisitor() {} - - BaseRegExpVisitor.prototype.visitChildren = function(node) { - for (var key in node) { - var child = node[key]; - /* istanbul ignore else */ - if (node.hasOwnProperty(key)) { - if (child.type !== undefined) { - this.visit(child); - } else if (Array.isArray(child)) { - child.forEach(function(subChild) { - this.visit(subChild); - }, this); - } - } - } - }; - - BaseRegExpVisitor.prototype.visit = function(node) { - switch (node.type) { - case "Pattern": - this.visitPattern(node); - break - case "Flags": - this.visitFlags(node); - break - case "Disjunction": - this.visitDisjunction(node); - break - case "Alternative": - this.visitAlternative(node); - break - case "StartAnchor": - this.visitStartAnchor(node); - break - case "EndAnchor": - this.visitEndAnchor(node); - break - case "WordBoundary": - this.visitWordBoundary(node); - break - case "NonWordBoundary": - this.visitNonWordBoundary(node); - break - case "Lookahead": - this.visitLookahead(node); - break - case "NegativeLookahead": - this.visitNegativeLookahead(node); - break - case "Character": - this.visitCharacter(node); - break - case "Set": - this.visitSet(node); - break - case "Group": - this.visitGroup(node); - break - case "GroupBackReference": - this.visitGroupBackReference(node); - break - case "Quantifier": - this.visitQuantifier(node); - break - } - - this.visitChildren(node); - }; - - BaseRegExpVisitor.prototype.visitPattern = function(node) {}; - - BaseRegExpVisitor.prototype.visitFlags = function(node) {}; - - BaseRegExpVisitor.prototype.visitDisjunction = function(node) {}; - - BaseRegExpVisitor.prototype.visitAlternative = function(node) {}; - - // Assertion - BaseRegExpVisitor.prototype.visitStartAnchor = function(node) {}; - - BaseRegExpVisitor.prototype.visitEndAnchor = function(node) {}; - - BaseRegExpVisitor.prototype.visitWordBoundary = function(node) {}; - - BaseRegExpVisitor.prototype.visitNonWordBoundary = function(node) {}; - - BaseRegExpVisitor.prototype.visitLookahead = function(node) {}; - - BaseRegExpVisitor.prototype.visitNegativeLookahead = function(node) {}; - - // atoms - BaseRegExpVisitor.prototype.visitCharacter = function(node) {}; - - BaseRegExpVisitor.prototype.visitSet = function(node) {}; - - BaseRegExpVisitor.prototype.visitGroup = function(node) {}; - - BaseRegExpVisitor.prototype.visitGroupBackReference = function(node) {}; - - BaseRegExpVisitor.prototype.visitQuantifier = function(node) {}; - - return { - RegExpParser: RegExpParser, - BaseRegExpVisitor: BaseRegExpVisitor, - VERSION: "0.5.0" - } - } - ); -} (regexpToAst)); - -var regExpAstCache = {}; -var regExpParser = new regexpToAst.exports.RegExpParser(); -function getRegExpAst(regExp) { - var regExpStr = regExp.toString(); - if (regExpAstCache.hasOwnProperty(regExpStr)) { - return regExpAstCache[regExpStr]; - } - else { - var regExpAst = regExpParser.pattern(regExpStr); - regExpAstCache[regExpStr] = regExpAst; - return regExpAst; - } -} -function clearRegExpParserCache() { - regExpAstCache = {}; -} - -var __extends$a = (undefined && undefined.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var complementErrorMessage = "Complement Sets are not supported for first char optimization"; -var failedOptimizationPrefixMsg = 'Unable to use "first char" lexer optimizations:\n'; -function getOptimizedStartCodesIndices(regExp, ensureOptimizations) { - if (ensureOptimizations === void 0) { ensureOptimizations = false; } - try { - var ast = getRegExpAst(regExp); - var firstChars = firstCharOptimizedIndices(ast.value, {}, ast.flags.ignoreCase); - return firstChars; - } - catch (e) { - /* istanbul ignore next */ - // Testing this relies on the regexp-to-ast library having a bug... */ - // TODO: only the else branch needs to be ignored, try to fix with newer prettier / tsc - if (e.message === complementErrorMessage) { - if (ensureOptimizations) { - PRINT_WARNING("" + failedOptimizationPrefixMsg + - ("\tUnable to optimize: < " + regExp.toString() + " >\n") + - "\tComplement Sets cannot be automatically optimized.\n" + - "\tThis will disable the lexer's first char optimizations.\n" + - "\tSee: https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details."); - } - } - else { - var msgSuffix = ""; - if (ensureOptimizations) { - msgSuffix = - "\n\tThis will disable the lexer's first char optimizations.\n" + - "\tSee: https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details."; - } - PRINT_ERROR(failedOptimizationPrefixMsg + "\n" + - ("\tFailed parsing: < " + regExp.toString() + " >\n") + - ("\tUsing the regexp-to-ast library version: " + regexpToAst.exports.VERSION + "\n") + - "\tPlease open an issue at: https://github.com/bd82/regexp-to-ast/issues" + - msgSuffix); - } - } - return []; -} -function firstCharOptimizedIndices(ast, result, ignoreCase) { - switch (ast.type) { - case "Disjunction": - for (var i = 0; i < ast.value.length; i++) { - firstCharOptimizedIndices(ast.value[i], result, ignoreCase); - } - break; - case "Alternative": - var terms = ast.value; - for (var i = 0; i < terms.length; i++) { - var term = terms[i]; - // skip terms that cannot effect the first char results - switch (term.type) { - case "EndAnchor": - // A group back reference cannot affect potential starting char. - // because if a back reference is the first production than automatically - // the group being referenced has had to come BEFORE so its codes have already been added - case "GroupBackReference": - // assertions do not affect potential starting codes - case "Lookahead": - case "NegativeLookahead": - case "StartAnchor": - case "WordBoundary": - case "NonWordBoundary": - continue; - } - var atom = term; - switch (atom.type) { - case "Character": - addOptimizedIdxToResult(atom.value, result, ignoreCase); - break; - case "Set": - if (atom.complement === true) { - throw Error(complementErrorMessage); - } - forEach(atom.value, function (code) { - if (typeof code === "number") { - addOptimizedIdxToResult(code, result, ignoreCase); - } - else { - // range - var range = code; - // cannot optimize when ignoreCase is - if (ignoreCase === true) { - for (var rangeCode = range.from; rangeCode <= range.to; rangeCode++) { - addOptimizedIdxToResult(rangeCode, result, ignoreCase); - } - } - // Optimization (2 orders of magnitude less work for very large ranges) - else { - // handle unoptimized values - for (var rangeCode = range.from; rangeCode <= range.to && rangeCode < minOptimizationVal; rangeCode++) { - addOptimizedIdxToResult(rangeCode, result, ignoreCase); - } - // Less common charCode where we optimize for faster init time, by using larger "buckets" - if (range.to >= minOptimizationVal) { - var minUnOptVal = range.from >= minOptimizationVal - ? range.from - : minOptimizationVal; - var maxUnOptVal = range.to; - var minOptIdx = charCodeToOptimizedIndex(minUnOptVal); - var maxOptIdx = charCodeToOptimizedIndex(maxUnOptVal); - for (var currOptIdx = minOptIdx; currOptIdx <= maxOptIdx; currOptIdx++) { - result[currOptIdx] = currOptIdx; - } - } - } - } - }); - break; - case "Group": - firstCharOptimizedIndices(atom.value, result, ignoreCase); - break; - /* istanbul ignore next */ - default: - throw Error("Non Exhaustive Match"); - } - // reached a mandatory production, no more **start** codes can be found on this alternative - var isOptionalQuantifier = atom.quantifier !== undefined && atom.quantifier.atLeast === 0; - if ( - // A group may be optional due to empty contents /(?:)/ - // or if everything inside it is optional /((a)?)/ - (atom.type === "Group" && isWholeOptional(atom) === false) || - // If this term is not a group it may only be optional if it has an optional quantifier - (atom.type !== "Group" && isOptionalQuantifier === false)) { - break; - } - } - break; - /* istanbul ignore next */ - default: - throw Error("non exhaustive match!"); - } - // console.log(Object.keys(result).length) - return values(result); -} -function addOptimizedIdxToResult(code, result, ignoreCase) { - var optimizedCharIdx = charCodeToOptimizedIndex(code); - result[optimizedCharIdx] = optimizedCharIdx; - if (ignoreCase === true) { - handleIgnoreCase(code, result); - } -} -function handleIgnoreCase(code, result) { - var char = String.fromCharCode(code); - var upperChar = char.toUpperCase(); - /* istanbul ignore else */ - if (upperChar !== char) { - var optimizedCharIdx = charCodeToOptimizedIndex(upperChar.charCodeAt(0)); - result[optimizedCharIdx] = optimizedCharIdx; - } - else { - var lowerChar = char.toLowerCase(); - if (lowerChar !== char) { - var optimizedCharIdx = charCodeToOptimizedIndex(lowerChar.charCodeAt(0)); - result[optimizedCharIdx] = optimizedCharIdx; - } - } -} -function findCode(setNode, targetCharCodes) { - return find(setNode.value, function (codeOrRange) { - if (typeof codeOrRange === "number") { - return contains(targetCharCodes, codeOrRange); - } - else { - // range - var range_1 = codeOrRange; - return (find(targetCharCodes, function (targetCode) { return range_1.from <= targetCode && targetCode <= range_1.to; }) !== undefined); - } - }); -} -function isWholeOptional(ast) { - if (ast.quantifier && ast.quantifier.atLeast === 0) { - return true; - } - if (!ast.value) { - return false; - } - return isArray(ast.value) - ? every(ast.value, isWholeOptional) - : isWholeOptional(ast.value); -} -var CharCodeFinder = /** @class */ (function (_super) { - __extends$a(CharCodeFinder, _super); - function CharCodeFinder(targetCharCodes) { - var _this = _super.call(this) || this; - _this.targetCharCodes = targetCharCodes; - _this.found = false; - return _this; - } - CharCodeFinder.prototype.visitChildren = function (node) { - // No need to keep looking... - if (this.found === true) { - return; - } - // switch lookaheads as they do not actually consume any characters thus - // finding a charCode at lookahead context does not mean that regexp can actually contain it in a match. - switch (node.type) { - case "Lookahead": - this.visitLookahead(node); - return; - case "NegativeLookahead": - this.visitNegativeLookahead(node); - return; - } - _super.prototype.visitChildren.call(this, node); - }; - CharCodeFinder.prototype.visitCharacter = function (node) { - if (contains(this.targetCharCodes, node.value)) { - this.found = true; - } - }; - CharCodeFinder.prototype.visitSet = function (node) { - if (node.complement) { - if (findCode(node, this.targetCharCodes) === undefined) { - this.found = true; - } - } - else { - if (findCode(node, this.targetCharCodes) !== undefined) { - this.found = true; - } - } - }; - return CharCodeFinder; -}(regexpToAst.exports.BaseRegExpVisitor)); -function canMatchCharCode(charCodes, pattern) { - if (pattern instanceof RegExp) { - var ast = getRegExpAst(pattern); - var charCodeFinder = new CharCodeFinder(charCodes); - charCodeFinder.visit(ast); - return charCodeFinder.found; - } - else { - return (find(pattern, function (char) { - return contains(charCodes, char.charCodeAt(0)); - }) !== undefined); - } -} - -var __extends$9 = (undefined && undefined.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var PATTERN = "PATTERN"; -var DEFAULT_MODE = "defaultMode"; -var MODES = "modes"; -var SUPPORT_STICKY = typeof new RegExp("(?:)").sticky === "boolean"; -function analyzeTokenTypes(tokenTypes, options) { - options = defaults(options, { - useSticky: SUPPORT_STICKY, - debug: false, - safeMode: false, - positionTracking: "full", - lineTerminatorCharacters: ["\r", "\n"], - tracer: function (msg, action) { return action(); } - }); - var tracer = options.tracer; - tracer("initCharCodeToOptimizedIndexMap", function () { - initCharCodeToOptimizedIndexMap(); - }); - var onlyRelevantTypes; - tracer("Reject Lexer.NA", function () { - onlyRelevantTypes = reject(tokenTypes, function (currType) { - return currType[PATTERN] === Lexer$1.NA; - }); - }); - var hasCustom = false; - var allTransformedPatterns; - tracer("Transform Patterns", function () { - hasCustom = false; - allTransformedPatterns = map(onlyRelevantTypes, function (currType) { - var currPattern = currType[PATTERN]; - /* istanbul ignore else */ - if (isRegExp(currPattern)) { - var regExpSource = currPattern.source; - if (regExpSource.length === 1 && - // only these regExp meta characters which can appear in a length one regExp - regExpSource !== "^" && - regExpSource !== "$" && - regExpSource !== "." && - !currPattern.ignoreCase) { - return regExpSource; - } - else if (regExpSource.length === 2 && - regExpSource[0] === "\\" && - // not a meta character - !contains([ - "d", - "D", - "s", - "S", - "t", - "r", - "n", - "t", - "0", - "c", - "b", - "B", - "f", - "v", - "w", - "W" - ], regExpSource[1])) { - // escaped meta Characters: /\+/ /\[/ - // or redundant escaping: /\a/ - // without the escaping "\" - return regExpSource[1]; - } - else { - return options.useSticky - ? addStickyFlag(currPattern) - : addStartOfInput(currPattern); - } - } - else if (isFunction(currPattern)) { - hasCustom = true; - // CustomPatternMatcherFunc - custom patterns do not require any transformations, only wrapping in a RegExp Like object - return { exec: currPattern }; - } - else if (has(currPattern, "exec")) { - hasCustom = true; - // ICustomPattern - return currPattern; - } - else if (typeof currPattern === "string") { - if (currPattern.length === 1) { - return currPattern; - } - else { - var escapedRegExpString = currPattern.replace(/[\\^$.*+?()[\]{}|]/g, "\\$&"); - var wrappedRegExp = new RegExp(escapedRegExpString); - return options.useSticky - ? addStickyFlag(wrappedRegExp) - : addStartOfInput(wrappedRegExp); - } - } - else { - throw Error("non exhaustive match"); - } - }); - }); - var patternIdxToType; - var patternIdxToGroup; - var patternIdxToLongerAltIdx; - var patternIdxToPushMode; - var patternIdxToPopMode; - tracer("misc mapping", function () { - patternIdxToType = map(onlyRelevantTypes, function (currType) { return currType.tokenTypeIdx; }); - patternIdxToGroup = map(onlyRelevantTypes, function (clazz) { - var groupName = clazz.GROUP; - /* istanbul ignore next */ - if (groupName === Lexer$1.SKIPPED) { - return undefined; - } - else if (isString(groupName)) { - return groupName; - } - else if (isUndefined(groupName)) { - return false; - } - else { - throw Error("non exhaustive match"); - } - }); - patternIdxToLongerAltIdx = map(onlyRelevantTypes, function (clazz) { - var longerAltType = clazz.LONGER_ALT; - if (longerAltType) { - var longerAltIdx = indexOf(onlyRelevantTypes, longerAltType); - return longerAltIdx; - } - }); - patternIdxToPushMode = map(onlyRelevantTypes, function (clazz) { return clazz.PUSH_MODE; }); - patternIdxToPopMode = map(onlyRelevantTypes, function (clazz) { - return has(clazz, "POP_MODE"); - }); - }); - var patternIdxToCanLineTerminator; - tracer("Line Terminator Handling", function () { - var lineTerminatorCharCodes = getCharCodes(options.lineTerminatorCharacters); - patternIdxToCanLineTerminator = map(onlyRelevantTypes, function (tokType) { return false; }); - if (options.positionTracking !== "onlyOffset") { - patternIdxToCanLineTerminator = map(onlyRelevantTypes, function (tokType) { - if (has(tokType, "LINE_BREAKS")) { - return tokType.LINE_BREAKS; - } - else { - if (checkLineBreaksIssues(tokType, lineTerminatorCharCodes) === false) { - return canMatchCharCode(lineTerminatorCharCodes, tokType.PATTERN); - } - } - }); - } - }); - var patternIdxToIsCustom; - var patternIdxToShort; - var emptyGroups; - var patternIdxToConfig; - tracer("Misc Mapping #2", function () { - patternIdxToIsCustom = map(onlyRelevantTypes, isCustomPattern); - patternIdxToShort = map(allTransformedPatterns, isShortPattern); - emptyGroups = reduce(onlyRelevantTypes, function (acc, clazz) { - var groupName = clazz.GROUP; - if (isString(groupName) && !(groupName === Lexer$1.SKIPPED)) { - acc[groupName] = []; - } - return acc; - }, {}); - patternIdxToConfig = map(allTransformedPatterns, function (x, idx) { - return { - pattern: allTransformedPatterns[idx], - longerAlt: patternIdxToLongerAltIdx[idx], - canLineTerminator: patternIdxToCanLineTerminator[idx], - isCustom: patternIdxToIsCustom[idx], - short: patternIdxToShort[idx], - group: patternIdxToGroup[idx], - push: patternIdxToPushMode[idx], - pop: patternIdxToPopMode[idx], - tokenTypeIdx: patternIdxToType[idx], - tokenType: onlyRelevantTypes[idx] - }; - }); - }); - var canBeOptimized = true; - var charCodeToPatternIdxToConfig = []; - if (!options.safeMode) { - tracer("First Char Optimization", function () { - charCodeToPatternIdxToConfig = reduce(onlyRelevantTypes, function (result, currTokType, idx) { - if (typeof currTokType.PATTERN === "string") { - var charCode = currTokType.PATTERN.charCodeAt(0); - var optimizedIdx = charCodeToOptimizedIndex(charCode); - addToMapOfArrays(result, optimizedIdx, patternIdxToConfig[idx]); - } - else if (isArray(currTokType.START_CHARS_HINT)) { - var lastOptimizedIdx_1; - forEach(currTokType.START_CHARS_HINT, function (charOrInt) { - var charCode = typeof charOrInt === "string" - ? charOrInt.charCodeAt(0) - : charOrInt; - var currOptimizedIdx = charCodeToOptimizedIndex(charCode); - // Avoid adding the config multiple times - /* istanbul ignore else */ - // - Difficult to check this scenario effects as it is only a performance - // optimization that does not change correctness - if (lastOptimizedIdx_1 !== currOptimizedIdx) { - lastOptimizedIdx_1 = currOptimizedIdx; - addToMapOfArrays(result, currOptimizedIdx, patternIdxToConfig[idx]); - } - }); - } - else if (isRegExp(currTokType.PATTERN)) { - if (currTokType.PATTERN.unicode) { - canBeOptimized = false; - if (options.ensureOptimizations) { - PRINT_ERROR("" + failedOptimizationPrefixMsg + - ("\tUnable to analyze < " + currTokType.PATTERN.toString() + " > pattern.\n") + - "\tThe regexp unicode flag is not currently supported by the regexp-to-ast library.\n" + - "\tThis will disable the lexer's first char optimizations.\n" + - "\tFor details See: https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE"); - } - } - else { - var optimizedCodes = getOptimizedStartCodesIndices(currTokType.PATTERN, options.ensureOptimizations); - /* istanbul ignore if */ - // start code will only be empty given an empty regExp or failure of regexp-to-ast library - // the first should be a different validation and the second cannot be tested. - if (isEmpty(optimizedCodes)) { - // we cannot understand what codes may start possible matches - // The optimization correctness requires knowing start codes for ALL patterns. - // Not actually sure this is an error, no debug message - canBeOptimized = false; - } - forEach(optimizedCodes, function (code) { - addToMapOfArrays(result, code, patternIdxToConfig[idx]); - }); - } - } - else { - if (options.ensureOptimizations) { - PRINT_ERROR("" + failedOptimizationPrefixMsg + - ("\tTokenType: <" + currTokType.name + "> is using a custom token pattern without providing <start_chars_hint> parameter.\n") + - "\tThis will disable the lexer's first char optimizations.\n" + - "\tFor details See: https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE"); - } - canBeOptimized = false; - } - return result; - }, []); - }); - } - tracer("ArrayPacking", function () { - charCodeToPatternIdxToConfig = packArray(charCodeToPatternIdxToConfig); - }); - return { - emptyGroups: emptyGroups, - patternIdxToConfig: patternIdxToConfig, - charCodeToPatternIdxToConfig: charCodeToPatternIdxToConfig, - hasCustom: hasCustom, - canBeOptimized: canBeOptimized - }; -} -function validatePatterns(tokenTypes, validModesNames) { - var errors = []; - var missingResult = findMissingPatterns(tokenTypes); - errors = errors.concat(missingResult.errors); - var invalidResult = findInvalidPatterns(missingResult.valid); - var validTokenTypes = invalidResult.valid; - errors = errors.concat(invalidResult.errors); - errors = errors.concat(validateRegExpPattern(validTokenTypes)); - errors = errors.concat(findInvalidGroupType(validTokenTypes)); - errors = errors.concat(findModesThatDoNotExist(validTokenTypes, validModesNames)); - errors = errors.concat(findUnreachablePatterns(validTokenTypes)); - return errors; -} -function validateRegExpPattern(tokenTypes) { - var errors = []; - var withRegExpPatterns = filter(tokenTypes, function (currTokType) { - return isRegExp(currTokType[PATTERN]); - }); - errors = errors.concat(findEndOfInputAnchor(withRegExpPatterns)); - errors = errors.concat(findStartOfInputAnchor(withRegExpPatterns)); - errors = errors.concat(findUnsupportedFlags(withRegExpPatterns)); - errors = errors.concat(findDuplicatePatterns(withRegExpPatterns)); - errors = errors.concat(findEmptyMatchRegExps(withRegExpPatterns)); - return errors; -} -function findMissingPatterns(tokenTypes) { - var tokenTypesWithMissingPattern = filter(tokenTypes, function (currType) { - return !has(currType, PATTERN); - }); - var errors = map(tokenTypesWithMissingPattern, function (currType) { - return { - message: "Token Type: ->" + - currType.name + - "<- missing static 'PATTERN' property", - type: LexerDefinitionErrorType.MISSING_PATTERN, - tokenTypes: [currType] - }; - }); - var valid = difference(tokenTypes, tokenTypesWithMissingPattern); - return { errors: errors, valid: valid }; -} -function findInvalidPatterns(tokenTypes) { - var tokenTypesWithInvalidPattern = filter(tokenTypes, function (currType) { - var pattern = currType[PATTERN]; - return (!isRegExp(pattern) && - !isFunction(pattern) && - !has(pattern, "exec") && - !isString(pattern)); - }); - var errors = map(tokenTypesWithInvalidPattern, function (currType) { - return { - message: "Token Type: ->" + - currType.name + - "<- static 'PATTERN' can only be a RegExp, a" + - " Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.", - type: LexerDefinitionErrorType.INVALID_PATTERN, - tokenTypes: [currType] - }; - }); - var valid = difference(tokenTypes, tokenTypesWithInvalidPattern); - return { errors: errors, valid: valid }; -} -var end_of_input = /[^\\][\$]/; -function findEndOfInputAnchor(tokenTypes) { - var EndAnchorFinder = /** @class */ (function (_super) { - __extends$9(EndAnchorFinder, _super); - function EndAnchorFinder() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.found = false; - return _this; - } - EndAnchorFinder.prototype.visitEndAnchor = function (node) { - this.found = true; - }; - return EndAnchorFinder; - }(regexpToAst.exports.BaseRegExpVisitor)); - var invalidRegex = filter(tokenTypes, function (currType) { - var pattern = currType[PATTERN]; - try { - var regexpAst = getRegExpAst(pattern); - var endAnchorVisitor = new EndAnchorFinder(); - endAnchorVisitor.visit(regexpAst); - return endAnchorVisitor.found; - } - catch (e) { - // old behavior in case of runtime exceptions with regexp-to-ast. - /* istanbul ignore next - cannot ensure an error in regexp-to-ast*/ - return end_of_input.test(pattern.source); - } - }); - var errors = map(invalidRegex, function (currType) { - return { - message: "Unexpected RegExp Anchor Error:\n" + - "\tToken Type: ->" + - currType.name + - "<- static 'PATTERN' cannot contain end of input anchor '$'\n" + - "\tSee sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#ANCHORS" + - "\tfor details.", - type: LexerDefinitionErrorType.EOI_ANCHOR_FOUND, - tokenTypes: [currType] - }; - }); - return errors; -} -function findEmptyMatchRegExps(tokenTypes) { - var matchesEmptyString = filter(tokenTypes, function (currType) { - var pattern = currType[PATTERN]; - return pattern.test(""); - }); - var errors = map(matchesEmptyString, function (currType) { - return { - message: "Token Type: ->" + - currType.name + - "<- static 'PATTERN' must not match an empty string", - type: LexerDefinitionErrorType.EMPTY_MATCH_PATTERN, - tokenTypes: [currType] - }; - }); - return errors; -} -var start_of_input = /[^\\[][\^]|^\^/; -function findStartOfInputAnchor(tokenTypes) { - var StartAnchorFinder = /** @class */ (function (_super) { - __extends$9(StartAnchorFinder, _super); - function StartAnchorFinder() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.found = false; - return _this; - } - StartAnchorFinder.prototype.visitStartAnchor = function (node) { - this.found = true; - }; - return StartAnchorFinder; - }(regexpToAst.exports.BaseRegExpVisitor)); - var invalidRegex = filter(tokenTypes, function (currType) { - var pattern = currType[PATTERN]; - try { - var regexpAst = getRegExpAst(pattern); - var startAnchorVisitor = new StartAnchorFinder(); - startAnchorVisitor.visit(regexpAst); - return startAnchorVisitor.found; - } - catch (e) { - // old behavior in case of runtime exceptions with regexp-to-ast. - /* istanbul ignore next - cannot ensure an error in regexp-to-ast*/ - return start_of_input.test(pattern.source); - } - }); - var errors = map(invalidRegex, function (currType) { - return { - message: "Unexpected RegExp Anchor Error:\n" + - "\tToken Type: ->" + - currType.name + - "<- static 'PATTERN' cannot contain start of input anchor '^'\n" + - "\tSee https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#ANCHORS" + - "\tfor details.", - type: LexerDefinitionErrorType.SOI_ANCHOR_FOUND, - tokenTypes: [currType] - }; - }); - return errors; -} -function findUnsupportedFlags(tokenTypes) { - var invalidFlags = filter(tokenTypes, function (currType) { - var pattern = currType[PATTERN]; - return pattern instanceof RegExp && (pattern.multiline || pattern.global); - }); - var errors = map(invalidFlags, function (currType) { - return { - message: "Token Type: ->" + - currType.name + - "<- static 'PATTERN' may NOT contain global('g') or multiline('m')", - type: LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND, - tokenTypes: [currType] - }; - }); - return errors; -} -// This can only test for identical duplicate RegExps, not semantically equivalent ones. -function findDuplicatePatterns(tokenTypes) { - var found = []; - var identicalPatterns = map(tokenTypes, function (outerType) { - return reduce(tokenTypes, function (result, innerType) { - if (outerType.PATTERN.source === innerType.PATTERN.source && - !contains(found, innerType) && - innerType.PATTERN !== Lexer$1.NA) { - // this avoids duplicates in the result, each Token Type may only appear in one "set" - // in essence we are creating Equivalence classes on equality relation. - found.push(innerType); - result.push(innerType); - return result; - } - return result; - }, []); - }); - identicalPatterns = compact(identicalPatterns); - var duplicatePatterns = filter(identicalPatterns, function (currIdenticalSet) { - return currIdenticalSet.length > 1; - }); - var errors = map(duplicatePatterns, function (setOfIdentical) { - var tokenTypeNames = map(setOfIdentical, function (currType) { - return currType.name; - }); - var dupPatternSrc = first$1(setOfIdentical).PATTERN; - return { - message: "The same RegExp pattern ->" + dupPatternSrc + "<-" + - ("has been used in all of the following Token Types: " + tokenTypeNames.join(", ") + " <-"), - type: LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND, - tokenTypes: setOfIdentical - }; - }); - return errors; -} -function findInvalidGroupType(tokenTypes) { - var invalidTypes = filter(tokenTypes, function (clazz) { - if (!has(clazz, "GROUP")) { - return false; - } - var group = clazz.GROUP; - return group !== Lexer$1.SKIPPED && group !== Lexer$1.NA && !isString(group); - }); - var errors = map(invalidTypes, function (currType) { - return { - message: "Token Type: ->" + - currType.name + - "<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String", - type: LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND, - tokenTypes: [currType] - }; - }); - return errors; -} -function findModesThatDoNotExist(tokenTypes, validModes) { - var invalidModes = filter(tokenTypes, function (clazz) { - return (clazz.PUSH_MODE !== undefined && !contains(validModes, clazz.PUSH_MODE)); - }); - var errors = map(invalidModes, function (tokType) { - var msg = "Token Type: ->" + tokType.name + "<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->" + tokType.PUSH_MODE + "<-" + - "which does not exist"; - return { - message: msg, - type: LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST, - tokenTypes: [tokType] - }; - }); - return errors; -} -function findUnreachablePatterns(tokenTypes) { - var errors = []; - var canBeTested = reduce(tokenTypes, function (result, tokType, idx) { - var pattern = tokType.PATTERN; - if (pattern === Lexer$1.NA) { - return result; - } - // a more comprehensive validation for all forms of regExps would require - // deeper regExp analysis capabilities - if (isString(pattern)) { - result.push({ str: pattern, idx: idx, tokenType: tokType }); - } - else if (isRegExp(pattern) && noMetaChar(pattern)) { - result.push({ str: pattern.source, idx: idx, tokenType: tokType }); - } - return result; - }, []); - forEach(tokenTypes, function (tokType, testIdx) { - forEach(canBeTested, function (_a) { - var str = _a.str, idx = _a.idx, tokenType = _a.tokenType; - if (testIdx < idx && testTokenType(str, tokType.PATTERN)) { - var msg = "Token: ->" + tokenType.name + "<- can never be matched.\n" + - ("Because it appears AFTER the Token Type ->" + tokType.name + "<-") + - "in the lexer's definition.\n" + - "See https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#UNREACHABLE"; - errors.push({ - message: msg, - type: LexerDefinitionErrorType.UNREACHABLE_PATTERN, - tokenTypes: [tokType, tokenType] - }); - } - }); - }); - return errors; -} -function testTokenType(str, pattern) { - /* istanbul ignore else */ - if (isRegExp(pattern)) { - var regExpArray = pattern.exec(str); - return regExpArray !== null && regExpArray.index === 0; - } - else if (isFunction(pattern)) { - // maintain the API of custom patterns - return pattern(str, 0, [], {}); - } - else if (has(pattern, "exec")) { - // maintain the API of custom patterns - return pattern.exec(str, 0, [], {}); - } - else if (typeof pattern === "string") { - return pattern === str; - } - else { - throw Error("non exhaustive match"); - } -} -function noMetaChar(regExp) { - //https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp - var metaChars = [ - ".", - "\\", - "[", - "]", - "|", - "^", - "$", - "(", - ")", - "?", - "*", - "+", - "{" - ]; - return (find(metaChars, function (char) { return regExp.source.indexOf(char) !== -1; }) === undefined); -} -function addStartOfInput(pattern) { - var flags = pattern.ignoreCase ? "i" : ""; - // always wrapping in a none capturing group preceded by '^' to make sure matching can only work on start of input. - // duplicate/redundant start of input markers have no meaning (/^^^^A/ === /^A/) - return new RegExp("^(?:" + pattern.source + ")", flags); -} -function addStickyFlag(pattern) { - var flags = pattern.ignoreCase ? "iy" : "y"; - // always wrapping in a none capturing group preceded by '^' to make sure matching can only work on start of input. - // duplicate/redundant start of input markers have no meaning (/^^^^A/ === /^A/) - return new RegExp("" + pattern.source, flags); -} -function performRuntimeChecks(lexerDefinition, trackLines, lineTerminatorCharacters) { - var errors = []; - // some run time checks to help the end users. - if (!has(lexerDefinition, DEFAULT_MODE)) { - errors.push({ - message: "A MultiMode Lexer cannot be initialized without a <" + - DEFAULT_MODE + - "> property in its definition\n", - type: LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE - }); - } - if (!has(lexerDefinition, MODES)) { - errors.push({ - message: "A MultiMode Lexer cannot be initialized without a <" + - MODES + - "> property in its definition\n", - type: LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY - }); - } - if (has(lexerDefinition, MODES) && - has(lexerDefinition, DEFAULT_MODE) && - !has(lexerDefinition.modes, lexerDefinition.defaultMode)) { - errors.push({ - message: "A MultiMode Lexer cannot be initialized with a " + DEFAULT_MODE + ": <" + lexerDefinition.defaultMode + ">" + - "which does not exist\n", - type: LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST - }); - } - if (has(lexerDefinition, MODES)) { - forEach(lexerDefinition.modes, function (currModeValue, currModeName) { - forEach(currModeValue, function (currTokType, currIdx) { - if (isUndefined(currTokType)) { - errors.push({ - message: "A Lexer cannot be initialized using an undefined Token Type. Mode:" + - ("<" + currModeName + "> at index: <" + currIdx + ">\n"), - type: LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED - }); - } - }); - }); - } - return errors; -} -function performWarningRuntimeChecks(lexerDefinition, trackLines, lineTerminatorCharacters) { - var warnings = []; - var hasAnyLineBreak = false; - var allTokenTypes = compact(flatten(mapValues(lexerDefinition.modes, function (tokTypes) { return tokTypes; }))); - var concreteTokenTypes = reject(allTokenTypes, function (currType) { return currType[PATTERN] === Lexer$1.NA; }); - var terminatorCharCodes = getCharCodes(lineTerminatorCharacters); - if (trackLines) { - forEach(concreteTokenTypes, function (tokType) { - var currIssue = checkLineBreaksIssues(tokType, terminatorCharCodes); - if (currIssue !== false) { - var message = buildLineBreakIssueMessage(tokType, currIssue); - var warningDescriptor = { - message: message, - type: currIssue.issue, - tokenType: tokType - }; - warnings.push(warningDescriptor); - } - else { - // we don't want to attempt to scan if the user explicitly specified the line_breaks option. - if (has(tokType, "LINE_BREAKS")) { - if (tokType.LINE_BREAKS === true) { - hasAnyLineBreak = true; - } - } - else { - if (canMatchCharCode(terminatorCharCodes, tokType.PATTERN)) { - hasAnyLineBreak = true; - } - } - } - }); - } - if (trackLines && !hasAnyLineBreak) { - warnings.push({ - message: "Warning: No LINE_BREAKS Found.\n" + - "\tThis Lexer has been defined to track line and column information,\n" + - "\tBut none of the Token Types can be identified as matching a line terminator.\n" + - "\tSee https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#LINE_BREAKS \n" + - "\tfor details.", - type: LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS - }); - } - return warnings; -} -function cloneEmptyGroups(emptyGroups) { - var clonedResult = {}; - var groupKeys = keys(emptyGroups); - forEach(groupKeys, function (currKey) { - var currGroupValue = emptyGroups[currKey]; - /* istanbul ignore else */ - if (isArray(currGroupValue)) { - clonedResult[currKey] = []; - } - else { - throw Error("non exhaustive match"); - } - }); - return clonedResult; -} -// TODO: refactor to avoid duplication -function isCustomPattern(tokenType) { - var pattern = tokenType.PATTERN; - /* istanbul ignore else */ - if (isRegExp(pattern)) { - return false; - } - else if (isFunction(pattern)) { - // CustomPatternMatcherFunc - custom patterns do not require any transformations, only wrapping in a RegExp Like object - return true; - } - else if (has(pattern, "exec")) { - // ICustomPattern - return true; - } - else if (isString(pattern)) { - return false; - } - else { - throw Error("non exhaustive match"); - } -} -function isShortPattern(pattern) { - if (isString(pattern) && pattern.length === 1) { - return pattern.charCodeAt(0); - } - else { - return false; - } -} -/** - * Faster than using a RegExp for default newline detection during lexing. - */ -var LineTerminatorOptimizedTester = { - // implements /\n|\r\n?/g.test - test: function (text) { - var len = text.length; - for (var i = this.lastIndex; i < len; i++) { - var c = text.charCodeAt(i); - if (c === 10) { - this.lastIndex = i + 1; - return true; - } - else if (c === 13) { - if (text.charCodeAt(i + 1) === 10) { - this.lastIndex = i + 2; - } - else { - this.lastIndex = i + 1; - } - return true; - } - } - return false; - }, - lastIndex: 0 -}; -function checkLineBreaksIssues(tokType, lineTerminatorCharCodes) { - if (has(tokType, "LINE_BREAKS")) { - // if the user explicitly declared the line_breaks option we will respect their choice - // and assume it is correct. - return false; - } - else { - /* istanbul ignore else */ - if (isRegExp(tokType.PATTERN)) { - try { - canMatchCharCode(lineTerminatorCharCodes, tokType.PATTERN); - } - catch (e) { - /* istanbul ignore next - to test this we would have to mock <canMatchCharCode> to throw an error */ - return { - issue: LexerDefinitionErrorType.IDENTIFY_TERMINATOR, - errMsg: e.message - }; - } - return false; - } - else if (isString(tokType.PATTERN)) { - // string literal patterns can always be analyzed to detect line terminator usage - return false; - } - else if (isCustomPattern(tokType)) { - // custom token types - return { issue: LexerDefinitionErrorType.CUSTOM_LINE_BREAK }; - } - else { - throw Error("non exhaustive match"); - } - } -} -function buildLineBreakIssueMessage(tokType, details) { - /* istanbul ignore else */ - if (details.issue === LexerDefinitionErrorType.IDENTIFY_TERMINATOR) { - return ("Warning: unable to identify line terminator usage in pattern.\n" + - ("\tThe problem is in the <" + tokType.name + "> Token Type\n") + - ("\t Root cause: " + details.errMsg + ".\n") + - "\tFor details See: https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR"); - } - else if (details.issue === LexerDefinitionErrorType.CUSTOM_LINE_BREAK) { - return ("Warning: A Custom Token Pattern should specify the <line_breaks> option.\n" + - ("\tThe problem is in the <" + tokType.name + "> Token Type\n") + - "\tFor details See: https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK"); - } - else { - throw Error("non exhaustive match"); - } -} -function getCharCodes(charsOrCodes) { - var charCodes = map(charsOrCodes, function (numOrString) { - if (isString(numOrString) && numOrString.length > 0) { - return numOrString.charCodeAt(0); - } - else { - return numOrString; - } - }); - return charCodes; -} -function addToMapOfArrays(map, key, value) { - if (map[key] === undefined) { - map[key] = [value]; - } - else { - map[key].push(value); - } -} -var minOptimizationVal = 256; -/** - * We ae mapping charCode above ASCI (256) into buckets each in the size of 256. - * This is because ASCI are the most common start chars so each one of those will get its own - * possible token configs vector. - * - * Tokens starting with charCodes "above" ASCI are uncommon, so we can "afford" - * to place these into buckets of possible token configs, What we gain from - * this is avoiding the case of creating an optimization 'charCodeToPatternIdxToConfig' - * which would contain 10,000+ arrays of small size (e.g unicode Identifiers scenario). - * Our 'charCodeToPatternIdxToConfig' max size will now be: - * 256 + (2^16 / 2^8) - 1 === 511 - * - * note the hack for fast division integer part extraction - * See: https://stackoverflow.com/a/4228528 - */ -function charCodeToOptimizedIndex(charCode) { - return charCode < minOptimizationVal - ? charCode - : charCodeToOptimizedIdxMap[charCode]; -} -/** - * This is a compromise between cold start / hot running performance - * Creating this array takes ~3ms on a modern machine, - * But if we perform the computation at runtime as needed the CSS Lexer benchmark - * performance degrades by ~10% - * - * TODO: Perhaps it should be lazy initialized only if a charCode > 255 is used. - */ -var charCodeToOptimizedIdxMap = []; -function initCharCodeToOptimizedIndexMap() { - if (isEmpty(charCodeToOptimizedIdxMap)) { - charCodeToOptimizedIdxMap = new Array(65536); - for (var i = 0; i < 65536; i++) { - /* tslint:disable */ - charCodeToOptimizedIdxMap[i] = i > 255 ? 255 + ~~(i / 255) : i; - /* tslint:enable */ - } - } -} - -function tokenStructuredMatcher(tokInstance, tokConstructor) { - var instanceType = tokInstance.tokenTypeIdx; - if (instanceType === tokConstructor.tokenTypeIdx) { - return true; - } - else { - return (tokConstructor.isParent === true && - tokConstructor.categoryMatchesMap[instanceType] === true); - } -} -// Optimized tokenMatcher in case our grammar does not use token categories -// Being so tiny it is much more likely to be in-lined and this avoid the function call overhead -function tokenStructuredMatcherNoCategories(token, tokType) { - return token.tokenTypeIdx === tokType.tokenTypeIdx; -} -var tokenShortNameIdx = 1; -var tokenIdxToClass = {}; -function augmentTokenTypes(tokenTypes) { - // collect the parent Token Types as well. - var tokenTypesAndParents = expandCategories(tokenTypes); - // add required tokenType and categoryMatches properties - assignTokenDefaultProps(tokenTypesAndParents); - // fill up the categoryMatches - assignCategoriesMapProp(tokenTypesAndParents); - assignCategoriesTokensProp(tokenTypesAndParents); - forEach(tokenTypesAndParents, function (tokType) { - tokType.isParent = tokType.categoryMatches.length > 0; - }); -} -function expandCategories(tokenTypes) { - var result = cloneArr(tokenTypes); - var categories = tokenTypes; - var searching = true; - while (searching) { - categories = compact(flatten(map(categories, function (currTokType) { return currTokType.CATEGORIES; }))); - var newCategories = difference(categories, result); - result = result.concat(newCategories); - if (isEmpty(newCategories)) { - searching = false; - } - else { - categories = newCategories; - } - } - return result; -} -function assignTokenDefaultProps(tokenTypes) { - forEach(tokenTypes, function (currTokType) { - if (!hasShortKeyProperty(currTokType)) { - tokenIdxToClass[tokenShortNameIdx] = currTokType; - currTokType.tokenTypeIdx = tokenShortNameIdx++; - } - // CATEGORIES? : TokenType | TokenType[] - if (hasCategoriesProperty(currTokType) && - !isArray(currTokType.CATEGORIES) - // && - // !isUndefined(currTokType.CATEGORIES.PATTERN) - ) { - currTokType.CATEGORIES = [currTokType.CATEGORIES]; - } - if (!hasCategoriesProperty(currTokType)) { - currTokType.CATEGORIES = []; - } - if (!hasExtendingTokensTypesProperty(currTokType)) { - currTokType.categoryMatches = []; - } - if (!hasExtendingTokensTypesMapProperty(currTokType)) { - currTokType.categoryMatchesMap = {}; - } - }); -} -function assignCategoriesTokensProp(tokenTypes) { - forEach(tokenTypes, function (currTokType) { - // avoid duplications - currTokType.categoryMatches = []; - forEach(currTokType.categoryMatchesMap, function (val, key) { - currTokType.categoryMatches.push(tokenIdxToClass[key].tokenTypeIdx); - }); - }); -} -function assignCategoriesMapProp(tokenTypes) { - forEach(tokenTypes, function (currTokType) { - singleAssignCategoriesToksMap([], currTokType); - }); -} -function singleAssignCategoriesToksMap(path, nextNode) { - forEach(path, function (pathNode) { - nextNode.categoryMatchesMap[pathNode.tokenTypeIdx] = true; - }); - forEach(nextNode.CATEGORIES, function (nextCategory) { - var newPath = path.concat(nextNode); - // avoids infinite loops due to cyclic categories. - if (!contains(newPath, nextCategory)) { - singleAssignCategoriesToksMap(newPath, nextCategory); - } - }); -} -function hasShortKeyProperty(tokType) { - return has(tokType, "tokenTypeIdx"); -} -function hasCategoriesProperty(tokType) { - return has(tokType, "CATEGORIES"); -} -function hasExtendingTokensTypesProperty(tokType) { - return has(tokType, "categoryMatches"); -} -function hasExtendingTokensTypesMapProperty(tokType) { - return has(tokType, "categoryMatchesMap"); -} -function isTokenType(tokType) { - return has(tokType, "tokenTypeIdx"); -} - -var defaultLexerErrorProvider = { - buildUnableToPopLexerModeMessage: function (token) { - return "Unable to pop Lexer Mode after encountering Token ->" + token.image + "<- The Mode Stack is empty"; - }, - buildUnexpectedCharactersMessage: function (fullText, startOffset, length, line, column) { - return ("unexpected character: ->" + fullText.charAt(startOffset) + "<- at offset: " + startOffset + "," + (" skipped " + length + " characters.")); - } -}; - -var LexerDefinitionErrorType; -(function (LexerDefinitionErrorType) { - LexerDefinitionErrorType[LexerDefinitionErrorType["MISSING_PATTERN"] = 0] = "MISSING_PATTERN"; - LexerDefinitionErrorType[LexerDefinitionErrorType["INVALID_PATTERN"] = 1] = "INVALID_PATTERN"; - LexerDefinitionErrorType[LexerDefinitionErrorType["EOI_ANCHOR_FOUND"] = 2] = "EOI_ANCHOR_FOUND"; - LexerDefinitionErrorType[LexerDefinitionErrorType["UNSUPPORTED_FLAGS_FOUND"] = 3] = "UNSUPPORTED_FLAGS_FOUND"; - LexerDefinitionErrorType[LexerDefinitionErrorType["DUPLICATE_PATTERNS_FOUND"] = 4] = "DUPLICATE_PATTERNS_FOUND"; - LexerDefinitionErrorType[LexerDefinitionErrorType["INVALID_GROUP_TYPE_FOUND"] = 5] = "INVALID_GROUP_TYPE_FOUND"; - LexerDefinitionErrorType[LexerDefinitionErrorType["PUSH_MODE_DOES_NOT_EXIST"] = 6] = "PUSH_MODE_DOES_NOT_EXIST"; - LexerDefinitionErrorType[LexerDefinitionErrorType["MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE"] = 7] = "MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE"; - LexerDefinitionErrorType[LexerDefinitionErrorType["MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY"] = 8] = "MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY"; - LexerDefinitionErrorType[LexerDefinitionErrorType["MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST"] = 9] = "MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST"; - LexerDefinitionErrorType[LexerDefinitionErrorType["LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED"] = 10] = "LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED"; - LexerDefinitionErrorType[LexerDefinitionErrorType["SOI_ANCHOR_FOUND"] = 11] = "SOI_ANCHOR_FOUND"; - LexerDefinitionErrorType[LexerDefinitionErrorType["EMPTY_MATCH_PATTERN"] = 12] = "EMPTY_MATCH_PATTERN"; - LexerDefinitionErrorType[LexerDefinitionErrorType["NO_LINE_BREAKS_FLAGS"] = 13] = "NO_LINE_BREAKS_FLAGS"; - LexerDefinitionErrorType[LexerDefinitionErrorType["UNREACHABLE_PATTERN"] = 14] = "UNREACHABLE_PATTERN"; - LexerDefinitionErrorType[LexerDefinitionErrorType["IDENTIFY_TERMINATOR"] = 15] = "IDENTIFY_TERMINATOR"; - LexerDefinitionErrorType[LexerDefinitionErrorType["CUSTOM_LINE_BREAK"] = 16] = "CUSTOM_LINE_BREAK"; -})(LexerDefinitionErrorType || (LexerDefinitionErrorType = {})); -var DEFAULT_LEXER_CONFIG = { - deferDefinitionErrorsHandling: false, - positionTracking: "full", - lineTerminatorsPattern: /\n|\r\n?/g, - lineTerminatorCharacters: ["\n", "\r"], - ensureOptimizations: false, - safeMode: false, - errorMessageProvider: defaultLexerErrorProvider, - traceInitPerf: false, - skipValidations: false -}; -Object.freeze(DEFAULT_LEXER_CONFIG); -var Lexer$1 = /** @class */ (function () { - function Lexer(lexerDefinition, config) { - var _this = this; - if (config === void 0) { config = DEFAULT_LEXER_CONFIG; } - this.lexerDefinition = lexerDefinition; - this.lexerDefinitionErrors = []; - this.lexerDefinitionWarning = []; - this.patternIdxToConfig = {}; - this.charCodeToPatternIdxToConfig = {}; - this.modes = []; - this.emptyGroups = {}; - this.config = undefined; - this.trackStartLines = true; - this.trackEndLines = true; - this.hasCustom = false; - this.canModeBeOptimized = {}; - if (typeof config === "boolean") { - throw Error("The second argument to the Lexer constructor is now an ILexerConfig Object.\n" + - "a boolean 2nd argument is no longer supported"); - } - // todo: defaults func? - this.config = merge(DEFAULT_LEXER_CONFIG, config); - var traceInitVal = this.config.traceInitPerf; - if (traceInitVal === true) { - this.traceInitMaxIdent = Infinity; - this.traceInitPerf = true; - } - else if (typeof traceInitVal === "number") { - this.traceInitMaxIdent = traceInitVal; - this.traceInitPerf = true; - } - this.traceInitIndent = -1; - this.TRACE_INIT("Lexer Constructor", function () { - var actualDefinition; - var hasOnlySingleMode = true; - _this.TRACE_INIT("Lexer Config handling", function () { - if (_this.config.lineTerminatorsPattern === - DEFAULT_LEXER_CONFIG.lineTerminatorsPattern) { - // optimized built-in implementation for the defaults definition of lineTerminators - _this.config.lineTerminatorsPattern = LineTerminatorOptimizedTester; - } - else { - if (_this.config.lineTerminatorCharacters === - DEFAULT_LEXER_CONFIG.lineTerminatorCharacters) { - throw Error("Error: Missing <lineTerminatorCharacters> property on the Lexer config.\n" + - "\tFor details See: https://sap.github.io/chevrotain/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS"); - } - } - if (config.safeMode && config.ensureOptimizations) { - throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.'); - } - _this.trackStartLines = /full|onlyStart/i.test(_this.config.positionTracking); - _this.trackEndLines = /full/i.test(_this.config.positionTracking); - // Convert SingleModeLexerDefinition into a IMultiModeLexerDefinition. - if (isArray(lexerDefinition)) { - actualDefinition = { modes: {} }; - actualDefinition.modes[DEFAULT_MODE] = cloneArr(lexerDefinition); - actualDefinition[DEFAULT_MODE] = DEFAULT_MODE; - } - else { - // no conversion needed, input should already be a IMultiModeLexerDefinition - hasOnlySingleMode = false; - actualDefinition = cloneObj(lexerDefinition); - } - }); - if (_this.config.skipValidations === false) { - _this.TRACE_INIT("performRuntimeChecks", function () { - _this.lexerDefinitionErrors = _this.lexerDefinitionErrors.concat(performRuntimeChecks(actualDefinition, _this.trackStartLines, _this.config.lineTerminatorCharacters)); - }); - _this.TRACE_INIT("performWarningRuntimeChecks", function () { - _this.lexerDefinitionWarning = _this.lexerDefinitionWarning.concat(performWarningRuntimeChecks(actualDefinition, _this.trackStartLines, _this.config.lineTerminatorCharacters)); - }); - } - // for extra robustness to avoid throwing an none informative error message - actualDefinition.modes = actualDefinition.modes - ? actualDefinition.modes - : {}; - // an error of undefined TokenTypes will be detected in "performRuntimeChecks" above. - // this transformation is to increase robustness in the case of partially invalid lexer definition. - forEach(actualDefinition.modes, function (currModeValue, currModeName) { - actualDefinition.modes[currModeName] = reject(currModeValue, function (currTokType) { return isUndefined(currTokType); }); - }); - var allModeNames = keys(actualDefinition.modes); - forEach(actualDefinition.modes, function (currModDef, currModName) { - _this.TRACE_INIT("Mode: <" + currModName + "> processing", function () { - _this.modes.push(currModName); - if (_this.config.skipValidations === false) { - _this.TRACE_INIT("validatePatterns", function () { - _this.lexerDefinitionErrors = _this.lexerDefinitionErrors.concat(validatePatterns(currModDef, allModeNames)); - }); - } - // If definition errors were encountered, the analysis phase may fail unexpectedly/ - // Considering a lexer with definition errors may never be used, there is no point - // to performing the analysis anyhow... - if (isEmpty(_this.lexerDefinitionErrors)) { - augmentTokenTypes(currModDef); - var currAnalyzeResult_1; - _this.TRACE_INIT("analyzeTokenTypes", function () { - currAnalyzeResult_1 = analyzeTokenTypes(currModDef, { - lineTerminatorCharacters: _this.config - .lineTerminatorCharacters, - positionTracking: config.positionTracking, - ensureOptimizations: config.ensureOptimizations, - safeMode: config.safeMode, - tracer: _this.TRACE_INIT.bind(_this) - }); - }); - _this.patternIdxToConfig[currModName] = - currAnalyzeResult_1.patternIdxToConfig; - _this.charCodeToPatternIdxToConfig[currModName] = - currAnalyzeResult_1.charCodeToPatternIdxToConfig; - _this.emptyGroups = merge(_this.emptyGroups, currAnalyzeResult_1.emptyGroups); - _this.hasCustom = currAnalyzeResult_1.hasCustom || _this.hasCustom; - _this.canModeBeOptimized[currModName] = - currAnalyzeResult_1.canBeOptimized; - } - }); - }); - _this.defaultMode = actualDefinition.defaultMode; - if (!isEmpty(_this.lexerDefinitionErrors) && - !_this.config.deferDefinitionErrorsHandling) { - var allErrMessages = map(_this.lexerDefinitionErrors, function (error) { - return error.message; - }); - var allErrMessagesString = allErrMessages.join("-----------------------\n"); - throw new Error("Errors detected in definition of Lexer:\n" + allErrMessagesString); - } - // Only print warning if there are no errors, This will avoid pl - forEach(_this.lexerDefinitionWarning, function (warningDescriptor) { - PRINT_WARNING(warningDescriptor.message); - }); - _this.TRACE_INIT("Choosing sub-methods implementations", function () { - // Choose the relevant internal implementations for this specific parser. - // These implementations should be in-lined by the JavaScript engine - // to provide optimal performance in each scenario. - if (SUPPORT_STICKY) { - _this.chopInput = IDENTITY; - _this.match = _this.matchWithTest; - } - else { - _this.updateLastIndex = NOOP; - _this.match = _this.matchWithExec; - } - if (hasOnlySingleMode) { - _this.handleModes = NOOP; - } - if (_this.trackStartLines === false) { - _this.computeNewColumn = IDENTITY; - } - if (_this.trackEndLines === false) { - _this.updateTokenEndLineColumnLocation = NOOP; - } - if (/full/i.test(_this.config.positionTracking)) { - _this.createTokenInstance = _this.createFullToken; - } - else if (/onlyStart/i.test(_this.config.positionTracking)) { - _this.createTokenInstance = _this.createStartOnlyToken; - } - else if (/onlyOffset/i.test(_this.config.positionTracking)) { - _this.createTokenInstance = _this.createOffsetOnlyToken; - } - else { - throw Error("Invalid <positionTracking> config option: \"" + _this.config.positionTracking + "\""); - } - if (_this.hasCustom) { - _this.addToken = _this.addTokenUsingPush; - _this.handlePayload = _this.handlePayloadWithCustom; - } - else { - _this.addToken = _this.addTokenUsingMemberAccess; - _this.handlePayload = _this.handlePayloadNoCustom; - } - }); - _this.TRACE_INIT("Failed Optimization Warnings", function () { - var unOptimizedModes = reduce(_this.canModeBeOptimized, function (cannotBeOptimized, canBeOptimized, modeName) { - if (canBeOptimized === false) { - cannotBeOptimized.push(modeName); - } - return cannotBeOptimized; - }, []); - if (config.ensureOptimizations && !isEmpty(unOptimizedModes)) { - throw Error("Lexer Modes: < " + unOptimizedModes.join(", ") + " > cannot be optimized.\n" + - '\t Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode.\n' + - "\t Or inspect the console log for details on how to resolve these issues."); - } - }); - _this.TRACE_INIT("clearRegExpParserCache", function () { - clearRegExpParserCache(); - }); - _this.TRACE_INIT("toFastProperties", function () { - toFastProperties(_this); - }); - }); - } - Lexer.prototype.tokenize = function (text, initialMode) { - if (initialMode === void 0) { initialMode = this.defaultMode; } - if (!isEmpty(this.lexerDefinitionErrors)) { - var allErrMessages = map(this.lexerDefinitionErrors, function (error) { - return error.message; - }); - var allErrMessagesString = allErrMessages.join("-----------------------\n"); - throw new Error("Unable to Tokenize because Errors detected in definition of Lexer:\n" + - allErrMessagesString); - } - var lexResult = this.tokenizeInternal(text, initialMode); - return lexResult; - }; - // There is quite a bit of duplication between this and "tokenizeInternalLazy" - // This is intentional due to performance considerations. - Lexer.prototype.tokenizeInternal = function (text, initialMode) { - var _this = this; - var i, j, matchAltImage, longerAltIdx, matchedImage, payload, altPayload, imageLength, group, tokType, newToken, errLength, msg, match; - var orgText = text; - var orgLength = orgText.length; - var offset = 0; - var matchedTokensIndex = 0; - // initializing the tokensArray to the "guessed" size. - // guessing too little will still reduce the number of array re-sizes on pushes. - // guessing too large (Tested by guessing x4 too large) may cost a bit more of memory - // but would still have a faster runtime by avoiding (All but one) array resizing. - var guessedNumberOfTokens = this.hasCustom - ? 0 // will break custom token pattern APIs the matchedTokens array will contain undefined elements. - : Math.floor(text.length / 10); - var matchedTokens = new Array(guessedNumberOfTokens); - var errors = []; - var line = this.trackStartLines ? 1 : undefined; - var column = this.trackStartLines ? 1 : undefined; - var groups = cloneEmptyGroups(this.emptyGroups); - var trackLines = this.trackStartLines; - var lineTerminatorPattern = this.config.lineTerminatorsPattern; - var currModePatternsLength = 0; - var patternIdxToConfig = []; - var currCharCodeToPatternIdxToConfig = []; - var modeStack = []; - var emptyArray = []; - Object.freeze(emptyArray); - var getPossiblePatterns = undefined; - function getPossiblePatternsSlow() { - return patternIdxToConfig; - } - function getPossiblePatternsOptimized(charCode) { - var optimizedCharIdx = charCodeToOptimizedIndex(charCode); - var possiblePatterns = currCharCodeToPatternIdxToConfig[optimizedCharIdx]; - if (possiblePatterns === undefined) { - return emptyArray; - } - else { - return possiblePatterns; - } - } - var pop_mode = function (popToken) { - // TODO: perhaps avoid this error in the edge case there is no more input? - if (modeStack.length === 1 && - // if we have both a POP_MODE and a PUSH_MODE this is in-fact a "transition" - // So no error should occur. - popToken.tokenType.PUSH_MODE === undefined) { - // if we try to pop the last mode there lexer will no longer have ANY mode. - // thus the pop is ignored, an error will be created and the lexer will continue parsing in the previous mode. - var msg_1 = _this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(popToken); - errors.push({ - offset: popToken.startOffset, - line: popToken.startLine !== undefined ? popToken.startLine : undefined, - column: popToken.startColumn !== undefined - ? popToken.startColumn - : undefined, - length: popToken.image.length, - message: msg_1 - }); - } - else { - modeStack.pop(); - var newMode = last(modeStack); - patternIdxToConfig = _this.patternIdxToConfig[newMode]; - currCharCodeToPatternIdxToConfig = _this.charCodeToPatternIdxToConfig[newMode]; - currModePatternsLength = patternIdxToConfig.length; - var modeCanBeOptimized = _this.canModeBeOptimized[newMode] && _this.config.safeMode === false; - if (currCharCodeToPatternIdxToConfig && modeCanBeOptimized) { - getPossiblePatterns = getPossiblePatternsOptimized; - } - else { - getPossiblePatterns = getPossiblePatternsSlow; - } - } - }; - function push_mode(newMode) { - modeStack.push(newMode); - currCharCodeToPatternIdxToConfig = this.charCodeToPatternIdxToConfig[newMode]; - patternIdxToConfig = this.patternIdxToConfig[newMode]; - currModePatternsLength = patternIdxToConfig.length; - currModePatternsLength = patternIdxToConfig.length; - var modeCanBeOptimized = this.canModeBeOptimized[newMode] && this.config.safeMode === false; - if (currCharCodeToPatternIdxToConfig && modeCanBeOptimized) { - getPossiblePatterns = getPossiblePatternsOptimized; - } - else { - getPossiblePatterns = getPossiblePatternsSlow; - } - } - // this pattern seems to avoid a V8 de-optimization, although that de-optimization does not - // seem to matter performance wise. - push_mode.call(this, initialMode); - var currConfig; - while (offset < orgLength) { - matchedImage = null; - var nextCharCode = orgText.charCodeAt(offset); - var chosenPatternIdxToConfig = getPossiblePatterns(nextCharCode); - var chosenPatternsLength = chosenPatternIdxToConfig.length; - for (i = 0; i < chosenPatternsLength; i++) { - currConfig = chosenPatternIdxToConfig[i]; - var currPattern = currConfig.pattern; - payload = null; - // manually in-lined because > 600 chars won't be in-lined in V8 - var singleCharCode = currConfig.short; - if (singleCharCode !== false) { - if (nextCharCode === singleCharCode) { - // single character string - matchedImage = currPattern; - } - } - else if (currConfig.isCustom === true) { - match = currPattern.exec(orgText, offset, matchedTokens, groups); - if (match !== null) { - matchedImage = match[0]; - if (match.payload !== undefined) { - payload = match.payload; - } - } - else { - matchedImage = null; - } - } - else { - this.updateLastIndex(currPattern, offset); - matchedImage = this.match(currPattern, text, offset); - } - if (matchedImage !== null) { - // even though this pattern matched we must try a another longer alternative. - // this can be used to prioritize keywords over identifiers - longerAltIdx = currConfig.longerAlt; - if (longerAltIdx !== undefined) { - // TODO: micro optimize, avoid extra prop access - // by saving/linking longerAlt on the original config? - var longerAltConfig = patternIdxToConfig[longerAltIdx]; - var longerAltPattern = longerAltConfig.pattern; - altPayload = null; - // single Char can never be a longer alt so no need to test it. - // manually in-lined because > 600 chars won't be in-lined in V8 - if (longerAltConfig.isCustom === true) { - match = longerAltPattern.exec(orgText, offset, matchedTokens, groups); - if (match !== null) { - matchAltImage = match[0]; - if (match.payload !== undefined) { - altPayload = match.payload; - } - } - else { - matchAltImage = null; - } - } - else { - this.updateLastIndex(longerAltPattern, offset); - matchAltImage = this.match(longerAltPattern, text, offset); - } - if (matchAltImage && matchAltImage.length > matchedImage.length) { - matchedImage = matchAltImage; - payload = altPayload; - currConfig = longerAltConfig; - } - } - break; - } - } - // successful match - if (matchedImage !== null) { - imageLength = matchedImage.length; - group = currConfig.group; - if (group !== undefined) { - tokType = currConfig.tokenTypeIdx; - // TODO: "offset + imageLength" and the new column may be computed twice in case of "full" location information inside - // createFullToken method - newToken = this.createTokenInstance(matchedImage, offset, tokType, currConfig.tokenType, line, column, imageLength); - this.handlePayload(newToken, payload); - // TODO: optimize NOOP in case there are no special groups? - if (group === false) { - matchedTokensIndex = this.addToken(matchedTokens, matchedTokensIndex, newToken); - } - else { - groups[group].push(newToken); - } - } - text = this.chopInput(text, imageLength); - offset = offset + imageLength; - // TODO: with newlines the column may be assigned twice - column = this.computeNewColumn(column, imageLength); - if (trackLines === true && currConfig.canLineTerminator === true) { - var numOfLTsInMatch = 0; - var foundTerminator = void 0; - var lastLTEndOffset = void 0; - lineTerminatorPattern.lastIndex = 0; - do { - foundTerminator = lineTerminatorPattern.test(matchedImage); - if (foundTerminator === true) { - lastLTEndOffset = lineTerminatorPattern.lastIndex - 1; - numOfLTsInMatch++; - } - } while (foundTerminator === true); - if (numOfLTsInMatch !== 0) { - line = line + numOfLTsInMatch; - column = imageLength - lastLTEndOffset; - this.updateTokenEndLineColumnLocation(newToken, group, lastLTEndOffset, numOfLTsInMatch, line, column, imageLength); - } - } - // will be NOOP if no modes present - this.handleModes(currConfig, pop_mode, push_mode, newToken); - } - else { - // error recovery, drop characters until we identify a valid token's start point - var errorStartOffset = offset; - var errorLine = line; - var errorColumn = column; - var foundResyncPoint = false; - while (!foundResyncPoint && offset < orgLength) { - // drop chars until we succeed in matching something - orgText.charCodeAt(offset); - // Identity Func (when sticky flag is enabled) - text = this.chopInput(text, 1); - offset++; - for (j = 0; j < currModePatternsLength; j++) { - var currConfig_1 = patternIdxToConfig[j]; - var currPattern = currConfig_1.pattern; - // manually in-lined because > 600 chars won't be in-lined in V8 - var singleCharCode = currConfig_1.short; - if (singleCharCode !== false) { - if (orgText.charCodeAt(offset) === singleCharCode) { - // single character string - foundResyncPoint = true; - } - } - else if (currConfig_1.isCustom === true) { - foundResyncPoint = - currPattern.exec(orgText, offset, matchedTokens, groups) !== - null; - } - else { - this.updateLastIndex(currPattern, offset); - foundResyncPoint = currPattern.exec(text) !== null; - } - if (foundResyncPoint === true) { - break; - } - } - } - errLength = offset - errorStartOffset; - // at this point we either re-synced or reached the end of the input text - msg = this.config.errorMessageProvider.buildUnexpectedCharactersMessage(orgText, errorStartOffset, errLength, errorLine, errorColumn); - errors.push({ - offset: errorStartOffset, - line: errorLine, - column: errorColumn, - length: errLength, - message: msg - }); - } - } - // if we do have custom patterns which push directly into the - // TODO: custom tokens should not push directly?? - if (!this.hasCustom) { - // if we guessed a too large size for the tokens array this will shrink it to the right size. - matchedTokens.length = matchedTokensIndex; - } - return { - tokens: matchedTokens, - groups: groups, - errors: errors - }; - }; - Lexer.prototype.handleModes = function (config, pop_mode, push_mode, newToken) { - if (config.pop === true) { - // need to save the PUSH_MODE property as if the mode is popped - // patternIdxToPopMode is updated to reflect the new mode after popping the stack - var pushMode = config.push; - pop_mode(newToken); - if (pushMode !== undefined) { - push_mode.call(this, pushMode); - } - } - else if (config.push !== undefined) { - push_mode.call(this, config.push); - } - }; - Lexer.prototype.chopInput = function (text, length) { - return text.substring(length); - }; - Lexer.prototype.updateLastIndex = function (regExp, newLastIndex) { - regExp.lastIndex = newLastIndex; - }; - // TODO: decrease this under 600 characters? inspect stripping comments option in TSC compiler - Lexer.prototype.updateTokenEndLineColumnLocation = function (newToken, group, lastLTIdx, numOfLTsInMatch, line, column, imageLength) { - var lastCharIsLT, fixForEndingInLT; - if (group !== undefined) { - // a none skipped multi line Token, need to update endLine/endColumn - lastCharIsLT = lastLTIdx === imageLength - 1; - fixForEndingInLT = lastCharIsLT ? -1 : 0; - if (!(numOfLTsInMatch === 1 && lastCharIsLT === true)) { - // if a token ends in a LT that last LT only affects the line numbering of following Tokens - newToken.endLine = line + fixForEndingInLT; - // the last LT in a token does not affect the endColumn either as the [columnStart ... columnEnd) - // inclusive to exclusive range. - newToken.endColumn = column - 1 + -fixForEndingInLT; - } - // else single LT in the last character of a token, no need to modify the endLine/EndColumn - } - }; - Lexer.prototype.computeNewColumn = function (oldColumn, imageLength) { - return oldColumn + imageLength; - }; - // Place holder, will be replaced by the correct variant according to the locationTracking option at runtime. - /* istanbul ignore next - place holder */ - Lexer.prototype.createTokenInstance = function () { - return null; - }; - Lexer.prototype.createOffsetOnlyToken = function (image, startOffset, tokenTypeIdx, tokenType) { - return { - image: image, - startOffset: startOffset, - tokenTypeIdx: tokenTypeIdx, - tokenType: tokenType - }; - }; - Lexer.prototype.createStartOnlyToken = function (image, startOffset, tokenTypeIdx, tokenType, startLine, startColumn) { - return { - image: image, - startOffset: startOffset, - startLine: startLine, - startColumn: startColumn, - tokenTypeIdx: tokenTypeIdx, - tokenType: tokenType - }; - }; - Lexer.prototype.createFullToken = function (image, startOffset, tokenTypeIdx, tokenType, startLine, startColumn, imageLength) { - return { - image: image, - startOffset: startOffset, - endOffset: startOffset + imageLength - 1, - startLine: startLine, - endLine: startLine, - startColumn: startColumn, - endColumn: startColumn + imageLength - 1, - tokenTypeIdx: tokenTypeIdx, - tokenType: tokenType - }; - }; - // Place holder, will be replaced by the correct variant according to the locationTracking option at runtime. - /* istanbul ignore next - place holder */ - Lexer.prototype.addToken = function (tokenVector, index, tokenToAdd) { - return 666; - }; - Lexer.prototype.addTokenUsingPush = function (tokenVector, index, tokenToAdd) { - tokenVector.push(tokenToAdd); - return index; - }; - Lexer.prototype.addTokenUsingMemberAccess = function (tokenVector, index, tokenToAdd) { - tokenVector[index] = tokenToAdd; - index++; - return index; - }; - // Place holder, will be replaced by the correct variant according to the hasCustom flag option at runtime. - /* istanbul ignore next - place holder */ - Lexer.prototype.handlePayload = function (token, payload) { }; - Lexer.prototype.handlePayloadNoCustom = function (token, payload) { }; - Lexer.prototype.handlePayloadWithCustom = function (token, payload) { - if (payload !== null) { - token.payload = payload; - } - }; - /* istanbul ignore next - place holder to be replaced with chosen alternative at runtime */ - Lexer.prototype.match = function (pattern, text, offset) { - return null; - }; - Lexer.prototype.matchWithTest = function (pattern, text, offset) { - var found = pattern.test(text); - if (found === true) { - return text.substring(offset, pattern.lastIndex); - } - return null; - }; - Lexer.prototype.matchWithExec = function (pattern, text) { - var regExpArray = pattern.exec(text); - return regExpArray !== null ? regExpArray[0] : regExpArray; - }; - // Duplicated from the parser's perf trace trait to allow future extraction - // of the lexer to a separate package. - Lexer.prototype.TRACE_INIT = function (phaseDesc, phaseImpl) { - // No need to optimize this using NOOP pattern because - // It is not called in a hot spot... - if (this.traceInitPerf === true) { - this.traceInitIndent++; - var indent = new Array(this.traceInitIndent + 1).join("\t"); - if (this.traceInitIndent < this.traceInitMaxIdent) { - console.log(indent + "--> <" + phaseDesc + ">"); - } - var _a = timer(phaseImpl), time = _a.time, value = _a.value; - /* istanbul ignore next - Difficult to reproduce specific performance behavior (>10ms) in tests */ - var traceMethod = time > 10 ? console.warn : console.log; - if (this.traceInitIndent < this.traceInitMaxIdent) { - traceMethod(indent + "<-- <" + phaseDesc + "> time: " + time + "ms"); - } - this.traceInitIndent--; - return value; - } - else { - return phaseImpl(); - } - }; - Lexer.SKIPPED = "This marks a skipped Token pattern, this means each token identified by it will" + - "be consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace."; - Lexer.NA = /NOT_APPLICABLE/; - return Lexer; -}()); - -function tokenLabel(tokType) { - if (hasTokenLabel(tokType)) { - return tokType.LABEL; - } - else { - return tokType.name; - } -} -function tokenName(tokType) { - return tokType.name; -} -function hasTokenLabel(obj) { - return isString(obj.LABEL) && obj.LABEL !== ""; -} -var PARENT = "parent"; -var CATEGORIES = "categories"; -var LABEL = "label"; -var GROUP = "group"; -var PUSH_MODE = "push_mode"; -var POP_MODE = "pop_mode"; -var LONGER_ALT = "longer_alt"; -var LINE_BREAKS = "line_breaks"; -var START_CHARS_HINT = "start_chars_hint"; -function createToken$1(config) { - return createTokenInternal(config); -} -function createTokenInternal(config) { - var pattern = config.pattern; - var tokenType = {}; - tokenType.name = config.name; - if (!isUndefined(pattern)) { - tokenType.PATTERN = pattern; - } - if (has(config, PARENT)) { - throw ("The parent property is no longer supported.\n" + - "See: https://github.com/SAP/chevrotain/issues/564#issuecomment-349062346 for details."); - } - if (has(config, CATEGORIES)) { - // casting to ANY as this will be fixed inside `augmentTokenTypes`` - tokenType.CATEGORIES = config[CATEGORIES]; - } - augmentTokenTypes([tokenType]); - if (has(config, LABEL)) { - tokenType.LABEL = config[LABEL]; - } - if (has(config, GROUP)) { - tokenType.GROUP = config[GROUP]; - } - if (has(config, POP_MODE)) { - tokenType.POP_MODE = config[POP_MODE]; - } - if (has(config, PUSH_MODE)) { - tokenType.PUSH_MODE = config[PUSH_MODE]; - } - if (has(config, LONGER_ALT)) { - tokenType.LONGER_ALT = config[LONGER_ALT]; - } - if (has(config, LINE_BREAKS)) { - tokenType.LINE_BREAKS = config[LINE_BREAKS]; - } - if (has(config, START_CHARS_HINT)) { - tokenType.START_CHARS_HINT = config[START_CHARS_HINT]; - } - return tokenType; -} -var EOF = createToken$1({ name: "EOF", pattern: Lexer$1.NA }); -augmentTokenTypes([EOF]); -function createTokenInstance(tokType, image, startOffset, endOffset, startLine, endLine, startColumn, endColumn) { - return { - image: image, - startOffset: startOffset, - endOffset: endOffset, - startLine: startLine, - endLine: endLine, - startColumn: startColumn, - endColumn: endColumn, - tokenTypeIdx: tokType.tokenTypeIdx, - tokenType: tokType - }; -} -function tokenMatcher$1(token, tokType) { - return tokenStructuredMatcher(token, tokType); -} - -var __extends$8 = (undefined && undefined.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var AbstractProduction = /** @class */ (function () { - function AbstractProduction(_definition) { - this._definition = _definition; - } - Object.defineProperty(AbstractProduction.prototype, "definition", { - get: function () { - return this._definition; - }, - set: function (value) { - this._definition = value; - }, - enumerable: false, - configurable: true - }); - AbstractProduction.prototype.accept = function (visitor) { - visitor.visit(this); - forEach(this.definition, function (prod) { - prod.accept(visitor); - }); - }; - return AbstractProduction; -}()); -var NonTerminal = /** @class */ (function (_super) { - __extends$8(NonTerminal, _super); - function NonTerminal(options) { - var _this = _super.call(this, []) || this; - _this.idx = 1; - assign(_this, pick(options, function (v) { return v !== undefined; })); - return _this; - } - Object.defineProperty(NonTerminal.prototype, "definition", { - get: function () { - if (this.referencedRule !== undefined) { - return this.referencedRule.definition; - } - return []; - }, - set: function (definition) { - // immutable - }, - enumerable: false, - configurable: true - }); - NonTerminal.prototype.accept = function (visitor) { - visitor.visit(this); - // don't visit children of a reference, we will get cyclic infinite loops if we do so - }; - return NonTerminal; -}(AbstractProduction)); -var Rule = /** @class */ (function (_super) { - __extends$8(Rule, _super); - function Rule(options) { - var _this = _super.call(this, options.definition) || this; - _this.orgText = ""; - assign(_this, pick(options, function (v) { return v !== undefined; })); - return _this; - } - return Rule; -}(AbstractProduction)); -var Alternative = /** @class */ (function (_super) { - __extends$8(Alternative, _super); - function Alternative(options) { - var _this = _super.call(this, options.definition) || this; - _this.ignoreAmbiguities = false; - assign(_this, pick(options, function (v) { return v !== undefined; })); - return _this; - } - return Alternative; -}(AbstractProduction)); -var Option = /** @class */ (function (_super) { - __extends$8(Option, _super); - function Option(options) { - var _this = _super.call(this, options.definition) || this; - _this.idx = 1; - assign(_this, pick(options, function (v) { return v !== undefined; })); - return _this; - } - return Option; -}(AbstractProduction)); -var RepetitionMandatory = /** @class */ (function (_super) { - __extends$8(RepetitionMandatory, _super); - function RepetitionMandatory(options) { - var _this = _super.call(this, options.definition) || this; - _this.idx = 1; - assign(_this, pick(options, function (v) { return v !== undefined; })); - return _this; - } - return RepetitionMandatory; -}(AbstractProduction)); -var RepetitionMandatoryWithSeparator = /** @class */ (function (_super) { - __extends$8(RepetitionMandatoryWithSeparator, _super); - function RepetitionMandatoryWithSeparator(options) { - var _this = _super.call(this, options.definition) || this; - _this.idx = 1; - assign(_this, pick(options, function (v) { return v !== undefined; })); - return _this; - } - return RepetitionMandatoryWithSeparator; -}(AbstractProduction)); -var Repetition = /** @class */ (function (_super) { - __extends$8(Repetition, _super); - function Repetition(options) { - var _this = _super.call(this, options.definition) || this; - _this.idx = 1; - assign(_this, pick(options, function (v) { return v !== undefined; })); - return _this; - } - return Repetition; -}(AbstractProduction)); -var RepetitionWithSeparator = /** @class */ (function (_super) { - __extends$8(RepetitionWithSeparator, _super); - function RepetitionWithSeparator(options) { - var _this = _super.call(this, options.definition) || this; - _this.idx = 1; - assign(_this, pick(options, function (v) { return v !== undefined; })); - return _this; - } - return RepetitionWithSeparator; -}(AbstractProduction)); -var Alternation = /** @class */ (function (_super) { - __extends$8(Alternation, _super); - function Alternation(options) { - var _this = _super.call(this, options.definition) || this; - _this.idx = 1; - _this.ignoreAmbiguities = false; - _this.hasPredicates = false; - assign(_this, pick(options, function (v) { return v !== undefined; })); - return _this; - } - Object.defineProperty(Alternation.prototype, "definition", { - get: function () { - return this._definition; - }, - set: function (value) { - this._definition = value; - }, - enumerable: false, - configurable: true - }); - return Alternation; -}(AbstractProduction)); -var Terminal = /** @class */ (function () { - function Terminal(options) { - this.idx = 1; - assign(this, pick(options, function (v) { return v !== undefined; })); - } - Terminal.prototype.accept = function (visitor) { - visitor.visit(this); - }; - return Terminal; -}()); -function serializeGrammar(topRules) { - return map(topRules, serializeProduction); -} -function serializeProduction(node) { - function convertDefinition(definition) { - return map(definition, serializeProduction); - } - /* istanbul ignore else */ - if (node instanceof NonTerminal) { - return { - type: "NonTerminal", - name: node.nonTerminalName, - idx: node.idx - }; - } - else if (node instanceof Alternative) { - return { - type: "Alternative", - definition: convertDefinition(node.definition) - }; - } - else if (node instanceof Option) { - return { - type: "Option", - idx: node.idx, - definition: convertDefinition(node.definition) - }; - } - else if (node instanceof RepetitionMandatory) { - return { - type: "RepetitionMandatory", - idx: node.idx, - definition: convertDefinition(node.definition) - }; - } - else if (node instanceof RepetitionMandatoryWithSeparator) { - return { - type: "RepetitionMandatoryWithSeparator", - idx: node.idx, - separator: (serializeProduction(new Terminal({ terminalType: node.separator }))), - definition: convertDefinition(node.definition) - }; - } - else if (node instanceof RepetitionWithSeparator) { - return { - type: "RepetitionWithSeparator", - idx: node.idx, - separator: (serializeProduction(new Terminal({ terminalType: node.separator }))), - definition: convertDefinition(node.definition) - }; - } - else if (node instanceof Repetition) { - return { - type: "Repetition", - idx: node.idx, - definition: convertDefinition(node.definition) - }; - } - else if (node instanceof Alternation) { - return { - type: "Alternation", - idx: node.idx, - definition: convertDefinition(node.definition) - }; - } - else if (node instanceof Terminal) { - var serializedTerminal = { - type: "Terminal", - name: node.terminalType.name, - label: tokenLabel(node.terminalType), - idx: node.idx - }; - var pattern = node.terminalType.PATTERN; - if (node.terminalType.PATTERN) { - serializedTerminal.pattern = isRegExp(pattern) - ? pattern.source - : pattern; - } - return serializedTerminal; - } - else if (node instanceof Rule) { - return { - type: "Rule", - name: node.name, - orgText: node.orgText, - definition: convertDefinition(node.definition) - }; - } - else { - throw Error("non exhaustive match"); - } -} - -/** - * A Grammar Walker that computes the "remaining" grammar "after" a productions in the grammar. - */ -var RestWalker = /** @class */ (function () { - function RestWalker() { - } - RestWalker.prototype.walk = function (prod, prevRest) { - var _this = this; - if (prevRest === void 0) { prevRest = []; } - forEach(prod.definition, function (subProd, index) { - var currRest = drop(prod.definition, index + 1); - /* istanbul ignore else */ - if (subProd instanceof NonTerminal) { - _this.walkProdRef(subProd, currRest, prevRest); - } - else if (subProd instanceof Terminal) { - _this.walkTerminal(subProd, currRest, prevRest); - } - else if (subProd instanceof Alternative) { - _this.walkFlat(subProd, currRest, prevRest); - } - else if (subProd instanceof Option) { - _this.walkOption(subProd, currRest, prevRest); - } - else if (subProd instanceof RepetitionMandatory) { - _this.walkAtLeastOne(subProd, currRest, prevRest); - } - else if (subProd instanceof RepetitionMandatoryWithSeparator) { - _this.walkAtLeastOneSep(subProd, currRest, prevRest); - } - else if (subProd instanceof RepetitionWithSeparator) { - _this.walkManySep(subProd, currRest, prevRest); - } - else if (subProd instanceof Repetition) { - _this.walkMany(subProd, currRest, prevRest); - } - else if (subProd instanceof Alternation) { - _this.walkOr(subProd, currRest, prevRest); - } - else { - throw Error("non exhaustive match"); - } - }); - }; - RestWalker.prototype.walkTerminal = function (terminal, currRest, prevRest) { }; - RestWalker.prototype.walkProdRef = function (refProd, currRest, prevRest) { }; - RestWalker.prototype.walkFlat = function (flatProd, currRest, prevRest) { - // ABCDEF => after the D the rest is EF - var fullOrRest = currRest.concat(prevRest); - this.walk(flatProd, fullOrRest); - }; - RestWalker.prototype.walkOption = function (optionProd, currRest, prevRest) { - // ABC(DE)?F => after the (DE)? the rest is F - var fullOrRest = currRest.concat(prevRest); - this.walk(optionProd, fullOrRest); - }; - RestWalker.prototype.walkAtLeastOne = function (atLeastOneProd, currRest, prevRest) { - // ABC(DE)+F => after the (DE)+ the rest is (DE)?F - var fullAtLeastOneRest = [ - new Option({ definition: atLeastOneProd.definition }) - ].concat(currRest, prevRest); - this.walk(atLeastOneProd, fullAtLeastOneRest); - }; - RestWalker.prototype.walkAtLeastOneSep = function (atLeastOneSepProd, currRest, prevRest) { - // ABC DE(,DE)* F => after the (,DE)+ the rest is (,DE)?F - var fullAtLeastOneSepRest = restForRepetitionWithSeparator(atLeastOneSepProd, currRest, prevRest); - this.walk(atLeastOneSepProd, fullAtLeastOneSepRest); - }; - RestWalker.prototype.walkMany = function (manyProd, currRest, prevRest) { - // ABC(DE)*F => after the (DE)* the rest is (DE)?F - var fullManyRest = [ - new Option({ definition: manyProd.definition }) - ].concat(currRest, prevRest); - this.walk(manyProd, fullManyRest); - }; - RestWalker.prototype.walkManySep = function (manySepProd, currRest, prevRest) { - // ABC (DE(,DE)*)? F => after the (,DE)* the rest is (,DE)?F - var fullManySepRest = restForRepetitionWithSeparator(manySepProd, currRest, prevRest); - this.walk(manySepProd, fullManySepRest); - }; - RestWalker.prototype.walkOr = function (orProd, currRest, prevRest) { - var _this = this; - // ABC(D|E|F)G => when finding the (D|E|F) the rest is G - var fullOrRest = currRest.concat(prevRest); - // walk all different alternatives - forEach(orProd.definition, function (alt) { - // wrapping each alternative in a single definition wrapper - // to avoid errors in computing the rest of that alternative in the invocation to computeInProdFollows - // (otherwise for OR([alt1,alt2]) alt2 will be considered in 'rest' of alt1 - var prodWrapper = new Alternative({ definition: [alt] }); - _this.walk(prodWrapper, fullOrRest); - }); - }; - return RestWalker; -}()); -function restForRepetitionWithSeparator(repSepProd, currRest, prevRest) { - var repSepRest = [ - new Option({ - definition: [new Terminal({ terminalType: repSepProd.separator })].concat(repSepProd.definition) - }) - ]; - var fullRepSepRest = repSepRest.concat(currRest, prevRest); - return fullRepSepRest; -} - -var GAstVisitor = /** @class */ (function () { - function GAstVisitor() { - } - GAstVisitor.prototype.visit = function (node) { - var nodeAny = node; - switch (nodeAny.constructor) { - case NonTerminal: - return this.visitNonTerminal(nodeAny); - case Alternative: - return this.visitAlternative(nodeAny); - case Option: - return this.visitOption(nodeAny); - case RepetitionMandatory: - return this.visitRepetitionMandatory(nodeAny); - case RepetitionMandatoryWithSeparator: - return this.visitRepetitionMandatoryWithSeparator(nodeAny); - case RepetitionWithSeparator: - return this.visitRepetitionWithSeparator(nodeAny); - case Repetition: - return this.visitRepetition(nodeAny); - case Alternation: - return this.visitAlternation(nodeAny); - case Terminal: - return this.visitTerminal(nodeAny); - case Rule: - return this.visitRule(nodeAny); - /* istanbul ignore next */ - default: - throw Error("non exhaustive match"); - } - }; - GAstVisitor.prototype.visitNonTerminal = function (node) { }; - GAstVisitor.prototype.visitAlternative = function (node) { }; - GAstVisitor.prototype.visitOption = function (node) { }; - GAstVisitor.prototype.visitRepetition = function (node) { }; - GAstVisitor.prototype.visitRepetitionMandatory = function (node) { }; - GAstVisitor.prototype.visitRepetitionMandatoryWithSeparator = function (node) { }; - GAstVisitor.prototype.visitRepetitionWithSeparator = function (node) { }; - GAstVisitor.prototype.visitAlternation = function (node) { }; - GAstVisitor.prototype.visitTerminal = function (node) { }; - GAstVisitor.prototype.visitRule = function (node) { }; - return GAstVisitor; -}()); - -var __extends$7 = (undefined && undefined.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -function isSequenceProd(prod) { - return (prod instanceof Alternative || - prod instanceof Option || - prod instanceof Repetition || - prod instanceof RepetitionMandatory || - prod instanceof RepetitionMandatoryWithSeparator || - prod instanceof RepetitionWithSeparator || - prod instanceof Terminal || - prod instanceof Rule); -} -function isOptionalProd(prod, alreadyVisited) { - if (alreadyVisited === void 0) { alreadyVisited = []; } - var isDirectlyOptional = prod instanceof Option || - prod instanceof Repetition || - prod instanceof RepetitionWithSeparator; - if (isDirectlyOptional) { - return true; - } - // note that this can cause infinite loop if one optional empty TOP production has a cyclic dependency with another - // empty optional top rule - // may be indirectly optional ((A?B?C?) | (D?E?F?)) - if (prod instanceof Alternation) { - // for OR its enough for just one of the alternatives to be optional - return some(prod.definition, function (subProd) { - return isOptionalProd(subProd, alreadyVisited); - }); - } - else if (prod instanceof NonTerminal && contains(alreadyVisited, prod)) { - // avoiding stack overflow due to infinite recursion - return false; - } - else if (prod instanceof AbstractProduction) { - if (prod instanceof NonTerminal) { - alreadyVisited.push(prod); - } - return every(prod.definition, function (subProd) { - return isOptionalProd(subProd, alreadyVisited); - }); - } - else { - return false; - } -} -function isBranchingProd(prod) { - return prod instanceof Alternation; -} -function getProductionDslName(prod) { - /* istanbul ignore else */ - if (prod instanceof NonTerminal) { - return "SUBRULE"; - } - else if (prod instanceof Option) { - return "OPTION"; - } - else if (prod instanceof Alternation) { - return "OR"; - } - else if (prod instanceof RepetitionMandatory) { - return "AT_LEAST_ONE"; - } - else if (prod instanceof RepetitionMandatoryWithSeparator) { - return "AT_LEAST_ONE_SEP"; - } - else if (prod instanceof RepetitionWithSeparator) { - return "MANY_SEP"; - } - else if (prod instanceof Repetition) { - return "MANY"; - } - else if (prod instanceof Terminal) { - return "CONSUME"; - } - else { - throw Error("non exhaustive match"); - } -} -var DslMethodsCollectorVisitor = /** @class */ (function (_super) { - __extends$7(DslMethodsCollectorVisitor, _super); - function DslMethodsCollectorVisitor() { - var _this = _super !== null && _super.apply(this, arguments) || this; - // A minus is never valid in an identifier name - _this.separator = "-"; - _this.dslMethods = { - option: [], - alternation: [], - repetition: [], - repetitionWithSeparator: [], - repetitionMandatory: [], - repetitionMandatoryWithSeparator: [] - }; - return _this; - } - DslMethodsCollectorVisitor.prototype.reset = function () { - this.dslMethods = { - option: [], - alternation: [], - repetition: [], - repetitionWithSeparator: [], - repetitionMandatory: [], - repetitionMandatoryWithSeparator: [] - }; - }; - DslMethodsCollectorVisitor.prototype.visitTerminal = function (terminal) { - var key = terminal.terminalType.name + this.separator + "Terminal"; - if (!has(this.dslMethods, key)) { - this.dslMethods[key] = []; - } - this.dslMethods[key].push(terminal); - }; - DslMethodsCollectorVisitor.prototype.visitNonTerminal = function (subrule) { - var key = subrule.nonTerminalName + this.separator + "Terminal"; - if (!has(this.dslMethods, key)) { - this.dslMethods[key] = []; - } - this.dslMethods[key].push(subrule); - }; - DslMethodsCollectorVisitor.prototype.visitOption = function (option) { - this.dslMethods.option.push(option); - }; - DslMethodsCollectorVisitor.prototype.visitRepetitionWithSeparator = function (manySep) { - this.dslMethods.repetitionWithSeparator.push(manySep); - }; - DslMethodsCollectorVisitor.prototype.visitRepetitionMandatory = function (atLeastOne) { - this.dslMethods.repetitionMandatory.push(atLeastOne); - }; - DslMethodsCollectorVisitor.prototype.visitRepetitionMandatoryWithSeparator = function (atLeastOneSep) { - this.dslMethods.repetitionMandatoryWithSeparator.push(atLeastOneSep); - }; - DslMethodsCollectorVisitor.prototype.visitRepetition = function (many) { - this.dslMethods.repetition.push(many); - }; - DslMethodsCollectorVisitor.prototype.visitAlternation = function (or) { - this.dslMethods.alternation.push(or); - }; - return DslMethodsCollectorVisitor; -}(GAstVisitor)); -var collectorVisitor = new DslMethodsCollectorVisitor(); -function collectMethods(rule) { - collectorVisitor.reset(); - rule.accept(collectorVisitor); - var dslMethods = collectorVisitor.dslMethods; - // avoid uncleaned references - collectorVisitor.reset(); - return dslMethods; -} - -function first(prod) { - /* istanbul ignore else */ - if (prod instanceof NonTerminal) { - // this could in theory cause infinite loops if - // (1) prod A refs prod B. - // (2) prod B refs prod A - // (3) AB can match the empty set - // in other words a cycle where everything is optional so the first will keep - // looking ahead for the next optional part and will never exit - // currently there is no safeguard for this unique edge case because - // (1) not sure a grammar in which this can happen is useful for anything (productive) - return first(prod.referencedRule); - } - else if (prod instanceof Terminal) { - return firstForTerminal(prod); - } - else if (isSequenceProd(prod)) { - return firstForSequence(prod); - } - else if (isBranchingProd(prod)) { - return firstForBranching(prod); - } - else { - throw Error("non exhaustive match"); - } -} -function firstForSequence(prod) { - var firstSet = []; - var seq = prod.definition; - var nextSubProdIdx = 0; - var hasInnerProdsRemaining = seq.length > nextSubProdIdx; - var currSubProd; - // so we enter the loop at least once (if the definition is not empty - var isLastInnerProdOptional = true; - // scan a sequence until it's end or until we have found a NONE optional production in it - while (hasInnerProdsRemaining && isLastInnerProdOptional) { - currSubProd = seq[nextSubProdIdx]; - isLastInnerProdOptional = isOptionalProd(currSubProd); - firstSet = firstSet.concat(first(currSubProd)); - nextSubProdIdx = nextSubProdIdx + 1; - hasInnerProdsRemaining = seq.length > nextSubProdIdx; - } - return uniq(firstSet); -} -function firstForBranching(prod) { - var allAlternativesFirsts = map(prod.definition, function (innerProd) { - return first(innerProd); - }); - return uniq(flatten(allAlternativesFirsts)); -} -function firstForTerminal(terminal) { - return [terminal.terminalType]; -} - -// TODO: can this be removed? where is it used? -var IN = "_~IN~_"; - -var __extends$6 = (undefined && undefined.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -// This ResyncFollowsWalker computes all of the follows required for RESYNC -// (skipping reference production). -var ResyncFollowsWalker = /** @class */ (function (_super) { - __extends$6(ResyncFollowsWalker, _super); - function ResyncFollowsWalker(topProd) { - var _this = _super.call(this) || this; - _this.topProd = topProd; - _this.follows = {}; - return _this; - } - ResyncFollowsWalker.prototype.startWalking = function () { - this.walk(this.topProd); - return this.follows; - }; - ResyncFollowsWalker.prototype.walkTerminal = function (terminal, currRest, prevRest) { - // do nothing! just like in the public sector after 13:00 - }; - ResyncFollowsWalker.prototype.walkProdRef = function (refProd, currRest, prevRest) { - var followName = buildBetweenProdsFollowPrefix(refProd.referencedRule, refProd.idx) + - this.topProd.name; - var fullRest = currRest.concat(prevRest); - var restProd = new Alternative({ definition: fullRest }); - var t_in_topProd_follows = first(restProd); - this.follows[followName] = t_in_topProd_follows; - }; - return ResyncFollowsWalker; -}(RestWalker)); -function computeAllProdsFollows(topProductions) { - var reSyncFollows = {}; - forEach(topProductions, function (topProd) { - var currRefsFollow = new ResyncFollowsWalker(topProd).startWalking(); - assign(reSyncFollows, currRefsFollow); - }); - return reSyncFollows; -} -function buildBetweenProdsFollowPrefix(inner, occurenceInParent) { - return inner.name + occurenceInParent + IN; -} - -var defaultParserErrorProvider = { - buildMismatchTokenMessage: function (_a) { - var expected = _a.expected, actual = _a.actual; _a.previous; _a.ruleName; - var hasLabel = hasTokenLabel(expected); - var expectedMsg = hasLabel - ? "--> " + tokenLabel(expected) + " <--" - : "token of type --> " + expected.name + " <--"; - var msg = "Expecting " + expectedMsg + " but found --> '" + actual.image + "' <--"; - return msg; - }, - buildNotAllInputParsedMessage: function (_a) { - var firstRedundant = _a.firstRedundant; _a.ruleName; - return "Redundant input, expecting EOF but found: " + firstRedundant.image; - }, - buildNoViableAltMessage: function (_a) { - var expectedPathsPerAlt = _a.expectedPathsPerAlt, actual = _a.actual; _a.previous; var customUserDescription = _a.customUserDescription; _a.ruleName; - var errPrefix = "Expecting: "; - // TODO: issue: No Viable Alternative Error may have incomplete details. #502 - var actualText = first$1(actual).image; - var errSuffix = "\nbut found: '" + actualText + "'"; - if (customUserDescription) { - return errPrefix + customUserDescription + errSuffix; - } - else { - var allLookAheadPaths = reduce(expectedPathsPerAlt, function (result, currAltPaths) { return result.concat(currAltPaths); }, []); - var nextValidTokenSequences = map(allLookAheadPaths, function (currPath) { - return "[" + map(currPath, function (currTokenType) { return tokenLabel(currTokenType); }).join(", ") + "]"; - }); - var nextValidSequenceItems = map(nextValidTokenSequences, function (itemMsg, idx) { return " " + (idx + 1) + ". " + itemMsg; }); - var calculatedDescription = "one of these possible Token sequences:\n" + nextValidSequenceItems.join("\n"); - return errPrefix + calculatedDescription + errSuffix; - } - }, - buildEarlyExitMessage: function (_a) { - var expectedIterationPaths = _a.expectedIterationPaths, actual = _a.actual, customUserDescription = _a.customUserDescription; _a.ruleName; - var errPrefix = "Expecting: "; - // TODO: issue: No Viable Alternative Error may have incomplete details. #502 - var actualText = first$1(actual).image; - var errSuffix = "\nbut found: '" + actualText + "'"; - if (customUserDescription) { - return errPrefix + customUserDescription + errSuffix; - } - else { - var nextValidTokenSequences = map(expectedIterationPaths, function (currPath) { - return "[" + map(currPath, function (currTokenType) { return tokenLabel(currTokenType); }).join(",") + "]"; - }); - var calculatedDescription = "expecting at least one iteration which starts with one of these possible Token sequences::\n " + - ("<" + nextValidTokenSequences.join(" ,") + ">"); - return errPrefix + calculatedDescription + errSuffix; - } - } -}; -Object.freeze(defaultParserErrorProvider); -var defaultGrammarResolverErrorProvider = { - buildRuleNotFoundError: function (topLevelRule, undefinedRule) { - var msg = "Invalid grammar, reference to a rule which is not defined: ->" + - undefinedRule.nonTerminalName + - "<-\n" + - "inside top level rule: ->" + - topLevelRule.name + - "<-"; - return msg; - } -}; -var defaultGrammarValidatorErrorProvider = { - buildDuplicateFoundError: function (topLevelRule, duplicateProds) { - function getExtraProductionArgument(prod) { - if (prod instanceof Terminal) { - return prod.terminalType.name; - } - else if (prod instanceof NonTerminal) { - return prod.nonTerminalName; - } - else { - return ""; - } - } - var topLevelName = topLevelRule.name; - var duplicateProd = first$1(duplicateProds); - var index = duplicateProd.idx; - var dslName = getProductionDslName(duplicateProd); - var extraArgument = getExtraProductionArgument(duplicateProd); - var hasExplicitIndex = index > 0; - var msg = "->" + dslName + (hasExplicitIndex ? index : "") + "<- " + (extraArgument ? "with argument: ->" + extraArgument + "<-" : "") + "\n appears more than once (" + duplicateProds.length + " times) in the top level rule: ->" + topLevelName + "<-. \n For further details see: https://sap.github.io/chevrotain/docs/FAQ.html#NUMERICAL_SUFFIXES \n "; - // white space trimming time! better to trim afterwards as it allows to use WELL formatted multi line template strings... - msg = msg.replace(/[ \t]+/g, " "); - msg = msg.replace(/\s\s+/g, "\n"); - return msg; - }, - buildNamespaceConflictError: function (rule) { - var errMsg = "Namespace conflict found in grammar.\n" + - ("The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <" + rule.name + ">.\n") + - "To resolve this make sure each Terminal and Non-Terminal names are unique\n" + - "This is easy to accomplish by using the convention that Terminal names start with an uppercase letter\n" + - "and Non-Terminal names start with a lower case letter."; - return errMsg; - }, - buildAlternationPrefixAmbiguityError: function (options) { - var pathMsg = map(options.prefixPath, function (currTok) { - return tokenLabel(currTok); - }).join(", "); - var occurrence = options.alternation.idx === 0 ? "" : options.alternation.idx; - var errMsg = "Ambiguous alternatives: <" + options.ambiguityIndices.join(" ,") + "> due to common lookahead prefix\n" + - ("in <OR" + occurrence + "> inside <" + options.topLevelRule.name + "> Rule,\n") + - ("<" + pathMsg + "> may appears as a prefix path in all these alternatives.\n") + - "See: https://sap.github.io/chevrotain/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX\n" + - "For Further details."; - return errMsg; - }, - buildAlternationAmbiguityError: function (options) { - var pathMsg = map(options.prefixPath, function (currtok) { - return tokenLabel(currtok); - }).join(", "); - var occurrence = options.alternation.idx === 0 ? "" : options.alternation.idx; - var currMessage = "Ambiguous Alternatives Detected: <" + options.ambiguityIndices.join(" ,") + "> in <OR" + occurrence + ">" + - (" inside <" + options.topLevelRule.name + "> Rule,\n") + - ("<" + pathMsg + "> may appears as a prefix path in all these alternatives.\n"); - currMessage = - currMessage + - "See: https://sap.github.io/chevrotain/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES\n" + - "For Further details."; - return currMessage; - }, - buildEmptyRepetitionError: function (options) { - var dslName = getProductionDslName(options.repetition); - if (options.repetition.idx !== 0) { - dslName += options.repetition.idx; - } - var errMsg = "The repetition <" + dslName + "> within Rule <" + options.topLevelRule.name + "> can never consume any tokens.\n" + - "This could lead to an infinite loop."; - return errMsg; - }, - // TODO: remove - `errors_public` from nyc.config.js exclude - // once this method is fully removed from this file - buildTokenNameError: function (options) { - /* istanbul ignore next */ - return "deprecated"; - }, - buildEmptyAlternationError: function (options) { - var errMsg = "Ambiguous empty alternative: <" + (options.emptyChoiceIdx + 1) + ">" + - (" in <OR" + options.alternation.idx + "> inside <" + options.topLevelRule.name + "> Rule.\n") + - "Only the last alternative may be an empty alternative."; - return errMsg; - }, - buildTooManyAlternativesError: function (options) { - var errMsg = "An Alternation cannot have more than 256 alternatives:\n" + - ("<OR" + options.alternation.idx + "> inside <" + options.topLevelRule.name + "> Rule.\n has " + (options.alternation.definition.length + 1) + " alternatives."); - return errMsg; - }, - buildLeftRecursionError: function (options) { - var ruleName = options.topLevelRule.name; - var pathNames = map(options.leftRecursionPath, function (currRule) { return currRule.name; }); - var leftRecursivePath = ruleName + " --> " + pathNames - .concat([ruleName]) - .join(" --> "); - var errMsg = "Left Recursion found in grammar.\n" + - ("rule: <" + ruleName + "> can be invoked from itself (directly or indirectly)\n") + - ("without consuming any Tokens. The grammar path that causes this is: \n " + leftRecursivePath + "\n") + - " To fix this refactor your grammar to remove the left recursion.\n" + - "see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring."; - return errMsg; - }, - // TODO: remove - `errors_public` from nyc.config.js exclude - // once this method is fully removed from this file - buildInvalidRuleNameError: function (options) { - /* istanbul ignore next */ - return "deprecated"; - }, - buildDuplicateRuleNameError: function (options) { - var ruleName; - if (options.topLevelRule instanceof Rule) { - ruleName = options.topLevelRule.name; - } - else { - ruleName = options.topLevelRule; - } - var errMsg = "Duplicate definition, rule: ->" + ruleName + "<- is already defined in the grammar: ->" + options.grammarName + "<-"; - return errMsg; - } -}; - -var __extends$5 = (undefined && undefined.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -function resolveGrammar$1(topLevels, errMsgProvider) { - var refResolver = new GastRefResolverVisitor(topLevels, errMsgProvider); - refResolver.resolveRefs(); - return refResolver.errors; -} -var GastRefResolverVisitor = /** @class */ (function (_super) { - __extends$5(GastRefResolverVisitor, _super); - function GastRefResolverVisitor(nameToTopRule, errMsgProvider) { - var _this = _super.call(this) || this; - _this.nameToTopRule = nameToTopRule; - _this.errMsgProvider = errMsgProvider; - _this.errors = []; - return _this; - } - GastRefResolverVisitor.prototype.resolveRefs = function () { - var _this = this; - forEach(values(this.nameToTopRule), function (prod) { - _this.currTopLevel = prod; - prod.accept(_this); - }); - }; - GastRefResolverVisitor.prototype.visitNonTerminal = function (node) { - var ref = this.nameToTopRule[node.nonTerminalName]; - if (!ref) { - var msg = this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel, node); - this.errors.push({ - message: msg, - type: ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF, - ruleName: this.currTopLevel.name, - unresolvedRefName: node.nonTerminalName - }); - } - else { - node.referencedRule = ref; - } - }; - return GastRefResolverVisitor; -}(GAstVisitor)); - -var __extends$4 = (undefined && undefined.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var AbstractNextPossibleTokensWalker = /** @class */ (function (_super) { - __extends$4(AbstractNextPossibleTokensWalker, _super); - function AbstractNextPossibleTokensWalker(topProd, path) { - var _this = _super.call(this) || this; - _this.topProd = topProd; - _this.path = path; - _this.possibleTokTypes = []; - _this.nextProductionName = ""; - _this.nextProductionOccurrence = 0; - _this.found = false; - _this.isAtEndOfPath = false; - return _this; - } - AbstractNextPossibleTokensWalker.prototype.startWalking = function () { - this.found = false; - if (this.path.ruleStack[0] !== this.topProd.name) { - throw Error("The path does not start with the walker's top Rule!"); - } - // immutable for the win - this.ruleStack = cloneArr(this.path.ruleStack).reverse(); // intelij bug requires assertion - this.occurrenceStack = cloneArr(this.path.occurrenceStack).reverse(); // intelij bug requires assertion - // already verified that the first production is valid, we now seek the 2nd production - this.ruleStack.pop(); - this.occurrenceStack.pop(); - this.updateExpectedNext(); - this.walk(this.topProd); - return this.possibleTokTypes; - }; - AbstractNextPossibleTokensWalker.prototype.walk = function (prod, prevRest) { - if (prevRest === void 0) { prevRest = []; } - // stop scanning once we found the path - if (!this.found) { - _super.prototype.walk.call(this, prod, prevRest); - } - }; - AbstractNextPossibleTokensWalker.prototype.walkProdRef = function (refProd, currRest, prevRest) { - // found the next production, need to keep walking in it - if (refProd.referencedRule.name === this.nextProductionName && - refProd.idx === this.nextProductionOccurrence) { - var fullRest = currRest.concat(prevRest); - this.updateExpectedNext(); - this.walk(refProd.referencedRule, fullRest); - } - }; - AbstractNextPossibleTokensWalker.prototype.updateExpectedNext = function () { - // need to consume the Terminal - if (isEmpty(this.ruleStack)) { - // must reset nextProductionXXX to avoid walking down another Top Level production while what we are - // really seeking is the last Terminal... - this.nextProductionName = ""; - this.nextProductionOccurrence = 0; - this.isAtEndOfPath = true; - } - else { - this.nextProductionName = this.ruleStack.pop(); - this.nextProductionOccurrence = this.occurrenceStack.pop(); - } - }; - return AbstractNextPossibleTokensWalker; -}(RestWalker)); -var NextAfterTokenWalker = /** @class */ (function (_super) { - __extends$4(NextAfterTokenWalker, _super); - function NextAfterTokenWalker(topProd, path) { - var _this = _super.call(this, topProd, path) || this; - _this.path = path; - _this.nextTerminalName = ""; - _this.nextTerminalOccurrence = 0; - _this.nextTerminalName = _this.path.lastTok.name; - _this.nextTerminalOccurrence = _this.path.lastTokOccurrence; - return _this; - } - NextAfterTokenWalker.prototype.walkTerminal = function (terminal, currRest, prevRest) { - if (this.isAtEndOfPath && - terminal.terminalType.name === this.nextTerminalName && - terminal.idx === this.nextTerminalOccurrence && - !this.found) { - var fullRest = currRest.concat(prevRest); - var restProd = new Alternative({ definition: fullRest }); - this.possibleTokTypes = first(restProd); - this.found = true; - } - }; - return NextAfterTokenWalker; -}(AbstractNextPossibleTokensWalker)); -/** - * This walker only "walks" a single "TOP" level in the Grammar Ast, this means - * it never "follows" production refs - */ -var AbstractNextTerminalAfterProductionWalker = /** @class */ (function (_super) { - __extends$4(AbstractNextTerminalAfterProductionWalker, _super); - function AbstractNextTerminalAfterProductionWalker(topRule, occurrence) { - var _this = _super.call(this) || this; - _this.topRule = topRule; - _this.occurrence = occurrence; - _this.result = { - token: undefined, - occurrence: undefined, - isEndOfRule: undefined - }; - return _this; - } - AbstractNextTerminalAfterProductionWalker.prototype.startWalking = function () { - this.walk(this.topRule); - return this.result; - }; - return AbstractNextTerminalAfterProductionWalker; -}(RestWalker)); -var NextTerminalAfterManyWalker = /** @class */ (function (_super) { - __extends$4(NextTerminalAfterManyWalker, _super); - function NextTerminalAfterManyWalker() { - return _super !== null && _super.apply(this, arguments) || this; - } - NextTerminalAfterManyWalker.prototype.walkMany = function (manyProd, currRest, prevRest) { - if (manyProd.idx === this.occurrence) { - var firstAfterMany = first$1(currRest.concat(prevRest)); - this.result.isEndOfRule = firstAfterMany === undefined; - if (firstAfterMany instanceof Terminal) { - this.result.token = firstAfterMany.terminalType; - this.result.occurrence = firstAfterMany.idx; - } - } - else { - _super.prototype.walkMany.call(this, manyProd, currRest, prevRest); - } - }; - return NextTerminalAfterManyWalker; -}(AbstractNextTerminalAfterProductionWalker)); -var NextTerminalAfterManySepWalker = /** @class */ (function (_super) { - __extends$4(NextTerminalAfterManySepWalker, _super); - function NextTerminalAfterManySepWalker() { - return _super !== null && _super.apply(this, arguments) || this; - } - NextTerminalAfterManySepWalker.prototype.walkManySep = function (manySepProd, currRest, prevRest) { - if (manySepProd.idx === this.occurrence) { - var firstAfterManySep = first$1(currRest.concat(prevRest)); - this.result.isEndOfRule = firstAfterManySep === undefined; - if (firstAfterManySep instanceof Terminal) { - this.result.token = firstAfterManySep.terminalType; - this.result.occurrence = firstAfterManySep.idx; - } - } - else { - _super.prototype.walkManySep.call(this, manySepProd, currRest, prevRest); - } - }; - return NextTerminalAfterManySepWalker; -}(AbstractNextTerminalAfterProductionWalker)); -var NextTerminalAfterAtLeastOneWalker = /** @class */ (function (_super) { - __extends$4(NextTerminalAfterAtLeastOneWalker, _super); - function NextTerminalAfterAtLeastOneWalker() { - return _super !== null && _super.apply(this, arguments) || this; - } - NextTerminalAfterAtLeastOneWalker.prototype.walkAtLeastOne = function (atLeastOneProd, currRest, prevRest) { - if (atLeastOneProd.idx === this.occurrence) { - var firstAfterAtLeastOne = first$1(currRest.concat(prevRest)); - this.result.isEndOfRule = firstAfterAtLeastOne === undefined; - if (firstAfterAtLeastOne instanceof Terminal) { - this.result.token = firstAfterAtLeastOne.terminalType; - this.result.occurrence = firstAfterAtLeastOne.idx; - } - } - else { - _super.prototype.walkAtLeastOne.call(this, atLeastOneProd, currRest, prevRest); - } - }; - return NextTerminalAfterAtLeastOneWalker; -}(AbstractNextTerminalAfterProductionWalker)); -// TODO: reduce code duplication in the AfterWalkers -var NextTerminalAfterAtLeastOneSepWalker = /** @class */ (function (_super) { - __extends$4(NextTerminalAfterAtLeastOneSepWalker, _super); - function NextTerminalAfterAtLeastOneSepWalker() { - return _super !== null && _super.apply(this, arguments) || this; - } - NextTerminalAfterAtLeastOneSepWalker.prototype.walkAtLeastOneSep = function (atleastOneSepProd, currRest, prevRest) { - if (atleastOneSepProd.idx === this.occurrence) { - var firstAfterfirstAfterAtLeastOneSep = first$1(currRest.concat(prevRest)); - this.result.isEndOfRule = firstAfterfirstAfterAtLeastOneSep === undefined; - if (firstAfterfirstAfterAtLeastOneSep instanceof Terminal) { - this.result.token = firstAfterfirstAfterAtLeastOneSep.terminalType; - this.result.occurrence = firstAfterfirstAfterAtLeastOneSep.idx; - } - } - else { - _super.prototype.walkAtLeastOneSep.call(this, atleastOneSepProd, currRest, prevRest); - } - }; - return NextTerminalAfterAtLeastOneSepWalker; -}(AbstractNextTerminalAfterProductionWalker)); -function possiblePathsFrom(targetDef, maxLength, currPath) { - if (currPath === void 0) { currPath = []; } - // avoid side effects - currPath = cloneArr(currPath); - var result = []; - var i = 0; - // TODO: avoid inner funcs - function remainingPathWith(nextDef) { - return nextDef.concat(drop(targetDef, i + 1)); - } - // TODO: avoid inner funcs - function getAlternativesForProd(definition) { - var alternatives = possiblePathsFrom(remainingPathWith(definition), maxLength, currPath); - return result.concat(alternatives); - } - /** - * Mandatory productions will halt the loop as the paths computed from their recursive calls will already contain the - * following (rest) of the targetDef. - * - * For optional productions (Option/Repetition/...) the loop will continue to represent the paths that do not include the - * the optional production. - */ - while (currPath.length < maxLength && i < targetDef.length) { - var prod = targetDef[i]; - /* istanbul ignore else */ - if (prod instanceof Alternative) { - return getAlternativesForProd(prod.definition); - } - else if (prod instanceof NonTerminal) { - return getAlternativesForProd(prod.definition); - } - else if (prod instanceof Option) { - result = getAlternativesForProd(prod.definition); - } - else if (prod instanceof RepetitionMandatory) { - var newDef = prod.definition.concat([ - new Repetition({ - definition: prod.definition - }) - ]); - return getAlternativesForProd(newDef); - } - else if (prod instanceof RepetitionMandatoryWithSeparator) { - var newDef = [ - new Alternative({ definition: prod.definition }), - new Repetition({ - definition: [new Terminal({ terminalType: prod.separator })].concat(prod.definition) - }) - ]; - return getAlternativesForProd(newDef); - } - else if (prod instanceof RepetitionWithSeparator) { - var newDef = prod.definition.concat([ - new Repetition({ - definition: [new Terminal({ terminalType: prod.separator })].concat(prod.definition) - }) - ]); - result = getAlternativesForProd(newDef); - } - else if (prod instanceof Repetition) { - var newDef = prod.definition.concat([ - new Repetition({ - definition: prod.definition - }) - ]); - result = getAlternativesForProd(newDef); - } - else if (prod instanceof Alternation) { - forEach(prod.definition, function (currAlt) { - // TODO: this is a limited check for empty alternatives - // It would prevent a common case of infinite loops during parser initialization. - // However **in-directly** empty alternatives may still cause issues. - if (isEmpty(currAlt.definition) === false) { - result = getAlternativesForProd(currAlt.definition); - } - }); - return result; - } - else if (prod instanceof Terminal) { - currPath.push(prod.terminalType); - } - else { - throw Error("non exhaustive match"); - } - i++; - } - result.push({ - partialPath: currPath, - suffixDef: drop(targetDef, i) - }); - return result; -} -function nextPossibleTokensAfter(initialDef, tokenVector, tokMatcher, maxLookAhead) { - var EXIT_NON_TERMINAL = "EXIT_NONE_TERMINAL"; - // to avoid creating a new Array each time. - var EXIT_NON_TERMINAL_ARR = [EXIT_NON_TERMINAL]; - var EXIT_ALTERNATIVE = "EXIT_ALTERNATIVE"; - var foundCompletePath = false; - var tokenVectorLength = tokenVector.length; - var minimalAlternativesIndex = tokenVectorLength - maxLookAhead - 1; - var result = []; - var possiblePaths = []; - possiblePaths.push({ - idx: -1, - def: initialDef, - ruleStack: [], - occurrenceStack: [] - }); - while (!isEmpty(possiblePaths)) { - var currPath = possiblePaths.pop(); - // skip alternatives if no more results can be found (assuming deterministic grammar with fixed lookahead) - if (currPath === EXIT_ALTERNATIVE) { - if (foundCompletePath && - last(possiblePaths).idx <= minimalAlternativesIndex) { - // remove irrelevant alternative - possiblePaths.pop(); - } - continue; - } - var currDef = currPath.def; - var currIdx = currPath.idx; - var currRuleStack = currPath.ruleStack; - var currOccurrenceStack = currPath.occurrenceStack; - // For Example: an empty path could exist in a valid grammar in the case of an EMPTY_ALT - if (isEmpty(currDef)) { - continue; - } - var prod = currDef[0]; - /* istanbul ignore else */ - if (prod === EXIT_NON_TERMINAL) { - var nextPath = { - idx: currIdx, - def: drop(currDef), - ruleStack: dropRight(currRuleStack), - occurrenceStack: dropRight(currOccurrenceStack) - }; - possiblePaths.push(nextPath); - } - else if (prod instanceof Terminal) { - /* istanbul ignore else */ - if (currIdx < tokenVectorLength - 1) { - var nextIdx = currIdx + 1; - var actualToken = tokenVector[nextIdx]; - if (tokMatcher(actualToken, prod.terminalType)) { - var nextPath = { - idx: nextIdx, - def: drop(currDef), - ruleStack: currRuleStack, - occurrenceStack: currOccurrenceStack - }; - possiblePaths.push(nextPath); - } - // end of the line - } - else if (currIdx === tokenVectorLength - 1) { - // IGNORE ABOVE ELSE - result.push({ - nextTokenType: prod.terminalType, - nextTokenOccurrence: prod.idx, - ruleStack: currRuleStack, - occurrenceStack: currOccurrenceStack - }); - foundCompletePath = true; - } - else { - throw Error("non exhaustive match"); - } - } - else if (prod instanceof NonTerminal) { - var newRuleStack = cloneArr(currRuleStack); - newRuleStack.push(prod.nonTerminalName); - var newOccurrenceStack = cloneArr(currOccurrenceStack); - newOccurrenceStack.push(prod.idx); - var nextPath = { - idx: currIdx, - def: prod.definition.concat(EXIT_NON_TERMINAL_ARR, drop(currDef)), - ruleStack: newRuleStack, - occurrenceStack: newOccurrenceStack - }; - possiblePaths.push(nextPath); - } - else if (prod instanceof Option) { - // the order of alternatives is meaningful, FILO (Last path will be traversed first). - var nextPathWithout = { - idx: currIdx, - def: drop(currDef), - ruleStack: currRuleStack, - occurrenceStack: currOccurrenceStack - }; - possiblePaths.push(nextPathWithout); - // required marker to avoid backtracking paths whose higher priority alternatives already matched - possiblePaths.push(EXIT_ALTERNATIVE); - var nextPathWith = { - idx: currIdx, - def: prod.definition.concat(drop(currDef)), - ruleStack: currRuleStack, - occurrenceStack: currOccurrenceStack - }; - possiblePaths.push(nextPathWith); - } - else if (prod instanceof RepetitionMandatory) { - // TODO:(THE NEW operators here take a while...) (convert once?) - var secondIteration = new Repetition({ - definition: prod.definition, - idx: prod.idx - }); - var nextDef = prod.definition.concat([secondIteration], drop(currDef)); - var nextPath = { - idx: currIdx, - def: nextDef, - ruleStack: currRuleStack, - occurrenceStack: currOccurrenceStack - }; - possiblePaths.push(nextPath); - } - else if (prod instanceof RepetitionMandatoryWithSeparator) { - // TODO:(THE NEW operators here take a while...) (convert once?) - var separatorGast = new Terminal({ - terminalType: prod.separator - }); - var secondIteration = new Repetition({ - definition: [separatorGast].concat(prod.definition), - idx: prod.idx - }); - var nextDef = prod.definition.concat([secondIteration], drop(currDef)); - var nextPath = { - idx: currIdx, - def: nextDef, - ruleStack: currRuleStack, - occurrenceStack: currOccurrenceStack - }; - possiblePaths.push(nextPath); - } - else if (prod instanceof RepetitionWithSeparator) { - // the order of alternatives is meaningful, FILO (Last path will be traversed first). - var nextPathWithout = { - idx: currIdx, - def: drop(currDef), - ruleStack: currRuleStack, - occurrenceStack: currOccurrenceStack - }; - possiblePaths.push(nextPathWithout); - // required marker to avoid backtracking paths whose higher priority alternatives already matched - possiblePaths.push(EXIT_ALTERNATIVE); - var separatorGast = new Terminal({ - terminalType: prod.separator - }); - var nthRepetition = new Repetition({ - definition: [separatorGast].concat(prod.definition), - idx: prod.idx - }); - var nextDef = prod.definition.concat([nthRepetition], drop(currDef)); - var nextPathWith = { - idx: currIdx, - def: nextDef, - ruleStack: currRuleStack, - occurrenceStack: currOccurrenceStack - }; - possiblePaths.push(nextPathWith); - } - else if (prod instanceof Repetition) { - // the order of alternatives is meaningful, FILO (Last path will be traversed first). - var nextPathWithout = { - idx: currIdx, - def: drop(currDef), - ruleStack: currRuleStack, - occurrenceStack: currOccurrenceStack - }; - possiblePaths.push(nextPathWithout); - // required marker to avoid backtracking paths whose higher priority alternatives already matched - possiblePaths.push(EXIT_ALTERNATIVE); - // TODO: an empty repetition will cause infinite loops here, will the parser detect this in selfAnalysis? - var nthRepetition = new Repetition({ - definition: prod.definition, - idx: prod.idx - }); - var nextDef = prod.definition.concat([nthRepetition], drop(currDef)); - var nextPathWith = { - idx: currIdx, - def: nextDef, - ruleStack: currRuleStack, - occurrenceStack: currOccurrenceStack - }; - possiblePaths.push(nextPathWith); - } - else if (prod instanceof Alternation) { - // the order of alternatives is meaningful, FILO (Last path will be traversed first). - for (var i = prod.definition.length - 1; i >= 0; i--) { - var currAlt = prod.definition[i]; - var currAltPath = { - idx: currIdx, - def: currAlt.definition.concat(drop(currDef)), - ruleStack: currRuleStack, - occurrenceStack: currOccurrenceStack - }; - possiblePaths.push(currAltPath); - possiblePaths.push(EXIT_ALTERNATIVE); - } - } - else if (prod instanceof Alternative) { - possiblePaths.push({ - idx: currIdx, - def: prod.definition.concat(drop(currDef)), - ruleStack: currRuleStack, - occurrenceStack: currOccurrenceStack - }); - } - else if (prod instanceof Rule) { - // last because we should only encounter at most a single one of these per invocation. - possiblePaths.push(expandTopLevelRule(prod, currIdx, currRuleStack, currOccurrenceStack)); - } - else { - throw Error("non exhaustive match"); - } - } - return result; -} -function expandTopLevelRule(topRule, currIdx, currRuleStack, currOccurrenceStack) { - var newRuleStack = cloneArr(currRuleStack); - newRuleStack.push(topRule.name); - var newCurrOccurrenceStack = cloneArr(currOccurrenceStack); - // top rule is always assumed to have been called with occurrence index 1 - newCurrOccurrenceStack.push(1); - return { - idx: currIdx, - def: topRule.definition, - ruleStack: newRuleStack, - occurrenceStack: newCurrOccurrenceStack - }; -} - -var __extends$3 = (undefined && undefined.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var PROD_TYPE; -(function (PROD_TYPE) { - PROD_TYPE[PROD_TYPE["OPTION"] = 0] = "OPTION"; - PROD_TYPE[PROD_TYPE["REPETITION"] = 1] = "REPETITION"; - PROD_TYPE[PROD_TYPE["REPETITION_MANDATORY"] = 2] = "REPETITION_MANDATORY"; - PROD_TYPE[PROD_TYPE["REPETITION_MANDATORY_WITH_SEPARATOR"] = 3] = "REPETITION_MANDATORY_WITH_SEPARATOR"; - PROD_TYPE[PROD_TYPE["REPETITION_WITH_SEPARATOR"] = 4] = "REPETITION_WITH_SEPARATOR"; - PROD_TYPE[PROD_TYPE["ALTERNATION"] = 5] = "ALTERNATION"; -})(PROD_TYPE || (PROD_TYPE = {})); -function getProdType(prod) { - /* istanbul ignore else */ - if (prod instanceof Option) { - return PROD_TYPE.OPTION; - } - else if (prod instanceof Repetition) { - return PROD_TYPE.REPETITION; - } - else if (prod instanceof RepetitionMandatory) { - return PROD_TYPE.REPETITION_MANDATORY; - } - else if (prod instanceof RepetitionMandatoryWithSeparator) { - return PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR; - } - else if (prod instanceof RepetitionWithSeparator) { - return PROD_TYPE.REPETITION_WITH_SEPARATOR; - } - else if (prod instanceof Alternation) { - return PROD_TYPE.ALTERNATION; - } - else { - throw Error("non exhaustive match"); - } -} -function buildLookaheadFuncForOr(occurrence, ruleGrammar, maxLookahead, hasPredicates, dynamicTokensEnabled, laFuncBuilder) { - var lookAheadPaths = getLookaheadPathsForOr(occurrence, ruleGrammar, maxLookahead); - var tokenMatcher = areTokenCategoriesNotUsed(lookAheadPaths) - ? tokenStructuredMatcherNoCategories - : tokenStructuredMatcher; - return laFuncBuilder(lookAheadPaths, hasPredicates, tokenMatcher, dynamicTokensEnabled); -} -/** - * When dealing with an Optional production (OPTION/MANY/2nd iteration of AT_LEAST_ONE/...) we need to compare - * the lookahead "inside" the production and the lookahead immediately "after" it in the same top level rule (context free). - * - * Example: given a production: - * ABC(DE)?DF - * - * The optional '(DE)?' should only be entered if we see 'DE'. a single Token 'D' is not sufficient to distinguish between the two - * alternatives. - * - * @returns A Lookahead function which will return true IFF the parser should parse the Optional production. - */ -function buildLookaheadFuncForOptionalProd(occurrence, ruleGrammar, k, dynamicTokensEnabled, prodType, lookaheadBuilder) { - var lookAheadPaths = getLookaheadPathsForOptionalProd(occurrence, ruleGrammar, prodType, k); - var tokenMatcher = areTokenCategoriesNotUsed(lookAheadPaths) - ? tokenStructuredMatcherNoCategories - : tokenStructuredMatcher; - return lookaheadBuilder(lookAheadPaths[0], tokenMatcher, dynamicTokensEnabled); -} -function buildAlternativesLookAheadFunc(alts, hasPredicates, tokenMatcher, dynamicTokensEnabled) { - var numOfAlts = alts.length; - var areAllOneTokenLookahead = every(alts, function (currAlt) { - return every(currAlt, function (currPath) { - return currPath.length === 1; - }); - }); - // This version takes into account the predicates as well. - if (hasPredicates) { - /** - * @returns {number} - The chosen alternative index - */ - return function (orAlts) { - // unfortunately the predicates must be extracted every single time - // as they cannot be cached due to references to parameters(vars) which are no longer valid. - // note that in the common case of no predicates, no cpu time will be wasted on this (see else block) - var predicates = map(orAlts, function (currAlt) { return currAlt.GATE; }); - for (var t = 0; t < numOfAlts; t++) { - var currAlt = alts[t]; - var currNumOfPaths = currAlt.length; - var currPredicate = predicates[t]; - if (currPredicate !== undefined && currPredicate.call(this) === false) { - // if the predicate does not match there is no point in checking the paths - continue; - } - nextPath: for (var j = 0; j < currNumOfPaths; j++) { - var currPath = currAlt[j]; - var currPathLength = currPath.length; - for (var i = 0; i < currPathLength; i++) { - var nextToken = this.LA(i + 1); - if (tokenMatcher(nextToken, currPath[i]) === false) { - // mismatch in current path - // try the next pth - continue nextPath; - } - } - // found a full path that matches. - // this will also work for an empty ALT as the loop will be skipped - return t; - } - // none of the paths for the current alternative matched - // try the next alternative - } - // none of the alternatives could be matched - return undefined; - }; - } - else if (areAllOneTokenLookahead && !dynamicTokensEnabled) { - // optimized (common) case of all the lookaheads paths requiring only - // a single token lookahead. These Optimizations cannot work if dynamically defined Tokens are used. - var singleTokenAlts = map(alts, function (currAlt) { - return flatten(currAlt); - }); - var choiceToAlt_1 = reduce(singleTokenAlts, function (result, currAlt, idx) { - forEach(currAlt, function (currTokType) { - if (!has(result, currTokType.tokenTypeIdx)) { - result[currTokType.tokenTypeIdx] = idx; - } - forEach(currTokType.categoryMatches, function (currExtendingType) { - if (!has(result, currExtendingType)) { - result[currExtendingType] = idx; - } - }); - }); - return result; - }, []); - /** - * @returns {number} - The chosen alternative index - */ - return function () { - var nextToken = this.LA(1); - return choiceToAlt_1[nextToken.tokenTypeIdx]; - }; - } - else { - // optimized lookahead without needing to check the predicates at all. - // this causes code duplication which is intentional to improve performance. - /** - * @returns {number} - The chosen alternative index - */ - return function () { - for (var t = 0; t < numOfAlts; t++) { - var currAlt = alts[t]; - var currNumOfPaths = currAlt.length; - nextPath: for (var j = 0; j < currNumOfPaths; j++) { - var currPath = currAlt[j]; - var currPathLength = currPath.length; - for (var i = 0; i < currPathLength; i++) { - var nextToken = this.LA(i + 1); - if (tokenMatcher(nextToken, currPath[i]) === false) { - // mismatch in current path - // try the next pth - continue nextPath; - } - } - // found a full path that matches. - // this will also work for an empty ALT as the loop will be skipped - return t; - } - // none of the paths for the current alternative matched - // try the next alternative - } - // none of the alternatives could be matched - return undefined; - }; - } -} -function buildSingleAlternativeLookaheadFunction(alt, tokenMatcher, dynamicTokensEnabled) { - var areAllOneTokenLookahead = every(alt, function (currPath) { - return currPath.length === 1; - }); - var numOfPaths = alt.length; - // optimized (common) case of all the lookaheads paths requiring only - // a single token lookahead. - if (areAllOneTokenLookahead && !dynamicTokensEnabled) { - var singleTokensTypes = flatten(alt); - if (singleTokensTypes.length === 1 && - isEmpty(singleTokensTypes[0].categoryMatches)) { - var expectedTokenType = singleTokensTypes[0]; - var expectedTokenUniqueKey_1 = expectedTokenType.tokenTypeIdx; - return function () { - return this.LA(1).tokenTypeIdx === expectedTokenUniqueKey_1; - }; - } - else { - var choiceToAlt_2 = reduce(singleTokensTypes, function (result, currTokType, idx) { - result[currTokType.tokenTypeIdx] = true; - forEach(currTokType.categoryMatches, function (currExtendingType) { - result[currExtendingType] = true; - }); - return result; - }, []); - return function () { - var nextToken = this.LA(1); - return choiceToAlt_2[nextToken.tokenTypeIdx] === true; - }; - } - } - else { - return function () { - nextPath: for (var j = 0; j < numOfPaths; j++) { - var currPath = alt[j]; - var currPathLength = currPath.length; - for (var i = 0; i < currPathLength; i++) { - var nextToken = this.LA(i + 1); - if (tokenMatcher(nextToken, currPath[i]) === false) { - // mismatch in current path - // try the next pth - continue nextPath; - } - } - // found a full path that matches. - return true; - } - // none of the paths matched - return false; - }; - } -} -var RestDefinitionFinderWalker = /** @class */ (function (_super) { - __extends$3(RestDefinitionFinderWalker, _super); - function RestDefinitionFinderWalker(topProd, targetOccurrence, targetProdType) { - var _this = _super.call(this) || this; - _this.topProd = topProd; - _this.targetOccurrence = targetOccurrence; - _this.targetProdType = targetProdType; - return _this; - } - RestDefinitionFinderWalker.prototype.startWalking = function () { - this.walk(this.topProd); - return this.restDef; - }; - RestDefinitionFinderWalker.prototype.checkIsTarget = function (node, expectedProdType, currRest, prevRest) { - if (node.idx === this.targetOccurrence && - this.targetProdType === expectedProdType) { - this.restDef = currRest.concat(prevRest); - return true; - } - // performance optimization, do not iterate over the entire Grammar ast after we have found the target - return false; - }; - RestDefinitionFinderWalker.prototype.walkOption = function (optionProd, currRest, prevRest) { - if (!this.checkIsTarget(optionProd, PROD_TYPE.OPTION, currRest, prevRest)) { - _super.prototype.walkOption.call(this, optionProd, currRest, prevRest); - } - }; - RestDefinitionFinderWalker.prototype.walkAtLeastOne = function (atLeastOneProd, currRest, prevRest) { - if (!this.checkIsTarget(atLeastOneProd, PROD_TYPE.REPETITION_MANDATORY, currRest, prevRest)) { - _super.prototype.walkOption.call(this, atLeastOneProd, currRest, prevRest); - } - }; - RestDefinitionFinderWalker.prototype.walkAtLeastOneSep = function (atLeastOneSepProd, currRest, prevRest) { - if (!this.checkIsTarget(atLeastOneSepProd, PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR, currRest, prevRest)) { - _super.prototype.walkOption.call(this, atLeastOneSepProd, currRest, prevRest); - } - }; - RestDefinitionFinderWalker.prototype.walkMany = function (manyProd, currRest, prevRest) { - if (!this.checkIsTarget(manyProd, PROD_TYPE.REPETITION, currRest, prevRest)) { - _super.prototype.walkOption.call(this, manyProd, currRest, prevRest); - } - }; - RestDefinitionFinderWalker.prototype.walkManySep = function (manySepProd, currRest, prevRest) { - if (!this.checkIsTarget(manySepProd, PROD_TYPE.REPETITION_WITH_SEPARATOR, currRest, prevRest)) { - _super.prototype.walkOption.call(this, manySepProd, currRest, prevRest); - } - }; - return RestDefinitionFinderWalker; -}(RestWalker)); -/** - * Returns the definition of a target production in a top level level rule. - */ -var InsideDefinitionFinderVisitor = /** @class */ (function (_super) { - __extends$3(InsideDefinitionFinderVisitor, _super); - function InsideDefinitionFinderVisitor(targetOccurrence, targetProdType, targetRef) { - var _this = _super.call(this) || this; - _this.targetOccurrence = targetOccurrence; - _this.targetProdType = targetProdType; - _this.targetRef = targetRef; - _this.result = []; - return _this; - } - InsideDefinitionFinderVisitor.prototype.checkIsTarget = function (node, expectedProdName) { - if (node.idx === this.targetOccurrence && - this.targetProdType === expectedProdName && - (this.targetRef === undefined || node === this.targetRef)) { - this.result = node.definition; - } - }; - InsideDefinitionFinderVisitor.prototype.visitOption = function (node) { - this.checkIsTarget(node, PROD_TYPE.OPTION); - }; - InsideDefinitionFinderVisitor.prototype.visitRepetition = function (node) { - this.checkIsTarget(node, PROD_TYPE.REPETITION); - }; - InsideDefinitionFinderVisitor.prototype.visitRepetitionMandatory = function (node) { - this.checkIsTarget(node, PROD_TYPE.REPETITION_MANDATORY); - }; - InsideDefinitionFinderVisitor.prototype.visitRepetitionMandatoryWithSeparator = function (node) { - this.checkIsTarget(node, PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR); - }; - InsideDefinitionFinderVisitor.prototype.visitRepetitionWithSeparator = function (node) { - this.checkIsTarget(node, PROD_TYPE.REPETITION_WITH_SEPARATOR); - }; - InsideDefinitionFinderVisitor.prototype.visitAlternation = function (node) { - this.checkIsTarget(node, PROD_TYPE.ALTERNATION); - }; - return InsideDefinitionFinderVisitor; -}(GAstVisitor)); -function initializeArrayOfArrays(size) { - var result = new Array(size); - for (var i = 0; i < size; i++) { - result[i] = []; - } - return result; -} -/** - * A sort of hash function between a Path in the grammar and a string. - * Note that this returns multiple "hashes" to support the scenario of token categories. - * - A single path with categories may match multiple **actual** paths. - */ -function pathToHashKeys(path) { - var keys = [""]; - for (var i = 0; i < path.length; i++) { - var tokType = path[i]; - var longerKeys = []; - for (var j = 0; j < keys.length; j++) { - var currShorterKey = keys[j]; - longerKeys.push(currShorterKey + "_" + tokType.tokenTypeIdx); - for (var t = 0; t < tokType.categoryMatches.length; t++) { - var categoriesKeySuffix = "_" + tokType.categoryMatches[t]; - longerKeys.push(currShorterKey + categoriesKeySuffix); - } - } - keys = longerKeys; - } - return keys; -} -/** - * Imperative style due to being called from a hot spot - */ -function isUniquePrefixHash(altKnownPathsKeys, searchPathKeys, idx) { - for (var currAltIdx = 0; currAltIdx < altKnownPathsKeys.length; currAltIdx++) { - // We only want to test vs the other alternatives - if (currAltIdx === idx) { - continue; - } - var otherAltKnownPathsKeys = altKnownPathsKeys[currAltIdx]; - for (var searchIdx = 0; searchIdx < searchPathKeys.length; searchIdx++) { - var searchKey = searchPathKeys[searchIdx]; - if (otherAltKnownPathsKeys[searchKey] === true) { - return false; - } - } - } - // None of the SearchPathKeys were found in any of the other alternatives - return true; -} -function lookAheadSequenceFromAlternatives(altsDefs, k) { - var partialAlts = map(altsDefs, function (currAlt) { return possiblePathsFrom([currAlt], 1); }); - var finalResult = initializeArrayOfArrays(partialAlts.length); - var altsHashes = map(partialAlts, function (currAltPaths) { - var dict = {}; - forEach(currAltPaths, function (item) { - var keys = pathToHashKeys(item.partialPath); - forEach(keys, function (currKey) { - dict[currKey] = true; - }); - }); - return dict; - }); - var newData = partialAlts; - // maxLookahead loop - for (var pathLength = 1; pathLength <= k; pathLength++) { - var currDataset = newData; - newData = initializeArrayOfArrays(currDataset.length); - var _loop_1 = function (altIdx) { - var currAltPathsAndSuffixes = currDataset[altIdx]; - // paths in current alternative loop - for (var currPathIdx = 0; currPathIdx < currAltPathsAndSuffixes.length; currPathIdx++) { - var currPathPrefix = currAltPathsAndSuffixes[currPathIdx].partialPath; - var suffixDef = currAltPathsAndSuffixes[currPathIdx].suffixDef; - var prefixKeys = pathToHashKeys(currPathPrefix); - var isUnique = isUniquePrefixHash(altsHashes, prefixKeys, altIdx); - // End of the line for this path. - if (isUnique || isEmpty(suffixDef) || currPathPrefix.length === k) { - var currAltResult = finalResult[altIdx]; - // TODO: Can we implement a containsPath using Maps/Dictionaries? - if (containsPath(currAltResult, currPathPrefix) === false) { - currAltResult.push(currPathPrefix); - // Update all new keys for the current path. - for (var j = 0; j < prefixKeys.length; j++) { - var currKey = prefixKeys[j]; - altsHashes[altIdx][currKey] = true; - } - } - } - // Expand longer paths - else { - var newPartialPathsAndSuffixes = possiblePathsFrom(suffixDef, pathLength + 1, currPathPrefix); - newData[altIdx] = newData[altIdx].concat(newPartialPathsAndSuffixes); - // Update keys for new known paths - forEach(newPartialPathsAndSuffixes, function (item) { - var prefixKeys = pathToHashKeys(item.partialPath); - forEach(prefixKeys, function (key) { - altsHashes[altIdx][key] = true; - }); - }); - } - } - }; - // alternatives loop - for (var altIdx = 0; altIdx < currDataset.length; altIdx++) { - _loop_1(altIdx); - } - } - return finalResult; -} -function getLookaheadPathsForOr(occurrence, ruleGrammar, k, orProd) { - var visitor = new InsideDefinitionFinderVisitor(occurrence, PROD_TYPE.ALTERNATION, orProd); - ruleGrammar.accept(visitor); - return lookAheadSequenceFromAlternatives(visitor.result, k); -} -function getLookaheadPathsForOptionalProd(occurrence, ruleGrammar, prodType, k) { - var insideDefVisitor = new InsideDefinitionFinderVisitor(occurrence, prodType); - ruleGrammar.accept(insideDefVisitor); - var insideDef = insideDefVisitor.result; - var afterDefWalker = new RestDefinitionFinderWalker(ruleGrammar, occurrence, prodType); - var afterDef = afterDefWalker.startWalking(); - var insideFlat = new Alternative({ definition: insideDef }); - var afterFlat = new Alternative({ definition: afterDef }); - return lookAheadSequenceFromAlternatives([insideFlat, afterFlat], k); -} -function containsPath(alternative, searchPath) { - compareOtherPath: for (var i = 0; i < alternative.length; i++) { - var otherPath = alternative[i]; - if (otherPath.length !== searchPath.length) { - continue; - } - for (var j = 0; j < otherPath.length; j++) { - var searchTok = searchPath[j]; - var otherTok = otherPath[j]; - var matchingTokens = searchTok === otherTok || - otherTok.categoryMatchesMap[searchTok.tokenTypeIdx] !== undefined; - if (matchingTokens === false) { - continue compareOtherPath; - } - } - return true; - } - return false; -} -function isStrictPrefixOfPath(prefix, other) { - return (prefix.length < other.length && - every(prefix, function (tokType, idx) { - var otherTokType = other[idx]; - return (tokType === otherTokType || - otherTokType.categoryMatchesMap[tokType.tokenTypeIdx]); - })); -} -function areTokenCategoriesNotUsed(lookAheadPaths) { - return every(lookAheadPaths, function (singleAltPaths) { - return every(singleAltPaths, function (singlePath) { - return every(singlePath, function (token) { return isEmpty(token.categoryMatches); }); - }); - }); -} - -var __extends$2 = (undefined && undefined.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -function validateGrammar$1(topLevels, globalMaxLookahead, tokenTypes, errMsgProvider, grammarName) { - var duplicateErrors = map(topLevels, function (currTopLevel) { - return validateDuplicateProductions(currTopLevel, errMsgProvider); - }); - var leftRecursionErrors = map(topLevels, function (currTopRule) { - return validateNoLeftRecursion(currTopRule, currTopRule, errMsgProvider); - }); - var emptyAltErrors = []; - var ambiguousAltsErrors = []; - var emptyRepetitionErrors = []; - // left recursion could cause infinite loops in the following validations. - // It is safest to first have the user fix the left recursion errors first and only then examine Further issues. - if (every(leftRecursionErrors, isEmpty)) { - emptyAltErrors = map(topLevels, function (currTopRule) { - return validateEmptyOrAlternative(currTopRule, errMsgProvider); - }); - ambiguousAltsErrors = map(topLevels, function (currTopRule) { - return validateAmbiguousAlternationAlternatives(currTopRule, globalMaxLookahead, errMsgProvider); - }); - emptyRepetitionErrors = validateSomeNonEmptyLookaheadPath(topLevels, globalMaxLookahead, errMsgProvider); - } - var termsNamespaceConflictErrors = checkTerminalAndNoneTerminalsNameSpace(topLevels, tokenTypes, errMsgProvider); - var tooManyAltsErrors = map(topLevels, function (curRule) { - return validateTooManyAlts(curRule, errMsgProvider); - }); - var duplicateRulesError = map(topLevels, function (curRule) { - return validateRuleDoesNotAlreadyExist(curRule, topLevels, grammarName, errMsgProvider); - }); - return (flatten(duplicateErrors.concat(emptyRepetitionErrors, leftRecursionErrors, emptyAltErrors, ambiguousAltsErrors, termsNamespaceConflictErrors, tooManyAltsErrors, duplicateRulesError))); -} -function validateDuplicateProductions(topLevelRule, errMsgProvider) { - var collectorVisitor = new OccurrenceValidationCollector(); - topLevelRule.accept(collectorVisitor); - var allRuleProductions = collectorVisitor.allProductions; - var productionGroups = groupBy(allRuleProductions, identifyProductionForDuplicates); - var duplicates = pick(productionGroups, function (currGroup) { - return currGroup.length > 1; - }); - var errors = map(values(duplicates), function (currDuplicates) { - var firstProd = first$1(currDuplicates); - var msg = errMsgProvider.buildDuplicateFoundError(topLevelRule, currDuplicates); - var dslName = getProductionDslName(firstProd); - var defError = { - message: msg, - type: ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS, - ruleName: topLevelRule.name, - dslName: dslName, - occurrence: firstProd.idx - }; - var param = getExtraProductionArgument(firstProd); - if (param) { - defError.parameter = param; - } - return defError; - }); - return errors; -} -function identifyProductionForDuplicates(prod) { - return getProductionDslName(prod) + "_#_" + prod.idx + "_#_" + getExtraProductionArgument(prod); -} -function getExtraProductionArgument(prod) { - if (prod instanceof Terminal) { - return prod.terminalType.name; - } - else if (prod instanceof NonTerminal) { - return prod.nonTerminalName; - } - else { - return ""; - } -} -var OccurrenceValidationCollector = /** @class */ (function (_super) { - __extends$2(OccurrenceValidationCollector, _super); - function OccurrenceValidationCollector() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.allProductions = []; - return _this; - } - OccurrenceValidationCollector.prototype.visitNonTerminal = function (subrule) { - this.allProductions.push(subrule); - }; - OccurrenceValidationCollector.prototype.visitOption = function (option) { - this.allProductions.push(option); - }; - OccurrenceValidationCollector.prototype.visitRepetitionWithSeparator = function (manySep) { - this.allProductions.push(manySep); - }; - OccurrenceValidationCollector.prototype.visitRepetitionMandatory = function (atLeastOne) { - this.allProductions.push(atLeastOne); - }; - OccurrenceValidationCollector.prototype.visitRepetitionMandatoryWithSeparator = function (atLeastOneSep) { - this.allProductions.push(atLeastOneSep); - }; - OccurrenceValidationCollector.prototype.visitRepetition = function (many) { - this.allProductions.push(many); - }; - OccurrenceValidationCollector.prototype.visitAlternation = function (or) { - this.allProductions.push(or); - }; - OccurrenceValidationCollector.prototype.visitTerminal = function (terminal) { - this.allProductions.push(terminal); - }; - return OccurrenceValidationCollector; -}(GAstVisitor)); -function validateRuleDoesNotAlreadyExist(rule, allRules, className, errMsgProvider) { - var errors = []; - var occurrences = reduce(allRules, function (result, curRule) { - if (curRule.name === rule.name) { - return result + 1; - } - return result; - }, 0); - if (occurrences > 1) { - var errMsg = errMsgProvider.buildDuplicateRuleNameError({ - topLevelRule: rule, - grammarName: className - }); - errors.push({ - message: errMsg, - type: ParserDefinitionErrorType.DUPLICATE_RULE_NAME, - ruleName: rule.name - }); - } - return errors; -} -// TODO: is there anyway to get only the rule names of rules inherited from the super grammars? -// This is not part of the IGrammarErrorProvider because the validation cannot be performed on -// The grammar structure, only at runtime. -function validateRuleIsOverridden(ruleName, definedRulesNames, className) { - var errors = []; - var errMsg; - if (!contains(definedRulesNames, ruleName)) { - errMsg = - "Invalid rule override, rule: ->" + ruleName + "<- cannot be overridden in the grammar: ->" + className + "<-" + - "as it is not defined in any of the super grammars "; - errors.push({ - message: errMsg, - type: ParserDefinitionErrorType.INVALID_RULE_OVERRIDE, - ruleName: ruleName - }); - } - return errors; -} -function validateNoLeftRecursion(topRule, currRule, errMsgProvider, path) { - if (path === void 0) { path = []; } - var errors = []; - var nextNonTerminals = getFirstNoneTerminal(currRule.definition); - if (isEmpty(nextNonTerminals)) { - return []; - } - else { - var ruleName = topRule.name; - var foundLeftRecursion = contains(nextNonTerminals, topRule); - if (foundLeftRecursion) { - errors.push({ - message: errMsgProvider.buildLeftRecursionError({ - topLevelRule: topRule, - leftRecursionPath: path - }), - type: ParserDefinitionErrorType.LEFT_RECURSION, - ruleName: ruleName - }); - } - // we are only looking for cyclic paths leading back to the specific topRule - // other cyclic paths are ignored, we still need this difference to avoid infinite loops... - var validNextSteps = difference(nextNonTerminals, path.concat([topRule])); - var errorsFromNextSteps = map(validNextSteps, function (currRefRule) { - var newPath = cloneArr(path); - newPath.push(currRefRule); - return validateNoLeftRecursion(topRule, currRefRule, errMsgProvider, newPath); - }); - return errors.concat(flatten(errorsFromNextSteps)); - } -} -function getFirstNoneTerminal(definition) { - var result = []; - if (isEmpty(definition)) { - return result; - } - var firstProd = first$1(definition); - /* istanbul ignore else */ - if (firstProd instanceof NonTerminal) { - result.push(firstProd.referencedRule); - } - else if (firstProd instanceof Alternative || - firstProd instanceof Option || - firstProd instanceof RepetitionMandatory || - firstProd instanceof RepetitionMandatoryWithSeparator || - firstProd instanceof RepetitionWithSeparator || - firstProd instanceof Repetition) { - result = result.concat(getFirstNoneTerminal(firstProd.definition)); - } - else if (firstProd instanceof Alternation) { - // each sub definition in alternation is a FLAT - result = flatten(map(firstProd.definition, function (currSubDef) { - return getFirstNoneTerminal(currSubDef.definition); - })); - } - else if (firstProd instanceof Terminal) ; - else { - throw Error("non exhaustive match"); - } - var isFirstOptional = isOptionalProd(firstProd); - var hasMore = definition.length > 1; - if (isFirstOptional && hasMore) { - var rest = drop(definition); - return result.concat(getFirstNoneTerminal(rest)); - } - else { - return result; - } -} -var OrCollector = /** @class */ (function (_super) { - __extends$2(OrCollector, _super); - function OrCollector() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.alternations = []; - return _this; - } - OrCollector.prototype.visitAlternation = function (node) { - this.alternations.push(node); - }; - return OrCollector; -}(GAstVisitor)); -function validateEmptyOrAlternative(topLevelRule, errMsgProvider) { - var orCollector = new OrCollector(); - topLevelRule.accept(orCollector); - var ors = orCollector.alternations; - var errors = reduce(ors, function (errors, currOr) { - var exceptLast = dropRight(currOr.definition); - var currErrors = map(exceptLast, function (currAlternative, currAltIdx) { - var possibleFirstInAlt = nextPossibleTokensAfter([currAlternative], [], null, 1); - if (isEmpty(possibleFirstInAlt)) { - return { - message: errMsgProvider.buildEmptyAlternationError({ - topLevelRule: topLevelRule, - alternation: currOr, - emptyChoiceIdx: currAltIdx - }), - type: ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT, - ruleName: topLevelRule.name, - occurrence: currOr.idx, - alternative: currAltIdx + 1 - }; - } - else { - return null; - } - }); - return errors.concat(compact(currErrors)); - }, []); - return errors; -} -function validateAmbiguousAlternationAlternatives(topLevelRule, globalMaxLookahead, errMsgProvider) { - var orCollector = new OrCollector(); - topLevelRule.accept(orCollector); - var ors = orCollector.alternations; - // New Handling of ignoring ambiguities - // - https://github.com/SAP/chevrotain/issues/869 - ors = reject(ors, function (currOr) { return currOr.ignoreAmbiguities === true; }); - var errors = reduce(ors, function (result, currOr) { - var currOccurrence = currOr.idx; - var actualMaxLookahead = currOr.maxLookahead || globalMaxLookahead; - var alternatives = getLookaheadPathsForOr(currOccurrence, topLevelRule, actualMaxLookahead, currOr); - var altsAmbiguityErrors = checkAlternativesAmbiguities(alternatives, currOr, topLevelRule, errMsgProvider); - var altsPrefixAmbiguityErrors = checkPrefixAlternativesAmbiguities(alternatives, currOr, topLevelRule, errMsgProvider); - return result.concat(altsAmbiguityErrors, altsPrefixAmbiguityErrors); - }, []); - return errors; -} -var RepetionCollector = /** @class */ (function (_super) { - __extends$2(RepetionCollector, _super); - function RepetionCollector() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.allProductions = []; - return _this; - } - RepetionCollector.prototype.visitRepetitionWithSeparator = function (manySep) { - this.allProductions.push(manySep); - }; - RepetionCollector.prototype.visitRepetitionMandatory = function (atLeastOne) { - this.allProductions.push(atLeastOne); - }; - RepetionCollector.prototype.visitRepetitionMandatoryWithSeparator = function (atLeastOneSep) { - this.allProductions.push(atLeastOneSep); - }; - RepetionCollector.prototype.visitRepetition = function (many) { - this.allProductions.push(many); - }; - return RepetionCollector; -}(GAstVisitor)); -function validateTooManyAlts(topLevelRule, errMsgProvider) { - var orCollector = new OrCollector(); - topLevelRule.accept(orCollector); - var ors = orCollector.alternations; - var errors = reduce(ors, function (errors, currOr) { - if (currOr.definition.length > 255) { - errors.push({ - message: errMsgProvider.buildTooManyAlternativesError({ - topLevelRule: topLevelRule, - alternation: currOr - }), - type: ParserDefinitionErrorType.TOO_MANY_ALTS, - ruleName: topLevelRule.name, - occurrence: currOr.idx - }); - } - return errors; - }, []); - return errors; -} -function validateSomeNonEmptyLookaheadPath(topLevelRules, maxLookahead, errMsgProvider) { - var errors = []; - forEach(topLevelRules, function (currTopRule) { - var collectorVisitor = new RepetionCollector(); - currTopRule.accept(collectorVisitor); - var allRuleProductions = collectorVisitor.allProductions; - forEach(allRuleProductions, function (currProd) { - var prodType = getProdType(currProd); - var actualMaxLookahead = currProd.maxLookahead || maxLookahead; - var currOccurrence = currProd.idx; - var paths = getLookaheadPathsForOptionalProd(currOccurrence, currTopRule, prodType, actualMaxLookahead); - var pathsInsideProduction = paths[0]; - if (isEmpty(flatten(pathsInsideProduction))) { - var errMsg = errMsgProvider.buildEmptyRepetitionError({ - topLevelRule: currTopRule, - repetition: currProd - }); - errors.push({ - message: errMsg, - type: ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD, - ruleName: currTopRule.name - }); - } - }); - }); - return errors; -} -function checkAlternativesAmbiguities(alternatives, alternation, rule, errMsgProvider) { - var foundAmbiguousPaths = []; - var identicalAmbiguities = reduce(alternatives, function (result, currAlt, currAltIdx) { - // ignore (skip) ambiguities with this alternative - if (alternation.definition[currAltIdx].ignoreAmbiguities === true) { - return result; - } - forEach(currAlt, function (currPath) { - var altsCurrPathAppearsIn = [currAltIdx]; - forEach(alternatives, function (currOtherAlt, currOtherAltIdx) { - if (currAltIdx !== currOtherAltIdx && - containsPath(currOtherAlt, currPath) && - // ignore (skip) ambiguities with this "other" alternative - alternation.definition[currOtherAltIdx].ignoreAmbiguities !== true) { - altsCurrPathAppearsIn.push(currOtherAltIdx); - } - }); - if (altsCurrPathAppearsIn.length > 1 && - !containsPath(foundAmbiguousPaths, currPath)) { - foundAmbiguousPaths.push(currPath); - result.push({ - alts: altsCurrPathAppearsIn, - path: currPath - }); - } - }); - return result; - }, []); - var currErrors = map(identicalAmbiguities, function (currAmbDescriptor) { - var ambgIndices = map(currAmbDescriptor.alts, function (currAltIdx) { return currAltIdx + 1; }); - var currMessage = errMsgProvider.buildAlternationAmbiguityError({ - topLevelRule: rule, - alternation: alternation, - ambiguityIndices: ambgIndices, - prefixPath: currAmbDescriptor.path - }); - return { - message: currMessage, - type: ParserDefinitionErrorType.AMBIGUOUS_ALTS, - ruleName: rule.name, - occurrence: alternation.idx, - alternatives: [currAmbDescriptor.alts] - }; - }); - return currErrors; -} -function checkPrefixAlternativesAmbiguities(alternatives, alternation, rule, errMsgProvider) { - var errors = []; - // flatten - var pathsAndIndices = reduce(alternatives, function (result, currAlt, idx) { - var currPathsAndIdx = map(currAlt, function (currPath) { - return { idx: idx, path: currPath }; - }); - return result.concat(currPathsAndIdx); - }, []); - forEach(pathsAndIndices, function (currPathAndIdx) { - var alternativeGast = alternation.definition[currPathAndIdx.idx]; - // ignore (skip) ambiguities with this alternative - if (alternativeGast.ignoreAmbiguities === true) { - return; - } - var targetIdx = currPathAndIdx.idx; - var targetPath = currPathAndIdx.path; - var prefixAmbiguitiesPathsAndIndices = findAll(pathsAndIndices, function (searchPathAndIdx) { - // prefix ambiguity can only be created from lower idx (higher priority) path - return ( - // ignore (skip) ambiguities with this "other" alternative - alternation.definition[searchPathAndIdx.idx].ignoreAmbiguities !== - true && - searchPathAndIdx.idx < targetIdx && - // checking for strict prefix because identical lookaheads - // will be be detected using a different validation. - isStrictPrefixOfPath(searchPathAndIdx.path, targetPath)); - }); - var currPathPrefixErrors = map(prefixAmbiguitiesPathsAndIndices, function (currAmbPathAndIdx) { - var ambgIndices = [currAmbPathAndIdx.idx + 1, targetIdx + 1]; - var occurrence = alternation.idx === 0 ? "" : alternation.idx; - var message = errMsgProvider.buildAlternationPrefixAmbiguityError({ - topLevelRule: rule, - alternation: alternation, - ambiguityIndices: ambgIndices, - prefixPath: currAmbPathAndIdx.path - }); - return { - message: message, - type: ParserDefinitionErrorType.AMBIGUOUS_PREFIX_ALTS, - ruleName: rule.name, - occurrence: occurrence, - alternatives: ambgIndices - }; - }); - errors = errors.concat(currPathPrefixErrors); - }); - return errors; -} -function checkTerminalAndNoneTerminalsNameSpace(topLevels, tokenTypes, errMsgProvider) { - var errors = []; - var tokenNames = map(tokenTypes, function (currToken) { return currToken.name; }); - forEach(topLevels, function (currRule) { - var currRuleName = currRule.name; - if (contains(tokenNames, currRuleName)) { - var errMsg = errMsgProvider.buildNamespaceConflictError(currRule); - errors.push({ - message: errMsg, - type: ParserDefinitionErrorType.CONFLICT_TOKENS_RULES_NAMESPACE, - ruleName: currRuleName - }); - } - }); - return errors; -} - -function resolveGrammar(options) { - options = defaults(options, { - errMsgProvider: defaultGrammarResolverErrorProvider - }); - var topRulesTable = {}; - forEach(options.rules, function (rule) { - topRulesTable[rule.name] = rule; - }); - return resolveGrammar$1(topRulesTable, options.errMsgProvider); -} -function validateGrammar(options) { - options = defaults(options, { - errMsgProvider: defaultGrammarValidatorErrorProvider - }); - return validateGrammar$1(options.rules, options.maxLookahead, options.tokenTypes, options.errMsgProvider, options.grammarName); -} -function assignOccurrenceIndices(options) { - forEach(options.rules, function (currRule) { - var methodsCollector = new DslMethodsCollectorVisitor(); - currRule.accept(methodsCollector); - forEach(methodsCollector.dslMethods, function (methods) { - forEach(methods, function (currMethod, arrIdx) { - currMethod.idx = arrIdx + 1; - }); - }); - }); -} - -var __extends$1 = (undefined && undefined.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var MISMATCHED_TOKEN_EXCEPTION = "MismatchedTokenException"; -var NO_VIABLE_ALT_EXCEPTION = "NoViableAltException"; -var EARLY_EXIT_EXCEPTION = "EarlyExitException"; -var NOT_ALL_INPUT_PARSED_EXCEPTION = "NotAllInputParsedException"; -var RECOGNITION_EXCEPTION_NAMES = [ - MISMATCHED_TOKEN_EXCEPTION, - NO_VIABLE_ALT_EXCEPTION, - EARLY_EXIT_EXCEPTION, - NOT_ALL_INPUT_PARSED_EXCEPTION -]; -Object.freeze(RECOGNITION_EXCEPTION_NAMES); -// hacks to bypass no support for custom Errors in javascript/typescript -function isRecognitionException(error) { - // can't do instanceof on hacked custom js exceptions - return contains(RECOGNITION_EXCEPTION_NAMES, error.name); -} -var RecognitionException = /** @class */ (function (_super) { - __extends$1(RecognitionException, _super); - function RecognitionException(message, token) { - var _newTarget = this.constructor; - var _this = _super.call(this, message) || this; - _this.token = token; - _this.resyncedTokens = []; - // fix prototype chain when typescript target is ES5 - Object.setPrototypeOf(_this, _newTarget.prototype); - /* istanbul ignore next - V8 workaround to remove constructor from stacktrace when typescript target is ES5 */ - if (Error.captureStackTrace) { - Error.captureStackTrace(_this, _this.constructor); - } - return _this; - } - return RecognitionException; -}(Error)); -var MismatchedTokenException = /** @class */ (function (_super) { - __extends$1(MismatchedTokenException, _super); - function MismatchedTokenException(message, token, previousToken) { - var _this = _super.call(this, message, token) || this; - _this.previousToken = previousToken; - _this.name = MISMATCHED_TOKEN_EXCEPTION; - return _this; - } - return MismatchedTokenException; -}(RecognitionException)); -var NoViableAltException = /** @class */ (function (_super) { - __extends$1(NoViableAltException, _super); - function NoViableAltException(message, token, previousToken) { - var _this = _super.call(this, message, token) || this; - _this.previousToken = previousToken; - _this.name = NO_VIABLE_ALT_EXCEPTION; - return _this; - } - return NoViableAltException; -}(RecognitionException)); -var NotAllInputParsedException = /** @class */ (function (_super) { - __extends$1(NotAllInputParsedException, _super); - function NotAllInputParsedException(message, token) { - var _this = _super.call(this, message, token) || this; - _this.name = NOT_ALL_INPUT_PARSED_EXCEPTION; - return _this; - } - return NotAllInputParsedException; -}(RecognitionException)); -var EarlyExitException = /** @class */ (function (_super) { - __extends$1(EarlyExitException, _super); - function EarlyExitException(message, token, previousToken) { - var _this = _super.call(this, message, token) || this; - _this.previousToken = previousToken; - _this.name = EARLY_EXIT_EXCEPTION; - return _this; - } - return EarlyExitException; -}(RecognitionException)); - -var EOF_FOLLOW_KEY = {}; -var IN_RULE_RECOVERY_EXCEPTION = "InRuleRecoveryException"; -function InRuleRecoveryException(message) { - this.name = IN_RULE_RECOVERY_EXCEPTION; - this.message = message; -} -InRuleRecoveryException.prototype = Error.prototype; -/** - * This trait is responsible for the error recovery and fault tolerant logic - */ -var Recoverable = /** @class */ (function () { - function Recoverable() { - } - Recoverable.prototype.initRecoverable = function (config) { - this.firstAfterRepMap = {}; - this.resyncFollows = {}; - this.recoveryEnabled = has(config, "recoveryEnabled") - ? config.recoveryEnabled - : DEFAULT_PARSER_CONFIG.recoveryEnabled; - // performance optimization, NOOP will be inlined which - // effectively means that this optional feature does not exist - // when not used. - if (this.recoveryEnabled) { - this.attemptInRepetitionRecovery = attemptInRepetitionRecovery; - } - }; - Recoverable.prototype.getTokenToInsert = function (tokType) { - var tokToInsert = createTokenInstance(tokType, "", NaN, NaN, NaN, NaN, NaN, NaN); - tokToInsert.isInsertedInRecovery = true; - return tokToInsert; - }; - Recoverable.prototype.canTokenTypeBeInsertedInRecovery = function (tokType) { - return true; - }; - Recoverable.prototype.tryInRepetitionRecovery = function (grammarRule, grammarRuleArgs, lookAheadFunc, expectedTokType) { - var _this = this; - // TODO: can the resyncTokenType be cached? - var reSyncTokType = this.findReSyncTokenType(); - var savedLexerState = this.exportLexerState(); - var resyncedTokens = []; - var passedResyncPoint = false; - var nextTokenWithoutResync = this.LA(1); - var currToken = this.LA(1); - var generateErrorMessage = function () { - var previousToken = _this.LA(0); - // we are preemptively re-syncing before an error has been detected, therefor we must reproduce - // the error that would have been thrown - var msg = _this.errorMessageProvider.buildMismatchTokenMessage({ - expected: expectedTokType, - actual: nextTokenWithoutResync, - previous: previousToken, - ruleName: _this.getCurrRuleFullName() - }); - var error = new MismatchedTokenException(msg, nextTokenWithoutResync, _this.LA(0)); - // the first token here will be the original cause of the error, this is not part of the resyncedTokens property. - error.resyncedTokens = dropRight(resyncedTokens); - _this.SAVE_ERROR(error); - }; - while (!passedResyncPoint) { - // re-synced to a point where we can safely exit the repetition/ - if (this.tokenMatcher(currToken, expectedTokType)) { - generateErrorMessage(); - return; // must return here to avoid reverting the inputIdx - } - else if (lookAheadFunc.call(this)) { - // we skipped enough tokens so we can resync right back into another iteration of the repetition grammar rule - generateErrorMessage(); - // recursive invocation in other to support multiple re-syncs in the same top level repetition grammar rule - grammarRule.apply(this, grammarRuleArgs); - return; // must return here to avoid reverting the inputIdx - } - else if (this.tokenMatcher(currToken, reSyncTokType)) { - passedResyncPoint = true; - } - else { - currToken = this.SKIP_TOKEN(); - this.addToResyncTokens(currToken, resyncedTokens); - } - } - // we were unable to find a CLOSER point to resync inside the Repetition, reset the state. - // The parsing exception we were trying to prevent will happen in the NEXT parsing step. it may be handled by - // "between rules" resync recovery later in the flow. - this.importLexerState(savedLexerState); - }; - Recoverable.prototype.shouldInRepetitionRecoveryBeTried = function (expectTokAfterLastMatch, nextTokIdx, notStuck) { - // Edge case of arriving from a MANY repetition which is stuck - // Attempting recovery in this case could cause an infinite loop - if (notStuck === false) { - return false; - } - // arguments to try and perform resync into the next iteration of the many are missing - if (expectTokAfterLastMatch === undefined || nextTokIdx === undefined) { - return false; - } - // no need to recover, next token is what we expect... - if (this.tokenMatcher(this.LA(1), expectTokAfterLastMatch)) { - return false; - } - // error recovery is disabled during backtracking as it can make the parser ignore a valid grammar path - // and prefer some backtracking path that includes recovered errors. - if (this.isBackTracking()) { - return false; - } - // if we can perform inRule recovery (single token insertion or deletion) we always prefer that recovery algorithm - // because if it works, it makes the least amount of changes to the input stream (greedy algorithm) - //noinspection RedundantIfStatementJS - if (this.canPerformInRuleRecovery(expectTokAfterLastMatch, this.getFollowsForInRuleRecovery(expectTokAfterLastMatch, nextTokIdx))) { - return false; - } - return true; - }; - // Error Recovery functionality - Recoverable.prototype.getFollowsForInRuleRecovery = function (tokType, tokIdxInRule) { - var grammarPath = this.getCurrentGrammarPath(tokType, tokIdxInRule); - var follows = this.getNextPossibleTokenTypes(grammarPath); - return follows; - }; - Recoverable.prototype.tryInRuleRecovery = function (expectedTokType, follows) { - if (this.canRecoverWithSingleTokenInsertion(expectedTokType, follows)) { - var tokToInsert = this.getTokenToInsert(expectedTokType); - return tokToInsert; - } - if (this.canRecoverWithSingleTokenDeletion(expectedTokType)) { - var nextTok = this.SKIP_TOKEN(); - this.consumeToken(); - return nextTok; - } - throw new InRuleRecoveryException("sad sad panda"); - }; - Recoverable.prototype.canPerformInRuleRecovery = function (expectedToken, follows) { - return (this.canRecoverWithSingleTokenInsertion(expectedToken, follows) || - this.canRecoverWithSingleTokenDeletion(expectedToken)); - }; - Recoverable.prototype.canRecoverWithSingleTokenInsertion = function (expectedTokType, follows) { - var _this = this; - if (!this.canTokenTypeBeInsertedInRecovery(expectedTokType)) { - return false; - } - // must know the possible following tokens to perform single token insertion - if (isEmpty(follows)) { - return false; - } - var mismatchedTok = this.LA(1); - var isMisMatchedTokInFollows = find(follows, function (possibleFollowsTokType) { - return _this.tokenMatcher(mismatchedTok, possibleFollowsTokType); - }) !== undefined; - return isMisMatchedTokInFollows; - }; - Recoverable.prototype.canRecoverWithSingleTokenDeletion = function (expectedTokType) { - var isNextTokenWhatIsExpected = this.tokenMatcher(this.LA(2), expectedTokType); - return isNextTokenWhatIsExpected; - }; - Recoverable.prototype.isInCurrentRuleReSyncSet = function (tokenTypeIdx) { - var followKey = this.getCurrFollowKey(); - var currentRuleReSyncSet = this.getFollowSetFromFollowKey(followKey); - return contains(currentRuleReSyncSet, tokenTypeIdx); - }; - Recoverable.prototype.findReSyncTokenType = function () { - var allPossibleReSyncTokTypes = this.flattenFollowSet(); - // this loop will always terminate as EOF is always in the follow stack and also always (virtually) in the input - var nextToken = this.LA(1); - var k = 2; - while (true) { - var nextTokenType = nextToken.tokenType; - if (contains(allPossibleReSyncTokTypes, nextTokenType)) { - return nextTokenType; - } - nextToken = this.LA(k); - k++; - } - }; - Recoverable.prototype.getCurrFollowKey = function () { - // the length is at least one as we always add the ruleName to the stack before invoking the rule. - if (this.RULE_STACK.length === 1) { - return EOF_FOLLOW_KEY; - } - var currRuleShortName = this.getLastExplicitRuleShortName(); - var currRuleIdx = this.getLastExplicitRuleOccurrenceIndex(); - var prevRuleShortName = this.getPreviousExplicitRuleShortName(); - return { - ruleName: this.shortRuleNameToFullName(currRuleShortName), - idxInCallingRule: currRuleIdx, - inRule: this.shortRuleNameToFullName(prevRuleShortName) - }; - }; - Recoverable.prototype.buildFullFollowKeyStack = function () { - var _this = this; - var explicitRuleStack = this.RULE_STACK; - var explicitOccurrenceStack = this.RULE_OCCURRENCE_STACK; - return map(explicitRuleStack, function (ruleName, idx) { - if (idx === 0) { - return EOF_FOLLOW_KEY; - } - return { - ruleName: _this.shortRuleNameToFullName(ruleName), - idxInCallingRule: explicitOccurrenceStack[idx], - inRule: _this.shortRuleNameToFullName(explicitRuleStack[idx - 1]) - }; - }); - }; - Recoverable.prototype.flattenFollowSet = function () { - var _this = this; - var followStack = map(this.buildFullFollowKeyStack(), function (currKey) { - return _this.getFollowSetFromFollowKey(currKey); - }); - return flatten(followStack); - }; - Recoverable.prototype.getFollowSetFromFollowKey = function (followKey) { - if (followKey === EOF_FOLLOW_KEY) { - return [EOF]; - } - var followName = followKey.ruleName + followKey.idxInCallingRule + IN + followKey.inRule; - return this.resyncFollows[followName]; - }; - // It does not make any sense to include a virtual EOF token in the list of resynced tokens - // as EOF does not really exist and thus does not contain any useful information (line/column numbers) - Recoverable.prototype.addToResyncTokens = function (token, resyncTokens) { - if (!this.tokenMatcher(token, EOF)) { - resyncTokens.push(token); - } - return resyncTokens; - }; - Recoverable.prototype.reSyncTo = function (tokType) { - var resyncedTokens = []; - var nextTok = this.LA(1); - while (this.tokenMatcher(nextTok, tokType) === false) { - nextTok = this.SKIP_TOKEN(); - this.addToResyncTokens(nextTok, resyncedTokens); - } - // the last token is not part of the error. - return dropRight(resyncedTokens); - }; - Recoverable.prototype.attemptInRepetitionRecovery = function (prodFunc, args, lookaheadFunc, dslMethodIdx, prodOccurrence, nextToksWalker, notStuck) { - // by default this is a NO-OP - // The actual implementation is with the function(not method) below - }; - Recoverable.prototype.getCurrentGrammarPath = function (tokType, tokIdxInRule) { - var pathRuleStack = this.getHumanReadableRuleStack(); - var pathOccurrenceStack = cloneArr(this.RULE_OCCURRENCE_STACK); - var grammarPath = { - ruleStack: pathRuleStack, - occurrenceStack: pathOccurrenceStack, - lastTok: tokType, - lastTokOccurrence: tokIdxInRule - }; - return grammarPath; - }; - Recoverable.prototype.getHumanReadableRuleStack = function () { - var _this = this; - return map(this.RULE_STACK, function (currShortName) { - return _this.shortRuleNameToFullName(currShortName); - }); - }; - return Recoverable; -}()); -function attemptInRepetitionRecovery(prodFunc, args, lookaheadFunc, dslMethodIdx, prodOccurrence, nextToksWalker, notStuck) { - var key = this.getKeyForAutomaticLookahead(dslMethodIdx, prodOccurrence); - var firstAfterRepInfo = this.firstAfterRepMap[key]; - if (firstAfterRepInfo === undefined) { - var currRuleName = this.getCurrRuleFullName(); - var ruleGrammar = this.getGAstProductions()[currRuleName]; - var walker = new nextToksWalker(ruleGrammar, prodOccurrence); - firstAfterRepInfo = walker.startWalking(); - this.firstAfterRepMap[key] = firstAfterRepInfo; - } - var expectTokAfterLastMatch = firstAfterRepInfo.token; - var nextTokIdx = firstAfterRepInfo.occurrence; - var isEndOfRule = firstAfterRepInfo.isEndOfRule; - // special edge case of a TOP most repetition after which the input should END. - // this will force an attempt for inRule recovery in that scenario. - if (this.RULE_STACK.length === 1 && - isEndOfRule && - expectTokAfterLastMatch === undefined) { - expectTokAfterLastMatch = EOF; - nextTokIdx = 1; - } - if (this.shouldInRepetitionRecoveryBeTried(expectTokAfterLastMatch, nextTokIdx, notStuck)) { - // TODO: performance optimization: instead of passing the original args here, we modify - // the args param (or create a new one) and make sure the lookahead func is explicitly provided - // to avoid searching the cache for it once more. - this.tryInRepetitionRecovery(prodFunc, args, lookaheadFunc, expectTokAfterLastMatch); - } -} - -// Lookahead keys are 32Bit integers in the form -// TTTTTTTT-ZZZZZZZZZZZZ-YYYY-XXXXXXXX -// XXXX -> Occurrence Index bitmap. -// YYYY -> DSL Method Type bitmap. -// ZZZZZZZZZZZZZZZ -> Rule short Index bitmap. -// TTTTTTTTT -> alternation alternative index bitmap -var BITS_FOR_METHOD_TYPE = 4; -var BITS_FOR_OCCURRENCE_IDX = 8; -// short string used as part of mapping keys. -// being short improves the performance when composing KEYS for maps out of these -// The 5 - 8 bits (16 possible values, are reserved for the DSL method indices) -/* tslint:disable */ -var OR_IDX = 1 << BITS_FOR_OCCURRENCE_IDX; -var OPTION_IDX = 2 << BITS_FOR_OCCURRENCE_IDX; -var MANY_IDX = 3 << BITS_FOR_OCCURRENCE_IDX; -var AT_LEAST_ONE_IDX = 4 << BITS_FOR_OCCURRENCE_IDX; -var MANY_SEP_IDX = 5 << BITS_FOR_OCCURRENCE_IDX; -var AT_LEAST_ONE_SEP_IDX = 6 << BITS_FOR_OCCURRENCE_IDX; -/* tslint:enable */ -// this actually returns a number, but it is always used as a string (object prop key) -function getKeyForAutomaticLookahead(ruleIdx, dslMethodIdx, occurrence) { - /* tslint:disable */ - return occurrence | dslMethodIdx | ruleIdx; - /* tslint:enable */ -} - -/** - * Trait responsible for the lookahead related utilities and optimizations. - */ -var LooksAhead = /** @class */ (function () { - function LooksAhead() { - } - LooksAhead.prototype.initLooksAhead = function (config) { - this.dynamicTokensEnabled = has(config, "dynamicTokensEnabled") - ? config.dynamicTokensEnabled - : DEFAULT_PARSER_CONFIG.dynamicTokensEnabled; - this.maxLookahead = has(config, "maxLookahead") - ? config.maxLookahead - : DEFAULT_PARSER_CONFIG.maxLookahead; - /* istanbul ignore next - Using plain array as dictionary will be tested on older node.js versions and IE11 */ - this.lookAheadFuncsCache = isES2015MapSupported() ? new Map() : []; - // Performance optimization on newer engines that support ES6 Map - // For larger Maps this is slightly faster than using a plain object (array in our case). - /* istanbul ignore else - The else branch will be tested on older node.js versions and IE11 */ - if (isES2015MapSupported()) { - this.getLaFuncFromCache = this.getLaFuncFromMap; - this.setLaFuncCache = this.setLaFuncCacheUsingMap; - } - else { - this.getLaFuncFromCache = this.getLaFuncFromObj; - this.setLaFuncCache = this.setLaFuncUsingObj; - } - }; - LooksAhead.prototype.preComputeLookaheadFunctions = function (rules) { - var _this = this; - forEach(rules, function (currRule) { - _this.TRACE_INIT(currRule.name + " Rule Lookahead", function () { - var _a = collectMethods(currRule), alternation = _a.alternation, repetition = _a.repetition, option = _a.option, repetitionMandatory = _a.repetitionMandatory, repetitionMandatoryWithSeparator = _a.repetitionMandatoryWithSeparator, repetitionWithSeparator = _a.repetitionWithSeparator; - forEach(alternation, function (currProd) { - var prodIdx = currProd.idx === 0 ? "" : currProd.idx; - _this.TRACE_INIT("" + getProductionDslName(currProd) + prodIdx, function () { - var laFunc = buildLookaheadFuncForOr(currProd.idx, currRule, currProd.maxLookahead || _this.maxLookahead, currProd.hasPredicates, _this.dynamicTokensEnabled, _this.lookAheadBuilderForAlternatives); - var key = getKeyForAutomaticLookahead(_this.fullRuleNameToShort[currRule.name], OR_IDX, currProd.idx); - _this.setLaFuncCache(key, laFunc); - }); - }); - forEach(repetition, function (currProd) { - _this.computeLookaheadFunc(currRule, currProd.idx, MANY_IDX, PROD_TYPE.REPETITION, currProd.maxLookahead, getProductionDslName(currProd)); - }); - forEach(option, function (currProd) { - _this.computeLookaheadFunc(currRule, currProd.idx, OPTION_IDX, PROD_TYPE.OPTION, currProd.maxLookahead, getProductionDslName(currProd)); - }); - forEach(repetitionMandatory, function (currProd) { - _this.computeLookaheadFunc(currRule, currProd.idx, AT_LEAST_ONE_IDX, PROD_TYPE.REPETITION_MANDATORY, currProd.maxLookahead, getProductionDslName(currProd)); - }); - forEach(repetitionMandatoryWithSeparator, function (currProd) { - _this.computeLookaheadFunc(currRule, currProd.idx, AT_LEAST_ONE_SEP_IDX, PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR, currProd.maxLookahead, getProductionDslName(currProd)); - }); - forEach(repetitionWithSeparator, function (currProd) { - _this.computeLookaheadFunc(currRule, currProd.idx, MANY_SEP_IDX, PROD_TYPE.REPETITION_WITH_SEPARATOR, currProd.maxLookahead, getProductionDslName(currProd)); - }); - }); - }); - }; - LooksAhead.prototype.computeLookaheadFunc = function (rule, prodOccurrence, prodKey, prodType, prodMaxLookahead, dslMethodName) { - var _this = this; - this.TRACE_INIT("" + dslMethodName + (prodOccurrence === 0 ? "" : prodOccurrence), function () { - var laFunc = buildLookaheadFuncForOptionalProd(prodOccurrence, rule, prodMaxLookahead || _this.maxLookahead, _this.dynamicTokensEnabled, prodType, _this.lookAheadBuilderForOptional); - var key = getKeyForAutomaticLookahead(_this.fullRuleNameToShort[rule.name], prodKey, prodOccurrence); - _this.setLaFuncCache(key, laFunc); - }); - }; - LooksAhead.prototype.lookAheadBuilderForOptional = function (alt, tokenMatcher, dynamicTokensEnabled) { - return buildSingleAlternativeLookaheadFunction(alt, tokenMatcher, dynamicTokensEnabled); - }; - LooksAhead.prototype.lookAheadBuilderForAlternatives = function (alts, hasPredicates, tokenMatcher, dynamicTokensEnabled) { - return buildAlternativesLookAheadFunc(alts, hasPredicates, tokenMatcher, dynamicTokensEnabled); - }; - // this actually returns a number, but it is always used as a string (object prop key) - LooksAhead.prototype.getKeyForAutomaticLookahead = function (dslMethodIdx, occurrence) { - var currRuleShortName = this.getLastExplicitRuleShortName(); - return getKeyForAutomaticLookahead(currRuleShortName, dslMethodIdx, occurrence); - }; - /* istanbul ignore next */ - LooksAhead.prototype.getLaFuncFromCache = function (key) { - return undefined; - }; - LooksAhead.prototype.getLaFuncFromMap = function (key) { - return this.lookAheadFuncsCache.get(key); - }; - /* istanbul ignore next - Using plain array as dictionary will be tested on older node.js versions and IE11 */ - LooksAhead.prototype.getLaFuncFromObj = function (key) { - return this.lookAheadFuncsCache[key]; - }; - /* istanbul ignore next */ - LooksAhead.prototype.setLaFuncCache = function (key, value) { }; - LooksAhead.prototype.setLaFuncCacheUsingMap = function (key, value) { - this.lookAheadFuncsCache.set(key, value); - }; - /* istanbul ignore next - Using plain array as dictionary will be tested on older node.js versions and IE11 */ - LooksAhead.prototype.setLaFuncUsingObj = function (key, value) { - this.lookAheadFuncsCache[key] = value; - }; - return LooksAhead; -}()); - -/** - * This nodeLocation tracking is not efficient and should only be used - * when error recovery is enabled or the Token Vector contains virtual Tokens - * (e.g, Python Indent/Outdent) - * As it executes the calculation for every single terminal/nonTerminal - * and does not rely on the fact the token vector is **sorted** - */ -function setNodeLocationOnlyOffset(currNodeLocation, newLocationInfo) { - // First (valid) update for this cst node - if (isNaN(currNodeLocation.startOffset) === true) { - // assumption1: Token location information is either NaN or a valid number - // assumption2: Token location information is fully valid if it exist - // (both start/end offsets exist and are numbers). - currNodeLocation.startOffset = newLocationInfo.startOffset; - currNodeLocation.endOffset = newLocationInfo.endOffset; - } - // Once the startOffset has been updated with a valid number it should never receive - // any farther updates as the Token vector is sorted. - // We still have to check this this condition for every new possible location info - // because with error recovery enabled we may encounter invalid tokens (NaN location props) - else if (currNodeLocation.endOffset < newLocationInfo.endOffset === true) { - currNodeLocation.endOffset = newLocationInfo.endOffset; - } -} -/** - * This nodeLocation tracking is not efficient and should only be used - * when error recovery is enabled or the Token Vector contains virtual Tokens - * (e.g, Python Indent/Outdent) - * As it executes the calculation for every single terminal/nonTerminal - * and does not rely on the fact the token vector is **sorted** - */ -function setNodeLocationFull(currNodeLocation, newLocationInfo) { - // First (valid) update for this cst node - if (isNaN(currNodeLocation.startOffset) === true) { - // assumption1: Token location information is either NaN or a valid number - // assumption2: Token location information is fully valid if it exist - // (all start/end props exist and are numbers). - currNodeLocation.startOffset = newLocationInfo.startOffset; - currNodeLocation.startColumn = newLocationInfo.startColumn; - currNodeLocation.startLine = newLocationInfo.startLine; - currNodeLocation.endOffset = newLocationInfo.endOffset; - currNodeLocation.endColumn = newLocationInfo.endColumn; - currNodeLocation.endLine = newLocationInfo.endLine; - } - // Once the start props has been updated with a valid number it should never receive - // any farther updates as the Token vector is sorted. - // We still have to check this this condition for every new possible location info - // because with error recovery enabled we may encounter invalid tokens (NaN location props) - else if (currNodeLocation.endOffset < newLocationInfo.endOffset === true) { - currNodeLocation.endOffset = newLocationInfo.endOffset; - currNodeLocation.endColumn = newLocationInfo.endColumn; - currNodeLocation.endLine = newLocationInfo.endLine; - } -} -function addTerminalToCst(node, token, tokenTypeName) { - if (node.children[tokenTypeName] === undefined) { - node.children[tokenTypeName] = [token]; - } - else { - node.children[tokenTypeName].push(token); - } -} -function addNoneTerminalToCst(node, ruleName, ruleResult) { - if (node.children[ruleName] === undefined) { - node.children[ruleName] = [ruleResult]; - } - else { - node.children[ruleName].push(ruleResult); - } -} - -function classNameFromInstance(instance) { - return functionName(instance.constructor); -} -var NAME = "name"; -/** - * Utility to obtain Function names. - * Note that there should not be an assumptions on the result of this function. - * E.g: When running from minified source code the result may be auto generated. - */ -function functionName(func) { - // Engines that support Function.prototype.name OR the nth (n>1) time after - // the name has been computed in the following else block. - var existingNameProp = func.name; - /* istanbul ignore else - too many hacks for IE/old versions of node.js here*/ - if (existingNameProp) { - return existingNameProp; - } - else { - return "anonymous"; - } -} -/** - * @returns {boolean} - has the property been successfully defined - */ -function defineNameProp(obj, nameValue) { - var namePropDescriptor = Object.getOwnPropertyDescriptor(obj, NAME); - /* istanbul ignore else -> will only run in old versions of node.js */ - if (isUndefined(namePropDescriptor) || namePropDescriptor.configurable) { - Object.defineProperty(obj, NAME, { - enumerable: false, - configurable: true, - writable: false, - value: nameValue - }); - return true; - } - /* istanbul ignore next -> will only run in old versions of node.js */ - return false; -} - -function defaultVisit(ctx, param) { - var childrenNames = keys(ctx); - var childrenNamesLength = childrenNames.length; - for (var i = 0; i < childrenNamesLength; i++) { - var currChildName = childrenNames[i]; - var currChildArray = ctx[currChildName]; - var currChildArrayLength = currChildArray.length; - for (var j = 0; j < currChildArrayLength; j++) { - var currChild = currChildArray[j]; - // distinction between Tokens Children and CstNode children - if (currChild.tokenTypeIdx === undefined) { - this[currChild.name](currChild.children, param); - } - } - } - // defaultVisit does not support generic out param - return undefined; -} -function createBaseSemanticVisitorConstructor(grammarName, ruleNames) { - var derivedConstructor = function () { }; - // can be overwritten according to: - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/ - // name?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FFunction%2Fname - defineNameProp(derivedConstructor, grammarName + "BaseSemantics"); - var semanticProto = { - visit: function (cstNode, param) { - // enables writing more concise visitor methods when CstNode has only a single child - if (isArray(cstNode)) { - // A CST Node's children dictionary can never have empty arrays as values - // If a key is defined there will be at least one element in the corresponding value array. - cstNode = cstNode[0]; - } - // enables passing optional CstNodes concisely. - if (isUndefined(cstNode)) { - return undefined; - } - return this[cstNode.name](cstNode.children, param); - }, - validateVisitor: function () { - var semanticDefinitionErrors = validateVisitor(this, ruleNames); - if (!isEmpty(semanticDefinitionErrors)) { - var errorMessages = map(semanticDefinitionErrors, function (currDefError) { return currDefError.msg; }); - throw Error("Errors Detected in CST Visitor <" + functionName(this.constructor) + ">:\n\t" + ("" + errorMessages.join("\n\n").replace(/\n/g, "\n\t"))); - } - } - }; - derivedConstructor.prototype = semanticProto; - derivedConstructor.prototype.constructor = derivedConstructor; - derivedConstructor._RULE_NAMES = ruleNames; - return derivedConstructor; -} -function createBaseVisitorConstructorWithDefaults(grammarName, ruleNames, baseConstructor) { - var derivedConstructor = function () { }; - // can be overwritten according to: - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/ - // name?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FFunction%2Fname - defineNameProp(derivedConstructor, grammarName + "BaseSemanticsWithDefaults"); - var withDefaultsProto = Object.create(baseConstructor.prototype); - forEach(ruleNames, function (ruleName) { - withDefaultsProto[ruleName] = defaultVisit; - }); - derivedConstructor.prototype = withDefaultsProto; - derivedConstructor.prototype.constructor = derivedConstructor; - return derivedConstructor; -} -var CstVisitorDefinitionError; -(function (CstVisitorDefinitionError) { - CstVisitorDefinitionError[CstVisitorDefinitionError["REDUNDANT_METHOD"] = 0] = "REDUNDANT_METHOD"; - CstVisitorDefinitionError[CstVisitorDefinitionError["MISSING_METHOD"] = 1] = "MISSING_METHOD"; -})(CstVisitorDefinitionError || (CstVisitorDefinitionError = {})); -function validateVisitor(visitorInstance, ruleNames) { - var missingErrors = validateMissingCstMethods(visitorInstance, ruleNames); - var redundantErrors = validateRedundantMethods(visitorInstance, ruleNames); - return missingErrors.concat(redundantErrors); -} -function validateMissingCstMethods(visitorInstance, ruleNames) { - var errors = map(ruleNames, function (currRuleName) { - if (!isFunction(visitorInstance[currRuleName])) { - return { - msg: "Missing visitor method: <" + currRuleName + "> on " + functionName(visitorInstance.constructor) + " CST Visitor.", - type: CstVisitorDefinitionError.MISSING_METHOD, - methodName: currRuleName - }; - } - }); - return compact(errors); -} -var VALID_PROP_NAMES = ["constructor", "visit", "validateVisitor"]; -function validateRedundantMethods(visitorInstance, ruleNames) { - var errors = []; - for (var prop in visitorInstance) { - if (isFunction(visitorInstance[prop]) && - !contains(VALID_PROP_NAMES, prop) && - !contains(ruleNames, prop)) { - errors.push({ - msg: "Redundant visitor method: <" + prop + "> on " + functionName(visitorInstance.constructor) + " CST Visitor\n" + - "There is no Grammar Rule corresponding to this method's name.\n", - type: CstVisitorDefinitionError.REDUNDANT_METHOD, - methodName: prop - }); - } - } - return errors; -} - -/** - * This trait is responsible for the CST building logic. - */ -var TreeBuilder = /** @class */ (function () { - function TreeBuilder() { - } - TreeBuilder.prototype.initTreeBuilder = function (config) { - this.CST_STACK = []; - // outputCst is no longer exposed/defined in the pubic API - this.outputCst = config.outputCst; - this.nodeLocationTracking = has(config, "nodeLocationTracking") - ? config.nodeLocationTracking - : DEFAULT_PARSER_CONFIG.nodeLocationTracking; - if (!this.outputCst) { - this.cstInvocationStateUpdate = NOOP; - this.cstFinallyStateUpdate = NOOP; - this.cstPostTerminal = NOOP; - this.cstPostNonTerminal = NOOP; - this.cstPostRule = NOOP; - } - else { - if (/full/i.test(this.nodeLocationTracking)) { - if (this.recoveryEnabled) { - this.setNodeLocationFromToken = setNodeLocationFull; - this.setNodeLocationFromNode = setNodeLocationFull; - this.cstPostRule = NOOP; - this.setInitialNodeLocation = this.setInitialNodeLocationFullRecovery; - } - else { - this.setNodeLocationFromToken = NOOP; - this.setNodeLocationFromNode = NOOP; - this.cstPostRule = this.cstPostRuleFull; - this.setInitialNodeLocation = this.setInitialNodeLocationFullRegular; - } - } - else if (/onlyOffset/i.test(this.nodeLocationTracking)) { - if (this.recoveryEnabled) { - this.setNodeLocationFromToken = setNodeLocationOnlyOffset; - this.setNodeLocationFromNode = setNodeLocationOnlyOffset; - this.cstPostRule = NOOP; - this.setInitialNodeLocation = this.setInitialNodeLocationOnlyOffsetRecovery; - } - else { - this.setNodeLocationFromToken = NOOP; - this.setNodeLocationFromNode = NOOP; - this.cstPostRule = this.cstPostRuleOnlyOffset; - this.setInitialNodeLocation = this.setInitialNodeLocationOnlyOffsetRegular; - } - } - else if (/none/i.test(this.nodeLocationTracking)) { - this.setNodeLocationFromToken = NOOP; - this.setNodeLocationFromNode = NOOP; - this.cstPostRule = NOOP; - this.setInitialNodeLocation = NOOP; - } - else { - throw Error("Invalid <nodeLocationTracking> config option: \"" + config.nodeLocationTracking + "\""); - } - } - }; - TreeBuilder.prototype.setInitialNodeLocationOnlyOffsetRecovery = function (cstNode) { - cstNode.location = { - startOffset: NaN, - endOffset: NaN - }; - }; - TreeBuilder.prototype.setInitialNodeLocationOnlyOffsetRegular = function (cstNode) { - cstNode.location = { - // without error recovery the starting Location of a new CstNode is guaranteed - // To be the next Token's startOffset (for valid inputs). - // For invalid inputs there won't be any CSTOutput so this potential - // inaccuracy does not matter - startOffset: this.LA(1).startOffset, - endOffset: NaN - }; - }; - TreeBuilder.prototype.setInitialNodeLocationFullRecovery = function (cstNode) { - cstNode.location = { - startOffset: NaN, - startLine: NaN, - startColumn: NaN, - endOffset: NaN, - endLine: NaN, - endColumn: NaN - }; - }; - /** - * @see setInitialNodeLocationOnlyOffsetRegular for explanation why this work - - * @param cstNode - */ - TreeBuilder.prototype.setInitialNodeLocationFullRegular = function (cstNode) { - var nextToken = this.LA(1); - cstNode.location = { - startOffset: nextToken.startOffset, - startLine: nextToken.startLine, - startColumn: nextToken.startColumn, - endOffset: NaN, - endLine: NaN, - endColumn: NaN - }; - }; - TreeBuilder.prototype.cstInvocationStateUpdate = function (fullRuleName, shortName) { - var cstNode = { - name: fullRuleName, - children: {} - }; - this.setInitialNodeLocation(cstNode); - this.CST_STACK.push(cstNode); - }; - TreeBuilder.prototype.cstFinallyStateUpdate = function () { - this.CST_STACK.pop(); - }; - TreeBuilder.prototype.cstPostRuleFull = function (ruleCstNode) { - var prevToken = this.LA(0); - var loc = ruleCstNode.location; - // If this condition is true it means we consumed at least one Token - // In this CstNode. - if (loc.startOffset <= prevToken.startOffset === true) { - loc.endOffset = prevToken.endOffset; - loc.endLine = prevToken.endLine; - loc.endColumn = prevToken.endColumn; - } - // "empty" CstNode edge case - else { - loc.startOffset = NaN; - loc.startLine = NaN; - loc.startColumn = NaN; - } - }; - TreeBuilder.prototype.cstPostRuleOnlyOffset = function (ruleCstNode) { - var prevToken = this.LA(0); - var loc = ruleCstNode.location; - // If this condition is true it means we consumed at least one Token - // In this CstNode. - if (loc.startOffset <= prevToken.startOffset === true) { - loc.endOffset = prevToken.endOffset; - } - // "empty" CstNode edge case - else { - loc.startOffset = NaN; - } - }; - TreeBuilder.prototype.cstPostTerminal = function (key, consumedToken) { - var rootCst = this.CST_STACK[this.CST_STACK.length - 1]; - addTerminalToCst(rootCst, consumedToken, key); - // This is only used when **both** error recovery and CST Output are enabled. - this.setNodeLocationFromToken(rootCst.location, consumedToken); - }; - TreeBuilder.prototype.cstPostNonTerminal = function (ruleCstResult, ruleName) { - var preCstNode = this.CST_STACK[this.CST_STACK.length - 1]; - addNoneTerminalToCst(preCstNode, ruleName, ruleCstResult); - // This is only used when **both** error recovery and CST Output are enabled. - this.setNodeLocationFromNode(preCstNode.location, ruleCstResult.location); - }; - TreeBuilder.prototype.getBaseCstVisitorConstructor = function () { - if (isUndefined(this.baseCstVisitorConstructor)) { - var newBaseCstVisitorConstructor = createBaseSemanticVisitorConstructor(this.className, keys(this.gastProductionsCache)); - this.baseCstVisitorConstructor = newBaseCstVisitorConstructor; - return newBaseCstVisitorConstructor; - } - return this.baseCstVisitorConstructor; - }; - TreeBuilder.prototype.getBaseCstVisitorConstructorWithDefaults = function () { - if (isUndefined(this.baseCstVisitorWithDefaultsConstructor)) { - var newConstructor = createBaseVisitorConstructorWithDefaults(this.className, keys(this.gastProductionsCache), this.getBaseCstVisitorConstructor()); - this.baseCstVisitorWithDefaultsConstructor = newConstructor; - return newConstructor; - } - return this.baseCstVisitorWithDefaultsConstructor; - }; - TreeBuilder.prototype.getLastExplicitRuleShortName = function () { - var ruleStack = this.RULE_STACK; - return ruleStack[ruleStack.length - 1]; - }; - TreeBuilder.prototype.getPreviousExplicitRuleShortName = function () { - var ruleStack = this.RULE_STACK; - return ruleStack[ruleStack.length - 2]; - }; - TreeBuilder.prototype.getLastExplicitRuleOccurrenceIndex = function () { - var occurrenceStack = this.RULE_OCCURRENCE_STACK; - return occurrenceStack[occurrenceStack.length - 1]; - }; - return TreeBuilder; -}()); - -/** - * Trait responsible abstracting over the interaction with Lexer output (Token vector). - * - * This could be generalized to support other kinds of lexers, e.g. - * - Just in Time Lexing / Lexer-Less parsing. - * - Streaming Lexer. - */ -var LexerAdapter = /** @class */ (function () { - function LexerAdapter() { - } - LexerAdapter.prototype.initLexerAdapter = function () { - this.tokVector = []; - this.tokVectorLength = 0; - this.currIdx = -1; - }; - Object.defineProperty(LexerAdapter.prototype, "input", { - get: function () { - return this.tokVector; - }, - set: function (newInput) { - // @ts-ignore - `this parameter` not supported in setters/getters - // - https://www.typescriptlang.org/docs/handbook/functions.html#this-parameters - if (this.selfAnalysisDone !== true) { - throw Error("Missing <performSelfAnalysis> invocation at the end of the Parser's constructor."); - } - // @ts-ignore - `this parameter` not supported in setters/getters - // - https://www.typescriptlang.org/docs/handbook/functions.html#this-parameters - this.reset(); - this.tokVector = newInput; - this.tokVectorLength = newInput.length; - }, - enumerable: false, - configurable: true - }); - // skips a token and returns the next token - LexerAdapter.prototype.SKIP_TOKEN = function () { - if (this.currIdx <= this.tokVector.length - 2) { - this.consumeToken(); - return this.LA(1); - } - else { - return END_OF_FILE; - } - }; - // Lexer (accessing Token vector) related methods which can be overridden to implement lazy lexers - // or lexers dependent on parser context. - LexerAdapter.prototype.LA = function (howMuch) { - var soughtIdx = this.currIdx + howMuch; - if (soughtIdx < 0 || this.tokVectorLength <= soughtIdx) { - return END_OF_FILE; - } - else { - return this.tokVector[soughtIdx]; - } - }; - LexerAdapter.prototype.consumeToken = function () { - this.currIdx++; - }; - LexerAdapter.prototype.exportLexerState = function () { - return this.currIdx; - }; - LexerAdapter.prototype.importLexerState = function (newState) { - this.currIdx = newState; - }; - LexerAdapter.prototype.resetLexerState = function () { - this.currIdx = -1; - }; - LexerAdapter.prototype.moveToTerminatedState = function () { - this.currIdx = this.tokVector.length - 1; - }; - LexerAdapter.prototype.getLexerPosition = function () { - return this.exportLexerState(); - }; - return LexerAdapter; -}()); - -/** - * This trait is responsible for implementing the public API - * for defining Chevrotain parsers, i.e: - * - CONSUME - * - RULE - * - OPTION - * - ... - */ -var RecognizerApi = /** @class */ (function () { - function RecognizerApi() { - } - RecognizerApi.prototype.ACTION = function (impl) { - return impl.call(this); - }; - RecognizerApi.prototype.consume = function (idx, tokType, options) { - return this.consumeInternal(tokType, idx, options); - }; - RecognizerApi.prototype.subrule = function (idx, ruleToCall, options) { - return this.subruleInternal(ruleToCall, idx, options); - }; - RecognizerApi.prototype.option = function (idx, actionORMethodDef) { - return this.optionInternal(actionORMethodDef, idx); - }; - RecognizerApi.prototype.or = function (idx, altsOrOpts) { - return this.orInternal(altsOrOpts, idx); - }; - RecognizerApi.prototype.many = function (idx, actionORMethodDef) { - return this.manyInternal(idx, actionORMethodDef); - }; - RecognizerApi.prototype.atLeastOne = function (idx, actionORMethodDef) { - return this.atLeastOneInternal(idx, actionORMethodDef); - }; - RecognizerApi.prototype.CONSUME = function (tokType, options) { - return this.consumeInternal(tokType, 0, options); - }; - RecognizerApi.prototype.CONSUME1 = function (tokType, options) { - return this.consumeInternal(tokType, 1, options); - }; - RecognizerApi.prototype.CONSUME2 = function (tokType, options) { - return this.consumeInternal(tokType, 2, options); - }; - RecognizerApi.prototype.CONSUME3 = function (tokType, options) { - return this.consumeInternal(tokType, 3, options); - }; - RecognizerApi.prototype.CONSUME4 = function (tokType, options) { - return this.consumeInternal(tokType, 4, options); - }; - RecognizerApi.prototype.CONSUME5 = function (tokType, options) { - return this.consumeInternal(tokType, 5, options); - }; - RecognizerApi.prototype.CONSUME6 = function (tokType, options) { - return this.consumeInternal(tokType, 6, options); - }; - RecognizerApi.prototype.CONSUME7 = function (tokType, options) { - return this.consumeInternal(tokType, 7, options); - }; - RecognizerApi.prototype.CONSUME8 = function (tokType, options) { - return this.consumeInternal(tokType, 8, options); - }; - RecognizerApi.prototype.CONSUME9 = function (tokType, options) { - return this.consumeInternal(tokType, 9, options); - }; - RecognizerApi.prototype.SUBRULE = function (ruleToCall, options) { - return this.subruleInternal(ruleToCall, 0, options); - }; - RecognizerApi.prototype.SUBRULE1 = function (ruleToCall, options) { - return this.subruleInternal(ruleToCall, 1, options); - }; - RecognizerApi.prototype.SUBRULE2 = function (ruleToCall, options) { - return this.subruleInternal(ruleToCall, 2, options); - }; - RecognizerApi.prototype.SUBRULE3 = function (ruleToCall, options) { - return this.subruleInternal(ruleToCall, 3, options); - }; - RecognizerApi.prototype.SUBRULE4 = function (ruleToCall, options) { - return this.subruleInternal(ruleToCall, 4, options); - }; - RecognizerApi.prototype.SUBRULE5 = function (ruleToCall, options) { - return this.subruleInternal(ruleToCall, 5, options); - }; - RecognizerApi.prototype.SUBRULE6 = function (ruleToCall, options) { - return this.subruleInternal(ruleToCall, 6, options); - }; - RecognizerApi.prototype.SUBRULE7 = function (ruleToCall, options) { - return this.subruleInternal(ruleToCall, 7, options); - }; - RecognizerApi.prototype.SUBRULE8 = function (ruleToCall, options) { - return this.subruleInternal(ruleToCall, 8, options); - }; - RecognizerApi.prototype.SUBRULE9 = function (ruleToCall, options) { - return this.subruleInternal(ruleToCall, 9, options); - }; - RecognizerApi.prototype.OPTION = function (actionORMethodDef) { - return this.optionInternal(actionORMethodDef, 0); - }; - RecognizerApi.prototype.OPTION1 = function (actionORMethodDef) { - return this.optionInternal(actionORMethodDef, 1); - }; - RecognizerApi.prototype.OPTION2 = function (actionORMethodDef) { - return this.optionInternal(actionORMethodDef, 2); - }; - RecognizerApi.prototype.OPTION3 = function (actionORMethodDef) { - return this.optionInternal(actionORMethodDef, 3); - }; - RecognizerApi.prototype.OPTION4 = function (actionORMethodDef) { - return this.optionInternal(actionORMethodDef, 4); - }; - RecognizerApi.prototype.OPTION5 = function (actionORMethodDef) { - return this.optionInternal(actionORMethodDef, 5); - }; - RecognizerApi.prototype.OPTION6 = function (actionORMethodDef) { - return this.optionInternal(actionORMethodDef, 6); - }; - RecognizerApi.prototype.OPTION7 = function (actionORMethodDef) { - return this.optionInternal(actionORMethodDef, 7); - }; - RecognizerApi.prototype.OPTION8 = function (actionORMethodDef) { - return this.optionInternal(actionORMethodDef, 8); - }; - RecognizerApi.prototype.OPTION9 = function (actionORMethodDef) { - return this.optionInternal(actionORMethodDef, 9); - }; - RecognizerApi.prototype.OR = function (altsOrOpts) { - return this.orInternal(altsOrOpts, 0); - }; - RecognizerApi.prototype.OR1 = function (altsOrOpts) { - return this.orInternal(altsOrOpts, 1); - }; - RecognizerApi.prototype.OR2 = function (altsOrOpts) { - return this.orInternal(altsOrOpts, 2); - }; - RecognizerApi.prototype.OR3 = function (altsOrOpts) { - return this.orInternal(altsOrOpts, 3); - }; - RecognizerApi.prototype.OR4 = function (altsOrOpts) { - return this.orInternal(altsOrOpts, 4); - }; - RecognizerApi.prototype.OR5 = function (altsOrOpts) { - return this.orInternal(altsOrOpts, 5); - }; - RecognizerApi.prototype.OR6 = function (altsOrOpts) { - return this.orInternal(altsOrOpts, 6); - }; - RecognizerApi.prototype.OR7 = function (altsOrOpts) { - return this.orInternal(altsOrOpts, 7); - }; - RecognizerApi.prototype.OR8 = function (altsOrOpts) { - return this.orInternal(altsOrOpts, 8); - }; - RecognizerApi.prototype.OR9 = function (altsOrOpts) { - return this.orInternal(altsOrOpts, 9); - }; - RecognizerApi.prototype.MANY = function (actionORMethodDef) { - this.manyInternal(0, actionORMethodDef); - }; - RecognizerApi.prototype.MANY1 = function (actionORMethodDef) { - this.manyInternal(1, actionORMethodDef); - }; - RecognizerApi.prototype.MANY2 = function (actionORMethodDef) { - this.manyInternal(2, actionORMethodDef); - }; - RecognizerApi.prototype.MANY3 = function (actionORMethodDef) { - this.manyInternal(3, actionORMethodDef); - }; - RecognizerApi.prototype.MANY4 = function (actionORMethodDef) { - this.manyInternal(4, actionORMethodDef); - }; - RecognizerApi.prototype.MANY5 = function (actionORMethodDef) { - this.manyInternal(5, actionORMethodDef); - }; - RecognizerApi.prototype.MANY6 = function (actionORMethodDef) { - this.manyInternal(6, actionORMethodDef); - }; - RecognizerApi.prototype.MANY7 = function (actionORMethodDef) { - this.manyInternal(7, actionORMethodDef); - }; - RecognizerApi.prototype.MANY8 = function (actionORMethodDef) { - this.manyInternal(8, actionORMethodDef); - }; - RecognizerApi.prototype.MANY9 = function (actionORMethodDef) { - this.manyInternal(9, actionORMethodDef); - }; - RecognizerApi.prototype.MANY_SEP = function (options) { - this.manySepFirstInternal(0, options); - }; - RecognizerApi.prototype.MANY_SEP1 = function (options) { - this.manySepFirstInternal(1, options); - }; - RecognizerApi.prototype.MANY_SEP2 = function (options) { - this.manySepFirstInternal(2, options); - }; - RecognizerApi.prototype.MANY_SEP3 = function (options) { - this.manySepFirstInternal(3, options); - }; - RecognizerApi.prototype.MANY_SEP4 = function (options) { - this.manySepFirstInternal(4, options); - }; - RecognizerApi.prototype.MANY_SEP5 = function (options) { - this.manySepFirstInternal(5, options); - }; - RecognizerApi.prototype.MANY_SEP6 = function (options) { - this.manySepFirstInternal(6, options); - }; - RecognizerApi.prototype.MANY_SEP7 = function (options) { - this.manySepFirstInternal(7, options); - }; - RecognizerApi.prototype.MANY_SEP8 = function (options) { - this.manySepFirstInternal(8, options); - }; - RecognizerApi.prototype.MANY_SEP9 = function (options) { - this.manySepFirstInternal(9, options); - }; - RecognizerApi.prototype.AT_LEAST_ONE = function (actionORMethodDef) { - this.atLeastOneInternal(0, actionORMethodDef); - }; - RecognizerApi.prototype.AT_LEAST_ONE1 = function (actionORMethodDef) { - return this.atLeastOneInternal(1, actionORMethodDef); - }; - RecognizerApi.prototype.AT_LEAST_ONE2 = function (actionORMethodDef) { - this.atLeastOneInternal(2, actionORMethodDef); - }; - RecognizerApi.prototype.AT_LEAST_ONE3 = function (actionORMethodDef) { - this.atLeastOneInternal(3, actionORMethodDef); - }; - RecognizerApi.prototype.AT_LEAST_ONE4 = function (actionORMethodDef) { - this.atLeastOneInternal(4, actionORMethodDef); - }; - RecognizerApi.prototype.AT_LEAST_ONE5 = function (actionORMethodDef) { - this.atLeastOneInternal(5, actionORMethodDef); - }; - RecognizerApi.prototype.AT_LEAST_ONE6 = function (actionORMethodDef) { - this.atLeastOneInternal(6, actionORMethodDef); - }; - RecognizerApi.prototype.AT_LEAST_ONE7 = function (actionORMethodDef) { - this.atLeastOneInternal(7, actionORMethodDef); - }; - RecognizerApi.prototype.AT_LEAST_ONE8 = function (actionORMethodDef) { - this.atLeastOneInternal(8, actionORMethodDef); - }; - RecognizerApi.prototype.AT_LEAST_ONE9 = function (actionORMethodDef) { - this.atLeastOneInternal(9, actionORMethodDef); - }; - RecognizerApi.prototype.AT_LEAST_ONE_SEP = function (options) { - this.atLeastOneSepFirstInternal(0, options); - }; - RecognizerApi.prototype.AT_LEAST_ONE_SEP1 = function (options) { - this.atLeastOneSepFirstInternal(1, options); - }; - RecognizerApi.prototype.AT_LEAST_ONE_SEP2 = function (options) { - this.atLeastOneSepFirstInternal(2, options); - }; - RecognizerApi.prototype.AT_LEAST_ONE_SEP3 = function (options) { - this.atLeastOneSepFirstInternal(3, options); - }; - RecognizerApi.prototype.AT_LEAST_ONE_SEP4 = function (options) { - this.atLeastOneSepFirstInternal(4, options); - }; - RecognizerApi.prototype.AT_LEAST_ONE_SEP5 = function (options) { - this.atLeastOneSepFirstInternal(5, options); - }; - RecognizerApi.prototype.AT_LEAST_ONE_SEP6 = function (options) { - this.atLeastOneSepFirstInternal(6, options); - }; - RecognizerApi.prototype.AT_LEAST_ONE_SEP7 = function (options) { - this.atLeastOneSepFirstInternal(7, options); - }; - RecognizerApi.prototype.AT_LEAST_ONE_SEP8 = function (options) { - this.atLeastOneSepFirstInternal(8, options); - }; - RecognizerApi.prototype.AT_LEAST_ONE_SEP9 = function (options) { - this.atLeastOneSepFirstInternal(9, options); - }; - RecognizerApi.prototype.RULE = function (name, implementation, config) { - if (config === void 0) { config = DEFAULT_RULE_CONFIG; } - if (contains(this.definedRulesNames, name)) { - var errMsg = defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({ - topLevelRule: name, - grammarName: this.className - }); - var error = { - message: errMsg, - type: ParserDefinitionErrorType.DUPLICATE_RULE_NAME, - ruleName: name - }; - this.definitionErrors.push(error); - } - this.definedRulesNames.push(name); - var ruleImplementation = this.defineRule(name, implementation, config); - this[name] = ruleImplementation; - return ruleImplementation; - }; - RecognizerApi.prototype.OVERRIDE_RULE = function (name, impl, config) { - if (config === void 0) { config = DEFAULT_RULE_CONFIG; } - var ruleErrors = []; - ruleErrors = ruleErrors.concat(validateRuleIsOverridden(name, this.definedRulesNames, this.className)); - this.definitionErrors.push.apply(this.definitionErrors, ruleErrors); // mutability for the win - var ruleImplementation = this.defineRule(name, impl, config); - this[name] = ruleImplementation; - return ruleImplementation; - }; - RecognizerApi.prototype.BACKTRACK = function (grammarRule, args) { - return function () { - // save org state - this.isBackTrackingStack.push(1); - var orgState = this.saveRecogState(); - try { - grammarRule.apply(this, args); - // if no exception was thrown we have succeed parsing the rule. - return true; - } - catch (e) { - if (isRecognitionException(e)) { - return false; - } - else { - throw e; - } - } - finally { - this.reloadRecogState(orgState); - this.isBackTrackingStack.pop(); - } - }; - }; - // GAST export APIs - RecognizerApi.prototype.getGAstProductions = function () { - return this.gastProductionsCache; - }; - RecognizerApi.prototype.getSerializedGastProductions = function () { - return serializeGrammar(values(this.gastProductionsCache)); - }; - return RecognizerApi; -}()); - -/** - * This trait is responsible for the runtime parsing engine - * Used by the official API (recognizer_api.ts) - */ -var RecognizerEngine = /** @class */ (function () { - function RecognizerEngine() { - } - RecognizerEngine.prototype.initRecognizerEngine = function (tokenVocabulary, config) { - this.className = classNameFromInstance(this); - // TODO: would using an ES6 Map or plain object be faster (CST building scenario) - this.shortRuleNameToFull = {}; - this.fullRuleNameToShort = {}; - this.ruleShortNameIdx = 256; - this.tokenMatcher = tokenStructuredMatcherNoCategories; - this.definedRulesNames = []; - this.tokensMap = {}; - this.isBackTrackingStack = []; - this.RULE_STACK = []; - this.RULE_OCCURRENCE_STACK = []; - this.gastProductionsCache = {}; - if (has(config, "serializedGrammar")) { - throw Error("The Parser's configuration can no longer contain a <serializedGrammar> property.\n" + - "\tSee: https://sap.github.io/chevrotain/docs/changes/BREAKING_CHANGES.html#_6-0-0\n" + - "\tFor Further details."); - } - if (isArray(tokenVocabulary)) { - // This only checks for Token vocabularies provided as arrays. - // That is good enough because the main objective is to detect users of pre-V4.0 APIs - // rather than all edge cases of empty Token vocabularies. - if (isEmpty(tokenVocabulary)) { - throw Error("A Token Vocabulary cannot be empty.\n" + - "\tNote that the first argument for the parser constructor\n" + - "\tis no longer a Token vector (since v4.0)."); - } - if (typeof tokenVocabulary[0].startOffset === "number") { - throw Error("The Parser constructor no longer accepts a token vector as the first argument.\n" + - "\tSee: https://sap.github.io/chevrotain/docs/changes/BREAKING_CHANGES.html#_4-0-0\n" + - "\tFor Further details."); - } - } - if (isArray(tokenVocabulary)) { - this.tokensMap = reduce(tokenVocabulary, function (acc, tokType) { - acc[tokType.name] = tokType; - return acc; - }, {}); - } - else if (has(tokenVocabulary, "modes") && - every(flatten(values(tokenVocabulary.modes)), isTokenType)) { - var allTokenTypes = flatten(values(tokenVocabulary.modes)); - var uniqueTokens = uniq(allTokenTypes); - this.tokensMap = reduce(uniqueTokens, function (acc, tokType) { - acc[tokType.name] = tokType; - return acc; - }, {}); - } - else if (isObject(tokenVocabulary)) { - this.tokensMap = cloneObj(tokenVocabulary); - } - else { - throw new Error("<tokensDictionary> argument must be An Array of Token constructors," + - " A dictionary of Token constructors or an IMultiModeLexerDefinition"); - } - // always add EOF to the tokenNames -> constructors map. it is useful to assure all the input has been - // parsed with a clear error message ("expecting EOF but found ...") - /* tslint:disable */ - this.tokensMap["EOF"] = EOF; - // TODO: This check may not be accurate for multi mode lexers - var noTokenCategoriesUsed = every(values(tokenVocabulary), function (tokenConstructor) { return isEmpty(tokenConstructor.categoryMatches); }); - this.tokenMatcher = noTokenCategoriesUsed - ? tokenStructuredMatcherNoCategories - : tokenStructuredMatcher; - // Because ES2015+ syntax should be supported for creating Token classes - // We cannot assume that the Token classes were created using the "extendToken" utilities - // Therefore we must augment the Token classes both on Lexer initialization and on Parser initialization - augmentTokenTypes(values(this.tokensMap)); - }; - RecognizerEngine.prototype.defineRule = function (ruleName, impl, config) { - if (this.selfAnalysisDone) { - throw Error("Grammar rule <" + ruleName + "> may not be defined after the 'performSelfAnalysis' method has been called'\n" + - "Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called."); - } - var resyncEnabled = has(config, "resyncEnabled") - ? config.resyncEnabled - : DEFAULT_RULE_CONFIG.resyncEnabled; - var recoveryValueFunc = has(config, "recoveryValueFunc") - ? config.recoveryValueFunc - : DEFAULT_RULE_CONFIG.recoveryValueFunc; - // performance optimization: Use small integers as keys for the longer human readable "full" rule names. - // this greatly improves Map access time (as much as 8% for some performance benchmarks). - /* tslint:disable */ - var shortName = this.ruleShortNameIdx << (BITS_FOR_METHOD_TYPE + BITS_FOR_OCCURRENCE_IDX); - /* tslint:enable */ - this.ruleShortNameIdx++; - this.shortRuleNameToFull[shortName] = ruleName; - this.fullRuleNameToShort[ruleName] = shortName; - function invokeRuleWithTry(args) { - try { - if (this.outputCst === true) { - impl.apply(this, args); - var cst = this.CST_STACK[this.CST_STACK.length - 1]; - this.cstPostRule(cst); - return cst; - } - else { - return impl.apply(this, args); - } - } - catch (e) { - return this.invokeRuleCatch(e, resyncEnabled, recoveryValueFunc); - } - finally { - this.ruleFinallyStateUpdate(); - } - } - var wrappedGrammarRule; - wrappedGrammarRule = function (idxInCallingRule, args) { - if (idxInCallingRule === void 0) { idxInCallingRule = 0; } - this.ruleInvocationStateUpdate(shortName, ruleName, idxInCallingRule); - return invokeRuleWithTry.call(this, args); - }; - var ruleNamePropName = "ruleName"; - wrappedGrammarRule[ruleNamePropName] = ruleName; - wrappedGrammarRule["originalGrammarAction"] = impl; - return wrappedGrammarRule; - }; - RecognizerEngine.prototype.invokeRuleCatch = function (e, resyncEnabledConfig, recoveryValueFunc) { - var isFirstInvokedRule = this.RULE_STACK.length === 1; - // note the reSync is always enabled for the first rule invocation, because we must always be able to - // reSync with EOF and just output some INVALID ParseTree - // during backtracking reSync recovery is disabled, otherwise we can't be certain the backtracking - // path is really the most valid one - var reSyncEnabled = resyncEnabledConfig && !this.isBackTracking() && this.recoveryEnabled; - if (isRecognitionException(e)) { - var recogError = e; - if (reSyncEnabled) { - var reSyncTokType = this.findReSyncTokenType(); - if (this.isInCurrentRuleReSyncSet(reSyncTokType)) { - recogError.resyncedTokens = this.reSyncTo(reSyncTokType); - if (this.outputCst) { - var partialCstResult = this.CST_STACK[this.CST_STACK.length - 1]; - partialCstResult.recoveredNode = true; - return partialCstResult; - } - else { - return recoveryValueFunc(); - } - } - else { - if (this.outputCst) { - var partialCstResult = this.CST_STACK[this.CST_STACK.length - 1]; - partialCstResult.recoveredNode = true; - recogError.partialCstResult = partialCstResult; - } - // to be handled Further up the call stack - throw recogError; - } - } - else if (isFirstInvokedRule) { - // otherwise a Redundant input error will be created as well and we cannot guarantee that this is indeed the case - this.moveToTerminatedState(); - // the parser should never throw one of its own errors outside its flow. - // even if error recovery is disabled - return recoveryValueFunc(); - } - else { - // to be recovered Further up the call stack - throw recogError; - } - } - else { - // some other Error type which we don't know how to handle (for example a built in JavaScript Error) - throw e; - } - }; - // Implementation of parsing DSL - RecognizerEngine.prototype.optionInternal = function (actionORMethodDef, occurrence) { - var key = this.getKeyForAutomaticLookahead(OPTION_IDX, occurrence); - return this.optionInternalLogic(actionORMethodDef, occurrence, key); - }; - RecognizerEngine.prototype.optionInternalLogic = function (actionORMethodDef, occurrence, key) { - var _this = this; - var lookAheadFunc = this.getLaFuncFromCache(key); - var action; - var predicate; - if (actionORMethodDef.DEF !== undefined) { - action = actionORMethodDef.DEF; - predicate = actionORMethodDef.GATE; - // predicate present - if (predicate !== undefined) { - var orgLookaheadFunction_1 = lookAheadFunc; - lookAheadFunc = function () { - return predicate.call(_this) && orgLookaheadFunction_1.call(_this); - }; - } - } - else { - action = actionORMethodDef; - } - if (lookAheadFunc.call(this) === true) { - return action.call(this); - } - return undefined; - }; - RecognizerEngine.prototype.atLeastOneInternal = function (prodOccurrence, actionORMethodDef) { - var laKey = this.getKeyForAutomaticLookahead(AT_LEAST_ONE_IDX, prodOccurrence); - return this.atLeastOneInternalLogic(prodOccurrence, actionORMethodDef, laKey); - }; - RecognizerEngine.prototype.atLeastOneInternalLogic = function (prodOccurrence, actionORMethodDef, key) { - var _this = this; - var lookAheadFunc = this.getLaFuncFromCache(key); - var action; - var predicate; - if (actionORMethodDef.DEF !== undefined) { - action = actionORMethodDef.DEF; - predicate = actionORMethodDef.GATE; - // predicate present - if (predicate !== undefined) { - var orgLookaheadFunction_2 = lookAheadFunc; - lookAheadFunc = function () { - return predicate.call(_this) && orgLookaheadFunction_2.call(_this); - }; - } - } - else { - action = actionORMethodDef; - } - if (lookAheadFunc.call(this) === true) { - var notStuck = this.doSingleRepetition(action); - while (lookAheadFunc.call(this) === true && - notStuck === true) { - notStuck = this.doSingleRepetition(action); - } - } - else { - throw this.raiseEarlyExitException(prodOccurrence, PROD_TYPE.REPETITION_MANDATORY, actionORMethodDef.ERR_MSG); - } - // note that while it may seem that this can cause an error because by using a recursive call to - // AT_LEAST_ONE we change the grammar to AT_LEAST_TWO, AT_LEAST_THREE ... , the possible recursive call - // from the tryInRepetitionRecovery(...) will only happen IFF there really are TWO/THREE/.... items. - // Performance optimization: "attemptInRepetitionRecovery" will be defined as NOOP unless recovery is enabled - this.attemptInRepetitionRecovery(this.atLeastOneInternal, [prodOccurrence, actionORMethodDef], lookAheadFunc, AT_LEAST_ONE_IDX, prodOccurrence, NextTerminalAfterAtLeastOneWalker); - }; - RecognizerEngine.prototype.atLeastOneSepFirstInternal = function (prodOccurrence, options) { - var laKey = this.getKeyForAutomaticLookahead(AT_LEAST_ONE_SEP_IDX, prodOccurrence); - this.atLeastOneSepFirstInternalLogic(prodOccurrence, options, laKey); - }; - RecognizerEngine.prototype.atLeastOneSepFirstInternalLogic = function (prodOccurrence, options, key) { - var _this = this; - var action = options.DEF; - var separator = options.SEP; - var firstIterationLookaheadFunc = this.getLaFuncFromCache(key); - // 1st iteration - if (firstIterationLookaheadFunc.call(this) === true) { - action.call(this); - // TODO: Optimization can move this function construction into "attemptInRepetitionRecovery" - // because it is only needed in error recovery scenarios. - var separatorLookAheadFunc = function () { - return _this.tokenMatcher(_this.LA(1), separator); - }; - // 2nd..nth iterations - while (this.tokenMatcher(this.LA(1), separator) === true) { - // note that this CONSUME will never enter recovery because - // the separatorLookAheadFunc checks that the separator really does exist. - this.CONSUME(separator); - action.call(this); - } - // Performance optimization: "attemptInRepetitionRecovery" will be defined as NOOP unless recovery is enabled - this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [ - prodOccurrence, - separator, - separatorLookAheadFunc, - action, - NextTerminalAfterAtLeastOneSepWalker - ], separatorLookAheadFunc, AT_LEAST_ONE_SEP_IDX, prodOccurrence, NextTerminalAfterAtLeastOneSepWalker); - } - else { - throw this.raiseEarlyExitException(prodOccurrence, PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR, options.ERR_MSG); - } - }; - RecognizerEngine.prototype.manyInternal = function (prodOccurrence, actionORMethodDef) { - var laKey = this.getKeyForAutomaticLookahead(MANY_IDX, prodOccurrence); - return this.manyInternalLogic(prodOccurrence, actionORMethodDef, laKey); - }; - RecognizerEngine.prototype.manyInternalLogic = function (prodOccurrence, actionORMethodDef, key) { - var _this = this; - var lookaheadFunction = this.getLaFuncFromCache(key); - var action; - var predicate; - if (actionORMethodDef.DEF !== undefined) { - action = actionORMethodDef.DEF; - predicate = actionORMethodDef.GATE; - // predicate present - if (predicate !== undefined) { - var orgLookaheadFunction_3 = lookaheadFunction; - lookaheadFunction = function () { - return predicate.call(_this) && orgLookaheadFunction_3.call(_this); - }; - } - } - else { - action = actionORMethodDef; - } - var notStuck = true; - while (lookaheadFunction.call(this) === true && notStuck === true) { - notStuck = this.doSingleRepetition(action); - } - // Performance optimization: "attemptInRepetitionRecovery" will be defined as NOOP unless recovery is enabled - this.attemptInRepetitionRecovery(this.manyInternal, [prodOccurrence, actionORMethodDef], lookaheadFunction, MANY_IDX, prodOccurrence, NextTerminalAfterManyWalker, - // The notStuck parameter is only relevant when "attemptInRepetitionRecovery" - // is invoked from manyInternal, in the MANY_SEP case and AT_LEAST_ONE[_SEP] - // An infinite loop cannot occur as: - // - Either the lookahead is guaranteed to consume something (Single Token Separator) - // - AT_LEAST_ONE by definition is guaranteed to consume something (or error out). - notStuck); - }; - RecognizerEngine.prototype.manySepFirstInternal = function (prodOccurrence, options) { - var laKey = this.getKeyForAutomaticLookahead(MANY_SEP_IDX, prodOccurrence); - this.manySepFirstInternalLogic(prodOccurrence, options, laKey); - }; - RecognizerEngine.prototype.manySepFirstInternalLogic = function (prodOccurrence, options, key) { - var _this = this; - var action = options.DEF; - var separator = options.SEP; - var firstIterationLaFunc = this.getLaFuncFromCache(key); - // 1st iteration - if (firstIterationLaFunc.call(this) === true) { - action.call(this); - var separatorLookAheadFunc = function () { - return _this.tokenMatcher(_this.LA(1), separator); - }; - // 2nd..nth iterations - while (this.tokenMatcher(this.LA(1), separator) === true) { - // note that this CONSUME will never enter recovery because - // the separatorLookAheadFunc checks that the separator really does exist. - this.CONSUME(separator); - // No need for checking infinite loop here due to consuming the separator. - action.call(this); - } - // Performance optimization: "attemptInRepetitionRecovery" will be defined as NOOP unless recovery is enabled - this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [ - prodOccurrence, - separator, - separatorLookAheadFunc, - action, - NextTerminalAfterManySepWalker - ], separatorLookAheadFunc, MANY_SEP_IDX, prodOccurrence, NextTerminalAfterManySepWalker); - } - }; - RecognizerEngine.prototype.repetitionSepSecondInternal = function (prodOccurrence, separator, separatorLookAheadFunc, action, nextTerminalAfterWalker) { - while (separatorLookAheadFunc()) { - // note that this CONSUME will never enter recovery because - // the separatorLookAheadFunc checks that the separator really does exist. - this.CONSUME(separator); - action.call(this); - } - // we can only arrive to this function after an error - // has occurred (hence the name 'second') so the following - // IF will always be entered, its possible to remove it... - // however it is kept to avoid confusion and be consistent. - // Performance optimization: "attemptInRepetitionRecovery" will be defined as NOOP unless recovery is enabled - /* istanbul ignore else */ - this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [ - prodOccurrence, - separator, - separatorLookAheadFunc, - action, - nextTerminalAfterWalker - ], separatorLookAheadFunc, AT_LEAST_ONE_SEP_IDX, prodOccurrence, nextTerminalAfterWalker); - }; - RecognizerEngine.prototype.doSingleRepetition = function (action) { - var beforeIteration = this.getLexerPosition(); - action.call(this); - var afterIteration = this.getLexerPosition(); - // This boolean will indicate if this repetition progressed - // or if we are "stuck" (potential infinite loop in the repetition). - return afterIteration > beforeIteration; - }; - RecognizerEngine.prototype.orInternal = function (altsOrOpts, occurrence) { - var laKey = this.getKeyForAutomaticLookahead(OR_IDX, occurrence); - var alts = isArray(altsOrOpts) - ? altsOrOpts - : altsOrOpts.DEF; - var laFunc = this.getLaFuncFromCache(laKey); - var altIdxToTake = laFunc.call(this, alts); - if (altIdxToTake !== undefined) { - var chosenAlternative = alts[altIdxToTake]; - return chosenAlternative.ALT.call(this); - } - this.raiseNoAltException(occurrence, altsOrOpts.ERR_MSG); - }; - RecognizerEngine.prototype.ruleFinallyStateUpdate = function () { - this.RULE_STACK.pop(); - this.RULE_OCCURRENCE_STACK.pop(); - // NOOP when cst is disabled - this.cstFinallyStateUpdate(); - if (this.RULE_STACK.length === 0 && this.isAtEndOfInput() === false) { - var firstRedundantTok = this.LA(1); - var errMsg = this.errorMessageProvider.buildNotAllInputParsedMessage({ - firstRedundant: firstRedundantTok, - ruleName: this.getCurrRuleFullName() - }); - this.SAVE_ERROR(new NotAllInputParsedException(errMsg, firstRedundantTok)); - } - }; - RecognizerEngine.prototype.subruleInternal = function (ruleToCall, idx, options) { - var ruleResult; - try { - var args = options !== undefined ? options.ARGS : undefined; - ruleResult = ruleToCall.call(this, idx, args); - this.cstPostNonTerminal(ruleResult, options !== undefined && options.LABEL !== undefined - ? options.LABEL - : ruleToCall.ruleName); - return ruleResult; - } - catch (e) { - this.subruleInternalError(e, options, ruleToCall.ruleName); - } - }; - RecognizerEngine.prototype.subruleInternalError = function (e, options, ruleName) { - if (isRecognitionException(e) && e.partialCstResult !== undefined) { - this.cstPostNonTerminal(e.partialCstResult, options !== undefined && options.LABEL !== undefined - ? options.LABEL - : ruleName); - delete e.partialCstResult; - } - throw e; - }; - RecognizerEngine.prototype.consumeInternal = function (tokType, idx, options) { - var consumedToken; - try { - var nextToken = this.LA(1); - if (this.tokenMatcher(nextToken, tokType) === true) { - this.consumeToken(); - consumedToken = nextToken; - } - else { - this.consumeInternalError(tokType, nextToken, options); - } - } - catch (eFromConsumption) { - consumedToken = this.consumeInternalRecovery(tokType, idx, eFromConsumption); - } - this.cstPostTerminal(options !== undefined && options.LABEL !== undefined - ? options.LABEL - : tokType.name, consumedToken); - return consumedToken; - }; - RecognizerEngine.prototype.consumeInternalError = function (tokType, nextToken, options) { - var msg; - var previousToken = this.LA(0); - if (options !== undefined && options.ERR_MSG) { - msg = options.ERR_MSG; - } - else { - msg = this.errorMessageProvider.buildMismatchTokenMessage({ - expected: tokType, - actual: nextToken, - previous: previousToken, - ruleName: this.getCurrRuleFullName() - }); - } - throw this.SAVE_ERROR(new MismatchedTokenException(msg, nextToken, previousToken)); - }; - RecognizerEngine.prototype.consumeInternalRecovery = function (tokType, idx, eFromConsumption) { - // no recovery allowed during backtracking, otherwise backtracking may recover invalid syntax and accept it - // but the original syntax could have been parsed successfully without any backtracking + recovery - if (this.recoveryEnabled && - // TODO: more robust checking of the exception type. Perhaps Typescript extending expressions? - eFromConsumption.name === "MismatchedTokenException" && - !this.isBackTracking()) { - var follows = this.getFollowsForInRuleRecovery(tokType, idx); - try { - return this.tryInRuleRecovery(tokType, follows); - } - catch (eFromInRuleRecovery) { - if (eFromInRuleRecovery.name === IN_RULE_RECOVERY_EXCEPTION) { - // failed in RuleRecovery. - // throw the original error in order to trigger reSync error recovery - throw eFromConsumption; - } - else { - throw eFromInRuleRecovery; - } - } - } - else { - throw eFromConsumption; - } - }; - RecognizerEngine.prototype.saveRecogState = function () { - // errors is a getter which will clone the errors array - var savedErrors = this.errors; - var savedRuleStack = cloneArr(this.RULE_STACK); - return { - errors: savedErrors, - lexerState: this.exportLexerState(), - RULE_STACK: savedRuleStack, - CST_STACK: this.CST_STACK - }; - }; - RecognizerEngine.prototype.reloadRecogState = function (newState) { - this.errors = newState.errors; - this.importLexerState(newState.lexerState); - this.RULE_STACK = newState.RULE_STACK; - }; - RecognizerEngine.prototype.ruleInvocationStateUpdate = function (shortName, fullName, idxInCallingRule) { - this.RULE_OCCURRENCE_STACK.push(idxInCallingRule); - this.RULE_STACK.push(shortName); - // NOOP when cst is disabled - this.cstInvocationStateUpdate(fullName, shortName); - }; - RecognizerEngine.prototype.isBackTracking = function () { - return this.isBackTrackingStack.length !== 0; - }; - RecognizerEngine.prototype.getCurrRuleFullName = function () { - var shortName = this.getLastExplicitRuleShortName(); - return this.shortRuleNameToFull[shortName]; - }; - RecognizerEngine.prototype.shortRuleNameToFullName = function (shortName) { - return this.shortRuleNameToFull[shortName]; - }; - RecognizerEngine.prototype.isAtEndOfInput = function () { - return this.tokenMatcher(this.LA(1), EOF); - }; - RecognizerEngine.prototype.reset = function () { - this.resetLexerState(); - this.isBackTrackingStack = []; - this.errors = []; - this.RULE_STACK = []; - // TODO: extract a specific reset for TreeBuilder trait - this.CST_STACK = []; - this.RULE_OCCURRENCE_STACK = []; - }; - return RecognizerEngine; -}()); - -/** - * Trait responsible for runtime parsing errors. - */ -var ErrorHandler = /** @class */ (function () { - function ErrorHandler() { - } - ErrorHandler.prototype.initErrorHandler = function (config) { - this._errors = []; - this.errorMessageProvider = has(config, "errorMessageProvider") - ? config.errorMessageProvider - : DEFAULT_PARSER_CONFIG.errorMessageProvider; - }; - ErrorHandler.prototype.SAVE_ERROR = function (error) { - if (isRecognitionException(error)) { - error.context = { - ruleStack: this.getHumanReadableRuleStack(), - ruleOccurrenceStack: cloneArr(this.RULE_OCCURRENCE_STACK) - }; - this._errors.push(error); - return error; - } - else { - throw Error("Trying to save an Error which is not a RecognitionException"); - } - }; - Object.defineProperty(ErrorHandler.prototype, "errors", { - get: function () { - return cloneArr(this._errors); - }, - set: function (newErrors) { - this._errors = newErrors; - }, - enumerable: false, - configurable: true - }); - // TODO: consider caching the error message computed information - ErrorHandler.prototype.raiseEarlyExitException = function (occurrence, prodType, userDefinedErrMsg) { - var ruleName = this.getCurrRuleFullName(); - var ruleGrammar = this.getGAstProductions()[ruleName]; - var lookAheadPathsPerAlternative = getLookaheadPathsForOptionalProd(occurrence, ruleGrammar, prodType, this.maxLookahead); - var insideProdPaths = lookAheadPathsPerAlternative[0]; - var actualTokens = []; - for (var i = 1; i <= this.maxLookahead; i++) { - actualTokens.push(this.LA(i)); - } - var msg = this.errorMessageProvider.buildEarlyExitMessage({ - expectedIterationPaths: insideProdPaths, - actual: actualTokens, - previous: this.LA(0), - customUserDescription: userDefinedErrMsg, - ruleName: ruleName - }); - throw this.SAVE_ERROR(new EarlyExitException(msg, this.LA(1), this.LA(0))); - }; - // TODO: consider caching the error message computed information - ErrorHandler.prototype.raiseNoAltException = function (occurrence, errMsgTypes) { - var ruleName = this.getCurrRuleFullName(); - var ruleGrammar = this.getGAstProductions()[ruleName]; - // TODO: getLookaheadPathsForOr can be slow for large enough maxLookahead and certain grammars, consider caching ? - var lookAheadPathsPerAlternative = getLookaheadPathsForOr(occurrence, ruleGrammar, this.maxLookahead); - var actualTokens = []; - for (var i = 1; i <= this.maxLookahead; i++) { - actualTokens.push(this.LA(i)); - } - var previousToken = this.LA(0); - var errMsg = this.errorMessageProvider.buildNoViableAltMessage({ - expectedPathsPerAlt: lookAheadPathsPerAlternative, - actual: actualTokens, - previous: previousToken, - customUserDescription: errMsgTypes, - ruleName: this.getCurrRuleFullName() - }); - throw this.SAVE_ERROR(new NoViableAltException(errMsg, this.LA(1), previousToken)); - }; - return ErrorHandler; -}()); - -var ContentAssist = /** @class */ (function () { - function ContentAssist() { - } - ContentAssist.prototype.initContentAssist = function () { }; - ContentAssist.prototype.computeContentAssist = function (startRuleName, precedingInput) { - var startRuleGast = this.gastProductionsCache[startRuleName]; - if (isUndefined(startRuleGast)) { - throw Error("Rule ->" + startRuleName + "<- does not exist in this grammar."); - } - return nextPossibleTokensAfter([startRuleGast], precedingInput, this.tokenMatcher, this.maxLookahead); - }; - // TODO: should this be a member method or a utility? it does not have any state or usage of 'this'... - // TODO: should this be more explicitly part of the public API? - ContentAssist.prototype.getNextPossibleTokenTypes = function (grammarPath) { - var topRuleName = first$1(grammarPath.ruleStack); - var gastProductions = this.getGAstProductions(); - var topProduction = gastProductions[topRuleName]; - var nextPossibleTokenTypes = new NextAfterTokenWalker(topProduction, grammarPath).startWalking(); - return nextPossibleTokenTypes; - }; - return ContentAssist; -}()); - -var RECORDING_NULL_OBJECT = { - description: "This Object indicates the Parser is during Recording Phase" -}; -Object.freeze(RECORDING_NULL_OBJECT); -var HANDLE_SEPARATOR = true; -var MAX_METHOD_IDX = Math.pow(2, BITS_FOR_OCCURRENCE_IDX) - 1; -var RFT = createToken$1({ name: "RECORDING_PHASE_TOKEN", pattern: Lexer$1.NA }); -augmentTokenTypes([RFT]); -var RECORDING_PHASE_TOKEN = createTokenInstance(RFT, "This IToken indicates the Parser is in Recording Phase\n\t" + - "" + - "See: https://sap.github.io/chevrotain/docs/guide/internals.html#grammar-recording for details", -// Using "-1" instead of NaN (as in EOF) because an actual number is less likely to -// cause errors if the output of LA or CONSUME would be (incorrectly) used during the recording phase. --1, -1, -1, -1, -1, -1); -Object.freeze(RECORDING_PHASE_TOKEN); -var RECORDING_PHASE_CSTNODE = { - name: "This CSTNode indicates the Parser is in Recording Phase\n\t" + - "See: https://sap.github.io/chevrotain/docs/guide/internals.html#grammar-recording for details", - children: {} -}; -/** - * This trait handles the creation of the GAST structure for Chevrotain Grammars - */ -var GastRecorder = /** @class */ (function () { - function GastRecorder() { - } - GastRecorder.prototype.initGastRecorder = function (config) { - this.recordingProdStack = []; - this.RECORDING_PHASE = false; - }; - GastRecorder.prototype.enableRecording = function () { - var _this = this; - this.RECORDING_PHASE = true; - this.TRACE_INIT("Enable Recording", function () { - var _loop_1 = function (i) { - var idx = i > 0 ? i : ""; - _this["CONSUME" + idx] = function (arg1, arg2) { - return this.consumeInternalRecord(arg1, i, arg2); - }; - _this["SUBRULE" + idx] = function (arg1, arg2) { - return this.subruleInternalRecord(arg1, i, arg2); - }; - _this["OPTION" + idx] = function (arg1) { - return this.optionInternalRecord(arg1, i); - }; - _this["OR" + idx] = function (arg1) { - return this.orInternalRecord(arg1, i); - }; - _this["MANY" + idx] = function (arg1) { - this.manyInternalRecord(i, arg1); - }; - _this["MANY_SEP" + idx] = function (arg1) { - this.manySepFirstInternalRecord(i, arg1); - }; - _this["AT_LEAST_ONE" + idx] = function (arg1) { - this.atLeastOneInternalRecord(i, arg1); - }; - _this["AT_LEAST_ONE_SEP" + idx] = function (arg1) { - this.atLeastOneSepFirstInternalRecord(i, arg1); - }; - }; - /** - * Warning Dark Voodoo Magic upcoming! - * We are "replacing" the public parsing DSL methods API - * With **new** alternative implementations on the Parser **instance** - * - * So far this is the only way I've found to avoid performance regressions during parsing time. - * - Approx 30% performance regression was measured on Chrome 75 Canary when attempting to replace the "internal" - * implementations directly instead. - */ - for (var i = 0; i < 10; i++) { - _loop_1(i); - } - // DSL methods with the idx(suffix) as an argument - _this["consume"] = function (idx, arg1, arg2) { - return this.consumeInternalRecord(arg1, idx, arg2); - }; - _this["subrule"] = function (idx, arg1, arg2) { - return this.subruleInternalRecord(arg1, idx, arg2); - }; - _this["option"] = function (idx, arg1) { - return this.optionInternalRecord(arg1, idx); - }; - _this["or"] = function (idx, arg1) { - return this.orInternalRecord(arg1, idx); - }; - _this["many"] = function (idx, arg1) { - this.manyInternalRecord(idx, arg1); - }; - _this["atLeastOne"] = function (idx, arg1) { - this.atLeastOneInternalRecord(idx, arg1); - }; - _this.ACTION = _this.ACTION_RECORD; - _this.BACKTRACK = _this.BACKTRACK_RECORD; - _this.LA = _this.LA_RECORD; - }); - }; - GastRecorder.prototype.disableRecording = function () { - var _this = this; - this.RECORDING_PHASE = false; - // By deleting these **instance** properties, any future invocation - // will be deferred to the original methods on the **prototype** object - // This seems to get rid of any incorrect optimizations that V8 may - // do during the recording phase. - this.TRACE_INIT("Deleting Recording methods", function () { - for (var i = 0; i < 10; i++) { - var idx = i > 0 ? i : ""; - delete _this["CONSUME" + idx]; - delete _this["SUBRULE" + idx]; - delete _this["OPTION" + idx]; - delete _this["OR" + idx]; - delete _this["MANY" + idx]; - delete _this["MANY_SEP" + idx]; - delete _this["AT_LEAST_ONE" + idx]; - delete _this["AT_LEAST_ONE_SEP" + idx]; - } - delete _this["consume"]; - delete _this["subrule"]; - delete _this["option"]; - delete _this["or"]; - delete _this["many"]; - delete _this["atLeastOne"]; - delete _this.ACTION; - delete _this.BACKTRACK; - delete _this.LA; - }); - }; - // TODO: is there any way to use this method to check no - // Parser methods are called inside an ACTION? - // Maybe try/catch/finally on ACTIONS while disabling the recorders state changes? - GastRecorder.prototype.ACTION_RECORD = function (impl) { - // NO-OP during recording - return; - }; - // Executing backtracking logic will break our recording logic assumptions - GastRecorder.prototype.BACKTRACK_RECORD = function (grammarRule, args) { - return function () { return true; }; - }; - // LA is part of the official API and may be used for custom lookahead logic - // by end users who may forget to wrap it in ACTION or inside a GATE - GastRecorder.prototype.LA_RECORD = function (howMuch) { - // We cannot use the RECORD_PHASE_TOKEN here because someone may depend - // On LA return EOF at the end of the input so an infinite loop may occur. - return END_OF_FILE; - }; - GastRecorder.prototype.topLevelRuleRecord = function (name, def) { - try { - var newTopLevelRule = new Rule({ definition: [], name: name }); - newTopLevelRule.name = name; - this.recordingProdStack.push(newTopLevelRule); - def.call(this); - this.recordingProdStack.pop(); - return newTopLevelRule; - } - catch (originalError) { - if (originalError.KNOWN_RECORDER_ERROR !== true) { - try { - originalError.message = - originalError.message + - '\n\t This error was thrown during the "grammar recording phase" For more info see:\n\t' + - "https://sap.github.io/chevrotain/docs/guide/internals.html#grammar-recording"; - } - catch (mutabilityError) { - // We may not be able to modify the original error object - throw originalError; - } - } - throw originalError; - } - }; - // Implementation of parsing DSL - GastRecorder.prototype.optionInternalRecord = function (actionORMethodDef, occurrence) { - return recordProd.call(this, Option, actionORMethodDef, occurrence); - }; - GastRecorder.prototype.atLeastOneInternalRecord = function (occurrence, actionORMethodDef) { - recordProd.call(this, RepetitionMandatory, actionORMethodDef, occurrence); - }; - GastRecorder.prototype.atLeastOneSepFirstInternalRecord = function (occurrence, options) { - recordProd.call(this, RepetitionMandatoryWithSeparator, options, occurrence, HANDLE_SEPARATOR); - }; - GastRecorder.prototype.manyInternalRecord = function (occurrence, actionORMethodDef) { - recordProd.call(this, Repetition, actionORMethodDef, occurrence); - }; - GastRecorder.prototype.manySepFirstInternalRecord = function (occurrence, options) { - recordProd.call(this, RepetitionWithSeparator, options, occurrence, HANDLE_SEPARATOR); - }; - GastRecorder.prototype.orInternalRecord = function (altsOrOpts, occurrence) { - return recordOrProd.call(this, altsOrOpts, occurrence); - }; - GastRecorder.prototype.subruleInternalRecord = function (ruleToCall, occurrence, options) { - assertMethodIdxIsValid(occurrence); - if (!ruleToCall || has(ruleToCall, "ruleName") === false) { - var error = new Error("<SUBRULE" + getIdxSuffix(occurrence) + "> argument is invalid" + - (" expecting a Parser method reference but got: <" + JSON.stringify(ruleToCall) + ">") + - ("\n inside top level rule: <" + this.recordingProdStack[0].name + ">")); - error.KNOWN_RECORDER_ERROR = true; - throw error; - } - var prevProd = peek(this.recordingProdStack); - var ruleName = ruleToCall["ruleName"]; - var newNoneTerminal = new NonTerminal({ - idx: occurrence, - nonTerminalName: ruleName, - // The resolving of the `referencedRule` property will be done once all the Rule's GASTs have been created - referencedRule: undefined - }); - prevProd.definition.push(newNoneTerminal); - return this.outputCst ? RECORDING_PHASE_CSTNODE : RECORDING_NULL_OBJECT; - }; - GastRecorder.prototype.consumeInternalRecord = function (tokType, occurrence, options) { - assertMethodIdxIsValid(occurrence); - if (!hasShortKeyProperty(tokType)) { - var error = new Error("<CONSUME" + getIdxSuffix(occurrence) + "> argument is invalid" + - (" expecting a TokenType reference but got: <" + JSON.stringify(tokType) + ">") + - ("\n inside top level rule: <" + this.recordingProdStack[0].name + ">")); - error.KNOWN_RECORDER_ERROR = true; - throw error; - } - var prevProd = peek(this.recordingProdStack); - var newNoneTerminal = new Terminal({ - idx: occurrence, - terminalType: tokType - }); - prevProd.definition.push(newNoneTerminal); - return RECORDING_PHASE_TOKEN; - }; - return GastRecorder; -}()); -function recordProd(prodConstructor, mainProdArg, occurrence, handleSep) { - if (handleSep === void 0) { handleSep = false; } - assertMethodIdxIsValid(occurrence); - var prevProd = peek(this.recordingProdStack); - var grammarAction = isFunction(mainProdArg) ? mainProdArg : mainProdArg.DEF; - var newProd = new prodConstructor({ definition: [], idx: occurrence }); - if (handleSep) { - newProd.separator = mainProdArg.SEP; - } - if (has(mainProdArg, "MAX_LOOKAHEAD")) { - newProd.maxLookahead = mainProdArg.MAX_LOOKAHEAD; - } - this.recordingProdStack.push(newProd); - grammarAction.call(this); - prevProd.definition.push(newProd); - this.recordingProdStack.pop(); - return RECORDING_NULL_OBJECT; -} -function recordOrProd(mainProdArg, occurrence) { - var _this = this; - assertMethodIdxIsValid(occurrence); - var prevProd = peek(this.recordingProdStack); - // Only an array of alternatives - var hasOptions = isArray(mainProdArg) === false; - var alts = hasOptions === false ? mainProdArg : mainProdArg.DEF; - var newOrProd = new Alternation({ - definition: [], - idx: occurrence, - ignoreAmbiguities: hasOptions && mainProdArg.IGNORE_AMBIGUITIES === true - }); - if (has(mainProdArg, "MAX_LOOKAHEAD")) { - newOrProd.maxLookahead = mainProdArg.MAX_LOOKAHEAD; - } - var hasPredicates = some(alts, function (currAlt) { return isFunction(currAlt.GATE); }); - newOrProd.hasPredicates = hasPredicates; - prevProd.definition.push(newOrProd); - forEach(alts, function (currAlt) { - var currAltFlat = new Alternative({ definition: [] }); - newOrProd.definition.push(currAltFlat); - if (has(currAlt, "IGNORE_AMBIGUITIES")) { - currAltFlat.ignoreAmbiguities = currAlt.IGNORE_AMBIGUITIES; - } - // **implicit** ignoreAmbiguities due to usage of gate - else if (has(currAlt, "GATE")) { - currAltFlat.ignoreAmbiguities = true; - } - _this.recordingProdStack.push(currAltFlat); - currAlt.ALT.call(_this); - _this.recordingProdStack.pop(); - }); - return RECORDING_NULL_OBJECT; -} -function getIdxSuffix(idx) { - return idx === 0 ? "" : "" + idx; -} -function assertMethodIdxIsValid(idx) { - if (idx < 0 || idx > MAX_METHOD_IDX) { - var error = new Error( - // The stack trace will contain all the needed details - "Invalid DSL Method idx value: <" + idx + ">\n\t" + - ("Idx value must be a none negative value smaller than " + (MAX_METHOD_IDX + 1))); - error.KNOWN_RECORDER_ERROR = true; - throw error; - } -} - -/** - * Trait responsible for runtime parsing errors. - */ -var PerformanceTracer = /** @class */ (function () { - function PerformanceTracer() { - } - PerformanceTracer.prototype.initPerformanceTracer = function (config) { - if (has(config, "traceInitPerf")) { - var userTraceInitPerf = config.traceInitPerf; - var traceIsNumber = typeof userTraceInitPerf === "number"; - this.traceInitMaxIdent = traceIsNumber - ? userTraceInitPerf - : Infinity; - this.traceInitPerf = traceIsNumber - ? userTraceInitPerf > 0 - : userTraceInitPerf; - } - else { - this.traceInitMaxIdent = 0; - this.traceInitPerf = DEFAULT_PARSER_CONFIG.traceInitPerf; - } - this.traceInitIndent = -1; - }; - PerformanceTracer.prototype.TRACE_INIT = function (phaseDesc, phaseImpl) { - // No need to optimize this using NOOP pattern because - // It is not called in a hot spot... - if (this.traceInitPerf === true) { - this.traceInitIndent++; - var indent = new Array(this.traceInitIndent + 1).join("\t"); - if (this.traceInitIndent < this.traceInitMaxIdent) { - console.log(indent + "--> <" + phaseDesc + ">"); - } - var _a = timer(phaseImpl), time = _a.time, value = _a.value; - /* istanbul ignore next - Difficult to reproduce specific performance behavior (>10ms) in tests */ - var traceMethod = time > 10 ? console.warn : console.log; - if (this.traceInitIndent < this.traceInitMaxIdent) { - traceMethod(indent + "<-- <" + phaseDesc + "> time: " + time + "ms"); - } - this.traceInitIndent--; - return value; - } - else { - return phaseImpl(); - } - }; - return PerformanceTracer; -}()); - -var __extends = (undefined && undefined.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var END_OF_FILE = createTokenInstance(EOF, "", NaN, NaN, NaN, NaN, NaN, NaN); -Object.freeze(END_OF_FILE); -var DEFAULT_PARSER_CONFIG = Object.freeze({ - recoveryEnabled: false, - maxLookahead: 3, - dynamicTokensEnabled: false, - outputCst: true, - errorMessageProvider: defaultParserErrorProvider, - nodeLocationTracking: "none", - traceInitPerf: false, - skipValidations: false -}); -var DEFAULT_RULE_CONFIG = Object.freeze({ - recoveryValueFunc: function () { return undefined; }, - resyncEnabled: true -}); -var ParserDefinitionErrorType; -(function (ParserDefinitionErrorType) { - ParserDefinitionErrorType[ParserDefinitionErrorType["INVALID_RULE_NAME"] = 0] = "INVALID_RULE_NAME"; - ParserDefinitionErrorType[ParserDefinitionErrorType["DUPLICATE_RULE_NAME"] = 1] = "DUPLICATE_RULE_NAME"; - ParserDefinitionErrorType[ParserDefinitionErrorType["INVALID_RULE_OVERRIDE"] = 2] = "INVALID_RULE_OVERRIDE"; - ParserDefinitionErrorType[ParserDefinitionErrorType["DUPLICATE_PRODUCTIONS"] = 3] = "DUPLICATE_PRODUCTIONS"; - ParserDefinitionErrorType[ParserDefinitionErrorType["UNRESOLVED_SUBRULE_REF"] = 4] = "UNRESOLVED_SUBRULE_REF"; - ParserDefinitionErrorType[ParserDefinitionErrorType["LEFT_RECURSION"] = 5] = "LEFT_RECURSION"; - ParserDefinitionErrorType[ParserDefinitionErrorType["NONE_LAST_EMPTY_ALT"] = 6] = "NONE_LAST_EMPTY_ALT"; - ParserDefinitionErrorType[ParserDefinitionErrorType["AMBIGUOUS_ALTS"] = 7] = "AMBIGUOUS_ALTS"; - ParserDefinitionErrorType[ParserDefinitionErrorType["CONFLICT_TOKENS_RULES_NAMESPACE"] = 8] = "CONFLICT_TOKENS_RULES_NAMESPACE"; - ParserDefinitionErrorType[ParserDefinitionErrorType["INVALID_TOKEN_NAME"] = 9] = "INVALID_TOKEN_NAME"; - ParserDefinitionErrorType[ParserDefinitionErrorType["NO_NON_EMPTY_LOOKAHEAD"] = 10] = "NO_NON_EMPTY_LOOKAHEAD"; - ParserDefinitionErrorType[ParserDefinitionErrorType["AMBIGUOUS_PREFIX_ALTS"] = 11] = "AMBIGUOUS_PREFIX_ALTS"; - ParserDefinitionErrorType[ParserDefinitionErrorType["TOO_MANY_ALTS"] = 12] = "TOO_MANY_ALTS"; -})(ParserDefinitionErrorType || (ParserDefinitionErrorType = {})); -function EMPTY_ALT(value) { - if (value === void 0) { value = undefined; } - return function () { - return value; - }; -} -var Parser$2 = /** @class */ (function () { - function Parser(tokenVocabulary, config) { - this.definitionErrors = []; - this.selfAnalysisDone = false; - var that = this; - that.initErrorHandler(config); - that.initLexerAdapter(); - that.initLooksAhead(config); - that.initRecognizerEngine(tokenVocabulary, config); - that.initRecoverable(config); - that.initTreeBuilder(config); - that.initContentAssist(); - that.initGastRecorder(config); - that.initPerformanceTracer(config); - if (has(config, "ignoredIssues")) { - throw new Error("The <ignoredIssues> IParserConfig property has been deprecated.\n\t" + - "Please use the <IGNORE_AMBIGUITIES> flag on the relevant DSL method instead.\n\t" + - "See: https://sap.github.io/chevrotain/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES\n\t" + - "For further details."); - } - this.skipValidations = has(config, "skipValidations") - ? config.skipValidations - : DEFAULT_PARSER_CONFIG.skipValidations; - } - /** - * @deprecated use the **instance** method with the same name instead - */ - Parser.performSelfAnalysis = function (parserInstance) { - throw Error("The **static** `performSelfAnalysis` method has been deprecated." + - "\t\nUse the **instance** method with the same name instead."); - }; - Parser.prototype.performSelfAnalysis = function () { - var _this = this; - this.TRACE_INIT("performSelfAnalysis", function () { - var defErrorsMsgs; - _this.selfAnalysisDone = true; - var className = _this.className; - _this.TRACE_INIT("toFastProps", function () { - // Without this voodoo magic the parser would be x3-x4 slower - // It seems it is better to invoke `toFastProperties` **before** - // Any manipulations of the `this` object done during the recording phase. - toFastProperties(_this); - }); - _this.TRACE_INIT("Grammar Recording", function () { - try { - _this.enableRecording(); - // Building the GAST - forEach(_this.definedRulesNames, function (currRuleName) { - var wrappedRule = _this[currRuleName]; - var originalGrammarAction = wrappedRule["originalGrammarAction"]; - var recordedRuleGast = undefined; - _this.TRACE_INIT(currRuleName + " Rule", function () { - recordedRuleGast = _this.topLevelRuleRecord(currRuleName, originalGrammarAction); - }); - _this.gastProductionsCache[currRuleName] = recordedRuleGast; - }); - } - finally { - _this.disableRecording(); - } - }); - var resolverErrors = []; - _this.TRACE_INIT("Grammar Resolving", function () { - resolverErrors = resolveGrammar({ - rules: values(_this.gastProductionsCache) - }); - _this.definitionErrors.push.apply(_this.definitionErrors, resolverErrors); // mutability for the win? - }); - _this.TRACE_INIT("Grammar Validations", function () { - // only perform additional grammar validations IFF no resolving errors have occurred. - // as unresolved grammar may lead to unhandled runtime exceptions in the follow up validations. - if (isEmpty(resolverErrors) && _this.skipValidations === false) { - var validationErrors = validateGrammar({ - rules: values(_this.gastProductionsCache), - maxLookahead: _this.maxLookahead, - tokenTypes: values(_this.tokensMap), - errMsgProvider: defaultGrammarValidatorErrorProvider, - grammarName: className - }); - _this.definitionErrors.push.apply(_this.definitionErrors, validationErrors); // mutability for the win? - } - }); - // this analysis may fail if the grammar is not perfectly valid - if (isEmpty(_this.definitionErrors)) { - // The results of these computations are not needed unless error recovery is enabled. - if (_this.recoveryEnabled) { - _this.TRACE_INIT("computeAllProdsFollows", function () { - var allFollows = computeAllProdsFollows(values(_this.gastProductionsCache)); - _this.resyncFollows = allFollows; - }); - } - _this.TRACE_INIT("ComputeLookaheadFunctions", function () { - _this.preComputeLookaheadFunctions(values(_this.gastProductionsCache)); - }); - } - if (!Parser.DEFER_DEFINITION_ERRORS_HANDLING && - !isEmpty(_this.definitionErrors)) { - defErrorsMsgs = map(_this.definitionErrors, function (defError) { return defError.message; }); - throw new Error("Parser Definition Errors detected:\n " + defErrorsMsgs.join("\n-------------------------------\n")); - } - }); - }; - // Set this flag to true if you don't want the Parser to throw error when problems in it's definition are detected. - // (normally during the parser's constructor). - // This is a design time flag, it will not affect the runtime error handling of the parser, just design time errors, - // for example: duplicate rule names, referencing an unresolved subrule, ect... - // This flag should not be enabled during normal usage, it is used in special situations, for example when - // needing to display the parser definition errors in some GUI(online playground). - Parser.DEFER_DEFINITION_ERRORS_HANDLING = false; - return Parser; -}()); -applyMixins(Parser$2, [ - Recoverable, - LooksAhead, - TreeBuilder, - LexerAdapter, - RecognizerEngine, - RecognizerApi, - ErrorHandler, - ContentAssist, - GastRecorder, - PerformanceTracer -]); -var CstParser$1 = /** @class */ (function (_super) { - __extends(CstParser, _super); - function CstParser(tokenVocabulary, config) { - if (config === void 0) { config = DEFAULT_PARSER_CONFIG; } - var _this = this; - var configClone = cloneObj(config); - configClone.outputCst = true; - _this = _super.call(this, tokenVocabulary, configClone) || this; - return _this; - } - return CstParser; -}(Parser$2)); -var EmbeddedActionsParser = /** @class */ (function (_super) { - __extends(EmbeddedActionsParser, _super); - function EmbeddedActionsParser(tokenVocabulary, config) { - if (config === void 0) { config = DEFAULT_PARSER_CONFIG; } - var _this = this; - var configClone = cloneObj(config); - configClone.outputCst = false; - _this = _super.call(this, tokenVocabulary, configClone) || this; - return _this; - } - return EmbeddedActionsParser; -}(Parser$2)); - -function createSyntaxDiagramsCode(grammar, _a) { - var _b = _a === void 0 ? {} : _a, _c = _b.resourceBase, resourceBase = _c === void 0 ? "https://unpkg.com/chevrotain@" + VERSION + "/diagrams/" : _c, _d = _b.css, css = _d === void 0 ? "https://unpkg.com/chevrotain@" + VERSION + "/diagrams/diagrams.css" : _d; - var header = "\n<!-- This is a generated file -->\n<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<style>\n body {\n background-color: hsl(30, 20%, 95%)\n }\n</style>\n\n"; - var cssHtml = "\n<link rel='stylesheet' href='" + css + "'>\n"; - var scripts = "\n<script src='" + resourceBase + "vendor/railroad-diagrams.js'></script>\n<script src='" + resourceBase + "src/diagrams_builder.js'></script>\n<script src='" + resourceBase + "src/diagrams_behavior.js'></script>\n<script src='" + resourceBase + "src/main.js'></script>\n"; - var diagramsDiv = "\n<div id=\"diagrams\" align=\"center\"></div> \n"; - var serializedGrammar = "\n<script>\n window.serializedGrammar = " + JSON.stringify(grammar, null, " ") + ";\n</script>\n"; - var initLogic = "\n<script>\n var diagramsDiv = document.getElementById(\"diagrams\");\n main.drawDiagramsFromSerializedGrammar(serializedGrammar, diagramsDiv);\n</script>\n"; - return (header + cssHtml + scripts + diagramsDiv + serializedGrammar + initLogic); -} - -/** - * Missing features - * 1. Rule arguments - * 2. Gates - * 3. embedded actions - */ -var NL = "\n"; -function genUmdModule(options) { - return "\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['chevrotain'], factory);\n } else if (typeof module === 'object' && module.exports) {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory(require('chevrotain'));\n } else {\n // Browser globals (root is window)\n root.returnExports = factory(root.b);\n }\n}(typeof self !== 'undefined' ? self : this, function (chevrotain) {\n\n" + genClass(options) + "\n \nreturn {\n " + options.name + ": " + options.name + " \n}\n}));\n"; -} -function genWrapperFunction(options) { - return " \n" + genClass(options) + "\nreturn new " + options.name + "(tokenVocabulary, config) \n"; -} -function genClass(options) { - // TODO: how to pass the token vocabulary? Constructor? other? - var result = "\nfunction " + options.name + "(tokenVocabulary, config) {\n // invoke super constructor\n // No support for embedded actions currently, so we can 'hardcode'\n // The use of CstParser.\n chevrotain.CstParser.call(this, tokenVocabulary, config)\n\n const $ = this\n\n " + genAllRules(options.rules) + "\n\n // very important to call this after all the rules have been defined.\n // otherwise the parser may not work correctly as it will lack information\n // derived during the self analysis phase.\n this.performSelfAnalysis(this)\n}\n\n// inheritance as implemented in javascript in the previous decade... :(\n" + options.name + ".prototype = Object.create(chevrotain.CstParser.prototype)\n" + options.name + ".prototype.constructor = " + options.name + " \n "; - return result; -} -function genAllRules(rules) { - var rulesText = map(rules, function (currRule) { - return genRule(currRule, 1); - }); - return rulesText.join("\n"); -} -function genRule(prod, n) { - var result = indent$2(n, "$.RULE(\"" + prod.name + "\", function() {") + NL; - result += genDefinition(prod.definition, n + 1); - result += indent$2(n + 1, "})") + NL; - return result; -} -function genTerminal(prod, n) { - var name = prod.terminalType.name; - // TODO: potential performance optimization, avoid tokenMap Dictionary access - return indent$2(n, "$.CONSUME" + prod.idx + "(this.tokensMap." + name + ")" + NL); -} -function genNonTerminal(prod, n) { - return indent$2(n, "$.SUBRULE" + prod.idx + "($." + prod.nonTerminalName + ")" + NL); -} -function genAlternation(prod, n) { - var result = indent$2(n, "$.OR" + prod.idx + "([") + NL; - var alts = map(prod.definition, function (altDef) { return genSingleAlt(altDef, n + 1); }); - result += alts.join("," + NL); - result += NL + indent$2(n, "])" + NL); - return result; -} -function genSingleAlt(prod, n) { - var result = indent$2(n, "{") + NL; - result += indent$2(n + 1, "ALT: function() {") + NL; - result += genDefinition(prod.definition, n + 1); - result += indent$2(n + 1, "}") + NL; - result += indent$2(n, "}"); - return result; -} -function genProd(prod, n) { - /* istanbul ignore else */ - if (prod instanceof NonTerminal) { - return genNonTerminal(prod, n); - } - else if (prod instanceof Option) { - return genDSLRule("OPTION", prod, n); - } - else if (prod instanceof RepetitionMandatory) { - return genDSLRule("AT_LEAST_ONE", prod, n); - } - else if (prod instanceof RepetitionMandatoryWithSeparator) { - return genDSLRule("AT_LEAST_ONE_SEP", prod, n); - } - else if (prod instanceof RepetitionWithSeparator) { - return genDSLRule("MANY_SEP", prod, n); - } - else if (prod instanceof Repetition) { - return genDSLRule("MANY", prod, n); - } - else if (prod instanceof Alternation) { - return genAlternation(prod, n); - } - else if (prod instanceof Terminal) { - return genTerminal(prod, n); - } - else if (prod instanceof Alternative) { - return genDefinition(prod.definition, n); - } - else { - throw Error("non exhaustive match"); - } -} -function genDSLRule(dslName, prod, n) { - var result = indent$2(n, "$." + (dslName + prod.idx) + "("); - if (prod.separator) { - result += "{" + NL; - result += - indent$2(n + 1, "SEP: this.tokensMap." + prod.separator.name) + "," + NL; - result += "DEF: " + genDefFunction(prod.definition, n + 2) + NL; - result += indent$2(n, "}") + NL; - } - else { - result += genDefFunction(prod.definition, n + 1); - } - result += indent$2(n, ")") + NL; - return result; -} -function genDefFunction(definition, n) { - var def = "function() {" + NL; - def += genDefinition(definition, n); - def += indent$2(n, "}") + NL; - return def; -} -function genDefinition(def, n) { - var result = ""; - forEach(def, function (prod) { - result += genProd(prod, n + 1); - }); - return result; -} -function indent$2(howMuch, text) { - var spaces = Array(howMuch * 4 + 1).join(" "); - return spaces + text; -} - -function generateParserFactory(options) { - var wrapperText = genWrapperFunction({ - name: options.name, - rules: options.rules - }); - var constructorWrapper = new Function("tokenVocabulary", "config", "chevrotain", wrapperText); - return function (config) { - return constructorWrapper(options.tokenVocabulary, config, - // TODO: check how the require is transpiled/webpacked - require("../api")); - }; -} -function generateParserModule(options) { - return genUmdModule({ name: options.name, rules: options.rules }); -} - -/* istanbul ignore file - tricky to import some things from this module during testing */ -/* istanbul ignore next */ -function clearCache() { - console.warn("The clearCache function was 'soft' removed from the Chevrotain API." + - "\n\t It performs no action other than printing this message." + - "\n\t Please avoid using it as it will be completely removed in the future"); -} -var Parser$1 = /** @class */ (function () { - function Parser() { - throw new Error("The Parser class has been deprecated, use CstParser or EmbeddedActionsParser instead.\t\n" + - "See: https://sap.github.io/chevrotain/docs/changes/BREAKING_CHANGES.html#_7-0-0"); - } - return Parser; -}()); - -var api$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - clearCache: clearCache, - Parser: Parser$1, - VERSION: VERSION, - CstParser: CstParser$1, - EmbeddedActionsParser: EmbeddedActionsParser, - get ParserDefinitionErrorType () { return ParserDefinitionErrorType; }, - EMPTY_ALT: EMPTY_ALT, - Lexer: Lexer$1, - get LexerDefinitionErrorType () { return LexerDefinitionErrorType; }, - createToken: createToken$1, - createTokenInstance: createTokenInstance, - EOF: EOF, - tokenLabel: tokenLabel, - tokenMatcher: tokenMatcher$1, - tokenName: tokenName, - defaultGrammarResolverErrorProvider: defaultGrammarResolverErrorProvider, - defaultGrammarValidatorErrorProvider: defaultGrammarValidatorErrorProvider, - defaultParserErrorProvider: defaultParserErrorProvider, - EarlyExitException: EarlyExitException, - isRecognitionException: isRecognitionException, - MismatchedTokenException: MismatchedTokenException, - NotAllInputParsedException: NotAllInputParsedException, - NoViableAltException: NoViableAltException, - defaultLexerErrorProvider: defaultLexerErrorProvider, - Alternation: Alternation, - Alternative: Alternative, - NonTerminal: NonTerminal, - Option: Option, - Repetition: Repetition, - RepetitionMandatory: RepetitionMandatory, - RepetitionMandatoryWithSeparator: RepetitionMandatoryWithSeparator, - RepetitionWithSeparator: RepetitionWithSeparator, - Rule: Rule, - Terminal: Terminal, - serializeGrammar: serializeGrammar, - serializeProduction: serializeProduction, - GAstVisitor: GAstVisitor, - assignOccurrenceIndices: assignOccurrenceIndices, - resolveGrammar: resolveGrammar, - validateGrammar: validateGrammar, - createSyntaxDiagramsCode: createSyntaxDiagramsCode, - generateParserFactory: generateParserFactory, - generateParserModule: generateParserModule -}); - -var require$$0 = /*@__PURE__*/getAugmentedNamespace(api$1); - -const { createToken: createTokenOrg, Lexer } = require$$0; - -// A little mini DSL for easier lexer definition. -const fragments = {}; -const f = fragments; - -function FRAGMENT(name, def) { - fragments[name] = typeof def === "string" ? def : def.source; -} - -function makePattern(strings, ...args) { - let combined = ""; - for (let i = 0; i < strings.length; i++) { - combined += strings[i]; - if (i < args.length) { - let pattern = args[i]; - // By wrapping in a RegExp (none) capturing group - // We enabled the safe usage of qualifiers and assertions. - combined += `(?:${pattern})`; - } - } - return new RegExp(combined); -} -const tokensDictionary = {}; - -function createToken(options) { - const newTokenType = createTokenOrg(options); - tokensDictionary[options.name] = newTokenType; - return newTokenType; -} - -FRAGMENT( - "NameStartChar", - "(:|[a-zA-Z]|_|\\u2070-\\u218F|\\u2C00-\\u2FEF|\\u3001-\\uD7FF|\\uF900-\\uFDCF|\\uFDF0-\\uFFFD)" -); - -FRAGMENT( - "NameChar", - makePattern`${f.NameStartChar}|-|\\.|\\d|\\u00B7||[\\u0300-\\u036F]|[\\u203F-\\u2040]` -); -FRAGMENT("Name", makePattern`${f.NameStartChar}(${f.NameChar})*`); - -const Comment = createToken({ - name: "Comment", - pattern: /<!--(.|\r?\n)*?-->/, - // A Comment may span multiple lines. - line_breaks: true, -}); - -const CData = createToken({ - name: "CData", - pattern: /<!\[CDATA\[(.|\r?\n)*?]]>/, - line_breaks: true, -}); - -const DocType = createToken({ - name: "DocType", - pattern: /<!DOCTYPE/, - push_mode: "INSIDE", -}); - -const IgnoredDTD = createToken({ - name: "DTD", - pattern: /<!.*?>/, - group: Lexer.SKIPPED, -}); - -const EntityRef = createToken({ - name: "EntityRef", - pattern: makePattern`&${f.Name};`, -}); - -const CharRef = createToken({ - name: "CharRef", - pattern: /&#\d+;|&#x[a-fA-F0-9]/, -}); - -const SEA_WS = createToken({ - name: "SEA_WS", - pattern: /( |\t|\n|\r\n)+/, -}); - -const XMLDeclOpen = createToken({ - name: "XMLDeclOpen", - pattern: /<\?xml[ \t\r\n]/, - push_mode: "INSIDE", -}); - -const SLASH_OPEN = createToken({ - name: "SLASH_OPEN", - pattern: /<\//, - push_mode: "INSIDE", -}); - -const INVALID_SLASH_OPEN = createToken({ - name: "INVALID_SLASH_OPEN", - pattern: /<\//, - categories: [SLASH_OPEN], -}); - -const PROCESSING_INSTRUCTION = createToken({ - name: "PROCESSING_INSTRUCTION", - pattern: makePattern`<\\?${f.Name}.*\\?>`, -}); - -const OPEN = createToken({ name: "OPEN", pattern: /</, push_mode: "INSIDE" }); -// Meant to avoid skipping '<' token in a partial sequence of elements. -// Example of the problem this solves: -// < -// <from>john</from> -// - The second '<' will be skipped because in the mode "INSIDE" '<' is not recognized. -// - This means the AST will include only a single element instead of two -const INVALID_OPEN_INSIDE = createToken({ - name: "INVALID_OPEN_INSIDE", - pattern: /</, - categories: [OPEN], -}); - -const TEXT = createToken({ name: "TEXT", pattern: /[^<&]+/ }); - -const CLOSE = createToken({ name: "CLOSE", pattern: />/, pop_mode: true }); - -const SPECIAL_CLOSE = createToken({ - name: "SPECIAL_CLOSE", - pattern: /\?>/, - pop_mode: true, -}); - -const SLASH_CLOSE = createToken({ - name: "SLASH_CLOSE", - pattern: /\/>/, - pop_mode: true, -}); - -const SLASH = createToken({ name: "SLASH", pattern: /\// }); - -const STRING = createToken({ - name: "STRING", - pattern: /"[^<"]*"|'[^<']*'/, -}); - -const EQUALS = createToken({ name: "EQUALS", pattern: /=/ }); - -const Name = createToken({ name: "Name", pattern: makePattern`${f.Name}` }); - -const S = createToken({ - name: "S", - pattern: /[ \t\r\n]/, - group: Lexer.SKIPPED, -}); - -const xmlLexerDefinition = { - defaultMode: "OUTSIDE", - - modes: { - OUTSIDE: [ - Comment, - CData, - DocType, - IgnoredDTD, - EntityRef, - CharRef, - SEA_WS, - XMLDeclOpen, - SLASH_OPEN, - PROCESSING_INSTRUCTION, - OPEN, - TEXT, - ], - INSIDE: [ - // Tokens from `OUTSIDE` to improve error recovery behavior - Comment, - INVALID_SLASH_OPEN, - INVALID_OPEN_INSIDE, - // "Real" `INSIDE` tokens - CLOSE, - SPECIAL_CLOSE, - SLASH_CLOSE, - SLASH, - EQUALS, - STRING, - Name, - S, - ], - }, -}; - -const xmlLexer$1 = new Lexer(xmlLexerDefinition, { - // Reducing the amount of position tracking can provide a small performance boost (<10%) - // Likely best to keep the full info for better error position reporting and - // to expose "fuller" ITokens from the Lexer. - positionTracking: "full", - ensureOptimizations: false, - - // TODO: inspect definitions for XML line terminators - lineTerminatorCharacters: ["\n"], - lineTerminatorsPattern: /\n|\r\n/g, -}); - -var lexer = { - xmlLexer: xmlLexer$1, - tokensDictionary, -}; - -const { CstParser, tokenMatcher } = require$$0; -const { tokensDictionary: t } = lexer; - -class Parser extends CstParser { - constructor() { - super(t, { - maxLookahead: 1, - recoveryEnabled: true, - nodeLocationTracking: "full", - }); - - this.deletionRecoveryEnabled = true; - - const $ = this; - - $.RULE("document", () => { - $.OPTION(() => { - $.SUBRULE($.prolog); - }); - - $.MANY(() => { - $.SUBRULE($.misc); - }); - - $.OPTION2(() => { - $.SUBRULE($.docTypeDecl); - }); - - $.MANY2(() => { - $.SUBRULE2($.misc); - }); - - $.SUBRULE($.element); - - $.MANY3(() => { - $.SUBRULE3($.misc); - }); - }); - - $.RULE("prolog", () => { - $.CONSUME(t.XMLDeclOpen); - $.MANY(() => { - $.SUBRULE($.attribute); - }); - $.CONSUME(t.SPECIAL_CLOSE); - }); - - // https://www.w3.org/TR/xml/#NT-doctypedecl - $.RULE("docTypeDecl", () => { - $.CONSUME(t.DocType); - $.CONSUME(t.Name); - - $.OPTION(() => { - $.SUBRULE($.externalID); - }); - - // The internal subSet part is intentionally not implemented because we do not at this - // time wish to implement a full DTD Parser as part of this project... - // https://www.w3.org/TR/xml/#NT-intSubset - - $.CONSUME(t.CLOSE); - }); - - $.RULE("externalID", () => { - // Using gates to assert the value of the "Name" Identifiers. - // We could use Categories to model un-reserved keywords, however I am not sure - // The added complexity is needed at this time... - $.OR([ - { - GATE: () => $.LA(1).image === "SYSTEM", - ALT: () => { - $.CONSUME2(t.Name, { LABEL: "System" }); - $.CONSUME(t.STRING, { LABEL: "SystemLiteral" }); - }, - }, - { - GATE: () => $.LA(1).image === "PUBLIC", - ALT: () => { - $.CONSUME3(t.Name, { LABEL: "Public" }); - $.CONSUME2(t.STRING, { LABEL: "PubIDLiteral" }); - $.CONSUME3(t.STRING, { LABEL: "SystemLiteral" }); - }, - }, - ]); - }); - - $.RULE("content", () => { - $.MANY(() => { - $.OR([ - { ALT: () => $.SUBRULE($.element) }, - { ALT: () => $.SUBRULE($.chardata) }, - { ALT: () => $.SUBRULE($.reference) }, - { ALT: () => $.CONSUME(t.CData) }, - { ALT: () => $.CONSUME(t.PROCESSING_INSTRUCTION) }, - { ALT: () => $.CONSUME(t.Comment) }, - ]); - }); - }); - - $.RULE("element", () => { - $.CONSUME(t.OPEN); - try { - this.deletionRecoveryEnabled = false; - // disabling single token deletion here - // because `< - // </note>` - // will be parsed as: `<note>` - // and the next element will be lost - $.CONSUME(t.Name); - } finally { - this.deletionRecoveryEnabled = true; - } - $.MANY(() => { - $.SUBRULE($.attribute); - }); - - $.OR([ - { - ALT: () => { - $.CONSUME(t.CLOSE, { LABEL: "START_CLOSE" }); - $.SUBRULE($.content); - $.CONSUME(t.SLASH_OPEN); - $.CONSUME2(t.Name, { LABEL: "END_NAME" }); - $.CONSUME2(t.CLOSE, { LABEL: "END" }); - }, - }, - { - ALT: () => { - $.CONSUME(t.SLASH_CLOSE); - }, - }, - ]); - }); - - $.RULE("reference", () => { - $.OR([ - { ALT: () => $.CONSUME(t.EntityRef) }, - { ALT: () => $.CONSUME(t.CharRef) }, - ]); - }); - - $.RULE("attribute", () => { - $.CONSUME(t.Name); - try { - this.deletionRecoveryEnabled = false; - // disabling single token deletion here - // because `attrib1 attrib2="666` - // will be parsed as: `attrib1="666` - $.CONSUME(t.EQUALS); - // disabling single token deletion here - // to avoid new elementName being - $.CONSUME(t.STRING); - } finally { - this.deletionRecoveryEnabled = true; - } - }); - - $.RULE("chardata", () => { - $.OR([ - { ALT: () => $.CONSUME(t.TEXT) }, - { ALT: () => $.CONSUME(t.SEA_WS) }, - ]); - }); - - $.RULE("misc", () => { - $.OR([ - { ALT: () => $.CONSUME(t.Comment) }, - { ALT: () => $.CONSUME(t.PROCESSING_INSTRUCTION) }, - { ALT: () => $.CONSUME(t.SEA_WS) }, - ]); - }); - - this.performSelfAnalysis(); - } - - canRecoverWithSingleTokenDeletion(expectedTokType) { - if (this.deletionRecoveryEnabled === false) { - return false; - } - return super.canRecoverWithSingleTokenDeletion(expectedTokType); - } - - // TODO: provide this fix upstream to chevrotain - // https://github.com/SAP/chevrotain/issues/1055 - /* istanbul ignore next - should be tested as part of Chevrotain */ - findReSyncTokenType() { - const allPossibleReSyncTokTypes = this.flattenFollowSet(); - // this loop will always terminate as EOF is always in the follow stack and also always (virtually) in the input - let nextToken = this.LA(1); - let k = 2; - /* eslint-disable-next-line no-constant-condition -- see above comment */ - while (true) { - const foundMatch = allPossibleReSyncTokTypes.find((resyncTokType) => { - const canMatch = tokenMatcher(nextToken, resyncTokType); - return canMatch; - }); - if (foundMatch !== undefined) { - return foundMatch; - } - nextToken = this.LA(k); - k++; - } - } -} - -// Re-use the same parser instance -const xmlParser$1 = new Parser(); - -var parser$1 = { - xmlParser: xmlParser$1, -}; - -const { xmlLexer } = lexer; -const { xmlParser } = parser$1; - -var api = { - parse: function parse(text) { - const lexResult = xmlLexer.tokenize(text); - // setting a new input will RESET the parser instance's state. - xmlParser.input = lexResult.tokens; - // any top level rule may be used as an entry point - const cst = xmlParser.document(); - - return { - cst: cst, - tokenVector: lexResult.tokens, - lexErrors: lexResult.errors, - parseErrors: xmlParser.errors, - }; - }, - - BaseXmlCstVisitor: xmlParser.getBaseCstVisitorConstructor(), -}; - -Object.defineProperty(parser$2, "__esModule", { value: true }); -const parser_1$1 = api; -const parser = { - parse(text) { - const { lexErrors, parseErrors, cst } = (0, parser_1$1.parse)(text); - // If there are any lexical errors, throw the first of them as an error. - if (lexErrors.length > 0) { - const lexError = lexErrors[0]; - const error = new Error(lexError.message); - error.loc = { - start: { line: lexError.line, column: lexError.column }, - end: { line: lexError.line, column: lexError.column + lexError.length } - }; - throw error; - } - // If there are any parse errors, throw the first of them as an error. - if (parseErrors.length > 0) { - const parseError = parseErrors[0]; - const error = new Error(parseError.message); - const { token } = parseError; - error.loc = { - start: { line: token.startLine, column: token.startColumn }, - end: { line: token.endLine, column: token.endColumn } - }; - throw error; - } - // Otherwise return the CST. - return cst; - }, - astFormat: "xml", - locStart(node) { - return node.location.startOffset; - }, - locEnd(node) { - return node.location.endOffset; - } -}; -parser$2.default = parser; - -var printer$1 = {}; - -var doc = {exports: {}}; - -(function (module, exports) { - (function (factory) { - { - module.exports = factory(); - } - })(function() { - var __getOwnPropNames = Object.getOwnPropertyNames; - var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; - }; - - // dist/_doc.js.umd.js - var require_doc_js_umd = __commonJS({ - "dist/_doc.js.umd.js"(exports, module) { - var __create = Object.create; - var __defProp = Object.defineProperty; - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; - var __getOwnPropNames2 = Object.getOwnPropertyNames; - var __getProtoOf = Object.getPrototypeOf; - var __hasOwnProp = Object.prototype.hasOwnProperty; - var __esm = (fn, res) => function __init() { - return fn && (res = (0, fn[__getOwnPropNames2(fn)[0]])(fn = 0)), res; - }; - var __commonJS2 = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames2(cb)[0]])((mod = { - exports: {} - }).exports, mod), mod.exports; - }; - var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { - get: all[name], - enumerable: true - }); - }; - var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames2(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { - get: () => from[key], - enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable - }); - } - return to; - }; - var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { - value: mod, - enumerable: true - }) : target, mod)); - var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { - value: true - }), mod); - var init_define_process = __esm({ - "<define:process>"() { - } - }); - var require_doc_builders = __commonJS2({ - "src/document/doc-builders.js"(exports2, module2) { - init_define_process(); - function concat(parts) { - return { - type: "concat", - parts - }; - } - function indent(contents) { - return { - type: "indent", - contents - }; - } - function align(widthOrString, contents) { - return { - type: "align", - contents, - n: widthOrString - }; - } - function group(contents) { - let opts = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - return { - type: "group", - id: opts.id, - contents, - break: Boolean(opts.shouldBreak), - expandedStates: opts.expandedStates - }; - } - function dedentToRoot(contents) { - return align(Number.NEGATIVE_INFINITY, contents); - } - function markAsRoot(contents) { - return align({ - type: "root" - }, contents); - } - function dedent(contents) { - return align(-1, contents); - } - function conditionalGroup(states, opts) { - return group(states[0], Object.assign(Object.assign({}, opts), {}, { - expandedStates: states - })); - } - function fill(parts) { - return { - type: "fill", - parts - }; - } - function ifBreak(breakContents, flatContents) { - let opts = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; - return { - type: "if-break", - breakContents, - flatContents, - groupId: opts.groupId - }; - } - function indentIfBreak(contents, opts) { - return { - type: "indent-if-break", - contents, - groupId: opts.groupId, - negate: opts.negate - }; - } - function lineSuffix(contents) { - return { - type: "line-suffix", - contents - }; - } - var lineSuffixBoundary = { - type: "line-suffix-boundary" - }; - var breakParent = { - type: "break-parent" - }; - var trim = { - type: "trim" - }; - var hardlineWithoutBreakParent = { - type: "line", - hard: true - }; - var literallineWithoutBreakParent = { - type: "line", - hard: true, - literal: true - }; - var line = { - type: "line" - }; - var softline = { - type: "line", - soft: true - }; - var hardline = concat([hardlineWithoutBreakParent, breakParent]); - var literalline = concat([literallineWithoutBreakParent, breakParent]); - var cursor = { - type: "cursor", - placeholder: Symbol("cursor") - }; - function join(sep, arr) { - const res = []; - for (let i = 0; i < arr.length; i++) { - if (i !== 0) { - res.push(sep); - } - res.push(arr[i]); - } - return concat(res); - } - function addAlignmentToDoc(doc, size, tabWidth) { - let aligned = doc; - if (size > 0) { - for (let i = 0; i < Math.floor(size / tabWidth); ++i) { - aligned = indent(aligned); - } - aligned = align(size % tabWidth, aligned); - aligned = align(Number.NEGATIVE_INFINITY, aligned); - } - return aligned; - } - function label(label2, contents) { - return { - type: "label", - label: label2, - contents - }; - } - module2.exports = { - concat, - join, - line, - softline, - hardline, - literalline, - group, - conditionalGroup, - fill, - lineSuffix, - lineSuffixBoundary, - cursor, - breakParent, - ifBreak, - trim, - indent, - indentIfBreak, - align, - addAlignmentToDoc, - markAsRoot, - dedentToRoot, - dedent, - hardlineWithoutBreakParent, - literallineWithoutBreakParent, - label - }; - } - }); - var require_end_of_line = __commonJS2({ - "src/common/end-of-line.js"(exports2, module2) { - init_define_process(); - function guessEndOfLine(text) { - const index = text.indexOf("\r"); - if (index >= 0) { - return text.charAt(index + 1) === "\n" ? "crlf" : "cr"; - } - return "lf"; - } - function convertEndOfLineToChars(value) { - switch (value) { - case "cr": - return "\r"; - case "crlf": - return "\r\n"; - default: - return "\n"; - } - } - function countEndOfLineChars(text, eol) { - let regex; - switch (eol) { - case "\n": - regex = /\n/g; - break; - case "\r": - regex = /\r/g; - break; - case "\r\n": - regex = /\r\n/g; - break; - default: - throw new Error('Unexpected "eol" '.concat(JSON.stringify(eol), ".")); - } - const endOfLines = text.match(regex); - return endOfLines ? endOfLines.length : 0; - } - function normalizeEndOfLine(text) { - return text.replace(/\r\n?/g, "\n"); - } - module2.exports = { - guessEndOfLine, - convertEndOfLineToChars, - countEndOfLineChars, - normalizeEndOfLine - }; - } - }); - var require_get_last = __commonJS2({ - "src/utils/get-last.js"(exports2, module2) { - init_define_process(); - var getLast = (arr) => arr[arr.length - 1]; - module2.exports = getLast; - } - }); - function ansiRegex() { - let { - onlyFirst = false - } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; - const pattern = ["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|"); - return new RegExp(pattern, onlyFirst ? void 0 : "g"); - } - var init_ansi_regex = __esm({ - "node_modules/strip-ansi/node_modules/ansi-regex/index.js"() { - init_define_process(); - } - }); - function stripAnsi(string) { - if (typeof string !== "string") { - throw new TypeError("Expected a `string`, got `".concat(typeof string, "`")); - } - return string.replace(ansiRegex(), ""); - } - var init_strip_ansi = __esm({ - "node_modules/strip-ansi/index.js"() { - init_define_process(); - init_ansi_regex(); - } - }); - function isFullwidthCodePoint(codePoint) { - if (!Number.isInteger(codePoint)) { - return false; - } - return codePoint >= 4352 && (codePoint <= 4447 || codePoint === 9001 || codePoint === 9002 || 11904 <= codePoint && codePoint <= 12871 && codePoint !== 12351 || 12880 <= codePoint && codePoint <= 19903 || 19968 <= codePoint && codePoint <= 42182 || 43360 <= codePoint && codePoint <= 43388 || 44032 <= codePoint && codePoint <= 55203 || 63744 <= codePoint && codePoint <= 64255 || 65040 <= codePoint && codePoint <= 65049 || 65072 <= codePoint && codePoint <= 65131 || 65281 <= codePoint && codePoint <= 65376 || 65504 <= codePoint && codePoint <= 65510 || 110592 <= codePoint && codePoint <= 110593 || 127488 <= codePoint && codePoint <= 127569 || 131072 <= codePoint && codePoint <= 262141); - } - var init_is_fullwidth_code_point = __esm({ - "node_modules/is-fullwidth-code-point/index.js"() { - init_define_process(); - } - }); - var require_emoji_regex = __commonJS2({ - "node_modules/emoji-regex/index.js"(exports2, module2) { - init_define_process(); - module2.exports = function() { - return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g; - }; - } - }); - var string_width_exports = {}; - __export(string_width_exports, { - default: () => stringWidth - }); - function stringWidth(string) { - if (typeof string !== "string" || string.length === 0) { - return 0; - } - string = stripAnsi(string); - if (string.length === 0) { - return 0; - } - string = string.replace((0, import_emoji_regex.default)(), " "); - let width = 0; - for (let index = 0; index < string.length; index++) { - const codePoint = string.codePointAt(index); - if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) { - continue; - } - if (codePoint >= 768 && codePoint <= 879) { - continue; - } - if (codePoint > 65535) { - index++; - } - width += isFullwidthCodePoint(codePoint) ? 2 : 1; - } - return width; - } - var import_emoji_regex; - var init_string_width = __esm({ - "node_modules/string-width/index.js"() { - init_define_process(); - init_strip_ansi(); - init_is_fullwidth_code_point(); - import_emoji_regex = __toESM(require_emoji_regex()); - } - }); - var require_get_string_width = __commonJS2({ - "src/utils/get-string-width.js"(exports2, module2) { - init_define_process(); - var stringWidth2 = (init_string_width(), __toCommonJS(string_width_exports)).default; - var notAsciiRegex = /[^\x20-\x7F]/; - function getStringWidth(text) { - if (!text) { - return 0; - } - if (!notAsciiRegex.test(text)) { - return text.length; - } - return stringWidth2(text); - } - module2.exports = getStringWidth; - } - }); - var require_doc_utils = __commonJS2({ - "src/document/doc-utils.js"(exports2, module2) { - init_define_process(); - var getLast = require_get_last(); - var { - literalline, - join - } = require_doc_builders(); - var isConcat = (doc) => Array.isArray(doc) || doc && doc.type === "concat"; - var getDocParts = (doc) => { - if (Array.isArray(doc)) { - return doc; - } - if (doc.type !== "concat" && doc.type !== "fill") { - throw new Error("Expect doc type to be `concat` or `fill`."); - } - return doc.parts; - }; - var traverseDocOnExitStackMarker = {}; - function traverseDoc(doc, onEnter, onExit, shouldTraverseConditionalGroups) { - const docsStack = [doc]; - while (docsStack.length > 0) { - const doc2 = docsStack.pop(); - if (doc2 === traverseDocOnExitStackMarker) { - onExit(docsStack.pop()); - continue; - } - if (onExit) { - docsStack.push(doc2, traverseDocOnExitStackMarker); - } - if (!onEnter || onEnter(doc2) !== false) { - if (isConcat(doc2) || doc2.type === "fill") { - const parts = getDocParts(doc2); - for (let ic = parts.length, i = ic - 1; i >= 0; --i) { - docsStack.push(parts[i]); - } - } else if (doc2.type === "if-break") { - if (doc2.flatContents) { - docsStack.push(doc2.flatContents); - } - if (doc2.breakContents) { - docsStack.push(doc2.breakContents); - } - } else if (doc2.type === "group" && doc2.expandedStates) { - if (shouldTraverseConditionalGroups) { - for (let ic = doc2.expandedStates.length, i = ic - 1; i >= 0; --i) { - docsStack.push(doc2.expandedStates[i]); - } - } else { - docsStack.push(doc2.contents); - } - } else if (doc2.contents) { - docsStack.push(doc2.contents); - } - } - } - } - function mapDoc(doc, cb) { - const mapped = /* @__PURE__ */ new Map(); - return rec(doc); - function rec(doc2) { - if (mapped.has(doc2)) { - return mapped.get(doc2); - } - const result = process2(doc2); - mapped.set(doc2, result); - return result; - } - function process2(doc2) { - if (Array.isArray(doc2)) { - return cb(doc2.map(rec)); - } - if (doc2.type === "concat" || doc2.type === "fill") { - const parts = doc2.parts.map(rec); - return cb(Object.assign(Object.assign({}, doc2), {}, { - parts - })); - } - if (doc2.type === "if-break") { - const breakContents = doc2.breakContents && rec(doc2.breakContents); - const flatContents = doc2.flatContents && rec(doc2.flatContents); - return cb(Object.assign(Object.assign({}, doc2), {}, { - breakContents, - flatContents - })); - } - if (doc2.type === "group" && doc2.expandedStates) { - const expandedStates = doc2.expandedStates.map(rec); - const contents = expandedStates[0]; - return cb(Object.assign(Object.assign({}, doc2), {}, { - contents, - expandedStates - })); - } - if (doc2.contents) { - const contents = rec(doc2.contents); - return cb(Object.assign(Object.assign({}, doc2), {}, { - contents - })); - } - return cb(doc2); - } - } - function findInDoc(doc, fn, defaultValue) { - let result = defaultValue; - let hasStopped = false; - function findInDocOnEnterFn(doc2) { - const maybeResult = fn(doc2); - if (maybeResult !== void 0) { - hasStopped = true; - result = maybeResult; - } - if (hasStopped) { - return false; - } - } - traverseDoc(doc, findInDocOnEnterFn); - return result; - } - function willBreakFn(doc) { - if (doc.type === "group" && doc.break) { - return true; - } - if (doc.type === "line" && doc.hard) { - return true; - } - if (doc.type === "break-parent") { - return true; - } - } - function willBreak(doc) { - return findInDoc(doc, willBreakFn, false); - } - function breakParentGroup(groupStack) { - if (groupStack.length > 0) { - const parentGroup = getLast(groupStack); - if (!parentGroup.expandedStates && !parentGroup.break) { - parentGroup.break = "propagated"; - } - } - return null; - } - function propagateBreaks(doc) { - const alreadyVisitedSet = /* @__PURE__ */ new Set(); - const groupStack = []; - function propagateBreaksOnEnterFn(doc2) { - if (doc2.type === "break-parent") { - breakParentGroup(groupStack); - } - if (doc2.type === "group") { - groupStack.push(doc2); - if (alreadyVisitedSet.has(doc2)) { - return false; - } - alreadyVisitedSet.add(doc2); - } - } - function propagateBreaksOnExitFn(doc2) { - if (doc2.type === "group") { - const group = groupStack.pop(); - if (group.break) { - breakParentGroup(groupStack); - } - } - } - traverseDoc(doc, propagateBreaksOnEnterFn, propagateBreaksOnExitFn, true); - } - function removeLinesFn(doc) { - if (doc.type === "line" && !doc.hard) { - return doc.soft ? "" : " "; - } - if (doc.type === "if-break") { - return doc.flatContents || ""; - } - return doc; - } - function removeLines(doc) { - return mapDoc(doc, removeLinesFn); - } - var isHardline = (doc, nextDoc) => doc && doc.type === "line" && doc.hard && nextDoc && nextDoc.type === "break-parent"; - function stripDocTrailingHardlineFromDoc(doc) { - if (!doc) { - return doc; - } - if (isConcat(doc) || doc.type === "fill") { - const parts = getDocParts(doc); - while (parts.length > 1 && isHardline(...parts.slice(-2))) { - parts.length -= 2; - } - if (parts.length > 0) { - const lastPart = stripDocTrailingHardlineFromDoc(getLast(parts)); - parts[parts.length - 1] = lastPart; - } - return Array.isArray(doc) ? parts : Object.assign(Object.assign({}, doc), {}, { - parts - }); - } - switch (doc.type) { - case "align": - case "indent": - case "indent-if-break": - case "group": - case "line-suffix": - case "label": { - const contents = stripDocTrailingHardlineFromDoc(doc.contents); - return Object.assign(Object.assign({}, doc), {}, { - contents - }); - } - case "if-break": { - const breakContents = stripDocTrailingHardlineFromDoc(doc.breakContents); - const flatContents = stripDocTrailingHardlineFromDoc(doc.flatContents); - return Object.assign(Object.assign({}, doc), {}, { - breakContents, - flatContents - }); - } - } - return doc; - } - function stripTrailingHardline(doc) { - return stripDocTrailingHardlineFromDoc(cleanDoc(doc)); - } - function cleanDocFn(doc) { - switch (doc.type) { - case "fill": - if (doc.parts.every((part) => part === "")) { - return ""; - } - break; - case "group": - if (!doc.contents && !doc.id && !doc.break && !doc.expandedStates) { - return ""; - } - if (doc.contents.type === "group" && doc.contents.id === doc.id && doc.contents.break === doc.break && doc.contents.expandedStates === doc.expandedStates) { - return doc.contents; - } - break; - case "align": - case "indent": - case "indent-if-break": - case "line-suffix": - if (!doc.contents) { - return ""; - } - break; - case "if-break": - if (!doc.flatContents && !doc.breakContents) { - return ""; - } - break; - } - if (!isConcat(doc)) { - return doc; - } - const parts = []; - for (const part of getDocParts(doc)) { - if (!part) { - continue; - } - const [currentPart, ...restParts] = isConcat(part) ? getDocParts(part) : [part]; - if (typeof currentPart === "string" && typeof getLast(parts) === "string") { - parts[parts.length - 1] += currentPart; - } else { - parts.push(currentPart); - } - parts.push(...restParts); - } - if (parts.length === 0) { - return ""; - } - if (parts.length === 1) { - return parts[0]; - } - return Array.isArray(doc) ? parts : Object.assign(Object.assign({}, doc), {}, { - parts - }); - } - function cleanDoc(doc) { - return mapDoc(doc, (currentDoc) => cleanDocFn(currentDoc)); - } - function normalizeParts(parts) { - const newParts = []; - const restParts = parts.filter(Boolean); - while (restParts.length > 0) { - const part = restParts.shift(); - if (!part) { - continue; - } - if (isConcat(part)) { - restParts.unshift(...getDocParts(part)); - continue; - } - if (newParts.length > 0 && typeof getLast(newParts) === "string" && typeof part === "string") { - newParts[newParts.length - 1] += part; - continue; - } - newParts.push(part); - } - return newParts; - } - function normalizeDoc(doc) { - return mapDoc(doc, (currentDoc) => { - if (Array.isArray(currentDoc)) { - return normalizeParts(currentDoc); - } - if (!currentDoc.parts) { - return currentDoc; - } - return Object.assign(Object.assign({}, currentDoc), {}, { - parts: normalizeParts(currentDoc.parts) - }); - }); - } - function replaceEndOfLine(doc) { - return mapDoc(doc, (currentDoc) => typeof currentDoc === "string" && currentDoc.includes("\n") ? replaceTextEndOfLine(currentDoc) : currentDoc); - } - function replaceTextEndOfLine(text) { - let replacement = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : literalline; - return join(replacement, text.split("\n")).parts; - } - function canBreakFn(doc) { - if (doc.type === "line") { - return true; - } - } - function canBreak(doc) { - return findInDoc(doc, canBreakFn, false); - } - module2.exports = { - isConcat, - getDocParts, - willBreak, - traverseDoc, - findInDoc, - mapDoc, - propagateBreaks, - removeLines, - stripTrailingHardline, - normalizeParts, - normalizeDoc, - cleanDoc, - replaceTextEndOfLine, - replaceEndOfLine, - canBreak - }; - } - }); - var require_doc_printer = __commonJS2({ - "src/document/doc-printer.js"(exports2, module2) { - init_define_process(); - var { - convertEndOfLineToChars - } = require_end_of_line(); - var getLast = require_get_last(); - var getStringWidth = require_get_string_width(); - var { - fill, - cursor, - indent - } = require_doc_builders(); - var { - isConcat, - getDocParts - } = require_doc_utils(); - var groupModeMap; - var MODE_BREAK = 1; - var MODE_FLAT = 2; - function rootIndent() { - return { - value: "", - length: 0, - queue: [] - }; - } - function makeIndent(ind, options) { - return generateInd(ind, { - type: "indent" - }, options); - } - function makeAlign(indent2, widthOrDoc, options) { - if (widthOrDoc === Number.NEGATIVE_INFINITY) { - return indent2.root || rootIndent(); - } - if (widthOrDoc < 0) { - return generateInd(indent2, { - type: "dedent" - }, options); - } - if (!widthOrDoc) { - return indent2; - } - if (widthOrDoc.type === "root") { - return Object.assign(Object.assign({}, indent2), {}, { - root: indent2 - }); - } - const alignType = typeof widthOrDoc === "string" ? "stringAlign" : "numberAlign"; - return generateInd(indent2, { - type: alignType, - n: widthOrDoc - }, options); - } - function generateInd(ind, newPart, options) { - const queue = newPart.type === "dedent" ? ind.queue.slice(0, -1) : [...ind.queue, newPart]; - let value = ""; - let length = 0; - let lastTabs = 0; - let lastSpaces = 0; - for (const part of queue) { - switch (part.type) { - case "indent": - flush(); - if (options.useTabs) { - addTabs(1); - } else { - addSpaces(options.tabWidth); - } - break; - case "stringAlign": - flush(); - value += part.n; - length += part.n.length; - break; - case "numberAlign": - lastTabs += 1; - lastSpaces += part.n; - break; - default: - throw new Error("Unexpected type '".concat(part.type, "'")); - } - } - flushSpaces(); - return Object.assign(Object.assign({}, ind), {}, { - value, - length, - queue - }); - function addTabs(count) { - value += " ".repeat(count); - length += options.tabWidth * count; - } - function addSpaces(count) { - value += " ".repeat(count); - length += count; - } - function flush() { - if (options.useTabs) { - flushTabs(); - } else { - flushSpaces(); - } - } - function flushTabs() { - if (lastTabs > 0) { - addTabs(lastTabs); - } - resetLast(); - } - function flushSpaces() { - if (lastSpaces > 0) { - addSpaces(lastSpaces); - } - resetLast(); - } - function resetLast() { - lastTabs = 0; - lastSpaces = 0; - } - } - function trim(out) { - if (out.length === 0) { - return 0; - } - let trimCount = 0; - while (out.length > 0 && typeof getLast(out) === "string" && /^[\t ]*$/.test(getLast(out))) { - trimCount += out.pop().length; - } - if (out.length > 0 && typeof getLast(out) === "string") { - const trimmed = getLast(out).replace(/[\t ]*$/, ""); - trimCount += getLast(out).length - trimmed.length; - out[out.length - 1] = trimmed; - } - return trimCount; - } - function fits(next, restCommands, width, options, hasLineSuffix, mustBeFlat) { - let restIdx = restCommands.length; - const cmds = [next]; - const out = []; - while (width >= 0) { - if (cmds.length === 0) { - if (restIdx === 0) { - return true; - } - cmds.push(restCommands[restIdx - 1]); - restIdx--; - continue; - } - const [ind, mode, doc] = cmds.pop(); - if (typeof doc === "string") { - out.push(doc); - width -= getStringWidth(doc); - } else if (isConcat(doc)) { - const parts = getDocParts(doc); - for (let i = parts.length - 1; i >= 0; i--) { - cmds.push([ind, mode, parts[i]]); - } - } else { - switch (doc.type) { - case "indent": - cmds.push([makeIndent(ind, options), mode, doc.contents]); - break; - case "align": - cmds.push([makeAlign(ind, doc.n, options), mode, doc.contents]); - break; - case "trim": - width += trim(out); - break; - case "group": { - if (mustBeFlat && doc.break) { - return false; - } - const groupMode = doc.break ? MODE_BREAK : mode; - cmds.push([ind, groupMode, doc.expandedStates && groupMode === MODE_BREAK ? getLast(doc.expandedStates) : doc.contents]); - if (doc.id) { - groupModeMap[doc.id] = groupMode; - } - break; - } - case "fill": - for (let i = doc.parts.length - 1; i >= 0; i--) { - cmds.push([ind, mode, doc.parts[i]]); - } - break; - case "if-break": - case "indent-if-break": { - const groupMode = doc.groupId ? groupModeMap[doc.groupId] : mode; - if (groupMode === MODE_BREAK) { - const breakContents = doc.type === "if-break" ? doc.breakContents : doc.negate ? doc.contents : indent(doc.contents); - if (breakContents) { - cmds.push([ind, mode, breakContents]); - } - } - if (groupMode === MODE_FLAT) { - const flatContents = doc.type === "if-break" ? doc.flatContents : doc.negate ? indent(doc.contents) : doc.contents; - if (flatContents) { - cmds.push([ind, mode, flatContents]); - } - } - break; - } - case "line": - switch (mode) { - case MODE_FLAT: - if (!doc.hard) { - if (!doc.soft) { - out.push(" "); - width -= 1; - } - break; - } - return true; - case MODE_BREAK: - return true; - } - break; - case "line-suffix": - hasLineSuffix = true; - break; - case "line-suffix-boundary": - if (hasLineSuffix) { - return false; - } - break; - case "label": - cmds.push([ind, mode, doc.contents]); - break; - } - } - } - return false; - } - function printDocToString(doc, options) { - groupModeMap = {}; - const width = options.printWidth; - const newLine = convertEndOfLineToChars(options.endOfLine); - let pos = 0; - const cmds = [[rootIndent(), MODE_BREAK, doc]]; - const out = []; - let shouldRemeasure = false; - let lineSuffix = []; - while (cmds.length > 0) { - const [ind, mode, doc2] = cmds.pop(); - if (typeof doc2 === "string") { - const formatted = newLine !== "\n" ? doc2.replace(/\n/g, newLine) : doc2; - out.push(formatted); - pos += getStringWidth(formatted); - } else if (isConcat(doc2)) { - const parts = getDocParts(doc2); - for (let i = parts.length - 1; i >= 0; i--) { - cmds.push([ind, mode, parts[i]]); - } - } else { - switch (doc2.type) { - case "cursor": - out.push(cursor.placeholder); - break; - case "indent": - cmds.push([makeIndent(ind, options), mode, doc2.contents]); - break; - case "align": - cmds.push([makeAlign(ind, doc2.n, options), mode, doc2.contents]); - break; - case "trim": - pos -= trim(out); - break; - case "group": - switch (mode) { - case MODE_FLAT: - if (!shouldRemeasure) { - cmds.push([ind, doc2.break ? MODE_BREAK : MODE_FLAT, doc2.contents]); - break; - } - case MODE_BREAK: { - shouldRemeasure = false; - const next = [ind, MODE_FLAT, doc2.contents]; - const rem = width - pos; - const hasLineSuffix = lineSuffix.length > 0; - if (!doc2.break && fits(next, cmds, rem, options, hasLineSuffix)) { - cmds.push(next); - } else { - if (doc2.expandedStates) { - const mostExpanded = getLast(doc2.expandedStates); - if (doc2.break) { - cmds.push([ind, MODE_BREAK, mostExpanded]); - break; - } else { - for (let i = 1; i < doc2.expandedStates.length + 1; i++) { - if (i >= doc2.expandedStates.length) { - cmds.push([ind, MODE_BREAK, mostExpanded]); - break; - } else { - const state = doc2.expandedStates[i]; - const cmd = [ind, MODE_FLAT, state]; - if (fits(cmd, cmds, rem, options, hasLineSuffix)) { - cmds.push(cmd); - break; - } - } - } - } - } else { - cmds.push([ind, MODE_BREAK, doc2.contents]); - } - } - break; - } - } - if (doc2.id) { - groupModeMap[doc2.id] = getLast(cmds)[1]; - } - break; - case "fill": { - const rem = width - pos; - const { - parts - } = doc2; - if (parts.length === 0) { - break; - } - const [content, whitespace] = parts; - const contentFlatCmd = [ind, MODE_FLAT, content]; - const contentBreakCmd = [ind, MODE_BREAK, content]; - const contentFits = fits(contentFlatCmd, [], rem, options, lineSuffix.length > 0, true); - if (parts.length === 1) { - if (contentFits) { - cmds.push(contentFlatCmd); - } else { - cmds.push(contentBreakCmd); - } - break; - } - const whitespaceFlatCmd = [ind, MODE_FLAT, whitespace]; - const whitespaceBreakCmd = [ind, MODE_BREAK, whitespace]; - if (parts.length === 2) { - if (contentFits) { - cmds.push(whitespaceFlatCmd, contentFlatCmd); - } else { - cmds.push(whitespaceBreakCmd, contentBreakCmd); - } - break; - } - parts.splice(0, 2); - const remainingCmd = [ind, mode, fill(parts)]; - const secondContent = parts[0]; - const firstAndSecondContentFlatCmd = [ind, MODE_FLAT, [content, whitespace, secondContent]]; - const firstAndSecondContentFits = fits(firstAndSecondContentFlatCmd, [], rem, options, lineSuffix.length > 0, true); - if (firstAndSecondContentFits) { - cmds.push(remainingCmd, whitespaceFlatCmd, contentFlatCmd); - } else if (contentFits) { - cmds.push(remainingCmd, whitespaceBreakCmd, contentFlatCmd); - } else { - cmds.push(remainingCmd, whitespaceBreakCmd, contentBreakCmd); - } - break; - } - case "if-break": - case "indent-if-break": { - const groupMode = doc2.groupId ? groupModeMap[doc2.groupId] : mode; - if (groupMode === MODE_BREAK) { - const breakContents = doc2.type === "if-break" ? doc2.breakContents : doc2.negate ? doc2.contents : indent(doc2.contents); - if (breakContents) { - cmds.push([ind, mode, breakContents]); - } - } - if (groupMode === MODE_FLAT) { - const flatContents = doc2.type === "if-break" ? doc2.flatContents : doc2.negate ? indent(doc2.contents) : doc2.contents; - if (flatContents) { - cmds.push([ind, mode, flatContents]); - } - } - break; - } - case "line-suffix": - lineSuffix.push([ind, mode, doc2.contents]); - break; - case "line-suffix-boundary": - if (lineSuffix.length > 0) { - cmds.push([ind, mode, { - type: "line", - hard: true - }]); - } - break; - case "line": - switch (mode) { - case MODE_FLAT: - if (!doc2.hard) { - if (!doc2.soft) { - out.push(" "); - pos += 1; - } - break; - } else { - shouldRemeasure = true; - } - case MODE_BREAK: - if (lineSuffix.length > 0) { - cmds.push([ind, mode, doc2], ...lineSuffix.reverse()); - lineSuffix = []; - break; - } - if (doc2.literal) { - if (ind.root) { - out.push(newLine, ind.root.value); - pos = ind.root.length; - } else { - out.push(newLine); - pos = 0; - } - } else { - pos -= trim(out); - out.push(newLine + ind.value); - pos = ind.length; - } - break; - } - break; - case "label": - cmds.push([ind, mode, doc2.contents]); - break; - } - } - if (cmds.length === 0 && lineSuffix.length > 0) { - cmds.push(...lineSuffix.reverse()); - lineSuffix = []; - } - } - const cursorPlaceholderIndex = out.indexOf(cursor.placeholder); - if (cursorPlaceholderIndex !== -1) { - const otherCursorPlaceholderIndex = out.indexOf(cursor.placeholder, cursorPlaceholderIndex + 1); - const beforeCursor = out.slice(0, cursorPlaceholderIndex).join(""); - const aroundCursor = out.slice(cursorPlaceholderIndex + 1, otherCursorPlaceholderIndex).join(""); - const afterCursor = out.slice(otherCursorPlaceholderIndex + 1).join(""); - return { - formatted: beforeCursor + aroundCursor + afterCursor, - cursorNodeStart: beforeCursor.length, - cursorNodeText: aroundCursor - }; - } - return { - formatted: out.join("") - }; - } - module2.exports = { - printDocToString - }; - } - }); - var require_doc_debug = __commonJS2({ - "src/document/doc-debug.js"(exports2, module2) { - init_define_process(); - var { - isConcat, - getDocParts - } = require_doc_utils(); - function flattenDoc(doc) { - if (!doc) { - return ""; - } - if (isConcat(doc)) { - const res = []; - for (const part of getDocParts(doc)) { - if (isConcat(part)) { - res.push(...flattenDoc(part).parts); - } else { - const flattened = flattenDoc(part); - if (flattened !== "") { - res.push(flattened); - } - } - } - return { - type: "concat", - parts: res - }; - } - if (doc.type === "if-break") { - return Object.assign(Object.assign({}, doc), {}, { - breakContents: flattenDoc(doc.breakContents), - flatContents: flattenDoc(doc.flatContents) - }); - } - if (doc.type === "group") { - return Object.assign(Object.assign({}, doc), {}, { - contents: flattenDoc(doc.contents), - expandedStates: doc.expandedStates && doc.expandedStates.map(flattenDoc) - }); - } - if (doc.type === "fill") { - return { - type: "fill", - parts: doc.parts.map(flattenDoc) - }; - } - if (doc.contents) { - return Object.assign(Object.assign({}, doc), {}, { - contents: flattenDoc(doc.contents) - }); - } - return doc; - } - function printDocToDebug(doc) { - const printedSymbols = /* @__PURE__ */ Object.create(null); - const usedKeysForSymbols = /* @__PURE__ */ new Set(); - return printDoc(flattenDoc(doc)); - function printDoc(doc2, index, parentParts) { - if (typeof doc2 === "string") { - return JSON.stringify(doc2); - } - if (isConcat(doc2)) { - const printed = getDocParts(doc2).map(printDoc).filter(Boolean); - return printed.length === 1 ? printed[0] : "[".concat(printed.join(", "), "]"); - } - if (doc2.type === "line") { - const withBreakParent = Array.isArray(parentParts) && parentParts[index + 1] && parentParts[index + 1].type === "break-parent"; - if (doc2.literal) { - return withBreakParent ? "literalline" : "literallineWithoutBreakParent"; - } - if (doc2.hard) { - return withBreakParent ? "hardline" : "hardlineWithoutBreakParent"; - } - if (doc2.soft) { - return "softline"; - } - return "line"; - } - if (doc2.type === "break-parent") { - const afterHardline = Array.isArray(parentParts) && parentParts[index - 1] && parentParts[index - 1].type === "line" && parentParts[index - 1].hard; - return afterHardline ? void 0 : "breakParent"; - } - if (doc2.type === "trim") { - return "trim"; - } - if (doc2.type === "indent") { - return "indent(" + printDoc(doc2.contents) + ")"; - } - if (doc2.type === "align") { - return doc2.n === Number.NEGATIVE_INFINITY ? "dedentToRoot(" + printDoc(doc2.contents) + ")" : doc2.n < 0 ? "dedent(" + printDoc(doc2.contents) + ")" : doc2.n.type === "root" ? "markAsRoot(" + printDoc(doc2.contents) + ")" : "align(" + JSON.stringify(doc2.n) + ", " + printDoc(doc2.contents) + ")"; - } - if (doc2.type === "if-break") { - return "ifBreak(" + printDoc(doc2.breakContents) + (doc2.flatContents ? ", " + printDoc(doc2.flatContents) : "") + (doc2.groupId ? (!doc2.flatContents ? ', ""' : "") + ", { groupId: ".concat(printGroupId(doc2.groupId), " }") : "") + ")"; - } - if (doc2.type === "indent-if-break") { - const optionsParts = []; - if (doc2.negate) { - optionsParts.push("negate: true"); - } - if (doc2.groupId) { - optionsParts.push("groupId: ".concat(printGroupId(doc2.groupId))); - } - const options = optionsParts.length > 0 ? ", { ".concat(optionsParts.join(", "), " }") : ""; - return "indentIfBreak(".concat(printDoc(doc2.contents)).concat(options, ")"); - } - if (doc2.type === "group") { - const optionsParts = []; - if (doc2.break && doc2.break !== "propagated") { - optionsParts.push("shouldBreak: true"); - } - if (doc2.id) { - optionsParts.push("id: ".concat(printGroupId(doc2.id))); - } - const options = optionsParts.length > 0 ? ", { ".concat(optionsParts.join(", "), " }") : ""; - if (doc2.expandedStates) { - return "conditionalGroup([".concat(doc2.expandedStates.map((part) => printDoc(part)).join(","), "]").concat(options, ")"); - } - return "group(".concat(printDoc(doc2.contents)).concat(options, ")"); - } - if (doc2.type === "fill") { - return "fill([".concat(doc2.parts.map((part) => printDoc(part)).join(", "), "])"); - } - if (doc2.type === "line-suffix") { - return "lineSuffix(" + printDoc(doc2.contents) + ")"; - } - if (doc2.type === "line-suffix-boundary") { - return "lineSuffixBoundary"; - } - if (doc2.type === "label") { - return "label(".concat(JSON.stringify(doc2.label), ", ").concat(printDoc(doc2.contents), ")"); - } - throw new Error("Unknown doc type " + doc2.type); - } - function printGroupId(id) { - if (typeof id !== "symbol") { - return JSON.stringify(String(id)); - } - if (id in printedSymbols) { - return printedSymbols[id]; - } - const prefix = String(id).slice(7, -1) || "symbol"; - for (let counter = 0; ; counter++) { - const key = prefix + (counter > 0 ? " #".concat(counter) : ""); - if (!usedKeysForSymbols.has(key)) { - usedKeysForSymbols.add(key); - return printedSymbols[id] = "Symbol.for(".concat(JSON.stringify(key), ")"); - } - } - } - } - module2.exports = { - printDocToDebug - }; - } - }); - init_define_process(); - module.exports = { - builders: require_doc_builders(), - printer: require_doc_printer(), - utils: require_doc_utils(), - debug: require_doc_debug() - }; - } - }); - return require_doc_js_umd(); - }); -} (doc)); - -var embed$1 = {}; - -Object.defineProperty(embed$1, "__esModule", { value: true }); -const doc_1$1 = doc.exports; -const { dedentToRoot, group: group$1, hardline: hardline$1, indent: indent$1, join: join$1, line: line$1, literalline: literalline$1, softline: softline$1 } = doc_1$1.builders; -// Replace the string content newlines within a doc tree with literallines so -// that all of the indentation lines up appropriately -function replaceNewlines(doc) { - return doc_1$1.utils.mapDoc(doc, (currentDoc) => typeof currentDoc === "string" && currentDoc.includes("\n") - ? currentDoc.split(/(\n)/g).map((v, i) => (i % 2 === 0 ? v : literalline$1)) - : currentDoc); -} -// Get the start and end element tags from the current node on the tree -function getElementTags(path, opts, print) { - const node = path.getValue(); - const { OPEN, Name, attribute, START_CLOSE, SLASH_OPEN, END_NAME, END } = node.children; - const parts = [OPEN[0].image, Name[0].image]; - if (attribute) { - parts.push(indent$1([line$1, join$1(line$1, path.map(print, "children", "attribute"))])); - } - if (!opts.bracketSameLine) { - parts.push(softline$1); - } - return { - openTag: group$1([...parts, START_CLOSE[0].image]), - closeTag: group$1([SLASH_OPEN[0].image, END_NAME[0].image, END[0].image]) - }; -} -// Get the name of the parser that is represented by the given element node, -// return null if a matching parser cannot be found -function getParser(node, opts) { - const { Name, attribute } = node.children; - const parser = Name[0].image.toLowerCase(); - // We don't want to deal with some weird recursive parser situation, so we - // need to explicitly call out the XML parser here and just return null - if (parser === "xml") { - return null; - } - // If this is a style tag with a text/css type, then we can skip straight to - // saying that this needs a CSS parser - if (parser === "style" && - attribute && - attribute.some((attr) => attr.children.Name[0].image === "type" && - attr.children.STRING[0].image === '"text/css"')) { - return "css"; - } - // If there is a plugin that has a parser that matches the name of this - // element, then we're going to assume that's correct for embedding and go - // ahead and switch to that parser - if (opts.plugins.some((plugin) => typeof plugin !== "string" && - plugin.parsers && - Object.prototype.hasOwnProperty.call(plugin.parsers, parser))) { - return parser; - } - return null; -} -// Get the source string that will be passed into the embedded parser from the -// content of the inside of the element node -function getSource(content) { - return content.chardata - .map((node) => { - const { SEA_WS, TEXT } = node.children; - const [{ image }] = SEA_WS || TEXT; - return { - offset: node.location.startOffset, - printed: image - }; - }) - .sort(({ offset }) => offset) - .map(({ printed }) => printed) - .join(""); -} -const embed = (path, print, textToDoc, opts) => { - const node = path.getValue(); - // If the node isn't an element node, then skip - if (node.name !== "element") { - return null; - } - // If the name of the node does not correspond to the name of a parser that - // prettier knows about, then skip - const parser = getParser(node, opts); - if (!parser) { - return null; - } - // If the node does not actually contain content, or it contains any content - // that is not just plain text, then skip - const content = node.children.content[0].children; - if (Object.keys(content).length !== 1 || !content.chardata) { - return null; - } - // Get the open and close tags of this element, then return the properly - // formatted content enclosed within them - const nodePath = path; - const { openTag, closeTag } = getElementTags(nodePath, opts, print); - return group$1([ - openTag, - literalline$1, - dedentToRoot(replaceNewlines(doc_1$1.utils.stripTrailingHardline(textToDoc(getSource(content), { ...opts, parser })))), - hardline$1, - closeTag - ]); -}; -embed$1.default = embed; - -var __importDefault$1 = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(printer$1, "__esModule", { value: true }); -const doc_1 = doc.exports; -const embed_1 = __importDefault$1(embed$1); -const { fill, group, hardline, indent, join, line, literalline, softline } = doc_1.builders; -const ignoreStartComment = "<!-- prettier-ignore-start -->"; -const ignoreEndComment = "<!-- prettier-ignore-end -->"; -function hasIgnoreRanges(comments) { - if (!comments || comments.length === 0) { - return false; - } - comments.sort((left, right) => left.startOffset - right.startOffset); - let startFound = false; - for (let idx = 0; idx < comments.length; idx += 1) { - if (comments[idx].image === ignoreStartComment) { - startFound = true; - } - else if (startFound && comments[idx].image === ignoreEndComment) { - return true; - } - } - return false; -} -function isWhitespaceIgnorable(node) { - const { CData, Comment, reference } = node.children; - return !CData && !reference && !hasIgnoreRanges(Comment); -} -function printIToken(path) { - const node = path.getValue(); - return { - offset: node.startOffset, - startLine: node.startLine, - endLine: node.endLine, - printed: node.image - }; -} -function replaceNewlinesWithLiteralLines(content) { - return content - .split(/(\n)/g) - .map((value, idx) => (idx % 2 === 0 ? value : literalline)); -} -const printer = { - embed: embed_1.default, - print(path, opts, print) { - const node = path.getValue(); - switch (node.name) { - case "attribute": { - const { Name, EQUALS, STRING } = node.children; - return [Name[0].image, EQUALS[0].image, STRING[0].image]; - } - case "chardata": { - const { SEA_WS, TEXT } = node.children; - const [{ image }] = SEA_WS || TEXT; - return image - .split(/(\n)/g) - .map((value, index) => (index % 2 === 0 ? value : literalline)); - } - case "content": { - const nodePath = path; - let fragments = nodePath.call((childrenPath) => { - let response = []; - const children = childrenPath.getValue(); - if (children.CData) { - response = response.concat(childrenPath.map(printIToken, "CData")); - } - if (children.Comment) { - response = response.concat(childrenPath.map(printIToken, "Comment")); - } - if (children.chardata) { - response = response.concat(childrenPath.map((charDataPath) => ({ - offset: charDataPath.getValue().location.startOffset, - printed: print(charDataPath) - }), "chardata")); - } - if (children.element) { - response = response.concat(childrenPath.map((elementPath) => ({ - offset: elementPath.getValue().location.startOffset, - printed: print(elementPath) - }), "element")); - } - if (children.PROCESSING_INSTRUCTION) { - response = response.concat(childrenPath.map(printIToken, "PROCESSING_INSTRUCTION")); - } - if (children.reference) { - response = response.concat(childrenPath.map((referencePath) => { - const referenceNode = referencePath.getValue(); - return { - offset: referenceNode.location.startOffset, - printed: (referenceNode.children.CharRef || - referenceNode.children.EntityRef)[0].image - }; - }, "reference")); - } - return response; - }, "children"); - const { Comment } = node.children; - if (hasIgnoreRanges(Comment)) { - Comment.sort((left, right) => left.startOffset - right.startOffset); - const ignoreRanges = []; - let ignoreStart = null; - // Build up a list of ignored ranges from the original text based on the - // special prettier-ignore-* comments - Comment.forEach((comment) => { - if (comment.image === ignoreStartComment) { - ignoreStart = comment; - } - else if (ignoreStart && comment.image === ignoreEndComment) { - ignoreRanges.push({ - start: ignoreStart.startOffset, - end: comment.endOffset - }); - ignoreStart = null; - } - }); - // Filter the printed children to only include the ones that are outside - // of each of the ignored ranges - fragments = fragments.filter((fragment) => ignoreRanges.every(({ start, end }) => fragment.offset < start || fragment.offset > end)); - // Push each of the ignored ranges into the child list as its own element - // so that the original content is still included - ignoreRanges.forEach(({ start, end }) => { - const content = opts.originalText.slice(start, end + 1); - fragments.push({ - offset: start, - printed: replaceNewlinesWithLiteralLines(content) - }); - }); - } - fragments.sort((left, right) => left.offset - right.offset); - return group(fragments.map(({ printed }) => printed)); - } - case "docTypeDecl": { - const { DocType, Name, externalID, CLOSE } = node.children; - const parts = [DocType[0].image, " ", Name[0].image]; - if (externalID) { - parts.push(" ", path.call(print, "children", "externalID", 0)); - } - return group([...parts, CLOSE[0].image]); - } - case "document": { - const { docTypeDecl, element, misc, prolog } = node.children; - const fragments = []; - if (docTypeDecl) { - fragments.push({ - offset: docTypeDecl[0].location.startOffset, - printed: path.call(print, "children", "docTypeDecl", 0) - }); - } - if (prolog) { - fragments.push({ - offset: prolog[0].location.startOffset, - printed: path.call(print, "children", "prolog", 0) - }); - } - if (misc) { - misc.forEach((node) => { - if (node.children.PROCESSING_INSTRUCTION) { - fragments.push({ - offset: node.location.startOffset, - printed: node.children.PROCESSING_INSTRUCTION[0].image - }); - } - else if (node.children.Comment) { - fragments.push({ - offset: node.location.startOffset, - printed: node.children.Comment[0].image - }); - } - }); - } - if (element) { - fragments.push({ - offset: element[0].location.startOffset, - printed: path.call(print, "children", "element", 0) - }); - } - fragments.sort((left, right) => left.offset - right.offset); - return [ - join(hardline, fragments.map(({ printed }) => printed)), - hardline - ]; - } - case "element": { - const { OPEN, Name, attribute, START_CLOSE, content, SLASH_OPEN, END_NAME, END, SLASH_CLOSE } = node.children; - const parts = [OPEN[0].image, Name[0].image]; - if (attribute) { - const separator = opts.singleAttributePerLine ? hardline : line; - parts.push(indent([ - line, - join(separator, path.map(print, "children", "attribute")) - ])); - } - // Determine the value that will go between the <, name, and attributes - // of an element and the /> of an element. - const space = opts.xmlSelfClosingSpace ? line : softline; - if (SLASH_CLOSE) { - return group([...parts, space, SLASH_CLOSE[0].image]); - } - if (Object.keys(content[0].children).length === 0) { - return group([...parts, space, "/>"]); - } - const openTag = group([ - ...parts, - opts.bracketSameLine ? "" : softline, - START_CLOSE[0].image - ]); - const closeTag = group([ - SLASH_OPEN[0].image, - END_NAME[0].image, - END[0].image - ]); - if (opts.xmlWhitespaceSensitivity === "ignore" && - isWhitespaceIgnorable(content[0])) { - const nodePath = path; - const fragments = nodePath.call((childrenPath) => { - const children = childrenPath.getValue(); - let response = []; - if (children.Comment) { - response = response.concat(childrenPath.map(printIToken, "Comment")); - } - if (children.chardata) { - childrenPath.each((charDataPath) => { - const chardata = charDataPath.getValue(); - if (!chardata.children.TEXT) { - return; - } - const content = chardata.children.TEXT[0].image.trim(); - const printed = group(content.split(/(\n)/g).map((value) => { - if (value === "\n") { - return literalline; - } - return fill(value - .split(/\b( +)\b/g) - .map((segment, index) => index % 2 === 0 ? segment : line)); - })); - const location = chardata.location; - response.push({ - offset: location.startOffset, - startLine: location.startLine, - endLine: location.endLine, - printed - }); - }, "chardata"); - } - if (children.element) { - response = response.concat(childrenPath.map((elementPath) => { - const location = elementPath.getValue().location; - return { - offset: location.startOffset, - startLine: location.startLine, - endLine: location.endLine, - printed: print(elementPath) - }; - }, "element")); - } - if (children.PROCESSING_INSTRUCTION) { - response = response.concat(childrenPath.map(printIToken, "PROCESSING_INSTRUCTION")); - } - return response; - }, "children", "content", 0, "children"); - fragments.sort((left, right) => left.offset - right.offset); - // If the only content of this tag is chardata, then use a softline so - // that we won't necessarily break (to allow <foo>bar</foo>). - if (fragments.length === 1 && - (content[0].children.chardata || []).filter((chardata) => chardata.children.TEXT).length === 1) { - return group([ - openTag, - indent([softline, fragments[0].printed]), - softline, - closeTag - ]); - } - if (fragments.length === 0) { - return group([...parts, space, "/>"]); - } - const docs = []; - let lastLine = fragments[0].startLine; - fragments.forEach((node) => { - if (node.startLine - lastLine >= 2) { - docs.push(hardline, hardline); - } - else { - docs.push(hardline); - } - docs.push(node.printed); - lastLine = node.endLine; - }); - return group([openTag, indent(docs), hardline, closeTag]); - } - return group([ - openTag, - indent(path.call(print, "children", "content", 0)), - closeTag - ]); - } - case "externalID": { - const { Public, PubIDLiteral, System, SystemLiteral } = node.children; - if (System) { - return group([ - System[0].image, - indent([line, SystemLiteral[0].image]) - ]); - } - return group([ - group([Public[0].image, indent([line, PubIDLiteral[0].image])]), - indent([line, SystemLiteral[0].image]) - ]); - } - case "prolog": { - const { XMLDeclOpen, attribute, SPECIAL_CLOSE } = node.children; - const parts = [XMLDeclOpen[0].image]; - if (attribute) { - parts.push(indent([ - softline, - join(line, path.map(print, "children", "attribute")) - ])); - } - const space = opts.xmlSelfClosingSpace ? line : softline; - return group([...parts, space, SPECIAL_CLOSE[0].image]); - } - } - } -}; -printer$1.default = printer; - -var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -const parser_1 = __importDefault(parser$2); -const printer_1 = __importDefault(printer$1); -const plugin = { - languages: [ - { - name: "XML", - parsers: ["xml"], - aliases: ["rss", "xsd", "wsdl"], - extensions: [ - ".xml", - ".adml", - ".admx", - ".ant", - ".axml", - ".builds", - ".ccproj", - ".ccxml", - ".clixml", - ".cproject", - ".cscfg", - ".csdef", - ".csl", - ".csproj", - ".ct", - ".depproj", - ".dita", - ".ditamap", - ".ditaval", - ".dll.config", - ".dotsettings", - ".filters", - ".fsproj", - ".fxml", - ".glade", - ".gml", - ".gmx", - ".grxml", - ".iml", - ".inx", - ".ivy", - ".jelly", - ".jsproj", - ".kml", - ".launch", - ".mdpolicy", - ".mjml", - ".mm", - ".mod", - ".mxml", - ".natvis", - ".ncl", - ".ndproj", - ".nproj", - ".nuspec", - ".odd", - ".osm", - ".pkgproj", - ".pluginspec", - ".proj", - ".props", - ".ps1xml", - ".psc1", - ".pt", - ".rdf", - ".resx", - ".rss", - ".runsettings", - ".sch", - ".scxml", - ".sfproj", - ".shproj", - ".srdf", - ".storyboard", - ".sublime-snippet", - ".targets", - ".tml", - ".ts", - ".tsx", - ".ui", - ".urdf", - ".ux", - ".vbproj", - ".vcxproj", - ".vsixmanifest", - ".vssettings", - ".vstemplate", - ".vxml", - ".wixproj", - ".workflow", - ".wsdl", - ".wsf", - ".wxi", - ".wxl", - ".wxs", - ".x3d", - ".xacro", - ".xaml", - ".xib", - ".xlf", - ".xliff", - ".xmi", - ".xml.dist", - ".xproj", - ".xsd", - ".xsl", - ".xslt", - ".xspec", - ".xul", - ".zcml" - ], - filenames: [ - ".classpath", - ".cproject", - ".project", - "App.config", - "NuGet.config", - "Settings.StyleCop", - "Web.Debug.config", - "Web.Release.config", - "Web.config", - "packages.config" - ], - vscodeLanguageIds: ["xml", "forcesourcemanifest"], - linguistLanguageId: 399 - }, - { - name: "SVG", - parsers: ["xml"], - extensions: [".svg"], - vscodeLanguageIds: ["svg"], - linguistLanguageId: 337 - } - ], - parsers: { - xml: parser_1.default - }, - printers: { - xml: printer_1.default - }, - options: { - xmlSelfClosingSpace: { - type: "boolean", - category: "XML", - default: true, - description: "Adds a space before self-closing tags.", - since: "1.1.0" - }, - xmlWhitespaceSensitivity: { - type: "choice", - category: "XML", - default: "strict", - description: "How to handle whitespaces in XML.", - choices: [ - { - value: "strict", - description: "Whitespaces are considered sensitive in all elements." - }, - { - value: "ignore", - description: "Whitespaces are considered insensitive in all elements." - } - ], - since: "0.6.0" - } - }, - defaultOptions: { - printWidth: 80, - tabWidth: 2 - } -}; -var plugin_1 = plugin; - -export { plugin_1 as default }; diff --git a/src/lib/prettier.js b/src/lib/prettier.js index ea689ef9c..a126aea24 100644 --- a/src/lib/prettier.js +++ b/src/lib/prettier.js @@ -1,118 +1,39 @@ -var _e=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var Ye=_e((Eg,Zn)=>{var er=function(e){return e&&e.Math==Math&&e};Zn.exports=er(typeof globalThis=="object"&&globalThis)||er(typeof window=="object"&&window)||er(typeof self=="object"&&self)||er(typeof global=="object"&&global)||function(){return this}()||Function("return this")();});var Dt=_e((Fg,eu)=>{eu.exports=function(e){try{return !!e()}catch{return !0}};});var Ct=_e((Ag,tu)=>{var go=Dt();tu.exports=!go(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!=7});});var tr=_e((Sg,ru)=>{var yo=Dt();ru.exports=!yo(function(){var e=function(){}.bind();return typeof e!="function"||e.hasOwnProperty("prototype")});});var Et=_e((xg,nu)=>{var ho=tr(),rr=Function.prototype.call;nu.exports=ho?rr.bind(rr):function(){return rr.apply(rr,arguments)};});var au=_e(iu=>{var uu={}.propertyIsEnumerable,su=Object.getOwnPropertyDescriptor,vo=su&&!uu.call({1:2},1);iu.f=vo?function(n){var t=su(this,n);return !!t&&t.enumerable}:uu;});var nr=_e((Tg,ou)=>{ou.exports=function(e,n){return {enumerable:!(e&1),configurable:!(e&2),writable:!(e&4),value:n}};});var at=_e((Bg,pu)=>{var lu=tr(),cu=Function.prototype,Co=cu.bind,Lr=cu.call,Eo=lu&&Co.bind(Lr,Lr);pu.exports=lu?function(e){return e&&Eo(e)}:function(e){return e&&function(){return Lr.apply(e,arguments)}};});var ur=_e((Ng,Du)=>{var fu=at(),Fo=fu({}.toString),Ao=fu("".slice);Du.exports=function(e){return Ao(Fo(e),8,-1)};});var du=_e((wg,mu)=>{var So=Ye(),xo=at(),bo=Dt(),To=ur(),jr=So.Object,Bo=xo("".split);mu.exports=bo(function(){return !jr("z").propertyIsEnumerable(0)})?function(e){return To(e)=="String"?Bo(e,""):jr(e)}:jr;});var Or=_e((_g,gu)=>{var No=Ye(),wo=No.TypeError;gu.exports=function(e){if(e==null)throw wo("Can't call method on "+e);return e};});var sr=_e((Pg,yu)=>{var _o=du(),Po=Or();yu.exports=function(e){return _o(Po(e))};});var ot=_e((kg,hu)=>{hu.exports=function(e){return typeof e=="function"};});var Ft=_e((Ig,vu)=>{var ko=ot();vu.exports=function(e){return typeof e=="object"?e!==null:ko(e)};});var qt=_e((Lg,Cu)=>{var qr=Ye(),Io=ot(),Lo=function(e){return Io(e)?e:void 0};Cu.exports=function(e,n){return arguments.length<2?Lo(qr[e]):qr[e]&&qr[e][n]};});var Mr=_e((jg,Eu)=>{var jo=at();Eu.exports=jo({}.isPrototypeOf);});var Au=_e((Og,Fu)=>{var Oo=qt();Fu.exports=Oo("navigator","userAgent")||"";});var wu=_e((qg,Nu)=>{var Bu=Ye(),Rr=Au(),Su=Bu.process,xu=Bu.Deno,bu=Su&&Su.versions||xu&&xu.version,Tu=bu&&bu.v8,ft,ir;Tu&&(ft=Tu.split("."),ir=ft[0]>0&&ft[0]<4?1:+(ft[0]+ft[1]));!ir&&Rr&&(ft=Rr.match(/Edge\/(\d+)/),(!ft||ft[1]>=74)&&(ft=Rr.match(/Chrome\/(\d+)/),ft&&(ir=+ft[1])));Nu.exports=ir;});var Vr=_e((Mg,Pu)=>{var _u=wu(),qo=Dt();Pu.exports=!!Object.getOwnPropertySymbols&&!qo(function(){var e=Symbol();return !String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&_u&&_u<41});});var Wr=_e((Rg,ku)=>{var Mo=Vr();ku.exports=Mo&&!Symbol.sham&&typeof Symbol.iterator=="symbol";});var $r=_e((Vg,Iu)=>{var Ro=Ye(),Vo=qt(),Wo=ot(),$o=Mr(),Ho=Wr(),Go=Ro.Object;Iu.exports=Ho?function(e){return typeof e=="symbol"}:function(e){var n=Vo("Symbol");return Wo(n)&&$o(n.prototype,Go(e))};});var ar=_e((Wg,Lu)=>{var Jo=Ye(),Uo=Jo.String;Lu.exports=function(e){try{return Uo(e)}catch{return "Object"}};});var Mt=_e(($g,ju)=>{var zo=Ye(),Xo=ot(),Ko=ar(),Yo=zo.TypeError;ju.exports=function(e){if(Xo(e))return e;throw Yo(Ko(e)+" is not a function")};});var or=_e((Hg,Ou)=>{var Qo=Mt();Ou.exports=function(e,n){var t=e[n];return t==null?void 0:Qo(t)};});var Mu=_e((Gg,qu)=>{var Zo=Ye(),Hr=Et(),Gr=ot(),Jr=Ft(),el=Zo.TypeError;qu.exports=function(e,n){var t,s;if(n==="string"&&Gr(t=e.toString)&&!Jr(s=Hr(t,e))||Gr(t=e.valueOf)&&!Jr(s=Hr(t,e))||n!=="string"&&Gr(t=e.toString)&&!Jr(s=Hr(t,e)))return s;throw el("Can't convert object to primitive value")};});var Vu=_e((Jg,Ru)=>{Ru.exports=!1;});var lr=_e((Ug,$u)=>{var Wu=Ye(),tl=Object.defineProperty;$u.exports=function(e,n){try{tl(Wu,e,{value:n,configurable:!0,writable:!0});}catch{Wu[e]=n;}return n};});var cr=_e((zg,Gu)=>{var rl=Ye(),nl=lr(),Hu="__core-js_shared__",ul=rl[Hu]||nl(Hu,{});Gu.exports=ul;});var Ur=_e((Xg,Uu)=>{var sl=Vu(),Ju=cr();(Uu.exports=function(e,n){return Ju[e]||(Ju[e]=n!==void 0?n:{})})("versions",[]).push({version:"3.22.2",mode:sl?"pure":"global",copyright:"\xA9 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.22.2/LICENSE",source:"https://github.com/zloirock/core-js"});});var pr=_e((Kg,zu)=>{var il=Ye(),al=Or(),ol=il.Object;zu.exports=function(e){return ol(al(e))};});var gt=_e((Yg,Xu)=>{var ll=at(),cl=pr(),pl=ll({}.hasOwnProperty);Xu.exports=Object.hasOwn||function(n,t){return pl(cl(n),t)};});var zr=_e((Qg,Ku)=>{var fl=at(),Dl=0,ml=Math.random(),dl=fl(1 .toString);Ku.exports=function(e){return "Symbol("+(e===void 0?"":e)+")_"+dl(++Dl+ml,36)};});var St=_e((Zg,ts)=>{var gl=Ye(),yl=Ur(),Yu=gt(),hl=zr(),Qu=Vr(),es=Wr(),Bt=yl("wks"),At=gl.Symbol,Zu=At&&At.for,vl=es?At:At&&At.withoutSetter||hl;ts.exports=function(e){if(!Yu(Bt,e)||!(Qu||typeof Bt[e]=="string")){var n="Symbol."+e;Qu&&Yu(At,e)?Bt[e]=At[e]:es&&Zu?Bt[e]=Zu(n):Bt[e]=vl(n);}return Bt[e]};});var ss=_e((e0,us)=>{var Cl=Ye(),El=Et(),rs=Ft(),ns=$r(),Fl=or(),Al=Mu(),Sl=St(),xl=Cl.TypeError,bl=Sl("toPrimitive");us.exports=function(e,n){if(!rs(e)||ns(e))return e;var t=Fl(e,bl),s;if(t){if(n===void 0&&(n="default"),s=El(t,e,n),!rs(s)||ns(s))return s;throw xl("Can't convert object to primitive value")}return n===void 0&&(n="number"),Al(e,n)};});var fr=_e((t0,is)=>{var Tl=ss(),Bl=$r();is.exports=function(e){var n=Tl(e,"string");return Bl(n)?n:n+""};});var ls=_e((r0,os)=>{var Nl=Ye(),as=Ft(),Xr=Nl.document,wl=as(Xr)&&as(Xr.createElement);os.exports=function(e){return wl?Xr.createElement(e):{}};});var Kr=_e((n0,cs)=>{var _l=Ct(),Pl=Dt(),kl=ls();cs.exports=!_l&&!Pl(function(){return Object.defineProperty(kl("div"),"a",{get:function(){return 7}}).a!=7});});var Yr=_e(fs=>{var Il=Ct(),Ll=Et(),jl=au(),Ol=nr(),ql=sr(),Ml=fr(),Rl=gt(),Vl=Kr(),ps=Object.getOwnPropertyDescriptor;fs.f=Il?ps:function(n,t){if(n=ql(n),t=Ml(t),Vl)try{return ps(n,t)}catch{}if(Rl(n,t))return Ol(!Ll(jl.f,n,t),n[t])};});var ms=_e((s0,Ds)=>{var Wl=Ct(),$l=Dt();Ds.exports=Wl&&$l(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!=42});});var Nt=_e((i0,gs)=>{var ds=Ye(),Hl=Ft(),Gl=ds.String,Jl=ds.TypeError;gs.exports=function(e){if(Hl(e))return e;throw Jl(Gl(e)+" is not an object")};});var mr=_e(hs=>{var Ul=Ye(),zl=Ct(),Xl=Kr(),Kl=ms(),Dr=Nt(),ys=fr(),Yl=Ul.TypeError,Qr=Object.defineProperty,Ql=Object.getOwnPropertyDescriptor,Zr="enumerable",en="configurable",tn="writable";hs.f=zl?Kl?function(n,t,s){if(Dr(n),t=ys(t),Dr(s),typeof n=="function"&&t==="prototype"&&"value"in s&&tn in s&&!s[tn]){var a=Ql(n,t);a&&a[tn]&&(n[t]=s.value,s={configurable:en in s?s[en]:a[en],enumerable:Zr in s?s[Zr]:a[Zr],writable:!1});}return Qr(n,t,s)}:Qr:function(n,t,s){if(Dr(n),t=ys(t),Dr(s),Xl)try{return Qr(n,t,s)}catch{}if("get"in s||"set"in s)throw Yl("Accessors not supported");return "value"in s&&(n[t]=s.value),n};});var dr=_e((o0,vs)=>{var Zl=Ct(),ec=mr(),tc=nr();vs.exports=Zl?function(e,n,t){return ec.f(e,n,tc(1,t))}:function(e,n,t){return e[n]=t,e};});var gr=_e((l0,Cs)=>{var rc=at(),nc=ot(),rn=cr(),uc=rc(Function.toString);nc(rn.inspectSource)||(rn.inspectSource=function(e){return uc(e)});Cs.exports=rn.inspectSource;});var As=_e((c0,Fs)=>{var sc=Ye(),ic=ot(),ac=gr(),Es=sc.WeakMap;Fs.exports=ic(Es)&&/native code/.test(ac(Es));});var bs=_e((p0,xs)=>{var oc=Ur(),lc=zr(),Ss=oc("keys");xs.exports=function(e){return Ss[e]||(Ss[e]=lc(e))};});var nn=_e((f0,Ts)=>{Ts.exports={};});var ks=_e((D0,Ps)=>{var cc=As(),_s=Ye(),un=at(),pc=Ft(),fc=dr(),sn=gt(),an=cr(),Dc=bs(),mc=nn(),Bs="Object already initialized",ln=_s.TypeError,dc=_s.WeakMap,yr,Rt,hr,gc=function(e){return hr(e)?Rt(e):yr(e,{})},yc=function(e){return function(n){var t;if(!pc(n)||(t=Rt(n)).type!==e)throw ln("Incompatible receiver, "+e+" required");return t}};cc||an.state?(yt=an.state||(an.state=new dc),Ns=un(yt.get),on=un(yt.has),ws=un(yt.set),yr=function(e,n){if(on(yt,e))throw new ln(Bs);return n.facade=e,ws(yt,e,n),n},Rt=function(e){return Ns(yt,e)||{}},hr=function(e){return on(yt,e)}):(xt=Dc("state"),mc[xt]=!0,yr=function(e,n){if(sn(e,xt))throw new ln(Bs);return n.facade=e,fc(e,xt,n),n},Rt=function(e){return sn(e,xt)?e[xt]:{}},hr=function(e){return sn(e,xt)});var yt,Ns,on,ws,xt;Ps.exports={set:yr,get:Rt,has:hr,enforce:gc,getterFor:yc};});var js=_e((m0,Ls)=>{var cn=Ct(),hc=gt(),Is=Function.prototype,vc=cn&&Object.getOwnPropertyDescriptor,pn=hc(Is,"name"),Cc=pn&&function(){}.name==="something",Ec=pn&&(!cn||cn&&vc(Is,"name").configurable);Ls.exports={EXISTS:pn,PROPER:Cc,CONFIGURABLE:Ec};});var Vs=_e((d0,Rs)=>{var Fc=Ye(),Os=ot(),Ac=gt(),qs=dr(),Sc=lr(),xc=gr(),Ms=ks(),bc=js().CONFIGURABLE,Tc=Ms.get,Bc=Ms.enforce,Nc=String(String).split("String");(Rs.exports=function(e,n,t,s){var a=s?!!s.unsafe:!1,r=s?!!s.enumerable:!1,u=s?!!s.noTargetGet:!1,i=s&&s.name!==void 0?s.name:n,o;if(Os(t)&&(String(i).slice(0,7)==="Symbol("&&(i="["+String(i).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),(!Ac(t,"name")||bc&&t.name!==i)&&qs(t,"name",i),o=Bc(t),o.source||(o.source=Nc.join(typeof i=="string"?i:""))),e===Fc){r?e[n]=t:Sc(n,t);return}else a?!u&&e[n]&&(r=!0):delete e[n];r?e[n]=t:qs(e,n,t);})(Function.prototype,"toString",function(){return Os(this)&&Tc(this).source||xc(this)});});var vr=_e((g0,Ws)=>{var wc=Math.ceil,_c=Math.floor;Ws.exports=function(e){var n=+e;return n!==n||n===0?0:(n>0?_c:wc)(n)};});var Hs=_e((y0,$s)=>{var Pc=vr(),kc=Math.max,Ic=Math.min;$s.exports=function(e,n){var t=Pc(e);return t<0?kc(t+n,0):Ic(t,n)};});var Js=_e((h0,Gs)=>{var Lc=vr(),jc=Math.min;Gs.exports=function(e){return e>0?jc(Lc(e),9007199254740991):0};});var wt=_e((v0,Us)=>{var Oc=Js();Us.exports=function(e){return Oc(e.length)};});var Ks=_e((C0,Xs)=>{var qc=sr(),Mc=Hs(),Rc=wt(),zs=function(e){return function(n,t,s){var a=qc(n),r=Rc(a),u=Mc(s,r),i;if(e&&t!=t){for(;r>u;)if(i=a[u++],i!=i)return !0}else for(;r>u;u++)if((e||u in a)&&a[u]===t)return e||u||0;return !e&&-1}};Xs.exports={includes:zs(!0),indexOf:zs(!1)};});var Zs=_e((E0,Qs)=>{var Vc=at(),fn=gt(),Wc=sr(),$c=Ks().indexOf,Hc=nn(),Ys=Vc([].push);Qs.exports=function(e,n){var t=Wc(e),s=0,a=[],r;for(r in t)!fn(Hc,r)&&fn(t,r)&&Ys(a,r);for(;n.length>s;)fn(t,r=n[s++])&&(~$c(a,r)||Ys(a,r));return a};});var ti=_e((F0,ei)=>{ei.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"];});var ni=_e(ri=>{var Gc=Zs(),Jc=ti(),Uc=Jc.concat("length","prototype");ri.f=Object.getOwnPropertyNames||function(n){return Gc(n,Uc)};});var si=_e(ui=>{ui.f=Object.getOwnPropertySymbols;});var ai=_e((x0,ii)=>{var zc=qt(),Xc=at(),Kc=ni(),Yc=si(),Qc=Nt(),Zc=Xc([].concat);ii.exports=zc("Reflect","ownKeys")||function(n){var t=Kc.f(Qc(n)),s=Yc.f;return s?Zc(t,s(n)):t};});var ci=_e((b0,li)=>{var oi=gt(),ep=ai(),tp=Yr(),rp=mr();li.exports=function(e,n,t){for(var s=ep(n),a=rp.f,r=tp.f,u=0;u<s.length;u++){var i=s[u];!oi(e,i)&&!(t&&oi(t,i))&&a(e,i,r(n,i));}};});var fi=_e((T0,pi)=>{var np=Dt(),up=ot(),sp=/#|\.prototype\./,Vt=function(e,n){var t=ap[ip(e)];return t==lp?!0:t==op?!1:up(n)?np(n):!!n},ip=Vt.normalize=function(e){return String(e).replace(sp,".").toLowerCase()},ap=Vt.data={},op=Vt.NATIVE="N",lp=Vt.POLYFILL="P";pi.exports=Vt;});var Wt=_e((B0,Di)=>{var Dn=Ye(),cp=Yr().f,pp=dr(),fp=Vs(),Dp=lr(),mp=ci(),dp=fi();Di.exports=function(e,n){var t=e.target,s=e.global,a=e.stat,r,u,i,o,c,y;if(s?u=Dn:a?u=Dn[t]||Dp(t,{}):u=(Dn[t]||{}).prototype,u)for(i in n){if(c=n[i],e.noTargetGet?(y=cp(u,i),o=y&&y.value):o=u[i],r=dp(s?i:t+(a?".":"#")+i,e.forced),!r&&o!==void 0){if(typeof c==typeof o)continue;mp(c,o);}(e.sham||o&&o.sham)&&pp(c,"sham",!0),fp(u,i,c,e);}};});var mn=_e((N0,mi)=>{var gp=ur();mi.exports=Array.isArray||function(n){return gp(n)=="Array"};});var dn=_e((w0,gi)=>{var di=at(),yp=Mt(),hp=tr(),vp=di(di.bind);gi.exports=function(e,n){return yp(e),n===void 0?e:hp?vp(e,n):function(){return e.apply(n,arguments)}};});var gn=_e((_0,hi)=>{var Cp=Ye(),Ep=mn(),Fp=wt(),Ap=dn(),Sp=Cp.TypeError,yi=function(e,n,t,s,a,r,u,i){for(var o=a,c=0,y=u?Ap(u,i):!1,m,d;c<s;){if(c in t){if(m=y?y(t[c],c,n):t[c],r>0&&Ep(m))d=Fp(m),o=yi(e,n,m,d,o,r-1)-1;else {if(o>=9007199254740991)throw Sp("Exceed the acceptable array length");e[o]=m;}o++;}c++;}return o};hi.exports=yi;});var Ei=_e((P0,Ci)=>{var xp=St(),bp=xp("toStringTag"),vi={};vi[bp]="z";Ci.exports=String(vi)==="[object z]";});var yn=_e((k0,Fi)=>{var Tp=Ye(),Bp=Ei(),Np=ot(),Cr=ur(),wp=St(),_p=wp("toStringTag"),Pp=Tp.Object,kp=Cr(function(){return arguments}())=="Arguments",Ip=function(e,n){try{return e[n]}catch{}};Fi.exports=Bp?Cr:function(e){var n,t,s;return e===void 0?"Undefined":e===null?"Null":typeof(t=Ip(n=Pp(e),_p))=="string"?t:kp?Cr(n):(s=Cr(n))=="Object"&&Np(n.callee)?"Arguments":s};});var Bi=_e((I0,Ti)=>{var Lp=at(),jp=Dt(),Ai=ot(),Op=yn(),qp=qt(),Mp=gr(),Si=function(){},Rp=[],xi=qp("Reflect","construct"),hn=/^\s*(?:class|function)\b/,Vp=Lp(hn.exec),Wp=!hn.exec(Si),$t=function(n){if(!Ai(n))return !1;try{return xi(Si,Rp,n),!0}catch{return !1}},bi=function(n){if(!Ai(n))return !1;switch(Op(n)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return !1}try{return Wp||!!Vp(hn,Mp(n))}catch{return !0}};bi.sham=!0;Ti.exports=!xi||jp(function(){var e;return $t($t.call)||!$t(Object)||!$t(function(){e=!0;})||e})?bi:$t;});var Pi=_e((L0,_i)=>{var $p=Ye(),Ni=mn(),Hp=Bi(),Gp=Ft(),Jp=St(),Up=Jp("species"),wi=$p.Array;_i.exports=function(e){var n;return Ni(e)&&(n=e.constructor,Hp(n)&&(n===wi||Ni(n.prototype))?n=void 0:Gp(n)&&(n=n[Up],n===null&&(n=void 0))),n===void 0?wi:n};});var vn=_e((j0,ki)=>{var zp=Pi();ki.exports=function(e,n){return new(zp(e))(n===0?0:n)};});var Cn=_e((O0,Ii)=>{Ii.exports={};});var ji=_e((q0,Li)=>{var tf=St(),rf=Cn(),nf=tf("iterator"),uf=Array.prototype;Li.exports=function(e){return e!==void 0&&(rf.Array===e||uf[nf]===e)};});var En=_e((M0,qi)=>{var sf=yn(),Oi=or(),af=Cn(),of=St(),lf=of("iterator");qi.exports=function(e){if(e!=null)return Oi(e,lf)||Oi(e,"@@iterator")||af[sf(e)]};});var Ri=_e((R0,Mi)=>{var cf=Ye(),pf=Et(),ff=Mt(),Df=Nt(),mf=ar(),df=En(),gf=cf.TypeError;Mi.exports=function(e,n){var t=arguments.length<2?df(e):n;if(ff(t))return Df(pf(t,e));throw gf(mf(e)+" is not iterable")};});var $i=_e((V0,Wi)=>{var yf=Et(),Vi=Nt(),hf=or();Wi.exports=function(e,n,t){var s,a;Vi(e);try{if(s=hf(e,"return"),!s){if(n==="throw")throw t;return t}s=yf(s,e);}catch(r){a=!0,s=r;}if(n==="throw")throw t;if(a)throw s;return Vi(s),t};});var zi=_e((W0,Ui)=>{var vf=Ye(),Cf=dn(),Ef=Et(),Ff=Nt(),Af=ar(),Sf=ji(),xf=wt(),Hi=Mr(),bf=Ri(),Tf=En(),Gi=$i(),Bf=vf.TypeError,Er=function(e,n){this.stopped=e,this.result=n;},Ji=Er.prototype;Ui.exports=function(e,n,t){var s=t&&t.that,a=!!(t&&t.AS_ENTRIES),r=!!(t&&t.IS_ITERATOR),u=!!(t&&t.INTERRUPTED),i=Cf(n,s),o,c,y,m,d,p,f,h=function(T){return o&&Gi(o,"normal",T),new Er(!0,T)},w=function(T){return a?(Ff(T),u?i(T[0],T[1],h):i(T[0],T[1])):u?i(T,h):i(T)};if(r)o=e;else {if(c=Tf(e),!c)throw Bf(Af(e)+" is not iterable");if(Sf(c)){for(y=0,m=xf(e);m>y;y++)if(d=w(e[y]),d&&Hi(Ji,d))return d;return new Er(!1)}o=bf(e,c);}for(p=o.next;!(f=Ef(p,o)).done;){try{d=w(f.value);}catch(T){Gi(o,"throw",T);}if(typeof d=="object"&&d&&Hi(Ji,d))return d}return new Er(!1)};});var Ki=_e(($0,Xi)=>{var Nf=fr(),wf=mr(),_f=nr();Xi.exports=function(e,n,t){var s=Nf(n);s in e?wf.f(e,s,_f(0,t)):e[s]=t;};});var Yi=_e(()=>{var Lf=Wt(),jf=Ye();Lf({global:!0},{globalThis:jf});});var Xp=Wt(),Kp=gn(),Yp=Mt(),Qp=pr(),Zp=wt(),ef=vn();Xp({target:"Array",proto:!0},{flatMap:function(n){var t=Qp(this),s=Zp(t),a;return Yp(n),a=ef(t,0),a.length=Kp(a,t,t,s,0,1,n,arguments.length>1?arguments[1]:void 0),a}});var Pf=Wt(),kf=zi(),If=Ki();Pf({target:"Object",stat:!0},{fromEntries:function(n){var t={};return kf(n,function(s,a){If(t,s,a);},{AS_ENTRIES:!0}),t}});Yi();var Of=Wt(),qf=gn(),Mf=pr(),Rf=wt(),Vf=vr(),Wf=vn();Of({target:"Array",proto:!0},{flat:function(){var n=arguments.length?arguments[0]:void 0,t=Mf(this),s=Rf(t),a=Wf(t,0);return a.length=qf(a,t,t,s,0,n===void 0?1:Vf(n)),a}});var $f=["cliName","cliCategory","cliDescription"],Hf=["_"],Gf=["languageId"],Qi,Zi,ea,ta,ra,na;function wn(e,n){if(e==null)return {};var t=Jf(e,n),s,a;if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)s=r[a],!(n.indexOf(s)>=0)&&(!Object.prototype.propertyIsEnumerable.call(e,s)||(t[s]=e[s]));}return t}function Jf(e,n){if(e==null)return {};var t={},s=Object.keys(e),a,r;for(r=0;r<s.length;r++)a=s[r],!(n.indexOf(a)>=0)&&(t[a]=e[a]);return t}function _t(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}var Uf=Object.create,br=Object.defineProperty,zf=Object.getOwnPropertyDescriptor,_n=Object.getOwnPropertyNames,Xf=Object.getPrototypeOf,Kf=Object.prototype.hasOwnProperty,mt=(e,n)=>function(){return e&&(n=(0, e[_n(e)[0]])(e=0)),n},Z=(e,n)=>function(){return n||(0, e[_n(e)[0]])((n={exports:{}}).exports,n),n.exports},Gt=(e,n)=>{for(var t in n)br(e,t,{get:n[t],enumerable:!0});},la=(e,n,t,s)=>{if(n&&typeof n=="object"||typeof n=="function")for(let a of _n(n))!Kf.call(e,a)&&a!==t&&br(e,a,{get:()=>n[a],enumerable:!(s=zf(n,a))||s.enumerable});return e},Yf=(e,n,t)=>(t=e!=null?Uf(Xf(e)):{},la(n||!e||!e.__esModule?br(t,"default",{value:e,enumerable:!0}):t,e)),lt=e=>la(br({},"__esModule",{value:!0}),e),ua,sa,bt,re=mt({"<define:process>"(){ua={},sa=[],bt={env:ua,argv:sa};}}),ca=Z({"package.json"(e,n){n.exports={version:"2.7.1"};}}),Qf=Z({"node_modules/diff/lib/diff/base.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0}),e.default=n;function n(){}n.prototype={diff:function(r,u){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},o=i.callback;typeof i=="function"&&(o=i,i={}),this.options=i;var c=this;function y(S){return o?(setTimeout(function(){o(void 0,S);},0),!0):S}r=this.castInput(r),u=this.castInput(u),r=this.removeEmpty(this.tokenize(r)),u=this.removeEmpty(this.tokenize(u));var m=u.length,d=r.length,p=1,f=m+d,h=[{newPos:-1,components:[]}],w=this.extractCommon(h[0],u,r,0);if(h[0].newPos+1>=m&&w+1>=d)return y([{value:this.join(u),count:u.length}]);function T(){for(var S=-1*p;S<=p;S+=2){var B=void 0,I=h[S-1],k=h[S+1],P=(k?k.newPos:0)-S;I&&(h[S-1]=void 0);var C=I&&I.newPos+1<m,D=k&&0<=P&&P<d;if(!C&&!D){h[S]=void 0;continue}if(!C||D&&I.newPos<k.newPos?(B=s(k),c.pushComponent(B.components,void 0,!0)):(B=I,B.newPos++,c.pushComponent(B.components,!0,void 0)),P=c.extractCommon(B,u,r,S),B.newPos+1>=m&&P+1>=d)return y(t(c,B.components,u,r,c.useLongestToken));h[S]=B;}p++;}if(o)(function S(){setTimeout(function(){if(p>f)return o();T()||S();},0);})();else for(;p<=f;){var A=T();if(A)return A}},pushComponent:function(r,u,i){var o=r[r.length-1];o&&o.added===u&&o.removed===i?r[r.length-1]={count:o.count+1,added:u,removed:i}:r.push({count:1,added:u,removed:i});},extractCommon:function(r,u,i,o){for(var c=u.length,y=i.length,m=r.newPos,d=m-o,p=0;m+1<c&&d+1<y&&this.equals(u[m+1],i[d+1]);)m++,d++,p++;return p&&r.components.push({count:p}),r.newPos=m,d},equals:function(r,u){return this.options.comparator?this.options.comparator(r,u):r===u||this.options.ignoreCase&&r.toLowerCase()===u.toLowerCase()},removeEmpty:function(r){for(var u=[],i=0;i<r.length;i++)r[i]&&u.push(r[i]);return u},castInput:function(r){return r},tokenize:function(r){return r.split("")},join:function(r){return r.join("")}};function t(a,r,u,i,o){for(var c=0,y=r.length,m=0,d=0;c<y;c++){var p=r[c];if(p.removed){if(p.value=a.join(i.slice(d,d+p.count)),d+=p.count,c&&r[c-1].added){var h=r[c-1];r[c-1]=r[c],r[c]=h;}}else {if(!p.added&&o){var f=u.slice(m,m+p.count);f=f.map(function(T,A){var S=i[d+A];return S.length>T.length?S:T}),p.value=a.join(f);}else p.value=a.join(u.slice(m,m+p.count));m+=p.count,p.added||(d+=p.count);}}var w=r[y-1];return y>1&&typeof w.value=="string"&&(w.added||w.removed)&&a.equals("",w.value)&&(r[y-2].value+=w.value,r.pop()),r}function s(a){return {newPos:a.newPos,components:a.components.slice(0)}}}}),Zf=Z({"node_modules/diff/lib/diff/array.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0}),e.diffArrays=a,e.arrayDiff=void 0;var n=t(Qf());function t(r){return r&&r.__esModule?r:{default:r}}var s=new n.default;e.arrayDiff=s,s.tokenize=function(r){return r.slice()},s.join=s.removeEmpty=function(r){return r};function a(r,u,i){return s.diff(r,u,i)}}}),Pn=Z({"src/document/doc-builders.js"(e,n){re();function t(F){return {type:"concat",parts:F}}function s(F){return {type:"indent",contents:F}}function a(F,l){return {type:"align",contents:l,n:F}}function r(F){let l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return {type:"group",id:l.id,contents:F,break:Boolean(l.shouldBreak),expandedStates:l.expandedStates}}function u(F){return a(Number.NEGATIVE_INFINITY,F)}function i(F){return a({type:"root"},F)}function o(F){return a(-1,F)}function c(F,l){return r(F[0],Object.assign(Object.assign({},l),{},{expandedStates:F}))}function y(F){return {type:"fill",parts:F}}function m(F,l){let E=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return {type:"if-break",breakContents:F,flatContents:l,groupId:E.groupId}}function d(F,l){return {type:"indent-if-break",contents:F,groupId:l.groupId,negate:l.negate}}function p(F){return {type:"line-suffix",contents:F}}var f={type:"line-suffix-boundary"},h={type:"break-parent"},w={type:"trim"},T={type:"line",hard:!0},A={type:"line",hard:!0,literal:!0},S={type:"line"},B={type:"line",soft:!0},I=t([T,h]),k=t([A,h]),P={type:"cursor",placeholder:Symbol("cursor")};function C(F,l){let E=[];for(let v=0;v<l.length;v++)v!==0&&E.push(F),E.push(l[v]);return t(E)}function D(F,l,E){let v=F;if(l>0){for(let N=0;N<Math.floor(l/E);++N)v=s(v);v=a(l%E,v),v=a(Number.NEGATIVE_INFINITY,v);}return v}function g(F,l){return {type:"label",label:F,contents:l}}n.exports={concat:t,join:C,line:S,softline:B,hardline:I,literalline:k,group:r,conditionalGroup:c,fill:y,lineSuffix:p,lineSuffixBoundary:f,cursor:P,breakParent:h,ifBreak:m,trim:w,indent:s,indentIfBreak:d,align:a,addAlignmentToDoc:D,markAsRoot:i,dedentToRoot:u,dedent:o,hardlineWithoutBreakParent:T,literallineWithoutBreakParent:A,label:g};}}),kn=Z({"src/common/end-of-line.js"(e,n){re();function t(u){let i=u.indexOf("\r");return i>=0?u.charAt(i+1)===` -`?"crlf":"cr":"lf"}function s(u){switch(u){case"cr":return "\r";case"crlf":return `\r +var au=Object.create;var $e=Object.defineProperty;var Du=Object.getOwnPropertyDescriptor;var cu=Object.getOwnPropertyNames;var lu=Object.getPrototypeOf,fu=Object.prototype.hasOwnProperty;var pu=(t,e)=>()=>(t&&(e=t(t=0)),e);var Ue=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Me=(t,e)=>{for(var r in e)$e(t,r,{get:e[r],enumerable:!0});},nr=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of cu(e))!fu.call(t,o)&&o!==r&&$e(t,o,{get:()=>e[o],enumerable:!(n=Du(e,o))||n.enumerable});return t};var Ce=(t,e,r)=>(r=t!=null?au(lu(t)):{},nr(e||!t||!t.__esModule?$e(r,"default",{value:t,enumerable:!0}):r,t)),du=t=>nr($e({},"__esModule",{value:!0}),t);var Fu=(t,e,r)=>{if(!e.has(t))throw TypeError("Cannot "+r)};var Ct=(t,e,r)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,r);};var ce=(t,e,r)=>(Fu(t,e,"access private method"),r);var or=Ue(gt=>{Object.defineProperty(gt,"__esModule",{value:!0});gt.default=ur;function ur(){}ur.prototype={diff:function(e,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},o=n.callback;typeof n=="function"&&(o=n,n={}),this.options=n;var u=this;function i(p){return o?(setTimeout(function(){o(void 0,p);},0),!0):p}e=this.castInput(e),r=this.castInput(r),e=this.removeEmpty(this.tokenize(e)),r=this.removeEmpty(this.tokenize(r));var s=r.length,a=e.length,D=1,c=s+a;n.maxEditLength&&(c=Math.min(c,n.maxEditLength));var F=[{newPos:-1,components:[]}],f=this.extractCommon(F[0],r,e,0);if(F[0].newPos+1>=s&&f+1>=a)return i([{value:this.join(r),count:r.length}]);function d(){for(var p=-1*D;p<=D;p+=2){var m=void 0,E=F[p-1],h=F[p+1],g=(h?h.newPos:0)-p;E&&(F[p-1]=void 0);var C=E&&E.newPos+1<s,_=h&&0<=g&&g<a;if(!C&&!_){F[p]=void 0;continue}if(!C||_&&E.newPos<h.newPos?(m=hu(h),u.pushComponent(m.components,void 0,!0)):(m=E,m.newPos++,u.pushComponent(m.components,!0,void 0)),g=u.extractCommon(m,r,e,p),m.newPos+1>=s&&g+1>=a)return i(Eu(u,m.components,r,e,u.useLongestToken));F[p]=m;}D++;}if(o)(function p(){setTimeout(function(){if(D>c)return o();d()||p();},0);})();else for(;D<=c;){var l=d();if(l)return l}},pushComponent:function(e,r,n){var o=e[e.length-1];o&&o.added===r&&o.removed===n?e[e.length-1]={count:o.count+1,added:r,removed:n}:e.push({count:1,added:r,removed:n});},extractCommon:function(e,r,n,o){for(var u=r.length,i=n.length,s=e.newPos,a=s-o,D=0;s+1<u&&a+1<i&&this.equals(r[s+1],n[a+1]);)s++,a++,D++;return D&&e.components.push({count:D}),e.newPos=s,a},equals:function(e,r){return this.options.comparator?this.options.comparator(e,r):e===r||this.options.ignoreCase&&e.toLowerCase()===r.toLowerCase()},removeEmpty:function(e){for(var r=[],n=0;n<e.length;n++)e[n]&&r.push(e[n]);return r},castInput:function(e){return e},tokenize:function(e){return e.split("")},join:function(e){return e.join("")}};function Eu(t,e,r,n,o){for(var u=0,i=e.length,s=0,a=0;u<i;u++){var D=e[u];if(D.removed){if(D.value=t.join(n.slice(a,a+D.count)),a+=D.count,u&&e[u-1].added){var F=e[u-1];e[u-1]=e[u],e[u]=F;}}else {if(!D.added&&o){var c=r.slice(s,s+D.count);c=c.map(function(d,l){var p=n[a+l];return p.length>d.length?p:d}),D.value=t.join(c);}else D.value=t.join(r.slice(s,s+D.count));s+=D.count,D.added||(a+=D.count);}}var f=e[i-1];return i>1&&typeof f.value=="string"&&(f.added||f.removed)&&t.equals("",f.value)&&(e[i-2].value+=f.value,e.pop()),e}function hu(t){return {newPos:t.newPos,components:t.components.slice(0)}}});var ir=Ue(ye=>{Object.defineProperty(ye,"__esModule",{value:!0});ye.diffArrays=yu;ye.arrayDiff=void 0;var Cu=gu(or());function gu(t){return t&&t.__esModule?t:{default:t}}var ge=new Cu.default;ye.arrayDiff=ge;ge.tokenize=function(t){return t.slice()};ge.join=ge.removeEmpty=function(t){return t};function yu(t,e,r){return ge.diff(t,e,r)}});var Pe=Ue((ss,Rr)=>{var Ir=new Proxy(String,{get:()=>Ir});Rr.exports=Ir;});var ln={};Me(ln,{default:()=>to,shouldHighlight:()=>eo});var eo,to,fn=pu(()=>{eo=()=>!1,to=String;});var hn=Ue(pt=>{Object.defineProperty(pt,"__esModule",{value:!0});pt.codeFrameColumns=En;pt.default=io;var pn=(fn(),du(ln)),ro=Pe(),dn=ro,jt;function no(t){if(t){return (jt)!=null||(jt=new dn.constructor({enabled:!0,level:1})),jt}return dn}var Fn=!1;function uo(t){return {gutter:t.grey,marker:t.red.bold,message:t.red.bold}}var mn=/\r\n|[\n\r\u2028\u2029]/;function oo(t,e,r){let n=Object.assign({column:0,line:-1},t.start),o=Object.assign({},n,t.end),{linesAbove:u=2,linesBelow:i=3}=r||{},s=n.line,a=n.column,D=o.line,c=o.column,F=Math.max(s-(u+1),0),f=Math.min(e.length,D+i);s===-1&&(F=0),D===-1&&(f=e.length);let d=D-s,l={};if(d)for(let p=0;p<=d;p++){let m=p+s;if(!a)l[m]=!0;else if(p===0){let E=e[m-1].length;l[m]=[a,E-a+1];}else if(p===d)l[m]=[0,c];else {let E=e[m-p].length;l[m]=[0,E];}}else a===c?a?l[s]=[a,0]:l[s]=!0:l[s]=[a,c-a];return {start:F,end:f,markerLines:l}}function En(t,e,r={}){let n=(r.highlightCode||r.forceColor)&&(0, pn.shouldHighlight)(r),o=no(r.forceColor),u=uo(o),i=(p,m)=>n?p(m):m,s=t.split(mn),{start:a,end:D,markerLines:c}=oo(e,s,r),F=e.start&&typeof e.start.column=="number",f=String(D).length,l=(n?(0, pn.default)(t,r):t).split(mn,D).slice(a,D).map((p,m)=>{let E=a+1+m,g=` ${` ${E}`.slice(-f)} |`,C=c[E],_=!c[E+1];if(C){let Z="";if(Array.isArray(C)){let $=p.slice(0,Math.max(C[0]-1,0)).replace(/[^\t]/g," "),Q=C[1]||1;Z=[` + `,i(u.gutter,g.replace(/\d/g," "))," ",$,i(u.marker,"^").repeat(Q)].join(""),_&&r.message&&(Z+=" "+i(u.message,r.message));}return [i(u.marker,">"),i(u.gutter,g),p.length>0?` ${p}`:"",Z].join("")}else return ` ${i(u.gutter,g)}${p.length>0?` ${p}`:""}`}).join(` +`);return r.message&&!F&&(l=`${" ".repeat(f+1)}${r.message} +${l}`),n?o.reset(l):l}function io(t,e,r,n={}){if(!Fn){Fn=!0;let u="Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.";{let i=new Error(u);i.name="DeprecationWarning",console.warn(new Error(u));}}return r=Math.max(r,0),En(t,{start:{column:r,line:e}},n)}});var tr={};Me(tr,{__debug:()=>Qo,check:()=>Xo,doc:()=>er,format:()=>su,formatWithCursor:()=>iu,getSupportInfo:()=>Zo,util:()=>Qt,version:()=>ou});var mu=(t,e,r,n)=>{if(!(t&&e==null))return e.replaceAll?e.replaceAll(r,n):r.global?e.replace(r,n):e.split(r).join(n)},ee=mu;var Wn=Ce(ir(),1);var U="string",j="array",M="cursor",T="indent",S="align",v="trim",A="group",k="fill",B="if-break",P="indent-if-break",L="line-suffix",I="line-suffix-boundary",x="line",O="label",b="break-parent",We=new Set([M,T,S,v,A,k,B,P,L,I,x,O,b]);function xu(t){if(typeof t=="string")return U;if(Array.isArray(t))return j;if(!t)return;let{type:e}=t;if(We.has(e))return e}var W=xu;var _u=t=>new Intl.ListFormat("en-US",{type:"disjunction"}).format(t);function Au(t){let e=t===null?"null":typeof t;if(e!=="string"&&e!=="object")return `Unexpected doc '${e}', +Expected it to be 'string' or 'object'.`;if(W(t))throw new Error("doc is valid.");let r=Object.prototype.toString.call(t);if(r!=="[object Object]")return `Unexpected doc '${r}'.`;let n=_u([...We].map(o=>`'${o}'`));return `Unexpected doc.type '${t.type}'. +Expected it to be ${n}.`}var yt=class extends Error{name="InvalidDocError";constructor(e){super(Au(e)),this.doc=e;}},q=yt;var sr={};function Bu(t,e,r,n){let o=[t];for(;o.length>0;){let u=o.pop();if(u===sr){r(o.pop());continue}r&&o.push(u,sr);let i=W(u);if(!i)throw new q(u);if((e==null?void 0:e(u))!==!1)switch(i){case j:case k:{let s=i===j?u:u.parts;for(let a=s.length,D=a-1;D>=0;--D)o.push(s[D]);break}case B:o.push(u.flatContents,u.breakContents);break;case A:if(n&&u.expandedStates)for(let s=u.expandedStates.length,a=s-1;a>=0;--a)o.push(u.expandedStates[a]);else o.push(u.contents);break;case S:case T:case P:case O:case L:o.push(u.contents);break;case U:case M:case v:case I:case x:case b:break;default:throw new q(u)}}}var xe=Bu;var ar=()=>{},ze=ar;function ie(t){return {type:T,contents:t}}function oe(t,e){return {type:S,contents:e,n:t}}function xt(t,e={}){return ze(e.expandedStates),{type:A,id:e.id,contents:t,break:!!e.shouldBreak,expandedStates:e.expandedStates}}function Dr(t){return oe(Number.NEGATIVE_INFINITY,t)}function cr(t){return oe({type:"root"},t)}function lr(t){return oe(-1,t)}function fr(t,e){return xt(t[0],{...e,expandedStates:t})}function Ge(t){return {type:k,parts:t}}function pr(t,e="",r={}){return {type:B,breakContents:t,flatContents:e,groupId:r.groupId}}function dr(t,e){return {type:P,contents:t,groupId:e.groupId,negate:e.negate}}function _e(t){return {type:L,contents:t}}var Fr={type:I},le={type:b},mr={type:v},Ae={type:x,hard:!0},_t={type:x,hard:!0,literal:!0},Ke={type:x},Er={type:x,soft:!0},G=[Ae,le],He=[_t,le],Be={type:M};function ke(t,e){let r=[];for(let n=0;n<e.length;n++)n!==0&&r.push(t),r.push(e[n]);return r}function qe(t,e,r){let n=t;if(e>0){for(let o=0;o<Math.floor(e/r);++o)n=ie(n);n=oe(e%r,n),n=oe(Number.NEGATIVE_INFINITY,n);}return n}function hr(t,e){return t?{type:O,label:t,contents:e}:e}var ku=(t,e,r)=>{if(!(t&&e==null))return Array.isArray(e)||typeof e=="string"?e[r<0?e.length+r:r]:e.at(r)},y=ku;function Cr(t){let e=t.indexOf("\r");return e>=0?t.charAt(e+1)===` +`?"crlf":"cr":"lf"}function be(t){switch(t){case"cr":return "\r";case"crlf":return `\r `;default:return ` -`}}function a(u,i){let o;switch(i){case` -`:o=/\n/g;break;case"\r":o=/\r/g;break;case`\r -`:o=/\r\n/g;break;default:throw new Error('Unexpected "eol" '.concat(JSON.stringify(i),"."))}let c=u.match(o);return c?c.length:0}function r(u){return u.replace(/\r\n?/g,` -`)}n.exports={guessEndOfLine:t,convertEndOfLineToChars:s,countEndOfLineChars:a,normalizeEndOfLine:r};}}),it=Z({"src/utils/get-last.js"(e,n){re();var t=s=>s[s.length-1];n.exports=t;}});function eD(){let{onlyFirst:e=!1}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(n,e?void 0:"g")}var tD=mt({"node_modules/strip-ansi/node_modules/ansi-regex/index.js"(){re();}});function rD(e){if(typeof e!="string")throw new TypeError("Expected a `string`, got `".concat(typeof e,"`"));return e.replace(eD(),"")}var nD=mt({"node_modules/strip-ansi/index.js"(){re(),tD();}});function uD(e){return Number.isInteger(e)?e>=4352&&(e<=4447||e===9001||e===9002||11904<=e&&e<=12871&&e!==12351||12880<=e&&e<=19903||19968<=e&&e<=42182||43360<=e&&e<=43388||44032<=e&&e<=55203||63744<=e&&e<=64255||65040<=e&&e<=65049||65072<=e&&e<=65131||65281<=e&&e<=65376||65504<=e&&e<=65510||110592<=e&&e<=110593||127488<=e&&e<=127569||131072<=e&&e<=262141):!1}var sD=mt({"node_modules/is-fullwidth-code-point/index.js"(){re();}}),iD=Z({"node_modules/emoji-regex/index.js"(e,n){re(),n.exports=function(){return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g};}}),pa={};Gt(pa,{default:()=>aD});function aD(e){if(typeof e!="string"||e.length===0||(e=rD(e),e.length===0))return 0;e=e.replace((0, fa.default)()," ");let n=0;for(let t=0;t<e.length;t++){let s=e.codePointAt(t);s<=31||s>=127&&s<=159||s>=768&&s<=879||(s>65535&&t++,n+=uD(s)?2:1);}return n}var fa,oD=mt({"node_modules/string-width/index.js"(){re(),nD(),sD(),fa=Yf(iD());}}),Da=Z({"src/utils/get-string-width.js"(e,n){re();var t=(oD(),lt(pa)).default,s=/[^\x20-\x7F]/;function a(r){return r?s.test(r)?t(r):r.length:0}n.exports=a;}}),In=Z({"src/document/doc-utils.js"(e,n){re();var t=it(),{literalline:s,join:a}=Pn(),r=l=>Array.isArray(l)||l&&l.type==="concat",u=l=>{if(Array.isArray(l))return l;if(l.type!=="concat"&&l.type!=="fill")throw new Error("Expect doc type to be `concat` or `fill`.");return l.parts},i={};function o(l,E,v,N){let x=[l];for(;x.length>0;){let b=x.pop();if(b===i){v(x.pop());continue}if(v&&x.push(b,i),!E||E(b)!==!1)if(r(b)||b.type==="fill"){let L=u(b);for(let M=L.length,j=M-1;j>=0;--j)x.push(L[j]);}else if(b.type==="if-break")b.flatContents&&x.push(b.flatContents),b.breakContents&&x.push(b.breakContents);else if(b.type==="group"&&b.expandedStates)if(N)for(let L=b.expandedStates.length,M=L-1;M>=0;--M)x.push(b.expandedStates[M]);else x.push(b.contents);else b.contents&&x.push(b.contents);}}function c(l,E){let v=new Map;return N(l);function N(b){if(v.has(b))return v.get(b);let L=x(b);return v.set(b,L),L}function x(b){if(Array.isArray(b))return E(b.map(N));if(b.type==="concat"||b.type==="fill"){let L=b.parts.map(N);return E(Object.assign(Object.assign({},b),{},{parts:L}))}if(b.type==="if-break"){let L=b.breakContents&&N(b.breakContents),M=b.flatContents&&N(b.flatContents);return E(Object.assign(Object.assign({},b),{},{breakContents:L,flatContents:M}))}if(b.type==="group"&&b.expandedStates){let L=b.expandedStates.map(N),M=L[0];return E(Object.assign(Object.assign({},b),{},{contents:M,expandedStates:L}))}if(b.contents){let L=N(b.contents);return E(Object.assign(Object.assign({},b),{},{contents:L}))}return E(b)}}function y(l,E,v){let N=v,x=!1;function b(L){let M=E(L);if(M!==void 0&&(x=!0,N=M),x)return !1}return o(l,b),N}function m(l){if(l.type==="group"&&l.break||l.type==="line"&&l.hard||l.type==="break-parent")return !0}function d(l){return y(l,m,!1)}function p(l){if(l.length>0){let E=t(l);!E.expandedStates&&!E.break&&(E.break="propagated");}return null}function f(l){let E=new Set,v=[];function N(b){if(b.type==="break-parent"&&p(v),b.type==="group"){if(v.push(b),E.has(b))return !1;E.add(b);}}function x(b){b.type==="group"&&v.pop().break&&p(v);}o(l,N,x,!0);}function h(l){return l.type==="line"&&!l.hard?l.soft?"":" ":l.type==="if-break"?l.flatContents||"":l}function w(l){return c(l,h)}var T=(l,E)=>l&&l.type==="line"&&l.hard&&E&&E.type==="break-parent";function A(l){if(!l)return l;if(r(l)||l.type==="fill"){let E=u(l);for(;E.length>1&&T(...E.slice(-2));)E.length-=2;if(E.length>0){let v=A(t(E));E[E.length-1]=v;}return Array.isArray(l)?E:Object.assign(Object.assign({},l),{},{parts:E})}switch(l.type){case"align":case"indent":case"indent-if-break":case"group":case"line-suffix":case"label":{let E=A(l.contents);return Object.assign(Object.assign({},l),{},{contents:E})}case"if-break":{let E=A(l.breakContents),v=A(l.flatContents);return Object.assign(Object.assign({},l),{},{breakContents:E,flatContents:v})}}return l}function S(l){return A(I(l))}function B(l){switch(l.type){case"fill":if(l.parts.every(v=>v===""))return "";break;case"group":if(!l.contents&&!l.id&&!l.break&&!l.expandedStates)return "";if(l.contents.type==="group"&&l.contents.id===l.id&&l.contents.break===l.break&&l.contents.expandedStates===l.expandedStates)return l.contents;break;case"align":case"indent":case"indent-if-break":case"line-suffix":if(!l.contents)return "";break;case"if-break":if(!l.flatContents&&!l.breakContents)return "";break}if(!r(l))return l;let E=[];for(let v of u(l)){if(!v)continue;let[N,...x]=r(v)?u(v):[v];typeof N=="string"&&typeof t(E)=="string"?E[E.length-1]+=N:E.push(N),E.push(...x);}return E.length===0?"":E.length===1?E[0]:Array.isArray(l)?E:Object.assign(Object.assign({},l),{},{parts:E})}function I(l){return c(l,E=>B(E))}function k(l){let E=[],v=l.filter(Boolean);for(;v.length>0;){let N=v.shift();if(!!N){if(r(N)){v.unshift(...u(N));continue}if(E.length>0&&typeof t(E)=="string"&&typeof N=="string"){E[E.length-1]+=N;continue}E.push(N);}}return E}function P(l){return c(l,E=>Array.isArray(E)?k(E):E.parts?Object.assign(Object.assign({},E),{},{parts:k(E.parts)}):E)}function C(l){return c(l,E=>typeof E=="string"&&E.includes(` -`)?D(E):E)}function D(l){let E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:s;return a(E,l.split(` -`)).parts}function g(l){if(l.type==="line")return !0}function F(l){return y(l,g,!1)}n.exports={isConcat:r,getDocParts:u,willBreak:d,traverseDoc:o,findInDoc:y,mapDoc:c,propagateBreaks:f,removeLines:w,stripTrailingHardline:S,normalizeParts:k,normalizeDoc:P,cleanDoc:I,replaceTextEndOfLine:D,replaceEndOfLine:C,canBreak:F};}}),lD=Z({"src/document/doc-printer.js"(e,n){re();var{convertEndOfLineToChars:t}=kn(),s=it(),a=Da(),{fill:r,cursor:u,indent:i}=Pn(),{isConcat:o,getDocParts:c}=In(),y,m=1,d=2;function p(){return {value:"",length:0,queue:[]}}function f(B,I){return w(B,{type:"indent"},I)}function h(B,I,k){return I===Number.NEGATIVE_INFINITY?B.root||p():I<0?w(B,{type:"dedent"},k):I?I.type==="root"?Object.assign(Object.assign({},B),{},{root:B}):w(B,{type:typeof I=="string"?"stringAlign":"numberAlign",n:I},k):B}function w(B,I,k){let P=I.type==="dedent"?B.queue.slice(0,-1):[...B.queue,I],C="",D=0,g=0,F=0;for(let L of P)switch(L.type){case"indent":v(),k.useTabs?l(1):E(k.tabWidth);break;case"stringAlign":v(),C+=L.n,D+=L.n.length;break;case"numberAlign":g+=1,F+=L.n;break;default:throw new Error("Unexpected type '".concat(L.type,"'"))}return x(),Object.assign(Object.assign({},B),{},{value:C,length:D,queue:P});function l(L){C+=" ".repeat(L),D+=k.tabWidth*L;}function E(L){C+=" ".repeat(L),D+=L;}function v(){k.useTabs?N():x();}function N(){g>0&&l(g),b();}function x(){F>0&&E(F),b();}function b(){g=0,F=0;}}function T(B){if(B.length===0)return 0;let I=0;for(;B.length>0&&typeof s(B)=="string"&&/^[\t ]*$/.test(s(B));)I+=B.pop().length;if(B.length>0&&typeof s(B)=="string"){let k=s(B).replace(/[\t ]*$/,"");I+=s(B).length-k.length,B[B.length-1]=k;}return I}function A(B,I,k,P,C,D){let g=I.length,F=[B],l=[];for(;k>=0;){if(F.length===0){if(g===0)return !0;F.push(I[g-1]),g--;continue}let[E,v,N]=F.pop();if(typeof N=="string")l.push(N),k-=a(N);else if(o(N)){let x=c(N);for(let b=x.length-1;b>=0;b--)F.push([E,v,x[b]]);}else switch(N.type){case"indent":F.push([f(E,P),v,N.contents]);break;case"align":F.push([h(E,N.n,P),v,N.contents]);break;case"trim":k+=T(l);break;case"group":{if(D&&N.break)return !1;let x=N.break?m:v;F.push([E,x,N.expandedStates&&x===m?s(N.expandedStates):N.contents]),N.id&&(y[N.id]=x);break}case"fill":for(let x=N.parts.length-1;x>=0;x--)F.push([E,v,N.parts[x]]);break;case"if-break":case"indent-if-break":{let x=N.groupId?y[N.groupId]:v;if(x===m){let b=N.type==="if-break"?N.breakContents:N.negate?N.contents:i(N.contents);b&&F.push([E,v,b]);}if(x===d){let b=N.type==="if-break"?N.flatContents:N.negate?i(N.contents):N.contents;b&&F.push([E,v,b]);}break}case"line":switch(v){case d:if(!N.hard){N.soft||(l.push(" "),k-=1);break}return !0;case m:return !0}break;case"line-suffix":C=!0;break;case"line-suffix-boundary":if(C)return !1;break;case"label":F.push([E,v,N.contents]);break}}return !1}function S(B,I){y={};let k=I.printWidth,P=t(I.endOfLine),C=0,D=[[p(),m,B]],g=[],F=!1,l=[];for(;D.length>0;){let[v,N,x]=D.pop();if(typeof x=="string"){let b=P!==` -`?x.replace(/\n/g,P):x;g.push(b),C+=a(b);}else if(o(x)){let b=c(x);for(let L=b.length-1;L>=0;L--)D.push([v,N,b[L]]);}else switch(x.type){case"cursor":g.push(u.placeholder);break;case"indent":D.push([f(v,I),N,x.contents]);break;case"align":D.push([h(v,x.n,I),N,x.contents]);break;case"trim":C-=T(g);break;case"group":switch(N){case d:if(!F){D.push([v,x.break?m:d,x.contents]);break}case m:{F=!1;let b=[v,d,x.contents],L=k-C,M=l.length>0;if(!x.break&&A(b,D,L,I,M))D.push(b);else if(x.expandedStates){let j=s(x.expandedStates);if(x.break){D.push([v,m,j]);break}else for(let $=1;$<x.expandedStates.length+1;$++)if($>=x.expandedStates.length){D.push([v,m,j]);break}else {let V=x.expandedStates[$],q=[v,d,V];if(A(q,D,L,I,M)){D.push(q);break}}}else D.push([v,m,x.contents]);break}}x.id&&(y[x.id]=s(D)[1]);break;case"fill":{let b=k-C,{parts:L}=x;if(L.length===0)break;let[M,j]=L,$=[v,d,M],V=[v,m,M],q=A($,[],b,I,l.length>0,!0);if(L.length===1){q?D.push($):D.push(V);break}let Y=[v,d,j],H=[v,m,j];if(L.length===2){q?D.push(Y,$):D.push(H,V);break}L.splice(0,2);let R=[v,N,r(L)],Q=L[0];A([v,d,[M,j,Q]],[],b,I,l.length>0,!0)?D.push(R,Y,$):q?D.push(R,H,$):D.push(R,H,V);break}case"if-break":case"indent-if-break":{let b=x.groupId?y[x.groupId]:N;if(b===m){let L=x.type==="if-break"?x.breakContents:x.negate?x.contents:i(x.contents);L&&D.push([v,N,L]);}if(b===d){let L=x.type==="if-break"?x.flatContents:x.negate?i(x.contents):x.contents;L&&D.push([v,N,L]);}break}case"line-suffix":l.push([v,N,x.contents]);break;case"line-suffix-boundary":l.length>0&&D.push([v,N,{type:"line",hard:!0}]);break;case"line":switch(N){case d:if(x.hard)F=!0;else {x.soft||(g.push(" "),C+=1);break}case m:if(l.length>0){D.push([v,N,x],...l.reverse()),l=[];break}x.literal?v.root?(g.push(P,v.root.value),C=v.root.length):(g.push(P),C=0):(C-=T(g),g.push(P+v.value),C=v.length);break}break;case"label":D.push([v,N,x.contents]);break;}D.length===0&&l.length>0&&(D.push(...l.reverse()),l=[]);}let E=g.indexOf(u.placeholder);if(E!==-1){let v=g.indexOf(u.placeholder,E+1),N=g.slice(0,E).join(""),x=g.slice(E+1,v).join(""),b=g.slice(v+1).join("");return {formatted:N+x+b,cursorNodeStart:N.length,cursorNodeText:x}}return {formatted:g.join("")}}n.exports={printDocToString:S};}}),cD=Z({"src/document/doc-debug.js"(e,n){re();var{isConcat:t,getDocParts:s}=In();function a(u){if(!u)return "";if(t(u)){let i=[];for(let o of s(u))if(t(o))i.push(...a(o).parts);else {let c=a(o);c!==""&&i.push(c);}return {type:"concat",parts:i}}return u.type==="if-break"?Object.assign(Object.assign({},u),{},{breakContents:a(u.breakContents),flatContents:a(u.flatContents)}):u.type==="group"?Object.assign(Object.assign({},u),{},{contents:a(u.contents),expandedStates:u.expandedStates&&u.expandedStates.map(a)}):u.type==="fill"?{type:"fill",parts:u.parts.map(a)}:u.contents?Object.assign(Object.assign({},u),{},{contents:a(u.contents)}):u}function r(u){let i=Object.create(null),o=new Set;return c(a(u));function c(m,d,p){if(typeof m=="string")return JSON.stringify(m);if(t(m)){let f=s(m).map(c).filter(Boolean);return f.length===1?f[0]:"[".concat(f.join(", "),"]")}if(m.type==="line"){let f=Array.isArray(p)&&p[d+1]&&p[d+1].type==="break-parent";return m.literal?f?"literalline":"literallineWithoutBreakParent":m.hard?f?"hardline":"hardlineWithoutBreakParent":m.soft?"softline":"line"}if(m.type==="break-parent")return Array.isArray(p)&&p[d-1]&&p[d-1].type==="line"&&p[d-1].hard?void 0:"breakParent";if(m.type==="trim")return "trim";if(m.type==="indent")return "indent("+c(m.contents)+")";if(m.type==="align")return m.n===Number.NEGATIVE_INFINITY?"dedentToRoot("+c(m.contents)+")":m.n<0?"dedent("+c(m.contents)+")":m.n.type==="root"?"markAsRoot("+c(m.contents)+")":"align("+JSON.stringify(m.n)+", "+c(m.contents)+")";if(m.type==="if-break")return "ifBreak("+c(m.breakContents)+(m.flatContents?", "+c(m.flatContents):"")+(m.groupId?(m.flatContents?"":', ""')+", { groupId: ".concat(y(m.groupId)," }"):"")+")";if(m.type==="indent-if-break"){let f=[];m.negate&&f.push("negate: true"),m.groupId&&f.push("groupId: ".concat(y(m.groupId)));let h=f.length>0?", { ".concat(f.join(", ")," }"):"";return "indentIfBreak(".concat(c(m.contents)).concat(h,")")}if(m.type==="group"){let f=[];m.break&&m.break!=="propagated"&&f.push("shouldBreak: true"),m.id&&f.push("id: ".concat(y(m.id)));let h=f.length>0?", { ".concat(f.join(", ")," }"):"";return m.expandedStates?"conditionalGroup([".concat(m.expandedStates.map(w=>c(w)).join(","),"]").concat(h,")"):"group(".concat(c(m.contents)).concat(h,")")}if(m.type==="fill")return "fill([".concat(m.parts.map(f=>c(f)).join(", "),"])");if(m.type==="line-suffix")return "lineSuffix("+c(m.contents)+")";if(m.type==="line-suffix-boundary")return "lineSuffixBoundary";if(m.type==="label")return "label(".concat(JSON.stringify(m.label),", ").concat(c(m.contents),")");throw new Error("Unknown doc type "+m.type)}function y(m){if(typeof m!="symbol")return JSON.stringify(String(m));if(m in i)return i[m];let d=String(m).slice(7,-1)||"symbol";for(let p=0;;p++){let f=d+(p>0?" #".concat(p):"");if(!o.has(f))return o.add(f),i[m]="Symbol.for(".concat(JSON.stringify(f),")")}}}n.exports={printDocToDebug:r};}}),Oe=Z({"src/document/index.js"(e,n){re(),n.exports={builders:Pn(),printer:lD(),utils:In(),debug:cD()};}}),ma={};Gt(ma,{default:()=>pD});function pD(e){if(typeof e!="string")throw new TypeError("Expected a string");return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}var fD=mt({"node_modules/escape-string-regexp/index.js"(){re();}}),da=Z({"node_modules/semver/internal/debug.js"(e,n){re();var t=typeof bt=="object"&&bt.env&&bt.env.NODE_DEBUG&&/\bsemver\b/i.test(bt.env.NODE_DEBUG)?function(){for(var s=arguments.length,a=new Array(s),r=0;r<s;r++)a[r]=arguments[r];return console.error("SEMVER",...a)}:()=>{};n.exports=t;}}),ga=Z({"node_modules/semver/internal/constants.js"(e,n){re();var t="2.0.0",s=256,a=Number.MAX_SAFE_INTEGER||9007199254740991,r=16;n.exports={SEMVER_SPEC_VERSION:t,MAX_LENGTH:s,MAX_SAFE_INTEGER:a,MAX_SAFE_COMPONENT_LENGTH:r};}}),DD=Z({"node_modules/semver/internal/re.js"(e,n){re();var{MAX_SAFE_COMPONENT_LENGTH:t}=ga(),s=da();e=n.exports={};var a=e.re=[],r=e.src=[],u=e.t={},i=0,o=(c,y,m)=>{let d=i++;s(c,d,y),u[c]=d,r[d]=y,a[d]=new RegExp(y,m?"g":void 0);};o("NUMERICIDENTIFIER","0|[1-9]\\d*"),o("NUMERICIDENTIFIERLOOSE","[0-9]+"),o("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*"),o("MAINVERSION","(".concat(r[u.NUMERICIDENTIFIER],")\\.(").concat(r[u.NUMERICIDENTIFIER],")\\.(").concat(r[u.NUMERICIDENTIFIER],")")),o("MAINVERSIONLOOSE","(".concat(r[u.NUMERICIDENTIFIERLOOSE],")\\.(").concat(r[u.NUMERICIDENTIFIERLOOSE],")\\.(").concat(r[u.NUMERICIDENTIFIERLOOSE],")")),o("PRERELEASEIDENTIFIER","(?:".concat(r[u.NUMERICIDENTIFIER],"|").concat(r[u.NONNUMERICIDENTIFIER],")")),o("PRERELEASEIDENTIFIERLOOSE","(?:".concat(r[u.NUMERICIDENTIFIERLOOSE],"|").concat(r[u.NONNUMERICIDENTIFIER],")")),o("PRERELEASE","(?:-(".concat(r[u.PRERELEASEIDENTIFIER],"(?:\\.").concat(r[u.PRERELEASEIDENTIFIER],")*))")),o("PRERELEASELOOSE","(?:-?(".concat(r[u.PRERELEASEIDENTIFIERLOOSE],"(?:\\.").concat(r[u.PRERELEASEIDENTIFIERLOOSE],")*))")),o("BUILDIDENTIFIER","[0-9A-Za-z-]+"),o("BUILD","(?:\\+(".concat(r[u.BUILDIDENTIFIER],"(?:\\.").concat(r[u.BUILDIDENTIFIER],")*))")),o("FULLPLAIN","v?".concat(r[u.MAINVERSION]).concat(r[u.PRERELEASE],"?").concat(r[u.BUILD],"?")),o("FULL","^".concat(r[u.FULLPLAIN],"$")),o("LOOSEPLAIN","[v=\\s]*".concat(r[u.MAINVERSIONLOOSE]).concat(r[u.PRERELEASELOOSE],"?").concat(r[u.BUILD],"?")),o("LOOSE","^".concat(r[u.LOOSEPLAIN],"$")),o("GTLT","((?:<|>)?=?)"),o("XRANGEIDENTIFIERLOOSE","".concat(r[u.NUMERICIDENTIFIERLOOSE],"|x|X|\\*")),o("XRANGEIDENTIFIER","".concat(r[u.NUMERICIDENTIFIER],"|x|X|\\*")),o("XRANGEPLAIN","[v=\\s]*(".concat(r[u.XRANGEIDENTIFIER],")(?:\\.(").concat(r[u.XRANGEIDENTIFIER],")(?:\\.(").concat(r[u.XRANGEIDENTIFIER],")(?:").concat(r[u.PRERELEASE],")?").concat(r[u.BUILD],"?)?)?")),o("XRANGEPLAINLOOSE","[v=\\s]*(".concat(r[u.XRANGEIDENTIFIERLOOSE],")(?:\\.(").concat(r[u.XRANGEIDENTIFIERLOOSE],")(?:\\.(").concat(r[u.XRANGEIDENTIFIERLOOSE],")(?:").concat(r[u.PRERELEASELOOSE],")?").concat(r[u.BUILD],"?)?)?")),o("XRANGE","^".concat(r[u.GTLT],"\\s*").concat(r[u.XRANGEPLAIN],"$")),o("XRANGELOOSE","^".concat(r[u.GTLT],"\\s*").concat(r[u.XRANGEPLAINLOOSE],"$")),o("COERCE","(^|[^\\d])(\\d{1,".concat(t,"})(?:\\.(\\d{1,").concat(t,"}))?(?:\\.(\\d{1,").concat(t,"}))?(?:$|[^\\d])")),o("COERCERTL",r[u.COERCE],!0),o("LONETILDE","(?:~>?)"),o("TILDETRIM","(\\s*)".concat(r[u.LONETILDE],"\\s+"),!0),e.tildeTrimReplace="$1~",o("TILDE","^".concat(r[u.LONETILDE]).concat(r[u.XRANGEPLAIN],"$")),o("TILDELOOSE","^".concat(r[u.LONETILDE]).concat(r[u.XRANGEPLAINLOOSE],"$")),o("LONECARET","(?:\\^)"),o("CARETTRIM","(\\s*)".concat(r[u.LONECARET],"\\s+"),!0),e.caretTrimReplace="$1^",o("CARET","^".concat(r[u.LONECARET]).concat(r[u.XRANGEPLAIN],"$")),o("CARETLOOSE","^".concat(r[u.LONECARET]).concat(r[u.XRANGEPLAINLOOSE],"$")),o("COMPARATORLOOSE","^".concat(r[u.GTLT],"\\s*(").concat(r[u.LOOSEPLAIN],")$|^$")),o("COMPARATOR","^".concat(r[u.GTLT],"\\s*(").concat(r[u.FULLPLAIN],")$|^$")),o("COMPARATORTRIM","(\\s*)".concat(r[u.GTLT],"\\s*(").concat(r[u.LOOSEPLAIN],"|").concat(r[u.XRANGEPLAIN],")"),!0),e.comparatorTrimReplace="$1$2$3",o("HYPHENRANGE","^\\s*(".concat(r[u.XRANGEPLAIN],")\\s+-\\s+(").concat(r[u.XRANGEPLAIN],")\\s*$")),o("HYPHENRANGELOOSE","^\\s*(".concat(r[u.XRANGEPLAINLOOSE],")\\s+-\\s+(").concat(r[u.XRANGEPLAINLOOSE],")\\s*$")),o("STAR","(<|>)?=?\\s*\\*"),o("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),o("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$");}}),mD=Z({"node_modules/semver/internal/parse-options.js"(e,n){re();var t=["includePrerelease","loose","rtl"],s=a=>a?typeof a!="object"?{loose:!0}:t.filter(r=>a[r]).reduce((r,u)=>(r[u]=!0,r),{}):{};n.exports=s;}}),dD=Z({"node_modules/semver/internal/identifiers.js"(e,n){re();var t=/^[0-9]+$/,s=(r,u)=>{let i=t.test(r),o=t.test(u);return i&&o&&(r=+r,u=+u),r===u?0:i&&!o?-1:o&&!i?1:r<u?-1:1},a=(r,u)=>s(u,r);n.exports={compareIdentifiers:s,rcompareIdentifiers:a};}}),gD=Z({"node_modules/semver/classes/semver.js"(e,n){re();var t=da(),{MAX_LENGTH:s,MAX_SAFE_INTEGER:a}=ga(),{re:r,t:u}=DD(),i=mD(),{compareIdentifiers:o}=dD(),c=class{constructor(y,m){if(m=i(m),y instanceof c){if(y.loose===!!m.loose&&y.includePrerelease===!!m.includePrerelease)return y;y=y.version;}else if(typeof y!="string")throw new TypeError("Invalid Version: ".concat(y));if(y.length>s)throw new TypeError("version is longer than ".concat(s," characters"));t("SemVer",y,m),this.options=m,this.loose=!!m.loose,this.includePrerelease=!!m.includePrerelease;let d=y.trim().match(m.loose?r[u.LOOSE]:r[u.FULL]);if(!d)throw new TypeError("Invalid Version: ".concat(y));if(this.raw=y,this.major=+d[1],this.minor=+d[2],this.patch=+d[3],this.major>a||this.major<0)throw new TypeError("Invalid major version");if(this.minor>a||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>a||this.patch<0)throw new TypeError("Invalid patch version");d[4]?this.prerelease=d[4].split(".").map(p=>{if(/^[0-9]+$/.test(p)){let f=+p;if(f>=0&&f<a)return f}return p}):this.prerelease=[],this.build=d[5]?d[5].split("."):[],this.format();}format(){return this.version="".concat(this.major,".").concat(this.minor,".").concat(this.patch),this.prerelease.length&&(this.version+="-".concat(this.prerelease.join("."))),this.version}toString(){return this.version}compare(y){if(t("SemVer.compare",this.version,this.options,y),!(y instanceof c)){if(typeof y=="string"&&y===this.version)return 0;y=new c(y,this.options);}return y.version===this.version?0:this.compareMain(y)||this.comparePre(y)}compareMain(y){return y instanceof c||(y=new c(y,this.options)),o(this.major,y.major)||o(this.minor,y.minor)||o(this.patch,y.patch)}comparePre(y){if(y instanceof c||(y=new c(y,this.options)),this.prerelease.length&&!y.prerelease.length)return -1;if(!this.prerelease.length&&y.prerelease.length)return 1;if(!this.prerelease.length&&!y.prerelease.length)return 0;let m=0;do{let d=this.prerelease[m],p=y.prerelease[m];if(t("prerelease compare",m,d,p),d===void 0&&p===void 0)return 0;if(p===void 0)return 1;if(d===void 0)return -1;if(d===p)continue;return o(d,p)}while(++m)}compareBuild(y){y instanceof c||(y=new c(y,this.options));let m=0;do{let d=this.build[m],p=y.build[m];if(t("prerelease compare",m,d,p),d===void 0&&p===void 0)return 0;if(p===void 0)return 1;if(d===void 0)return -1;if(d===p)continue;return o(d,p)}while(++m)}inc(y,m){switch(y){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",m);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",m);break;case"prepatch":this.prerelease.length=0,this.inc("patch",m),this.inc("pre",m);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",m),this.inc("pre",m);break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":if(this.prerelease.length===0)this.prerelease=[0];else {let d=this.prerelease.length;for(;--d>=0;)typeof this.prerelease[d]=="number"&&(this.prerelease[d]++,d=-2);d===-1&&this.prerelease.push(0);}m&&(o(this.prerelease[0],m)===0?isNaN(this.prerelease[1])&&(this.prerelease=[m,0]):this.prerelease=[m,0]);break;default:throw new Error("invalid increment argument: ".concat(y))}return this.format(),this.raw=this.version,this}};n.exports=c;}}),Ln=Z({"node_modules/semver/functions/compare.js"(e,n){re();var t=gD(),s=(a,r,u)=>new t(a,u).compare(new t(r,u));n.exports=s;}}),yD=Z({"node_modules/semver/functions/lt.js"(e,n){re();var t=Ln(),s=(a,r,u)=>t(a,r,u)<0;n.exports=s;}}),hD=Z({"node_modules/semver/functions/gte.js"(e,n){re();var t=Ln(),s=(a,r,u)=>t(a,r,u)>=0;n.exports=s;}}),vD=Z({"src/utils/arrayify.js"(e,n){re(),n.exports=(t,s)=>Object.entries(t).map(a=>{let[r,u]=a;return Object.assign({[s]:r},u)});}}),CD=Z({"node_modules/outdent/lib/index.js"(e,n){re(),Object.defineProperty(e,"__esModule",{value:!0}),e.outdent=void 0;function t(){for(var A=[],S=0;S<arguments.length;S++)A[S]=arguments[S];}function s(){return typeof WeakMap<"u"?new WeakMap:a()}function a(){return {add:t,delete:t,get:t,set:t,has:function(A){return !1}}}var r=Object.prototype.hasOwnProperty,u=function(A,S){return r.call(A,S)};function i(A,S){for(var B in S)u(S,B)&&(A[B]=S[B]);return A}var o=/^[ \t]*(?:\r\n|\r|\n)/,c=/(?:\r\n|\r|\n)[ \t]*$/,y=/^(?:[\r\n]|$)/,m=/(?:\r\n|\r|\n)([ \t]*)(?:[^ \t\r\n]|$)/,d=/^[ \t]*[\r\n][ \t\r\n]*$/;function p(A,S,B){var I=0,k=A[0].match(m);k&&(I=k[1].length);var P="(\\r\\n|\\r|\\n).{0,"+I+"}",C=new RegExp(P,"g");S&&(A=A.slice(1));var D=B.newline,g=B.trimLeadingNewline,F=B.trimTrailingNewline,l=typeof D=="string",E=A.length,v=A.map(function(N,x){return N=N.replace(C,"$1"),x===0&&g&&(N=N.replace(o,"")),x===E-1&&F&&(N=N.replace(c,"")),l&&(N=N.replace(/\r\n|\n|\r/g,function(b){return D})),N});return v}function f(A,S){for(var B="",I=0,k=A.length;I<k;I++)B+=A[I],I<k-1&&(B+=S[I]);return B}function h(A){return u(A,"raw")&&u(A,"length")}function w(A){var S=s(),B=s();function I(P){for(var C=[],D=1;D<arguments.length;D++)C[D-1]=arguments[D];if(h(P)){var g=P,F=(C[0]===I||C[0]===T)&&d.test(g[0])&&y.test(g[1]),l=F?B:S,E=l.get(g);if(E||(E=p(g,F,A),l.set(g,E)),C.length===0)return E[0];var v=f(E,F?C.slice(1):C);return v}else return w(i(i({},A),P||{}))}var k=i(I,{string:function(P){return p([P],!1,A)[0]}});return k}var T=w({trimLeadingNewline:!0,trimTrailingNewline:!0});if(e.outdent=T,e.default=T,typeof n<"u")try{n.exports=T,Object.defineProperty(T,"__esModule",{value:!0}),T.default=T,T.outdent=T;}catch{}}}),ED=Z({"src/main/core-options.js"(e,n){re();var{outdent:t}=CD(),s="Config",a="Editor",r="Format",u="Other",i="Output",o="Global",c="Special",y={cursorOffset:{since:"1.4.0",category:c,type:"int",default:-1,range:{start:-1,end:Number.POSITIVE_INFINITY,step:1},description:t(Qi||(Qi=_t([` - Print (to stderr) where a cursor at the given position would move to after formatting. - This option cannot be used with --range-start and --range-end. - `]))),cliCategory:a},endOfLine:{since:"1.15.0",category:o,type:"choice",default:[{since:"1.15.0",value:"auto"},{since:"2.0.0",value:"lf"}],description:"Which end of line characters to apply.",choices:[{value:"lf",description:"Line Feed only (\\n), common on Linux and macOS as well as inside git repos"},{value:"crlf",description:"Carriage Return + Line Feed characters (\\r\\n), common on Windows"},{value:"cr",description:"Carriage Return character only (\\r), used very rarely"},{value:"auto",description:t(Zi||(Zi=_t([` - Maintain existing - (mixed values within one file are normalised by looking at what's used after the first line) - `])))}]},filepath:{since:"1.4.0",category:c,type:"path",description:"Specify the input filepath. This will be used to do parser inference.",cliName:"stdin-filepath",cliCategory:u,cliDescription:"Path to the file to pretend that stdin comes from."},insertPragma:{since:"1.8.0",category:c,type:"boolean",default:!1,description:"Insert @format pragma into file's first docblock comment.",cliCategory:u},parser:{since:"0.0.10",category:o,type:"choice",default:[{since:"0.0.10",value:"babylon"},{since:"1.13.0",value:void 0}],description:"Which parser to use.",exception:m=>typeof m=="string"||typeof m=="function",choices:[{value:"flow",description:"Flow"},{value:"babel",since:"1.16.0",description:"JavaScript"},{value:"babel-flow",since:"1.16.0",description:"Flow"},{value:"babel-ts",since:"2.0.0",description:"TypeScript"},{value:"typescript",since:"1.4.0",description:"TypeScript"},{value:"acorn",since:"2.6.0",description:"JavaScript"},{value:"espree",since:"2.2.0",description:"JavaScript"},{value:"meriyah",since:"2.2.0",description:"JavaScript"},{value:"css",since:"1.7.1",description:"CSS"},{value:"less",since:"1.7.1",description:"Less"},{value:"scss",since:"1.7.1",description:"SCSS"},{value:"json",since:"1.5.0",description:"JSON"},{value:"json5",since:"1.13.0",description:"JSON5"},{value:"json-stringify",since:"1.13.0",description:"JSON.stringify"},{value:"graphql",since:"1.5.0",description:"GraphQL"},{value:"markdown",since:"1.8.0",description:"Markdown"},{value:"mdx",since:"1.15.0",description:"MDX"},{value:"vue",since:"1.10.0",description:"Vue"},{value:"yaml",since:"1.14.0",description:"YAML"},{value:"glimmer",since:"2.3.0",description:"Ember / Handlebars"},{value:"html",since:"1.15.0",description:"HTML"},{value:"angular",since:"1.15.0",description:"Angular"},{value:"lwc",since:"1.17.0",description:"Lightning Web Components"}]},plugins:{since:"1.10.0",type:"path",array:!0,default:[{value:[]}],category:o,description:"Add a plugin. Multiple plugins can be passed as separate `--plugin`s.",exception:m=>typeof m=="string"||typeof m=="object",cliName:"plugin",cliCategory:s},pluginSearchDirs:{since:"1.13.0",type:"path",array:!0,default:[{value:[]}],category:o,description:t(ea||(ea=_t([` - Custom directory that contains prettier plugins in node_modules subdirectory. - Overrides default behavior when plugins are searched relatively to the location of Prettier. - Multiple values are accepted. - `]))),exception:m=>typeof m=="string"||typeof m=="object",cliName:"plugin-search-dir",cliCategory:s},printWidth:{since:"0.0.0",category:o,type:"int",default:80,description:"The line length where Prettier will try wrap.",range:{start:0,end:Number.POSITIVE_INFINITY,step:1}},rangeEnd:{since:"1.4.0",category:c,type:"int",default:Number.POSITIVE_INFINITY,range:{start:0,end:Number.POSITIVE_INFINITY,step:1},description:t(ta||(ta=_t([` - Format code ending at a given character offset (exclusive). - The range will extend forwards to the end of the selected statement. - This option cannot be used with --cursor-offset. - `]))),cliCategory:a},rangeStart:{since:"1.4.0",category:c,type:"int",default:0,range:{start:0,end:Number.POSITIVE_INFINITY,step:1},description:t(ra||(ra=_t([` - Format code starting at a given character offset. - The range will extend backwards to the start of the first line containing the selected statement. - This option cannot be used with --cursor-offset. - `]))),cliCategory:a},requirePragma:{since:"1.7.0",category:c,type:"boolean",default:!1,description:t(na||(na=_t([` - Require either '@prettier' or '@format' to be present in the file's first docblock comment - in order for it to be formatted. - `]))),cliCategory:u},tabWidth:{type:"int",category:o,default:2,description:"Number of spaces per indentation level.",range:{start:0,end:Number.POSITIVE_INFINITY,step:1}},useTabs:{since:"1.0.0",category:o,type:"boolean",default:!1,description:"Indent with tabs instead of spaces."},embeddedLanguageFormatting:{since:"2.1.0",category:o,type:"choice",default:[{since:"2.1.0",value:"auto"}],description:"Control how Prettier formats quoted code embedded in the file.",choices:[{value:"auto",description:"Format embedded code if Prettier can automatically identify it."},{value:"off",description:"Never automatically format embedded code."}]}};n.exports={CATEGORY_CONFIG:s,CATEGORY_EDITOR:a,CATEGORY_FORMAT:r,CATEGORY_OTHER:u,CATEGORY_OUTPUT:i,CATEGORY_GLOBAL:o,CATEGORY_SPECIAL:c,options:y};}}),jn=Z({"src/main/support.js"(e,n){re();var t={compare:Ln(),lt:yD(),gte:hD()},s=vD(),a=ca().version,r=ED().options;function u(){let{plugins:o=[],showUnreleased:c=!1,showDeprecated:y=!1,showInternal:m=!1}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},d=a.split("-",1)[0],p=o.flatMap(A=>A.languages||[]).filter(h),f=s(Object.assign({},...o.map(A=>{let{options:S}=A;return S}),r),"name").filter(A=>h(A)&&w(A)).sort((A,S)=>A.name===S.name?0:A.name<S.name?-1:1).map(T).map(A=>{A=Object.assign({},A),Array.isArray(A.default)&&(A.default=A.default.length===1?A.default[0].value:A.default.filter(h).sort((B,I)=>t.compare(I.since,B.since))[0].value),Array.isArray(A.choices)&&(A.choices=A.choices.filter(B=>h(B)&&w(B)),A.name==="parser"&&i(A,p,o));let S=Object.fromEntries(o.filter(B=>B.defaultOptions&&B.defaultOptions[A.name]!==void 0).map(B=>[B.name,B.defaultOptions[A.name]]));return Object.assign(Object.assign({},A),{},{pluginDefaults:S})});return {languages:p,options:f};function h(A){return c||!("since"in A)||A.since&&t.gte(d,A.since)}function w(A){return y||!("deprecated"in A)||A.deprecated&&t.lt(d,A.deprecated)}function T(A){if(m)return A;return wn(A,$f)}}function i(o,c,y){let m=new Set(o.choices.map(d=>d.value));for(let d of c)if(d.parsers){for(let p of d.parsers)if(!m.has(p)){m.add(p);let f=y.find(w=>w.parsers&&w.parsers[p]),h=d.name;f&&f.name&&(h+=" (plugin: ".concat(f.name,")")),o.choices.push({value:p,description:h});}}}n.exports={getSupportInfo:u};}}),On=Z({"src/utils/is-non-empty-array.js"(e,n){re();function t(s){return Array.isArray(s)&&s.length>0}n.exports=t;}}),Tr=Z({"src/utils/text/skip.js"(e,n){re();function t(i){return (o,c,y)=>{let m=y&&y.backwards;if(c===!1)return !1;let{length:d}=o,p=c;for(;p>=0&&p<d;){let f=o.charAt(p);if(i instanceof RegExp){if(!i.test(f))return p}else if(!i.includes(f))return p;m?p--:p++;}return p===-1||p===d?p:!1}}var s=t(/\s/),a=t(" "),r=t(",; "),u=t(/[^\n\r]/);n.exports={skipWhitespace:s,skipSpaces:a,skipToLineEnd:r,skipEverythingButNewLine:u};}}),ya=Z({"src/utils/text/skip-inline-comment.js"(e,n){re();function t(s,a){if(a===!1)return !1;if(s.charAt(a)==="/"&&s.charAt(a+1)==="*"){for(let r=a+2;r<s.length;++r)if(s.charAt(r)==="*"&&s.charAt(r+1)==="/")return r+2}return a}n.exports=t;}}),ha=Z({"src/utils/text/skip-trailing-comment.js"(e,n){re();var{skipEverythingButNewLine:t}=Tr();function s(a,r){return r===!1?!1:a.charAt(r)==="/"&&a.charAt(r+1)==="/"?t(a,r):r}n.exports=s;}}),va=Z({"src/utils/text/skip-newline.js"(e,n){re();function t(s,a,r){let u=r&&r.backwards;if(a===!1)return !1;let i=s.charAt(a);if(u){if(s.charAt(a-1)==="\r"&&i===` -`)return a-2;if(i===` -`||i==="\r"||i==="\u2028"||i==="\u2029")return a-1}else {if(i==="\r"&&s.charAt(a+1)===` -`)return a+2;if(i===` -`||i==="\r"||i==="\u2028"||i==="\u2029")return a+1}return a}n.exports=t;}}),FD=Z({"src/utils/text/get-next-non-space-non-comment-character-index-with-start-index.js"(e,n){re();var t=ya(),s=va(),a=ha(),{skipSpaces:r}=Tr();function u(i,o){let c=null,y=o;for(;y!==c;)c=y,y=r(i,y),y=t(i,y),y=a(i,y),y=s(i,y);return y}n.exports=u;}}),Ue=Z({"src/common/util.js"(e,n){re();var{default:t}=(fD(),lt(ma)),s=it(),{getSupportInfo:a}=jn(),r=On(),u=Da(),{skipWhitespace:i,skipSpaces:o,skipToLineEnd:c,skipEverythingButNewLine:y}=Tr(),m=ya(),d=ha(),p=va(),f=FD(),h=H=>H[H.length-2];function w(H){return (R,Q,ee)=>{let te=ee&&ee.backwards;if(Q===!1)return !1;let{length:oe}=R,W=Q;for(;W>=0&&W<oe;){let X=R.charAt(W);if(H instanceof RegExp){if(!H.test(X))return W}else if(!H.includes(X))return W;te?W--:W++;}return W===-1||W===oe?W:!1}}function T(H,R){let Q=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},ee=o(H,Q.backwards?R-1:R,Q),te=p(H,ee,Q);return ee!==te}function A(H,R,Q){for(let ee=R;ee<Q;++ee)if(H.charAt(ee)===` -`)return !0;return !1}function S(H,R,Q){let ee=Q(R)-1;ee=o(H,ee,{backwards:!0}),ee=p(H,ee,{backwards:!0}),ee=o(H,ee,{backwards:!0});let te=p(H,ee,{backwards:!0});return ee!==te}function B(H,R){let Q=null,ee=R;for(;ee!==Q;)Q=ee,ee=c(H,ee),ee=m(H,ee),ee=o(H,ee);return ee=d(H,ee),ee=p(H,ee),ee!==!1&&T(H,ee)}function I(H,R,Q){return B(H,Q(R))}function k(H,R,Q){return f(H,Q(R))}function P(H,R,Q){return H.charAt(k(H,R,Q))}function C(H,R){let Q=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return o(H,Q.backwards?R-1:R,Q)!==R}function D(H,R){let Q=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,ee=0;for(let te=Q;te<H.length;++te)H[te]===" "?ee=ee+R-ee%R:ee++;return ee}function g(H,R){let Q=H.lastIndexOf(` -`);return Q===-1?0:D(H.slice(Q+1).match(/^[\t ]*/)[0],R)}function F(H,R){let Q={quote:'"',regex:/"/g,escaped:"""},ee={quote:"'",regex:/'/g,escaped:"'"},te=R==="'"?ee:Q,oe=te===ee?Q:ee,W=te;if(H.includes(te.quote)||H.includes(oe.quote)){let X=(H.match(te.regex)||[]).length,ue=(H.match(oe.regex)||[]).length;W=X>ue?oe:te;}return W}function l(H,R){let Q=H.slice(1,-1),ee=R.parser==="json"||R.parser==="json5"&&R.quoteProps==="preserve"&&!R.singleQuote?'"':R.__isInHtmlAttribute?"'":F(Q,R.singleQuote?"'":'"').quote;return E(Q,ee,!(R.parser==="css"||R.parser==="less"||R.parser==="scss"||R.__embeddedInHtml))}function E(H,R,Q){let ee=R==='"'?"'":'"',te=/\\(.)|(["'])/gs,oe=H.replace(te,(W,X,ue)=>X===ee?X:ue===R?"\\"+ue:ue||(Q&&/^[^\n\r"'0-7\\bfnrt-vx\u2028\u2029]$/.test(X)?X:"\\"+X));return R+oe+R}function v(H){return H.toLowerCase().replace(/^([+-]?[\d.]+e)(?:\+|(-))?0*(\d)/,"$1$2$3").replace(/^([+-]?[\d.]+)e[+-]?0+$/,"$1").replace(/^([+-])?\./,"$10.").replace(/(\.\d+?)0+(?=e|$)/,"$1").replace(/\.(?=e|$)/,"")}function N(H,R){let Q=H.match(new RegExp("(".concat(t(R),")+"),"g"));return Q===null?0:Q.reduce((ee,te)=>Math.max(ee,te.length/R.length),0)}function x(H,R){let Q=H.match(new RegExp("(".concat(t(R),")+"),"g"));if(Q===null)return 0;let ee=new Map,te=0;for(let oe of Q){let W=oe.length/R.length;ee.set(W,!0),W>te&&(te=W);}for(let oe=1;oe<te;oe++)if(!ee.get(oe))return oe;return te+1}function b(H,R){(H.comments||(H.comments=[])).push(R),R.printed=!1,R.nodeDescription=Y(H);}function L(H,R){R.leading=!0,R.trailing=!1,b(H,R);}function M(H,R,Q){R.leading=!1,R.trailing=!1,Q&&(R.marker=Q),b(H,R);}function j(H,R){R.leading=!1,R.trailing=!0,b(H,R);}function $(H,R){let{languages:Q}=a({plugins:R.plugins}),ee=Q.find(te=>{let{name:oe}=te;return oe.toLowerCase()===H})||Q.find(te=>{let{aliases:oe}=te;return Array.isArray(oe)&&oe.includes(H)})||Q.find(te=>{let{extensions:oe}=te;return Array.isArray(oe)&&oe.includes(".".concat(H))});return ee&&ee.parsers[0]}function V(H){return H&&H.type==="front-matter"}function q(H){let R=new WeakMap;return function(Q){return R.has(Q)||R.set(Q,Symbol(H)),R.get(Q)}}function Y(H){let R=H.type||H.kind||"(unknown type)",Q=String(H.name||H.id&&(typeof H.id=="object"?H.id.name:H.id)||H.key&&(typeof H.key=="object"?H.key.name:H.key)||H.value&&(typeof H.value=="object"?"":String(H.value))||H.operator||"");return Q.length>20&&(Q=Q.slice(0,19)+"\u2026"),R+(Q?" "+Q:"")}n.exports={inferParserByLanguage:$,getStringWidth:u,getMaxContinuousCount:N,getMinNotPresentContinuousCount:x,getPenultimate:h,getLast:s,getNextNonSpaceNonCommentCharacterIndexWithStartIndex:f,getNextNonSpaceNonCommentCharacterIndex:k,getNextNonSpaceNonCommentCharacter:P,skip:w,skipWhitespace:i,skipSpaces:o,skipToLineEnd:c,skipEverythingButNewLine:y,skipInlineComment:m,skipTrailingComment:d,skipNewline:p,isNextLineEmptyAfterIndex:B,isNextLineEmpty:I,isPreviousLineEmpty:S,hasNewline:T,hasNewlineInRange:A,hasSpaces:C,getAlignmentSize:D,getIndentSize:g,getPreferredQuote:F,printString:l,printNumber:v,makeString:E,addLeadingComment:L,addDanglingComment:M,addTrailingComment:j,isFrontMatterNode:V,isNonEmptyArray:r,createGroupIdMapper:q};}}),Ca={};Gt(Ca,{basename:()=>xa,default:()=>Ta,delimiter:()=>xn,dirname:()=>Sa,extname:()=>ba,isAbsolute:()=>Mn,join:()=>Fa,normalize:()=>qn,relative:()=>Aa,resolve:()=>xr,sep:()=>Sn});function Ea(e,n){for(var t=0,s=e.length-1;s>=0;s--){var a=e[s];a==="."?e.splice(s,1):a===".."?(e.splice(s,1),t++):t&&(e.splice(s,1),t--);}if(n)for(;t--;t)e.unshift("..");return e}function xr(){for(var e="",n=!1,t=arguments.length-1;t>=-1&&!n;t--){var s=t>=0?arguments[t]:"/";if(typeof s!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!s)continue;e=s+"/"+e,n=s.charAt(0)==="/";}return e=Ea(Rn(e.split("/"),function(a){return !!a}),!n).join("/"),(n?"/":"")+e||"."}function qn(e){var n=Mn(e),t=Ba(e,-1)==="/";return e=Ea(Rn(e.split("/"),function(s){return !!s}),!n).join("/"),!e&&!n&&(e="."),e&&t&&(e+="/"),(n?"/":"")+e}function Mn(e){return e.charAt(0)==="/"}function Fa(){var e=Array.prototype.slice.call(arguments,0);return qn(Rn(e,function(n,t){if(typeof n!="string")throw new TypeError("Arguments to path.join must be strings");return n}).join("/"))}function Aa(e,n){e=xr(e).substr(1),n=xr(n).substr(1);function t(c){for(var y=0;y<c.length&&c[y]==="";y++);for(var m=c.length-1;m>=0&&c[m]==="";m--);return y>m?[]:c.slice(y,m-y+1)}for(var s=t(e.split("/")),a=t(n.split("/")),r=Math.min(s.length,a.length),u=r,i=0;i<r;i++)if(s[i]!==a[i]){u=i;break}for(var o=[],i=u;i<s.length;i++)o.push("..");return o=o.concat(a.slice(u)),o.join("/")}function Sa(e){var n=Br(e),t=n[0],s=n[1];return !t&&!s?".":(s&&(s=s.substr(0,s.length-1)),t+s)}function xa(e,n){var t=Br(e)[2];return n&&t.substr(-1*n.length)===n&&(t=t.substr(0,t.length-n.length)),t}function ba(e){return Br(e)[3]}function Rn(e,n){if(e.filter)return e.filter(n);for(var t=[],s=0;s<e.length;s++)n(e[s],s,e)&&t.push(e[s]);return t}var ia,Br,Sn,xn,Ta,Ba,AD=mt({"node-modules-polyfills:path"(){re(),ia=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,Br=function(e){return ia.exec(e).slice(1)},Sn="/",xn=":",Ta={extname:ba,basename:xa,dirname:Sa,sep:Sn,delimiter:xn,relative:Aa,join:Fa,isAbsolute:Mn,normalize:qn,resolve:xr},Ba="ab".substr(-1)==="b"?function(e,n,t){return e.substr(n,t)}:function(e,n,t){return n<0&&(n=e.length+n),e.substr(n,t)};}}),SD=Z({"node-modules-polyfills-commonjs:path"(e,n){re();var t=(AD(),lt(Ca));if(t&&t.default){n.exports=t.default;for(let s in t)n.exports[s]=t[s];}else t&&(n.exports=t);}}),Jt=Z({"src/common/errors.js"(e,n){re();var t=class extends Error{},s=class extends Error{},a=class extends Error{},r=class extends Error{};n.exports={ConfigError:t,DebugError:s,UndefinedParserError:a,ArgExpansionBailout:r};}}),dt={};Gt(dt,{__assign:()=>Sr,__asyncDelegator:()=>OD,__asyncGenerator:()=>jD,__asyncValues:()=>qD,__await:()=>Ht,__awaiter:()=>wD,__classPrivateFieldGet:()=>WD,__classPrivateFieldSet:()=>$D,__createBinding:()=>PD,__decorate:()=>TD,__exportStar:()=>kD,__extends:()=>xD,__generator:()=>_D,__importDefault:()=>VD,__importStar:()=>RD,__makeTemplateObject:()=>MD,__metadata:()=>ND,__param:()=>BD,__read:()=>Na,__rest:()=>bD,__spread:()=>ID,__spreadArrays:()=>LD,__values:()=>bn});function xD(e,n){Ar(e,n);function t(){this.constructor=e;}e.prototype=n===null?Object.create(n):(t.prototype=n.prototype,new t);}function bD(e,n){var t={};for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&n.indexOf(s)<0&&(t[s]=e[s]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,s=Object.getOwnPropertySymbols(e);a<s.length;a++)n.indexOf(s[a])<0&&Object.prototype.propertyIsEnumerable.call(e,s[a])&&(t[s[a]]=e[s[a]]);return t}function TD(e,n,t,s){var a=arguments.length,r=a<3?n:s===null?s=Object.getOwnPropertyDescriptor(n,t):s,u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(e,n,t,s);else for(var i=e.length-1;i>=0;i--)(u=e[i])&&(r=(a<3?u(r):a>3?u(n,t,r):u(n,t))||r);return a>3&&r&&Object.defineProperty(n,t,r),r}function BD(e,n){return function(t,s){n(t,s,e);}}function ND(e,n){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(e,n)}function wD(e,n,t,s){function a(r){return r instanceof t?r:new t(function(u){u(r);})}return new(t||(t=Promise))(function(r,u){function i(y){try{c(s.next(y));}catch(m){u(m);}}function o(y){try{c(s.throw(y));}catch(m){u(m);}}function c(y){y.done?r(y.value):a(y.value).then(i,o);}c((s=s.apply(e,n||[])).next());})}function _D(e,n){var t={label:0,sent:function(){if(r[0]&1)throw r[1];return r[1]},trys:[],ops:[]},s,a,r,u;return u={next:i(0),throw:i(1),return:i(2)},typeof Symbol=="function"&&(u[Symbol.iterator]=function(){return this}),u;function i(c){return function(y){return o([c,y])}}function o(c){if(s)throw new TypeError("Generator is already executing.");for(;t;)try{if(s=1,a&&(r=c[0]&2?a.return:c[0]?a.throw||((r=a.return)&&r.call(a),0):a.next)&&!(r=r.call(a,c[1])).done)return r;switch(a=0,r&&(c=[c[0]&2,r.value]),c[0]){case 0:case 1:r=c;break;case 4:return t.label++,{value:c[1],done:!1};case 5:t.label++,a=c[1],c=[0];continue;case 7:c=t.ops.pop(),t.trys.pop();continue;default:if(r=t.trys,!(r=r.length>0&&r[r.length-1])&&(c[0]===6||c[0]===2)){t=0;continue}if(c[0]===3&&(!r||c[1]>r[0]&&c[1]<r[3])){t.label=c[1];break}if(c[0]===6&&t.label<r[1]){t.label=r[1],r=c;break}if(r&&t.label<r[2]){t.label=r[2],t.ops.push(c);break}r[2]&&t.ops.pop(),t.trys.pop();continue}c=n.call(e,t);}catch(y){c=[6,y],a=0;}finally{s=r=0;}if(c[0]&5)throw c[1];return {value:c[0]?c[1]:void 0,done:!0}}}function PD(e,n,t,s){s===void 0&&(s=t),e[s]=n[t];}function kD(e,n){for(var t in e)t!=="default"&&!n.hasOwnProperty(t)&&(n[t]=e[t]);}function bn(e){var n=typeof Symbol=="function"&&Symbol.iterator,t=n&&e[n],s=0;if(t)return t.call(e);if(e&&typeof e.length=="number")return {next:function(){return e&&s>=e.length&&(e=void 0),{value:e&&e[s++],done:!e}}};throw new TypeError(n?"Object is not iterable.":"Symbol.iterator is not defined.")}function Na(e,n){var t=typeof Symbol=="function"&&e[Symbol.iterator];if(!t)return e;var s=t.call(e),a,r=[],u;try{for(;(n===void 0||n-- >0)&&!(a=s.next()).done;)r.push(a.value);}catch(i){u={error:i};}finally{try{a&&!a.done&&(t=s.return)&&t.call(s);}finally{if(u)throw u.error}}return r}function ID(){for(var e=[],n=0;n<arguments.length;n++)e=e.concat(Na(arguments[n]));return e}function LD(){for(var e=0,n=0,t=arguments.length;n<t;n++)e+=arguments[n].length;for(var s=Array(e),a=0,n=0;n<t;n++)for(var r=arguments[n],u=0,i=r.length;u<i;u++,a++)s[a]=r[u];return s}function Ht(e){return this instanceof Ht?(this.v=e,this):new Ht(e)}function jD(e,n,t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var s=t.apply(e,n||[]),a,r=[];return a={},u("next"),u("throw"),u("return"),a[Symbol.asyncIterator]=function(){return this},a;function u(d){s[d]&&(a[d]=function(p){return new Promise(function(f,h){r.push([d,p,f,h])>1||i(d,p);})});}function i(d,p){try{o(s[d](p));}catch(f){m(r[0][3],f);}}function o(d){d.value instanceof Ht?Promise.resolve(d.value.v).then(c,y):m(r[0][2],d);}function c(d){i("next",d);}function y(d){i("throw",d);}function m(d,p){d(p),r.shift(),r.length&&i(r[0][0],r[0][1]);}}function OD(e){var n,t;return n={},s("next"),s("throw",function(a){throw a}),s("return"),n[Symbol.iterator]=function(){return this},n;function s(a,r){n[a]=e[a]?function(u){return (t=!t)?{value:Ht(e[a](u)),done:a==="return"}:r?r(u):u}:r;}}function qD(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=e[Symbol.asyncIterator],t;return n?n.call(e):(e=typeof bn=="function"?bn(e):e[Symbol.iterator](),t={},s("next"),s("throw"),s("return"),t[Symbol.asyncIterator]=function(){return this},t);function s(r){t[r]=e[r]&&function(u){return new Promise(function(i,o){u=e[r](u),a(i,o,u.done,u.value);})};}function a(r,u,i,o){Promise.resolve(o).then(function(c){r({value:c,done:i});},u);}}function MD(e,n){return Object.defineProperty?Object.defineProperty(e,"raw",{value:n}):e.raw=n,e}function RD(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var t in e)Object.hasOwnProperty.call(e,t)&&(n[t]=e[t]);return n.default=e,n}function VD(e){return e&&e.__esModule?e:{default:e}}function WD(e,n){if(!n.has(e))throw new TypeError("attempted to get private field on non-instance");return n.get(e)}function $D(e,n,t){if(!n.has(e))throw new TypeError("attempted to set private field on non-instance");return n.set(e,t),t}var Ar,Sr,ht=mt({"node_modules/tslib/tslib.es6.js"(){re(),Ar=function(e,n){return Ar=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,s){t.__proto__=s;}||function(t,s){for(var a in s)s.hasOwnProperty(a)&&(t[a]=s[a]);},Ar(e,n)},Sr=function(){return Sr=Object.assign||function(n){for(var t,s=1,a=arguments.length;s<a;s++){t=arguments[s];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r]);}return n},Sr.apply(this,arguments)};}}),wa=Z({"node_modules/vnopts/lib/descriptors/api.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0}),e.apiDescriptor={key:n=>/^[$_a-zA-Z][$_a-zA-Z0-9]*$/.test(n)?n:JSON.stringify(n),value(n){if(n===null||typeof n!="object")return JSON.stringify(n);if(Array.isArray(n))return "[".concat(n.map(s=>e.apiDescriptor.value(s)).join(", "),"]");let t=Object.keys(n);return t.length===0?"{}":"{ ".concat(t.map(s=>"".concat(e.apiDescriptor.key(s),": ").concat(e.apiDescriptor.value(n[s]))).join(", ")," }")},pair:n=>{let{key:t,value:s}=n;return e.apiDescriptor.value({[t]:s})}};}}),HD=Z({"node_modules/vnopts/lib/descriptors/index.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0});var n=(ht(),lt(dt));n.__exportStar(wa(),e);}}),Nr=Z({"scripts/build/shims/chalk.cjs"(e,n){re();var t=s=>s;t.grey=t,t.red=t,t.bold=t,t.yellow=t,t.blue=t,t.default=t,n.exports=t;}}),_a=Z({"node_modules/vnopts/lib/handlers/deprecated/common.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0});var n=Nr();e.commonDeprecatedHandler=(t,s,a)=>{let{descriptor:r}=a,u=["".concat(n.default.yellow(typeof t=="string"?r.key(t):r.pair(t))," is deprecated")];return s&&u.push("we now treat it as ".concat(n.default.blue(typeof s=="string"?r.key(s):r.pair(s)))),u.join("; ")+"."};}}),GD=Z({"node_modules/vnopts/lib/handlers/deprecated/index.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0});var n=(ht(),lt(dt));n.__exportStar(_a(),e);}}),JD=Z({"node_modules/vnopts/lib/handlers/invalid/common.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0});var n=Nr();e.commonInvalidHandler=(t,s,a)=>["Invalid ".concat(n.default.red(a.descriptor.key(t))," value."),"Expected ".concat(n.default.blue(a.schemas[t].expected(a)),","),"but received ".concat(n.default.red(a.descriptor.value(s)),".")].join(" ");}}),Pa=Z({"node_modules/vnopts/lib/handlers/invalid/index.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0});var n=(ht(),lt(dt));n.__exportStar(JD(),e);}}),UD=Z({"node_modules/vnopts/node_modules/leven/index.js"(e,n){re();var t=[],s=[];n.exports=function(a,r){if(a===r)return 0;var u=a;a.length>r.length&&(a=r,r=u);var i=a.length,o=r.length;if(i===0)return o;if(o===0)return i;for(;i>0&&a.charCodeAt(~-i)===r.charCodeAt(~-o);)i--,o--;if(i===0)return o;for(var c=0;c<i&&a.charCodeAt(c)===r.charCodeAt(c);)c++;if(i-=c,o-=c,i===0)return o;for(var y,m,d,p,f=0,h=0;f<i;)s[c+f]=a.charCodeAt(c+f),t[f]=++f;for(;h<o;)for(y=r.charCodeAt(c+h),d=h++,m=h,f=0;f<i;f++)p=y===s[c+f]?d:d+1,d=t[f],m=t[f]=d>m?p>m?m+1:p:p>d?d+1:p;return m};}}),ka=Z({"node_modules/vnopts/lib/handlers/unknown/leven.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0});var n=Nr(),t=UD();e.levenUnknownHandler=(s,a,r)=>{let{descriptor:u,logger:i,schemas:o}=r,c=["Ignored unknown option ".concat(n.default.yellow(u.pair({key:s,value:a})),".")],y=Object.keys(o).sort().find(m=>t(s,m)<3);y&&c.push("Did you mean ".concat(n.default.blue(u.key(y)),"?")),i.warn(c.join(" "));};}}),zD=Z({"node_modules/vnopts/lib/handlers/unknown/index.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0});var n=(ht(),lt(dt));n.__exportStar(ka(),e);}}),XD=Z({"node_modules/vnopts/lib/handlers/index.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0});var n=(ht(),lt(dt));n.__exportStar(GD(),e),n.__exportStar(Pa(),e),n.__exportStar(zD(),e);}}),vt=Z({"node_modules/vnopts/lib/schema.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0});var n=["default","expected","validate","deprecated","forward","redirect","overlap","preprocess","postprocess"];function t(r,u){let i=new r(u),o=Object.create(i);for(let c of n)c in u&&(o[c]=a(u[c],i,s.prototype[c].length));return o}e.createSchema=t;var s=class{constructor(r){this.name=r.name;}static create(r){return t(this,r)}default(r){}expected(r){return "nothing"}validate(r,u){return !1}deprecated(r,u){return !1}forward(r,u){}redirect(r,u){}overlap(r,u,i){return r}preprocess(r,u){return r}postprocess(r,u){return r}};e.Schema=s;function a(r,u,i){return typeof r=="function"?function(){for(var o=arguments.length,c=new Array(o),y=0;y<o;y++)c[y]=arguments[y];return r(...c.slice(0,i-1),u,...c.slice(i-1))}:()=>r}}}),KD=Z({"node_modules/vnopts/lib/schemas/alias.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0});var n=vt(),t=class extends n.Schema{constructor(s){super(s),this._sourceName=s.sourceName;}expected(s){return s.schemas[this._sourceName].expected(s)}validate(s,a){return a.schemas[this._sourceName].validate(s,a)}redirect(s,a){return this._sourceName}};e.AliasSchema=t;}}),YD=Z({"node_modules/vnopts/lib/schemas/any.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0});var n=vt(),t=class extends n.Schema{expected(){return "anything"}validate(){return !0}};e.AnySchema=t;}}),QD=Z({"node_modules/vnopts/lib/schemas/array.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0});var n=(ht(),lt(dt)),t=vt(),s=class extends t.Schema{constructor(r){var{valueSchema:u,name:i=u.name}=r,o=n.__rest(r,["valueSchema","name"]);super(Object.assign({},o,{name:i})),this._valueSchema=u;}expected(r){return "an array of ".concat(this._valueSchema.expected(r))}validate(r,u){if(!Array.isArray(r))return !1;let i=[];for(let o of r){let c=u.normalizeValidateResult(this._valueSchema.validate(o,u),o);c!==!0&&i.push(c.value);}return i.length===0?!0:{value:i}}deprecated(r,u){let i=[];for(let o of r){let c=u.normalizeDeprecatedResult(this._valueSchema.deprecated(o,u),o);c!==!1&&i.push(...c.map(y=>{let{value:m}=y;return {value:[m]}}));}return i}forward(r,u){let i=[];for(let o of r){let c=u.normalizeForwardResult(this._valueSchema.forward(o,u),o);i.push(...c.map(a));}return i}redirect(r,u){let i=[],o=[];for(let c of r){let y=u.normalizeRedirectResult(this._valueSchema.redirect(c,u),c);"remain"in y&&i.push(y.remain),o.push(...y.redirect.map(a));}return i.length===0?{redirect:o}:{redirect:o,remain:i}}overlap(r,u){return r.concat(u)}};e.ArraySchema=s;function a(r){let{from:u,to:i}=r;return {from:[u],to:i}}}}),ZD=Z({"node_modules/vnopts/lib/schemas/boolean.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0});var n=vt(),t=class extends n.Schema{expected(){return "true or false"}validate(s){return typeof s=="boolean"}};e.BooleanSchema=t;}}),Vn=Z({"node_modules/vnopts/lib/utils.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0});function n(p,f){let h=Object.create(null);for(let w of p){let T=w[f];if(h[T])throw new Error("Duplicate ".concat(f," ").concat(JSON.stringify(T)));h[T]=w;}return h}e.recordFromArray=n;function t(p,f){let h=new Map;for(let w of p){let T=w[f];if(h.has(T))throw new Error("Duplicate ".concat(f," ").concat(JSON.stringify(T)));h.set(T,w);}return h}e.mapFromArray=t;function s(){let p=Object.create(null);return f=>{let h=JSON.stringify(f);return p[h]?!0:(p[h]=!0,!1)}}e.createAutoChecklist=s;function a(p,f){let h=[],w=[];for(let T of p)f(T)?h.push(T):w.push(T);return [h,w]}e.partition=a;function r(p){return p===Math.floor(p)}e.isInt=r;function u(p,f){if(p===f)return 0;let h=typeof p,w=typeof f,T=["undefined","object","boolean","number","string"];return h!==w?T.indexOf(h)-T.indexOf(w):h!=="string"?Number(p)-Number(f):p.localeCompare(f)}e.comparePrimitive=u;function i(p){return p===void 0?{}:p}e.normalizeDefaultResult=i;function o(p,f){return p===!0?!0:p===!1?{value:f}:p}e.normalizeValidateResult=o;function c(p,f){let h=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return p===!1?!1:p===!0?h?!0:[{value:f}]:"value"in p?[p]:p.length===0?!1:p}e.normalizeDeprecatedResult=c;function y(p,f){return typeof p=="string"||"key"in p?{from:f,to:p}:"from"in p?{from:p.from,to:p.to}:{from:f,to:p.to}}e.normalizeTransferResult=y;function m(p,f){return p===void 0?[]:Array.isArray(p)?p.map(h=>y(h,f)):[y(p,f)]}e.normalizeForwardResult=m;function d(p,f){let h=m(typeof p=="object"&&"redirect"in p?p.redirect:p,f);return h.length===0?{remain:f,redirect:h}:typeof p=="object"&&"remain"in p?{remain:p.remain,redirect:h}:{redirect:h}}e.normalizeRedirectResult=d;}}),em=Z({"node_modules/vnopts/lib/schemas/choice.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0});var n=vt(),t=Vn(),s=class extends n.Schema{constructor(a){super(a),this._choices=t.mapFromArray(a.choices.map(r=>r&&typeof r=="object"?r:{value:r}),"value");}expected(a){let{descriptor:r}=a,u=Array.from(this._choices.keys()).map(c=>this._choices.get(c)).filter(c=>!c.deprecated).map(c=>c.value).sort(t.comparePrimitive).map(r.value),i=u.slice(0,-2),o=u.slice(-2);return i.concat(o.join(" or ")).join(", ")}validate(a){return this._choices.has(a)}deprecated(a){let r=this._choices.get(a);return r&&r.deprecated?{value:a}:!1}forward(a){let r=this._choices.get(a);return r?r.forward:void 0}redirect(a){let r=this._choices.get(a);return r?r.redirect:void 0}};e.ChoiceSchema=s;}}),Ia=Z({"node_modules/vnopts/lib/schemas/number.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0});var n=vt(),t=class extends n.Schema{expected(){return "a number"}validate(s,a){return typeof s=="number"}};e.NumberSchema=t;}}),tm=Z({"node_modules/vnopts/lib/schemas/integer.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0});var n=Vn(),t=Ia(),s=class extends t.NumberSchema{expected(){return "an integer"}validate(a,r){return r.normalizeValidateResult(super.validate(a,r),a)===!0&&n.isInt(a)}};e.IntegerSchema=s;}}),rm=Z({"node_modules/vnopts/lib/schemas/string.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0});var n=vt(),t=class extends n.Schema{expected(){return "a string"}validate(s){return typeof s=="string"}};e.StringSchema=t;}}),nm=Z({"node_modules/vnopts/lib/schemas/index.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0});var n=(ht(),lt(dt));n.__exportStar(KD(),e),n.__exportStar(YD(),e),n.__exportStar(QD(),e),n.__exportStar(ZD(),e),n.__exportStar(em(),e),n.__exportStar(tm(),e),n.__exportStar(Ia(),e),n.__exportStar(rm(),e);}}),um=Z({"node_modules/vnopts/lib/defaults.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0});var n=wa(),t=_a(),s=Pa(),a=ka();e.defaultDescriptor=n.apiDescriptor,e.defaultUnknownHandler=a.levenUnknownHandler,e.defaultInvalidHandler=s.commonInvalidHandler,e.defaultDeprecatedHandler=t.commonDeprecatedHandler;}}),sm=Z({"node_modules/vnopts/lib/normalize.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0});var n=um(),t=Vn();e.normalize=(a,r,u)=>new s(r,u).normalize(a);var s=class{constructor(a,r){let{logger:u=console,descriptor:i=n.defaultDescriptor,unknown:o=n.defaultUnknownHandler,invalid:c=n.defaultInvalidHandler,deprecated:y=n.defaultDeprecatedHandler}=r||{};this._utils={descriptor:i,logger:u||{warn:()=>{}},schemas:t.recordFromArray(a,"name"),normalizeDefaultResult:t.normalizeDefaultResult,normalizeDeprecatedResult:t.normalizeDeprecatedResult,normalizeForwardResult:t.normalizeForwardResult,normalizeRedirectResult:t.normalizeRedirectResult,normalizeValidateResult:t.normalizeValidateResult},this._unknownHandler=o,this._invalidHandler=c,this._deprecatedHandler=y,this.cleanHistory();}cleanHistory(){this._hasDeprecationWarned=t.createAutoChecklist();}normalize(a){let r={},u=[a],i=()=>{for(;u.length!==0;){let o=u.shift(),c=this._applyNormalization(o,r);u.push(...c);}};i();for(let o of Object.keys(this._utils.schemas)){let c=this._utils.schemas[o];if(!(o in r)){let y=t.normalizeDefaultResult(c.default(this._utils));"value"in y&&u.push({[o]:y.value});}}i();for(let o of Object.keys(this._utils.schemas)){let c=this._utils.schemas[o];o in r&&(r[o]=c.postprocess(r[o],this._utils));}return r}_applyNormalization(a,r){let u=[],[i,o]=t.partition(Object.keys(a),c=>c in this._utils.schemas);for(let c of i){let y=this._utils.schemas[c],m=y.preprocess(a[c],this._utils),d=t.normalizeValidateResult(y.validate(m,this._utils),m);if(d!==!0){let{value:T}=d,A=this._invalidHandler(c,T,this._utils);throw typeof A=="string"?new Error(A):A}let p=T=>{let{from:A,to:S}=T;u.push(typeof S=="string"?{[S]:A}:{[S.key]:S.value});},f=T=>{let{value:A,redirectTo:S}=T,B=t.normalizeDeprecatedResult(y.deprecated(A,this._utils),m,!0);if(B!==!1)if(B===!0)this._hasDeprecationWarned(c)||this._utils.logger.warn(this._deprecatedHandler(c,S,this._utils));else for(let{value:I}of B){let k={key:c,value:I};if(!this._hasDeprecationWarned(k)){let P=typeof S=="string"?{key:S,value:I}:S;this._utils.logger.warn(this._deprecatedHandler(k,P,this._utils));}}};t.normalizeForwardResult(y.forward(m,this._utils),m).forEach(p);let w=t.normalizeRedirectResult(y.redirect(m,this._utils),m);if(w.redirect.forEach(p),"remain"in w){let T=w.remain;r[c]=c in r?y.overlap(r[c],T,this._utils):T,f({value:T});}for(let{from:T,to:A}of w.redirect)f({value:T,redirectTo:A});}for(let c of o){let y=a[c],m=this._unknownHandler(c,y,this._utils);if(m)for(let d of Object.keys(m)){let p={[d]:m[d]};d in this._utils.schemas?u.push(p):Object.assign(r,p);}}return u}};e.Normalizer=s;}}),im=Z({"node_modules/vnopts/lib/index.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0});var n=(ht(),lt(dt));n.__exportStar(HD(),e),n.__exportStar(XD(),e),n.__exportStar(nm(),e),n.__exportStar(sm(),e),n.__exportStar(vt(),e);}}),am=Z({"src/main/options-normalizer.js"(e,n){re();var t=im(),s=it(),a={key:d=>d.length===1?"-".concat(d):"--".concat(d),value:d=>t.apiDescriptor.value(d),pair:d=>{let{key:p,value:f}=d;return f===!1?"--no-".concat(p):f===!0?a.key(p):f===""?"".concat(a.key(p)," without an argument"):"".concat(a.key(p),"=").concat(f)}},r=d=>{let{colorsModule:p,levenshteinDistance:f}=d;return class extends t.ChoiceSchema{constructor(w){let{name:T,flags:A}=w;super({name:T,choices:A}),this._flags=[...A].sort();}preprocess(w,T){if(typeof w=="string"&&w.length>0&&!this._flags.includes(w)){let A=this._flags.find(S=>f(S,w)<3);if(A)return T.logger.warn(["Unknown flag ".concat(p.yellow(T.descriptor.value(w)),","),"did you mean ".concat(p.blue(T.descriptor.value(A)),"?")].join(" ")),A}return w}expected(){return "a flag"}}},u;function i(d,p){let{logger:f=!1,isCLI:h=!1,passThrough:w=!1,colorsModule:T=null,levenshteinDistance:A=null}=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},S=w?Array.isArray(w)?(D,g)=>w.includes(D)?{[D]:g}:void 0:(D,g)=>({[D]:g}):(D,g,F)=>{let l=F.schemas,v=wn(l,Hf);return t.levenUnknownHandler(D,g,Object.assign(Object.assign({},F),{},{schemas:v}))},B=h?a:t.apiDescriptor,I=o(p,{isCLI:h,colorsModule:T,levenshteinDistance:A}),k=new t.Normalizer(I,{logger:f,unknown:S,descriptor:B}),P=f!==!1;P&&u&&(k._hasDeprecationWarned=u);let C=k.normalize(d);return P&&(u=k._hasDeprecationWarned),h&&C["plugin-search"]===!1&&(C["plugin-search-dir"]=!1),C}function o(d,p){let{isCLI:f,colorsModule:h,levenshteinDistance:w}=p,T=[];f&&T.push(t.AnySchema.create({name:"_"}));for(let A of d)T.push(c(A,{isCLI:f,optionInfos:d,colorsModule:h,levenshteinDistance:w})),A.alias&&f&&T.push(t.AliasSchema.create({name:A.alias,sourceName:A.name}));return T}function c(d,p){let{isCLI:f,optionInfos:h,colorsModule:w,levenshteinDistance:T}=p,{name:A}=d;if(A==="plugin-search-dir"||A==="pluginSearchDirs")return t.AnySchema.create({name:A,preprocess(k){return k===!1||(k=Array.isArray(k)?k:[k]),k},validate(k){return k===!1?!0:k.every(P=>typeof P=="string")},expected(){return "false or paths to plugin search dir"}});let S={name:A},B,I={};switch(d.type){case"int":B=t.IntegerSchema,f&&(S.preprocess=Number);break;case"string":B=t.StringSchema;break;case"choice":B=t.ChoiceSchema,S.choices=d.choices.map(k=>typeof k=="object"&&k.redirect?Object.assign(Object.assign({},k),{},{redirect:{to:{key:d.name,value:k.redirect}}}):k);break;case"boolean":B=t.BooleanSchema;break;case"flag":B=r({colorsModule:w,levenshteinDistance:T}),S.flags=h.flatMap(k=>[k.alias,k.description&&k.name,k.oppositeDescription&&"no-".concat(k.name)].filter(Boolean));break;case"path":B=t.StringSchema;break;default:throw new Error("Unexpected type ".concat(d.type))}if(d.exception?S.validate=(k,P,C)=>d.exception(k)||P.validate(k,C):S.validate=(k,P,C)=>k===void 0||P.validate(k,C),d.redirect&&(I.redirect=k=>k?{to:{key:d.redirect.option,value:d.redirect.value}}:void 0),d.deprecated&&(I.deprecated=!0),f&&!d.array){let k=S.preprocess||(P=>P);S.preprocess=(P,C,D)=>C.preprocess(k(Array.isArray(P)?s(P):P),D);}return d.array?t.ArraySchema.create(Object.assign(Object.assign(Object.assign({},f?{preprocess:k=>Array.isArray(k)?k:[k]}:{}),I),{},{valueSchema:B.create(S)})):B.create(Object.assign(Object.assign({},S),I))}function y(d,p,f){return i(d,p,f)}function m(d,p,f){return i(d,p,Object.assign({isCLI:!0},f))}n.exports={normalizeApiOptions:y,normalizeCliOptions:m};}}),st=Z({"src/language-js/loc.js"(e,n){re();var t=On();function s(o,c){let{ignoreDecorators:y}=c||{};if(!y){let m=o.declaration&&o.declaration.decorators||o.decorators;if(t(m))return s(m[0])}return o.range?o.range[0]:o.start}function a(o){return o.range?o.range[1]:o.end}function r(o,c){let y=s(o);return Number.isInteger(y)&&y===s(c)}function u(o,c){let y=a(o);return Number.isInteger(y)&&y===a(c)}function i(o,c){return r(o,c)&&u(o,c)}n.exports={locStart:s,locEnd:a,hasSameLocStart:r,hasSameLoc:i};}}),om=Z({"src/main/load-parser.js"(e,n){re(),n.exports=()=>{};}}),lm=Z({"scripts/build/shims/babel-highlight.cjs"(e,n){re();var t=Nr(),s={shouldHighlight:()=>!1,getChalk:()=>t};n.exports=s;}}),cm=Z({"node_modules/@babel/code-frame/lib/index.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0}),e.codeFrameColumns=u,e.default=i;var n=lm(),t=!1;function s(o){return {gutter:o.grey,marker:o.red.bold,message:o.red.bold}}var a=/\r\n|[\n\r\u2028\u2029]/;function r(o,c,y){let m=Object.assign({column:0,line:-1},o.start),d=Object.assign({},m,o.end),{linesAbove:p=2,linesBelow:f=3}=y||{},h=m.line,w=m.column,T=d.line,A=d.column,S=Math.max(h-(p+1),0),B=Math.min(c.length,T+f);h===-1&&(S=0),T===-1&&(B=c.length);let I=T-h,k={};if(I)for(let P=0;P<=I;P++){let C=P+h;if(!w)k[C]=!0;else if(P===0){let D=c[C-1].length;k[C]=[w,D-w+1];}else if(P===I)k[C]=[0,A];else {let D=c[C-P].length;k[C]=[0,D];}}else w===A?w?k[h]=[w,0]:k[h]=!0:k[h]=[w,A-w];return {start:S,end:B,markerLines:k}}function u(o,c){let y=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},m=(y.highlightCode||y.forceColor)&&(0, n.shouldHighlight)(y),d=(0, n.getChalk)(y),p=s(d),f=(P,C)=>m?P(C):C,h=o.split(a),{start:w,end:T,markerLines:A}=r(c,h,y),S=c.start&&typeof c.start.column=="number",B=String(T).length,k=(m?(0, n.default)(o,y):o).split(a,T).slice(w,T).map((P,C)=>{let D=w+1+C,g=" ".concat(D).slice(-B),F=" ".concat(g," |"),l=A[D],E=!A[D+1];if(l){let v="";if(Array.isArray(l)){let N=P.slice(0,Math.max(l[0]-1,0)).replace(/[^\t]/g," "),x=l[1]||1;v=[` - `,f(p.gutter,F.replace(/\d/g," "))," ",N,f(p.marker,"^").repeat(x)].join(""),E&&y.message&&(v+=" "+f(p.message,y.message));}return [f(p.marker,">"),f(p.gutter,F),P.length>0?" ".concat(P):"",v].join("")}else return " ".concat(f(p.gutter,F)).concat(P.length>0?" ".concat(P):"")}).join(` -`);return y.message&&!S&&(k="".concat(" ".repeat(B+1)).concat(y.message,` -`).concat(k)),m?d.reset(k):k}function i(o,c,y){let m=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};if(!t){t=!0;let p="Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.";if(bt.emitWarning)bt.emitWarning(p,"DeprecationWarning");else {let f=new Error(p);f.name="DeprecationWarning",console.warn(new Error(p));}}return y=Math.max(y,0),u(o,{start:{column:y,line:c}},m)}}}),Wn=Z({"src/main/parser.js"(e,n){re();var {ConfigError:t}=Jt(),s=st();om();var {locStart:r,locEnd:u}=s,i=Object.getOwnPropertyNames,o=Object.getOwnPropertyDescriptor;function c(d){let p={};for(let f of d.plugins)if(!!f.parsers)for(let h of i(f.parsers))Object.defineProperty(p,h,o(f.parsers,h));return p}function y(d){let p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c(d);if(typeof d.parser=="function")return {parse:d.parser,astFormat:"estree",locStart:r,locEnd:u};if(typeof d.parser=="string"){if(Object.prototype.hasOwnProperty.call(p,d.parser))return p[d.parser];throw new t(`Couldn't resolve parser "`.concat(d.parser,'". Parsers must be explicitly added to the standalone bundle.'))}}function m(d,p){let f=c(p),h=Object.defineProperties({},Object.fromEntries(Object.keys(f).map(T=>[T,{enumerable:!0,get(){return f[T].parse}}]))),w=y(p,f);try{return w.preprocess&&(d=w.preprocess(d,p)),{text:d,ast:w.parse(d,h,p)}}catch(T){let{loc:A}=T;if(A){let{codeFrameColumns:S}=cm();throw T.codeFrame=S(d,A,{highlightCode:!0}),T.message+=` -`+T.codeFrame,T}throw T.stack}}n.exports={parse:m,resolveParser:y};}}),La=Z({"src/main/options.js"(e,n){re();var t=SD(),{UndefinedParserError:s}=Jt(),{getSupportInfo:a}=jn(),r=am(),{resolveParser:u}=Wn(),i={astFormat:"estree",printer:{},originalText:void 0,locStart:null,locEnd:null};function o(m){let d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},p=Object.assign({},m),f=a({plugins:m.plugins,showUnreleased:!0,showDeprecated:!0}).options,h=Object.assign(Object.assign({},i),Object.fromEntries(f.filter(B=>B.default!==void 0).map(B=>[B.name,B.default])));if(!p.parser){if(!p.filepath)(d.logger||console).warn("No parser and no filepath given, using 'babel' the parser now but this will throw an error in the future. Please specify a parser or a filepath so one can be inferred."),p.parser="babel";else if(p.parser=y(p.filepath,p.plugins),!p.parser)throw new s("No parser could be inferred for file: ".concat(p.filepath))}let w=u(r.normalizeApiOptions(p,[f.find(B=>B.name==="parser")],{passThrough:!0,logger:!1}));p.astFormat=w.astFormat,p.locEnd=w.locEnd,p.locStart=w.locStart;let T=c(p);p.printer=T.printers[p.astFormat];let A=Object.fromEntries(f.filter(B=>B.pluginDefaults&&B.pluginDefaults[T.name]!==void 0).map(B=>[B.name,B.pluginDefaults[T.name]])),S=Object.assign(Object.assign({},h),A);for(let[B,I]of Object.entries(S))(p[B]===null||p[B]===void 0)&&(p[B]=I);return p.parser==="json"&&(p.trailingComma="none"),r.normalizeApiOptions(p,f,Object.assign({passThrough:Object.keys(i)},d))}function c(m){let{astFormat:d}=m;if(!d)throw new Error("getPlugin() requires astFormat to be set");let p=m.plugins.find(f=>f.printers&&f.printers[d]);if(!p)throw new Error(`Couldn't find plugin for AST format "`.concat(d,'"'));return p}function y(m,d){let p=t.basename(m).toLowerCase(),h=a({plugins:d}).languages.filter(w=>w.since!==null).find(w=>w.extensions&&w.extensions.some(T=>p.endsWith(T))||w.filenames&&w.filenames.some(T=>T.toLowerCase()===p));return h&&h.parsers[0]}n.exports={normalize:o,hiddenDefaults:i,inferParser:y};}}),pm=Z({"src/main/massage-ast.js"(e,n){re();function t(s,a,r){if(Array.isArray(s))return s.map(c=>t(c,a,r)).filter(Boolean);if(!s||typeof s!="object")return s;let u=a.printer.massageAstNode,i;u&&u.ignoredProperties?i=u.ignoredProperties:i=new Set;let o={};for(let[c,y]of Object.entries(s))!i.has(c)&&typeof y!="function"&&(o[c]=t(y,a,s));if(u){let c=u(s,o,r);if(c===null)return;if(c)return c}return o}n.exports=t;}}),Ut=Z({"scripts/build/shims/assert.cjs"(e,n){re();var t=()=>{};t.ok=t,t.strictEqual=t,n.exports=t;}}),et=Z({"src/main/comments.js"(e,n){re();var t=Ut(),{builders:{line:s,hardline:a,breakParent:r,indent:u,lineSuffix:i,join:o,cursor:c}}=Oe(),{hasNewline:y,skipNewline:m,skipSpaces:d,isPreviousLineEmpty:p,addLeadingComment:f,addDanglingComment:h,addTrailingComment:w}=Ue(),T=new WeakMap;function A(L,M,j){if(!L)return;let{printer:$,locStart:V,locEnd:q}=M;if(j){if($.canAttachComment&&$.canAttachComment(L)){let H;for(H=j.length-1;H>=0&&!(V(j[H])<=V(L)&&q(j[H])<=q(L));--H);j.splice(H+1,0,L);return}}else if(T.has(L))return T.get(L);let Y=$.getCommentChildNodes&&$.getCommentChildNodes(L,M)||typeof L=="object"&&Object.entries(L).filter(H=>{let[R]=H;return R!=="enclosingNode"&&R!=="precedingNode"&&R!=="followingNode"&&R!=="tokens"&&R!=="comments"&&R!=="parent"}).map(H=>{let[,R]=H;return R});if(!!Y){j||(j=[],T.set(L,j));for(let H of Y)A(H,M,j);return j}}function S(L,M,j,$){let{locStart:V,locEnd:q}=j,Y=V(M),H=q(M),R=A(L,j),Q,ee,te=0,oe=R.length;for(;te<oe;){let W=te+oe>>1,X=R[W],ue=V(X),De=q(X);if(ue<=Y&&H<=De)return S(X,M,j,X);if(De<=Y){Q=X,te=W+1;continue}if(H<=ue){ee=X,oe=W;continue}throw new Error("Comment location overlaps with node location")}if($&&$.type==="TemplateLiteral"){let{quasis:W}=$,X=F(W,M,j);Q&&F(W,Q,j)!==X&&(Q=null),ee&&F(W,ee,j)!==X&&(ee=null);}return {enclosingNode:$,precedingNode:Q,followingNode:ee}}var B=()=>!1;function I(L,M,j,$){if(!Array.isArray(L))return;let V=[],{locStart:q,locEnd:Y,printer:{handleComments:H={}}}=$,{avoidAstMutation:R,ownLine:Q=B,endOfLine:ee=B,remaining:te=B}=H,oe=L.map((W,X)=>Object.assign(Object.assign({},S(M,W,$)),{},{comment:W,text:j,options:$,ast:M,isLastComment:L.length-1===X}));for(let[W,X]of oe.entries()){let{comment:ue,precedingNode:De,enclosingNode:ie,followingNode:G,text:z,options:U,ast:le,isLastComment:ge}=X;if(U.parser==="json"||U.parser==="json5"||U.parser==="__js_expression"||U.parser==="__vue_expression"||U.parser==="__vue_ts_expression"){if(q(ue)-q(le)<=0){f(le,ue);continue}if(Y(ue)-Y(le)>=0){w(le,ue);continue}}let Ae;if(R?Ae=[X]:(ue.enclosingNode=ie,ue.precedingNode=De,ue.followingNode=G,Ae=[ue,z,U,le,ge]),P(z,U,oe,W))ue.placement="ownLine",Q(...Ae)||(G?f(G,ue):De?w(De,ue):h(ie||le,ue));else if(C(z,U,oe,W))ue.placement="endOfLine",ee(...Ae)||(De?w(De,ue):G?f(G,ue):h(ie||le,ue));else if(ue.placement="remaining",!te(...Ae))if(De&&G){let Ne=V.length;Ne>0&&V[Ne-1].followingNode!==G&&D(V,z,U),V.push(X);}else De?w(De,ue):G?f(G,ue):h(ie||le,ue);}if(D(V,j,$),!R)for(let W of L)delete W.precedingNode,delete W.enclosingNode,delete W.followingNode;}var k=L=>!/[\S\n\u2028\u2029]/.test(L);function P(L,M,j,$){let{comment:V,precedingNode:q}=j[$],{locStart:Y,locEnd:H}=M,R=Y(V);if(q)for(let Q=$-1;Q>=0;Q--){let{comment:ee,precedingNode:te}=j[Q];if(te!==q||!k(L.slice(H(ee),R)))break;R=Y(ee);}return y(L,R,{backwards:!0})}function C(L,M,j,$){let{comment:V,followingNode:q}=j[$],{locStart:Y,locEnd:H}=M,R=H(V);if(q)for(let Q=$+1;Q<j.length;Q++){let{comment:ee,followingNode:te}=j[Q];if(te!==q||!k(L.slice(R,Y(ee))))break;R=H(ee);}return y(L,R)}function D(L,M,j){let $=L.length;if($===0)return;let{precedingNode:V,followingNode:q,enclosingNode:Y}=L[0],H=j.printer.getGapRegex&&j.printer.getGapRegex(Y)||/^[\s(]*$/,R=j.locStart(q),Q;for(Q=$;Q>0;--Q){let{comment:ee,precedingNode:te,followingNode:oe}=L[Q-1];t.strictEqual(te,V),t.strictEqual(oe,q);let W=M.slice(j.locEnd(ee),R);if(H.test(W))R=j.locStart(ee);else break}for(let[ee,{comment:te}]of L.entries())ee<Q?w(V,te):f(q,te);for(let ee of [V,q])ee.comments&&ee.comments.length>1&&ee.comments.sort((te,oe)=>j.locStart(te)-j.locStart(oe));L.length=0;}function g(L,M){let j=L.getValue();return j.printed=!0,M.printer.printComment(L,M)}function F(L,M,j){let $=j.locStart(M)-1;for(let V=1;V<L.length;++V)if($<j.locStart(L[V]))return V-1;return 0}function l(L,M){let j=L.getValue(),$=[g(L,M)],{printer:V,originalText:q,locStart:Y,locEnd:H}=M;if(V.isBlockComment&&V.isBlockComment(j)){let ee=y(q,H(j))?y(q,Y(j),{backwards:!0})?a:s:" ";$.push(ee);}else $.push(a);let Q=m(q,d(q,H(j)));return Q!==!1&&y(q,Q)&&$.push(a),$}function E(L,M){let j=L.getValue(),$=g(L,M),{printer:V,originalText:q,locStart:Y}=M,H=V.isBlockComment&&V.isBlockComment(j);if(y(q,Y(j),{backwards:!0})){let Q=p(q,j,Y);return i([a,Q?a:"",$])}let R=[" ",$];return H||(R=[i(R),r]),R}function v(L,M,j,$){let V=[],q=L.getValue();return !q||!q.comments||(L.each(()=>{let Y=L.getValue();!Y.leading&&!Y.trailing&&(!$||$(Y))&&V.push(g(L,M));},"comments"),V.length===0)?"":j?o(a,V):u([a,o(a,V)])}function N(L,M,j){let $=L.getValue();if(!$)return {};let V=$.comments||[];j&&(V=V.filter(R=>!j.has(R)));let q=$===M.cursorNode;if(V.length===0){let R=q?c:"";return {leading:R,trailing:R}}let Y=[],H=[];return L.each(()=>{let R=L.getValue();if(j&&j.has(R))return;let{leading:Q,trailing:ee}=R;Q?Y.push(l(L,M)):ee&&H.push(E(L,M));},"comments"),q&&(Y.unshift(c),H.push(c)),{leading:Y,trailing:H}}function x(L,M,j,$){let{leading:V,trailing:q}=N(L,j,$);return !V&&!q?M:[V,M,q]}function b(L){if(!!L)for(let M of L){if(!M.printed)throw new Error('Comment "'+M.value.trim()+'" was not printed. Please report this error!');delete M.printed;}}n.exports={attach:I,printComments:x,printCommentsSeparately:N,printDanglingComments:v,getSortedChildNodes:A,ensureAllCommentsPrinted:b};}}),fm=Z({"src/common/ast-path.js"(e,n){re();var t=it();function s(u,i){let o=a(u.stack,i);return o===-1?null:u.stack[o]}function a(u,i){for(let o=u.length-1;o>=0;o-=2){let c=u[o];if(c&&!Array.isArray(c)&&--i<0)return o}return -1}var r=class{constructor(u){this.stack=[u];}getName(){let{stack:u}=this,{length:i}=u;return i>1?u[i-2]:null}getValue(){return t(this.stack)}getNode(){let u=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return s(this,u)}getParentNode(){let u=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return s(this,u+1)}call(u){let{stack:i}=this,{length:o}=i,c=t(i);for(var y=arguments.length,m=new Array(y>1?y-1:0),d=1;d<y;d++)m[d-1]=arguments[d];for(let f of m)c=c[f],i.push(f,c);let p=u(this);return i.length=o,p}callParent(u){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,o=a(this.stack,i+1),c=this.stack.splice(o+1),y=u(this);return this.stack.push(...c),y}each(u){let{stack:i}=this,{length:o}=i,c=t(i);for(var y=arguments.length,m=new Array(y>1?y-1:0),d=1;d<y;d++)m[d-1]=arguments[d];for(let p of m)c=c[p],i.push(p,c);for(let p=0;p<c.length;++p)i.push(p,c[p]),u(this,p,c),i.length-=2;i.length=o;}map(u){let i=[];for(var o=arguments.length,c=new Array(o>1?o-1:0),y=1;y<o;y++)c[y-1]=arguments[y];return this.each((m,d,p)=>{i[d]=u(m,d,p);},...c),i}try(u){let{stack:i}=this,o=[...i];try{return u()}finally{i.length=0,i.push(...o);}}match(){let u=this.stack.length-1,i=null,o=this.stack[u--];for(var c=arguments.length,y=new Array(c),m=0;m<c;m++)y[m]=arguments[m];for(let d of y){if(o===void 0)return !1;let p=null;if(typeof i=="number"&&(p=i,i=this.stack[u--],o=this.stack[u--]),d&&!d(o,i,p))return !1;i=this.stack[u--],o=this.stack[u--];}return !0}findAncestor(u){let i=this.stack.length-1,o=null,c=this.stack[i--];for(;c;){let y=null;if(typeof o=="number"&&(y=o,o=this.stack[i--],c=this.stack[i--]),o!==null&&u(c,o,y))return c;o=this.stack[i--],c=this.stack[i--];}}};n.exports=r;}}),Dm=Z({"src/main/multiparser.js"(e,n){re();var{utils:{stripTrailingHardline:t}}=Oe(),{normalize:s}=La(),a=et();function r(i,o,c,y){if(c.printer.embed&&c.embeddedLanguageFormatting==="auto")return c.printer.embed(i,o,(m,d,p)=>u(m,d,c,y,p),c)}function u(i,o,c,y){let{stripTrailingHardline:m=!1}=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{},d=s(Object.assign(Object.assign(Object.assign({},c),o),{},{parentParser:c.parser,originalText:i}),{passThrough:!0}),p=Wn().parse(i,d),{ast:f}=p;i=p.text;let h=f.comments;delete f.comments,a.attach(h,f,i,d),d[Symbol.for("comments")]=h||[],d[Symbol.for("tokens")]=f.tokens||[];let w=y(f,d);return a.ensureAllCommentsPrinted(h),m?typeof w=="string"?w.replace(/(?:\r?\n)*$/,""):t(w):w}n.exports={printSubtree:r};}}),mm=Z({"src/main/ast-to-doc.js"(e,n){re();var t=fm(),{builders:{hardline:s,addAlignmentToDoc:a},utils:{propagateBreaks:r}}=Oe(),{printComments:u}=et(),i=Dm();function o(m,d){let p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,{printer:f}=d;f.preprocess&&(m=f.preprocess(m,d));let h=new Map,w=new t(m),T=A();return p>0&&(T=a([s,T],p,d.tabWidth)),r(T),T;function A(B,I){return B===void 0||B===w?S(I):Array.isArray(B)?w.call(()=>S(I),...B):w.call(()=>S(I),B)}function S(B){let I=w.getValue(),k=I&&typeof I=="object"&&B===void 0;if(k&&h.has(I))return h.get(I);let P=y(w,d,A,B);return k&&h.set(I,P),P}}function c(m,d){let{originalText:p,[Symbol.for("comments")]:f,locStart:h,locEnd:w}=d,T=h(m),A=w(m),S=new Set;for(let B of f)h(B)>=T&&w(B)<=A&&(B.printed=!0,S.add(B));return {doc:p.slice(T,A),printedComments:S}}function y(m,d,p,f){let h=m.getValue(),{printer:w}=d,T,A;if(w.hasPrettierIgnore&&w.hasPrettierIgnore(m))({doc:T,printedComments:A}=c(h,d));else {if(h)try{T=i.printSubtree(m,p,d,o);}catch(S){if(globalThis.PRETTIER_DEBUG)throw S}T||(T=w.print(m,d,p,f));}return (!w.willPrintOwnComments||!w.willPrintOwnComments(m,d))&&(T=u(m,T,d,A)),T}n.exports=o;}}),dm=Z({"src/main/range-util.js"(e,n){re();var t=Ut(),s=et(),a=f=>{let{parser:h}=f;return h==="json"||h==="json5"||h==="json-stringify"};function r(f,h){let w=[f.node,...f.parentNodes],T=new Set([h.node,...h.parentNodes]);return w.find(A=>y.has(A.type)&&T.has(A))}function u(f){let h=f.length-1;for(;;){let w=f[h];if(w&&(w.type==="Program"||w.type==="File"))h--;else break}return f.slice(0,h+1)}function i(f,h,w){let{locStart:T,locEnd:A}=w,S=f.node,B=h.node;if(S===B)return {startNode:S,endNode:B};let I=T(f.node);for(let P of u(h.parentNodes))if(T(P)>=I)B=P;else break;let k=A(h.node);for(let P of u(f.parentNodes))if(A(P)<=k)S=P;else break;return {startNode:S,endNode:B}}function o(f,h,w,T){let A=arguments.length>4&&arguments[4]!==void 0?arguments[4]:[],S=arguments.length>5?arguments[5]:void 0,{locStart:B,locEnd:I}=w,k=B(f),P=I(f);if(!(h>P||h<k||S==="rangeEnd"&&h===k||S==="rangeStart"&&h===P)){for(let C of s.getSortedChildNodes(f,w)){let D=o(C,h,w,T,[f,...A],S);if(D)return D}if(!T||T(f,A[0]))return {node:f,parentNodes:A}}}function c(f,h){return h!=="DeclareExportDeclaration"&&f!=="TypeParameterDeclaration"&&(f==="Directive"||f==="TypeAlias"||f==="TSExportAssignment"||f.startsWith("Declare")||f.startsWith("TSDeclare")||f.endsWith("Statement")||f.endsWith("Declaration"))}var y=new Set(["ObjectExpression","ArrayExpression","StringLiteral","NumericLiteral","BooleanLiteral","NullLiteral","UnaryExpression","TemplateLiteral"]),m=new Set(["OperationDefinition","FragmentDefinition","VariableDefinition","TypeExtensionDefinition","ObjectTypeDefinition","FieldDefinition","DirectiveDefinition","EnumTypeDefinition","EnumValueDefinition","InputValueDefinition","InputObjectTypeDefinition","SchemaDefinition","OperationTypeDefinition","InterfaceTypeDefinition","UnionTypeDefinition","ScalarTypeDefinition"]);function d(f,h,w){if(!h)return !1;switch(f.parser){case"flow":case"babel":case"babel-flow":case"babel-ts":case"typescript":case"acorn":case"espree":case"meriyah":case"__babel_estree":return c(h.type,w&&w.type);case"json":case"json5":case"json-stringify":return y.has(h.type);case"graphql":return m.has(h.kind);case"vue":return h.tag!=="root"}return !1}function p(f,h,w){let{rangeStart:T,rangeEnd:A,locStart:S,locEnd:B}=h;t.ok(A>T);let I=f.slice(T,A).search(/\S/),k=I===-1;if(!k)for(T+=I;A>T&&!/\S/.test(f[A-1]);--A);let P=o(w,T,h,(F,l)=>d(h,F,l),[],"rangeStart"),C=k?P:o(w,A,h,F=>d(h,F),[],"rangeEnd");if(!P||!C)return {rangeStart:0,rangeEnd:0};let D,g;if(a(h)){let F=r(P,C);D=F,g=F;}else ({startNode:D,endNode:g}=i(P,C,h));return {rangeStart:Math.min(S(D),S(g)),rangeEnd:Math.max(B(D),B(g))}}n.exports={calculateRange:p,findNodeAtOffset:o};}}),gm=Z({"src/main/core.js"(e,n){re();var{diffArrays:t}=Zf(),{printer:{printDocToString:s},debug:{printDocToDebug:a}}=Oe(),{getAlignmentSize:r}=Ue(),{guessEndOfLine:u,convertEndOfLineToChars:i,countEndOfLineChars:o,normalizeEndOfLine:c}=kn(),y=La().normalize,m=pm(),d=et(),p=Wn(),f=mm(),h=dm(),w="\uFEFF",T=Symbol("cursor");function A(g,F,l){let E=F.comments;return E&&(delete F.comments,d.attach(E,F,g,l)),l[Symbol.for("comments")]=E||[],l[Symbol.for("tokens")]=F.tokens||[],l.originalText=g,E}function S(g,F){let l=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;if(!g||g.trim().length===0)return {formatted:"",cursorOffset:-1,comments:[]};let{ast:E,text:v}=p.parse(g,F);if(F.cursorOffset>=0){let L=h.findNodeAtOffset(E,F.cursorOffset,F);L&&L.node&&(F.cursorNode=L.node);}let N=A(v,E,F),x=f(E,F,l),b=s(x,F);if(d.ensureAllCommentsPrinted(N),l>0){let L=b.formatted.trim();b.cursorNodeStart!==void 0&&(b.cursorNodeStart-=b.formatted.indexOf(L)),b.formatted=L+i(F.endOfLine);}if(F.cursorOffset>=0){let L,M,j,$,V;if(F.cursorNode&&b.cursorNodeText?(L=F.locStart(F.cursorNode),M=v.slice(L,F.locEnd(F.cursorNode)),j=F.cursorOffset-L,$=b.cursorNodeStart,V=b.cursorNodeText):(L=0,M=v,j=F.cursorOffset,$=0,V=b.formatted),M===V)return {formatted:b.formatted,cursorOffset:$+j,comments:N};let q=[...M];q.splice(j,0,T);let Y=[...V],H=t(q,Y),R=$;for(let Q of H)if(Q.removed){if(Q.value.includes(T))break}else R+=Q.count;return {formatted:b.formatted,cursorOffset:R,comments:N}}return {formatted:b.formatted,cursorOffset:-1,comments:N}}function B(g,F){let{ast:l,text:E}=p.parse(g,F),{rangeStart:v,rangeEnd:N}=h.calculateRange(E,F,l),x=E.slice(v,N),b=Math.min(v,E.lastIndexOf(` -`,v)+1),L=E.slice(b,v).match(/^\s*/)[0],M=r(L,F.tabWidth),j=S(x,Object.assign(Object.assign({},F),{},{rangeStart:0,rangeEnd:Number.POSITIVE_INFINITY,cursorOffset:F.cursorOffset>v&&F.cursorOffset<=N?F.cursorOffset-v:-1,endOfLine:"lf"}),M),$=j.formatted.trimEnd(),{cursorOffset:V}=F;V>N?V+=$.length-x.length:j.cursorOffset>=0&&(V=j.cursorOffset+v);let q=E.slice(0,v)+$+E.slice(N);if(F.endOfLine!=="lf"){let Y=i(F.endOfLine);V>=0&&Y===`\r -`&&(V+=o(q.slice(0,V),` -`)),q=q.replace(/\n/g,Y);}return {formatted:q,cursorOffset:V,comments:j.comments}}function I(g,F,l){return typeof F!="number"||Number.isNaN(F)||F<0||F>g.length?l:F}function k(g,F){let{cursorOffset:l,rangeStart:E,rangeEnd:v}=F;return l=I(g,l,-1),E=I(g,E,0),v=I(g,v,g.length),Object.assign(Object.assign({},F),{},{cursorOffset:l,rangeStart:E,rangeEnd:v})}function P(g,F){let{cursorOffset:l,rangeStart:E,rangeEnd:v,endOfLine:N}=k(g,F),x=g.charAt(0)===w;if(x&&(g=g.slice(1),l--,E--,v--),N==="auto"&&(N=u(g)),g.includes("\r")){let b=L=>o(g.slice(0,Math.max(L,0)),`\r -`);l-=b(l),E-=b(E),v-=b(v),g=c(g);}return {hasBOM:x,text:g,options:k(g,Object.assign(Object.assign({},F),{},{cursorOffset:l,rangeStart:E,rangeEnd:v,endOfLine:N}))}}function C(g,F){let l=p.resolveParser(F);return !l.hasPragma||l.hasPragma(g)}function D(g,F){let{hasBOM:l,text:E,options:v}=P(g,y(F));if(v.rangeStart>=v.rangeEnd&&E!==""||v.requirePragma&&!C(E,v))return {formatted:g,cursorOffset:F.cursorOffset,comments:[]};let N;return v.rangeStart>0||v.rangeEnd<E.length?N=B(E,v):(!v.requirePragma&&v.insertPragma&&v.printer.insertPragma&&!C(E,v)&&(E=v.printer.insertPragma(E)),N=S(E,v)),l&&(N.formatted=w+N.formatted,N.cursorOffset>=0&&N.cursorOffset++),N}n.exports={formatWithCursor:D,parse(g,F,l){let{text:E,options:v}=P(g,y(F)),N=p.parse(E,v);return l&&(N.ast=m(N.ast,v)),N},formatAST(g,F){F=y(F);let l=f(g,F);return s(l,F)},formatDoc(g,F){return D(a(g),Object.assign(Object.assign({},F),{},{parser:"__js_expression"})).formatted},printToDoc(g,F){F=y(F);let{ast:l,text:E}=p.parse(g,F);return A(E,l,F),f(l,F)},printDocToString(g,F){return s(g,y(F))}};}}),ym=Z({"src/common/util-shared.js"(e,n){re();var{getMaxContinuousCount:t,getStringWidth:s,getAlignmentSize:a,getIndentSize:r,skip:u,skipWhitespace:i,skipSpaces:o,skipNewline:c,skipToLineEnd:y,skipEverythingButNewLine:m,skipInlineComment:d,skipTrailingComment:p,hasNewline:f,hasNewlineInRange:h,hasSpaces:w,isNextLineEmpty:T,isNextLineEmptyAfterIndex:A,isPreviousLineEmpty:S,getNextNonSpaceNonCommentCharacterIndex:B,makeString:I,addLeadingComment:k,addDanglingComment:P,addTrailingComment:C}=Ue();n.exports={getMaxContinuousCount:t,getStringWidth:s,getAlignmentSize:a,getIndentSize:r,skip:u,skipWhitespace:i,skipSpaces:o,skipNewline:c,skipToLineEnd:y,skipEverythingButNewLine:m,skipInlineComment:d,skipTrailingComment:p,hasNewline:f,hasNewlineInRange:h,hasSpaces:w,isNextLineEmpty:T,isNextLineEmptyAfterIndex:A,isPreviousLineEmpty:S,getNextNonSpaceNonCommentCharacterIndex:B,makeString:I,addLeadingComment:k,addDanglingComment:P,addTrailingComment:C};}}),Tt=Z({"src/utils/create-language.js"(e,n){re(),n.exports=function(t,s){let{languageId:a}=t,r=wn(t,Gf);return Object.assign(Object.assign({linguistLanguageId:a},r),s(t))};}}),hm=Z({"node_modules/esutils/lib/ast.js"(e,n){re(),function(){function t(o){if(o==null)return !1;switch(o.type){case"ArrayExpression":case"AssignmentExpression":case"BinaryExpression":case"CallExpression":case"ConditionalExpression":case"FunctionExpression":case"Identifier":case"Literal":case"LogicalExpression":case"MemberExpression":case"NewExpression":case"ObjectExpression":case"SequenceExpression":case"ThisExpression":case"UnaryExpression":case"UpdateExpression":return !0}return !1}function s(o){if(o==null)return !1;switch(o.type){case"DoWhileStatement":case"ForInStatement":case"ForStatement":case"WhileStatement":return !0}return !1}function a(o){if(o==null)return !1;switch(o.type){case"BlockStatement":case"BreakStatement":case"ContinueStatement":case"DebuggerStatement":case"DoWhileStatement":case"EmptyStatement":case"ExpressionStatement":case"ForInStatement":case"ForStatement":case"IfStatement":case"LabeledStatement":case"ReturnStatement":case"SwitchStatement":case"ThrowStatement":case"TryStatement":case"VariableDeclaration":case"WhileStatement":case"WithStatement":return !0}return !1}function r(o){return a(o)||o!=null&&o.type==="FunctionDeclaration"}function u(o){switch(o.type){case"IfStatement":return o.alternate!=null?o.alternate:o.consequent;case"LabeledStatement":case"ForStatement":case"ForInStatement":case"WhileStatement":case"WithStatement":return o.body}return null}function i(o){var c;if(o.type!=="IfStatement"||o.alternate==null)return !1;c=o.consequent;do{if(c.type==="IfStatement"&&c.alternate==null)return !0;c=u(c);}while(c);return !1}n.exports={isExpression:t,isStatement:a,isIterationStatement:s,isSourceElement:r,isProblematicIfStatement:i,trailingStatement:u};}();}}),ja=Z({"node_modules/esutils/lib/code.js"(e,n){re(),function(){var t,s,a,r,u,i;s={NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,NonAsciiIdentifierPart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/},t={NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]/,NonAsciiIdentifierPart:/[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/};function o(A){return 48<=A&&A<=57}function c(A){return 48<=A&&A<=57||97<=A&&A<=102||65<=A&&A<=70}function y(A){return A>=48&&A<=55}a=[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279];function m(A){return A===32||A===9||A===11||A===12||A===160||A>=5760&&a.indexOf(A)>=0}function d(A){return A===10||A===13||A===8232||A===8233}function p(A){if(A<=65535)return String.fromCharCode(A);var S=String.fromCharCode(Math.floor((A-65536)/1024)+55296),B=String.fromCharCode((A-65536)%1024+56320);return S+B}for(r=new Array(128),i=0;i<128;++i)r[i]=i>=97&&i<=122||i>=65&&i<=90||i===36||i===95;for(u=new Array(128),i=0;i<128;++i)u[i]=i>=97&&i<=122||i>=65&&i<=90||i>=48&&i<=57||i===36||i===95;function f(A){return A<128?r[A]:s.NonAsciiIdentifierStart.test(p(A))}function h(A){return A<128?u[A]:s.NonAsciiIdentifierPart.test(p(A))}function w(A){return A<128?r[A]:t.NonAsciiIdentifierStart.test(p(A))}function T(A){return A<128?u[A]:t.NonAsciiIdentifierPart.test(p(A))}n.exports={isDecimalDigit:o,isHexDigit:c,isOctalDigit:y,isWhiteSpace:m,isLineTerminator:d,isIdentifierStartES5:f,isIdentifierPartES5:h,isIdentifierStartES6:w,isIdentifierPartES6:T};}();}}),vm=Z({"node_modules/esutils/lib/keyword.js"(e,n){re(),function(){var t=ja();function s(f){switch(f){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"let":return !0;default:return !1}}function a(f,h){return !h&&f==="yield"?!1:r(f,h)}function r(f,h){if(h&&s(f))return !0;switch(f.length){case 2:return f==="if"||f==="in"||f==="do";case 3:return f==="var"||f==="for"||f==="new"||f==="try";case 4:return f==="this"||f==="else"||f==="case"||f==="void"||f==="with"||f==="enum";case 5:return f==="while"||f==="break"||f==="catch"||f==="throw"||f==="const"||f==="yield"||f==="class"||f==="super";case 6:return f==="return"||f==="typeof"||f==="delete"||f==="switch"||f==="export"||f==="import";case 7:return f==="default"||f==="finally"||f==="extends";case 8:return f==="function"||f==="continue"||f==="debugger";case 10:return f==="instanceof";default:return !1}}function u(f,h){return f==="null"||f==="true"||f==="false"||a(f,h)}function i(f,h){return f==="null"||f==="true"||f==="false"||r(f,h)}function o(f){return f==="eval"||f==="arguments"}function c(f){var h,w,T;if(f.length===0||(T=f.charCodeAt(0),!t.isIdentifierStartES5(T)))return !1;for(h=1,w=f.length;h<w;++h)if(T=f.charCodeAt(h),!t.isIdentifierPartES5(T))return !1;return !0}function y(f,h){return (f-55296)*1024+(h-56320)+65536}function m(f){var h,w,T,A,S;if(f.length===0)return !1;for(S=t.isIdentifierStartES6,h=0,w=f.length;h<w;++h){if(T=f.charCodeAt(h),55296<=T&&T<=56319){if(++h,h>=w||(A=f.charCodeAt(h),!(56320<=A&&A<=57343)))return !1;T=y(T,A);}if(!S(T))return !1;S=t.isIdentifierPartES6;}return !0}function d(f,h){return c(f)&&!u(f,h)}function p(f,h){return m(f)&&!i(f,h)}n.exports={isKeywordES5:a,isKeywordES6:r,isReservedWordES5:u,isReservedWordES6:i,isRestrictedWord:o,isIdentifierNameES5:c,isIdentifierNameES6:m,isIdentifierES5:d,isIdentifierES6:p};}();}}),Cm=Z({"node_modules/esutils/lib/utils.js"(e){re(),function(){e.ast=hm(),e.code=ja(),e.keyword=vm();}();}}),Pt=Z({"src/language-js/utils/is-block-comment.js"(e,n){re();var t=new Set(["Block","CommentBlock","MultiLine"]),s=a=>t.has(a==null?void 0:a.type);n.exports=s;}}),Em=Z({"src/language-js/utils/is-node-matches.js"(e,n){re();function t(a,r){let u=r.split(".");for(let i=u.length-1;i>=0;i--){let o=u[i];if(i===0)return a.type==="Identifier"&&a.name===o;if(a.type!=="MemberExpression"||a.optional||a.computed||a.property.type!=="Identifier"||a.property.name!==o)return !1;a=a.object;}}function s(a,r){return r.some(u=>t(a,u))}n.exports=s;}}),Ke=Z({"src/language-js/utils/index.js"(e,n){re();var t=Cm().keyword.isIdentifierNameES5,{getLast:s,hasNewline:a,skipWhitespace:r,isNonEmptyArray:u,isNextLineEmptyAfterIndex:i,getStringWidth:o}=Ue(),{locStart:c,locEnd:y,hasSameLocStart:m}=st(),d=Pt(),p=Em(),f="(?:(?=.)\\s)",h=new RegExp("^".concat(f,"*:")),w=new RegExp("^".concat(f,"*::"));function T(O){var fe,Te;return ((fe=O.extra)===null||fe===void 0?void 0:fe.parenthesized)&&d((Te=O.trailingComments)===null||Te===void 0?void 0:Te[0])&&h.test(O.trailingComments[0].value)}function A(O){let fe=O==null?void 0:O[0];return d(fe)&&w.test(fe.value)}function S(O,fe){if(!O||typeof O!="object")return !1;if(Array.isArray(O))return O.some($e=>S($e,fe));let Te=fe(O);return typeof Te=="boolean"?Te:Object.values(O).some($e=>S($e,fe))}function B(O){return O.type==="AssignmentExpression"||O.type==="BinaryExpression"||O.type==="LogicalExpression"||O.type==="NGPipeExpression"||O.type==="ConditionalExpression"||ue(O)||De(O)||O.type==="SequenceExpression"||O.type==="TaggedTemplateExpression"||O.type==="BindExpression"||O.type==="UpdateExpression"&&!O.prefix||O.type==="TSAsExpression"||O.type==="TSNonNullExpression"}function I(O){var fe,Te,$e,Je,Ze,ut;return O.expressions?O.expressions[0]:(fe=(Te=($e=(Je=(Ze=(ut=O.left)!==null&&ut!==void 0?ut:O.test)!==null&&Ze!==void 0?Ze:O.callee)!==null&&Je!==void 0?Je:O.object)!==null&&$e!==void 0?$e:O.tag)!==null&&Te!==void 0?Te:O.argument)!==null&&fe!==void 0?fe:O.expression}function k(O,fe){if(fe.expressions)return ["expressions",0];if(fe.left)return ["left"];if(fe.test)return ["test"];if(fe.object)return ["object"];if(fe.callee)return ["callee"];if(fe.tag)return ["tag"];if(fe.argument)return ["argument"];if(fe.expression)return ["expression"];throw new Error("Unexpected node has no left side.")}function P(O){return O=new Set(O),fe=>O.has(fe==null?void 0:fe.type)}var C=P(["Line","CommentLine","SingleLine","HashbangComment","HTMLOpen","HTMLClose"]),D=P(["ExportDefaultDeclaration","ExportDefaultSpecifier","DeclareExportDeclaration","ExportNamedDeclaration","ExportAllDeclaration"]);function g(O){let fe=O.getParentNode();return O.getName()==="declaration"&&D(fe)?fe:null}var F=P(["BooleanLiteral","DirectiveLiteral","Literal","NullLiteral","NumericLiteral","BigIntLiteral","DecimalLiteral","RegExpLiteral","StringLiteral","TemplateLiteral","TSTypeLiteral","JSXText"]);function l(O){return O.type==="NumericLiteral"||O.type==="Literal"&&typeof O.value=="number"}function E(O){return O.type==="UnaryExpression"&&(O.operator==="+"||O.operator==="-")&&l(O.argument)}function v(O){return O.type==="StringLiteral"||O.type==="Literal"&&typeof O.value=="string"}var N=P(["ObjectTypeAnnotation","TSTypeLiteral","TSMappedType"]),x=P(["FunctionExpression","ArrowFunctionExpression"]);function b(O){return O.type==="FunctionExpression"||O.type==="ArrowFunctionExpression"&&O.body.type==="BlockStatement"}function L(O){return ue(O)&&O.callee.type==="Identifier"&&["async","inject","fakeAsync","waitForAsync"].includes(O.callee.name)}var M=P(["JSXElement","JSXFragment"]);function j(O,fe){if(O.parentParser!=="markdown"&&O.parentParser!=="mdx")return !1;let Te=fe.getNode();if(!Te.expression||!M(Te.expression))return !1;let $e=fe.getParentNode();return $e.type==="Program"&&$e.body.length===1}function $(O){return O.kind==="get"||O.kind==="set"}function V(O){return $(O)||m(O,O.value)}function q(O){return (O.type==="ObjectTypeProperty"||O.type==="ObjectTypeInternalSlot")&&O.value.type==="FunctionTypeAnnotation"&&!O.static&&!V(O)}function Y(O){return (O.type==="TypeAnnotation"||O.type==="TSTypeAnnotation")&&O.typeAnnotation.type==="FunctionTypeAnnotation"&&!O.static&&!m(O,O.typeAnnotation)}var H=P(["BinaryExpression","LogicalExpression","NGPipeExpression"]);function R(O){return De(O)||O.type==="BindExpression"&&Boolean(O.object)}var Q=new Set(["AnyTypeAnnotation","TSAnyKeyword","NullLiteralTypeAnnotation","TSNullKeyword","ThisTypeAnnotation","TSThisType","NumberTypeAnnotation","TSNumberKeyword","VoidTypeAnnotation","TSVoidKeyword","BooleanTypeAnnotation","TSBooleanKeyword","BigIntTypeAnnotation","TSBigIntKeyword","SymbolTypeAnnotation","TSSymbolKeyword","StringTypeAnnotation","TSStringKeyword","BooleanLiteralTypeAnnotation","StringLiteralTypeAnnotation","BigIntLiteralTypeAnnotation","NumberLiteralTypeAnnotation","TSLiteralType","TSTemplateLiteralType","EmptyTypeAnnotation","MixedTypeAnnotation","TSNeverKeyword","TSObjectKeyword","TSUndefinedKeyword","TSUnknownKeyword"]);function ee(O){return O?!!((O.type==="GenericTypeAnnotation"||O.type==="TSTypeReference")&&!O.typeParameters||Q.has(O.type)):!1}function te(O){let fe=/^(?:before|after)(?:Each|All)$/;return O.callee.type==="Identifier"&&fe.test(O.callee.name)&&O.arguments.length===1}var oe=["it","it.only","it.skip","describe","describe.only","describe.skip","test","test.only","test.skip","test.step","test.describe","test.describe.only","test.describe.parallel","test.describe.parallel.only","test.describe.serial","test.describe.serial.only","skip","xit","xdescribe","xtest","fit","fdescribe","ftest"];function W(O){return p(O,oe)}function X(O,fe){if(O.type!=="CallExpression")return !1;if(O.arguments.length===1){if(L(O)&&fe&&X(fe))return x(O.arguments[0]);if(te(O))return L(O.arguments[0])}else if((O.arguments.length===2||O.arguments.length===3)&&(O.arguments[0].type==="TemplateLiteral"||v(O.arguments[0]))&&W(O.callee))return O.arguments[2]&&!l(O.arguments[2])?!1:(O.arguments.length===2?x(O.arguments[1]):b(O.arguments[1])&&Se(O.arguments[1]).length<=1)||L(O.arguments[1]);return !1}var ue=P(["CallExpression","OptionalCallExpression"]),De=P(["MemberExpression","OptionalMemberExpression"]);function ie(O){let fe="expressions";O.type==="TSTemplateLiteralType"&&(fe="types");let Te=O[fe];return Te.length===0?!1:Te.every($e=>{if(se($e))return !1;if($e.type==="Identifier"||$e.type==="ThisExpression")return !0;if(De($e)){let Je=$e;for(;De(Je);)if(Je.property.type!=="Identifier"&&Je.property.type!=="Literal"&&Je.property.type!=="StringLiteral"&&Je.property.type!=="NumericLiteral"||(Je=Je.object,se(Je)))return !1;return Je.type==="Identifier"||Je.type==="ThisExpression"}return !1})}function G(O,fe){return O==="+"||O==="-"?O+fe:fe}function z(O,fe){let Te=c(fe),$e=r(O,y(fe));return $e!==!1&&O.slice(Te,Te+2)==="/*"&&O.slice($e,$e+2)==="*/"}function U(O,fe){return M(fe)?Re(fe):se(fe,Le.Leading,Te=>a(O,y(Te)))}function le(O,fe){return fe.parser!=="json"&&v(O.key)&&ve(O.key).slice(1,-1)===O.key.value&&(t(O.key.value)&&!(fe.parser==="babel-ts"&&O.type==="ClassProperty"||fe.parser==="typescript"&&O.type==="PropertyDefinition")||ge(O.key.value)&&String(Number(O.key.value))===O.key.value&&(fe.parser==="babel"||fe.parser==="acorn"||fe.parser==="espree"||fe.parser==="meriyah"||fe.parser==="__babel_estree"))}function ge(O){return /^(?:\d+|\d+\.\d+)$/.test(O)}function Ae(O,fe){let Te=/^[fx]?(?:describe|it|test)$/;return fe.type==="TaggedTemplateExpression"&&fe.quasi===O&&fe.tag.type==="MemberExpression"&&fe.tag.property.type==="Identifier"&&fe.tag.property.name==="each"&&(fe.tag.object.type==="Identifier"&&Te.test(fe.tag.object.name)||fe.tag.object.type==="MemberExpression"&&fe.tag.object.property.type==="Identifier"&&(fe.tag.object.property.name==="only"||fe.tag.object.property.name==="skip")&&fe.tag.object.object.type==="Identifier"&&Te.test(fe.tag.object.object.name))}function Ne(O){return O.quasis.some(fe=>fe.value.raw.includes(` -`))}function ke(O,fe){return (O.type==="TemplateLiteral"&&Ne(O)||O.type==="TaggedTemplateExpression"&&Ne(O.quasi))&&!a(fe,c(O),{backwards:!0})}function ce(O){if(!se(O))return !1;let fe=s(He(O,Le.Dangling));return fe&&!d(fe)}function pe(O){if(O.length<=1)return !1;let fe=0;for(let Te of O)if(x(Te)){if(fe+=1,fe>1)return !0}else if(ue(Te)){for(let $e of Te.arguments)if(x($e))return !0}return !1}function de(O){let fe=O.getValue(),Te=O.getParentNode();return ue(fe)&&ue(Te)&&Te.callee===fe&&fe.arguments.length>Te.arguments.length&&Te.arguments.length>0}function ae(O,fe){if(fe>=2)return !1;let Te=Je=>ae(Je,fe+1),$e=O.type==="Literal"&&"regex"in O&&O.regex.pattern||O.type==="RegExpLiteral"&&O.pattern;return $e&&o($e)>5?!1:O.type==="Literal"||O.type==="BigIntLiteral"||O.type==="DecimalLiteral"||O.type==="BooleanLiteral"||O.type==="NullLiteral"||O.type==="NumericLiteral"||O.type==="RegExpLiteral"||O.type==="StringLiteral"||O.type==="Identifier"||O.type==="ThisExpression"||O.type==="Super"||O.type==="PrivateName"||O.type==="PrivateIdentifier"||O.type==="ArgumentPlaceholder"||O.type==="Import"?!0:O.type==="TemplateLiteral"?O.quasis.every(Je=>!Je.value.raw.includes(` -`))&&O.expressions.every(Te):O.type==="ObjectExpression"?O.properties.every(Je=>!Je.computed&&(Je.shorthand||Je.value&&Te(Je.value))):O.type==="ArrayExpression"?O.elements.every(Je=>Je===null||Te(Je)):ze(O)?(O.type==="ImportExpression"||ae(O.callee,fe))&&Xe(O).every(Te):De(O)?ae(O.object,fe)&&ae(O.property,fe):O.type==="UnaryExpression"&&(O.operator==="!"||O.operator==="-")?ae(O.argument,fe):O.type==="TSNonNullExpression"?ae(O.expression,fe):!1}function ve(O){var fe,Te;return (fe=(Te=O.extra)===null||Te===void 0?void 0:Te.raw)!==null&&fe!==void 0?fe:O.raw}function K(O){return O}function he(O){return O.filepath&&/\.tsx$/i.test(O.filepath)}function ye(O){let fe=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"es5";return O.trailingComma==="es5"&&fe==="es5"||O.trailingComma==="all"&&(fe==="all"||fe==="es5")}function Ce(O,fe){switch(O=Ee(O),O.type){case"FunctionExpression":case"ClassExpression":case"DoExpression":return fe;case"ObjectExpression":return !0;case"MemberExpression":case"OptionalMemberExpression":return Ce(O.object,fe);case"TaggedTemplateExpression":return O.tag.type==="FunctionExpression"?!1:Ce(O.tag,fe);case"CallExpression":case"OptionalCallExpression":return O.callee.type==="FunctionExpression"?!1:Ce(O.callee,fe);case"ConditionalExpression":return Ce(O.test,fe);case"UpdateExpression":return !O.prefix&&Ce(O.argument,fe);case"BindExpression":return O.object&&Ce(O.object,fe);case"SequenceExpression":return Ce(O.expressions[0],fe);case"TSAsExpression":case"TSNonNullExpression":return Ce(O.expression,fe);default:return !1}}var Ie={"==":!0,"!=":!0,"===":!0,"!==":!0},Fe={"*":!0,"/":!0,"%":!0},me={">>":!0,">>>":!0,"<<":!0};function _(O,fe){return !(ne(fe)!==ne(O)||O==="**"||Ie[O]&&Ie[fe]||fe==="%"&&Fe[O]||O==="%"&&Fe[fe]||fe!==O&&Fe[fe]&&Fe[O]||me[O]&&me[fe])}var J=new Map([["|>"],["??"],["||"],["&&"],["|"],["^"],["&"],["==","===","!=","!=="],["<",">","<=",">=","in","instanceof"],[">>","<<",">>>"],["+","-"],["*","/","%"],["**"]].flatMap((O,fe)=>O.map(Te=>[Te,fe])));function ne(O){return J.get(O)}function Ee(O){for(;O.left;)O=O.left;return O}function We(O){return Boolean(me[O])||O==="|"||O==="^"||O==="&"}function Be(O){var fe;if(O.rest)return !0;let Te=Se(O);return ((fe=s(Te))===null||fe===void 0?void 0:fe.type)==="RestElement"}var Pe=new WeakMap;function Se(O){if(Pe.has(O))return Pe.get(O);let fe=[];return O.this&&fe.push(O.this),Array.isArray(O.parameters)?fe.push(...O.parameters):Array.isArray(O.params)&&fe.push(...O.params),O.rest&&fe.push(O.rest),Pe.set(O,fe),fe}function Qe(O,fe){let Te=O.getValue(),$e=0,Je=Ze=>fe(Ze,$e++);Te.this&&O.call(Je,"this"),Array.isArray(Te.parameters)?O.each(Je,"parameters"):Array.isArray(Te.params)&&O.each(Je,"params"),Te.rest&&O.call(Je,"rest");}var xe=new WeakMap;function Xe(O){if(xe.has(O))return xe.get(O);let fe=O.arguments;return O.type==="ImportExpression"&&(fe=[O.source],O.attributes&&fe.push(O.attributes)),xe.set(O,fe),fe}function we(O,fe){let Te=O.getValue();Te.type==="ImportExpression"?(O.call($e=>fe($e,0),"source"),Te.attributes&&O.call($e=>fe($e,1),"attributes")):O.each(fe,"arguments");}function je(O){return O.value.trim()==="prettier-ignore"&&!O.unignore}function Re(O){return O&&(O.prettierIgnore||se(O,Le.PrettierIgnore))}function be(O){let fe=O.getValue();return Re(fe)}var Le={Leading:1<<1,Trailing:1<<2,Dangling:1<<3,Block:1<<4,Line:1<<5,PrettierIgnore:1<<6,First:1<<7,Last:1<<8},qe=(O,fe)=>{if(typeof O=="function"&&(fe=O,O=0),O||fe)return (Te,$e,Je)=>!(O&Le.Leading&&!Te.leading||O&Le.Trailing&&!Te.trailing||O&Le.Dangling&&(Te.leading||Te.trailing)||O&Le.Block&&!d(Te)||O&Le.Line&&!C(Te)||O&Le.First&&$e!==0||O&Le.Last&&$e!==Je.length-1||O&Le.PrettierIgnore&&!je(Te)||fe&&!fe(Te))};function se(O,fe,Te){if(!u(O==null?void 0:O.comments))return !1;let $e=qe(fe,Te);return $e?O.comments.some($e):!0}function He(O,fe,Te){if(!Array.isArray(O==null?void 0:O.comments))return [];let $e=qe(fe,Te);return $e?O.comments.filter($e):O.comments}var Me=(O,fe)=>{let{originalText:Te}=fe;return i(Te,y(O))};function ze(O){return ue(O)||O.type==="NewExpression"||O.type==="ImportExpression"}function nt(O){return O&&(O.type==="ObjectProperty"||O.type==="Property"&&!O.method&&O.kind==="init")}function tt(O){return Boolean(O.__isUsingHackPipeline)}var pt=Symbol("ifWithoutBlockAndSameLineComment");n.exports={getFunctionParameters:Se,iterateFunctionParametersPath:Qe,getCallArguments:Xe,iterateCallArgumentsPath:we,hasRestParameter:Be,getLeftSide:I,getLeftSidePathName:k,getParentExportDeclaration:g,getTypeScriptMappedTypeModifier:G,hasFlowAnnotationComment:A,hasFlowShorthandAnnotationComment:T,hasLeadingOwnLineComment:U,hasNakedLeftSide:B,hasNode:S,hasIgnoreComment:be,hasNodeIgnoreComment:Re,identity:K,isBinaryish:H,isCallLikeExpression:ze,isEnabledHackPipeline:tt,isLineComment:C,isPrettierIgnoreComment:je,isCallExpression:ue,isMemberExpression:De,isExportDeclaration:D,isFlowAnnotationComment:z,isFunctionCompositionArgs:pe,isFunctionNotation:V,isFunctionOrArrowExpression:x,isGetterOrSetter:$,isJestEachTemplateLiteral:Ae,isJsxNode:M,isLiteral:F,isLongCurriedCallExpression:de,isSimpleCallArgument:ae,isMemberish:R,isNumericLiteral:l,isSignedNumericLiteral:E,isObjectProperty:nt,isObjectType:N,isObjectTypePropertyAFunction:q,isSimpleType:ee,isSimpleNumber:ge,isSimpleTemplateLiteral:ie,isStringLiteral:v,isStringPropSafeToUnquote:le,isTemplateOnItsOwnLine:ke,isTestCall:X,isTheOnlyJsxElementInMarkdown:j,isTSXFile:he,isTypeAnnotationAFunction:Y,isNextLineEmpty:Me,needsHardlineAfterDanglingComment:ce,rawText:ve,shouldPrintComma:ye,isBitwiseOperator:We,shouldFlatten:_,startsWithNoLookaheadToken:Ce,getPrecedence:ne,hasComment:se,getComments:He,CommentCheckFlags:Le,markerForIfWithoutBlockAndSameLineComment:pt};}}),kt=Z({"src/language-js/print/template-literal.js"(e,n){re();var t=it(),{getStringWidth:s,getIndentSize:a}=Ue(),{builders:{join:r,hardline:u,softline:i,group:o,indent:c,align:y,lineSuffixBoundary:m,addAlignmentToDoc:d},printer:{printDocToString:p},utils:{mapDoc:f}}=Oe(),{isBinaryish:h,isJestEachTemplateLiteral:w,isSimpleTemplateLiteral:T,hasComment:A,isMemberExpression:S}=Ke();function B(g,F,l){let E=g.getValue();if(E.type==="TemplateLiteral"&&w(E,g.getParentNode())){let M=I(g,l,F);if(M)return M}let N="expressions";E.type==="TSTemplateLiteralType"&&(N="types");let x=[],b=g.map(F,N),L=T(E);return L&&(b=b.map(M=>p(M,Object.assign(Object.assign({},l),{},{printWidth:Number.POSITIVE_INFINITY})).formatted)),x.push(m,"`"),g.each(M=>{let j=M.getName();if(x.push(F()),j<b.length){let{tabWidth:$}=l,V=M.getValue(),q=a(V.value.raw,$),Y=b[j];if(!L){let R=E[N][j];(A(R)||S(R)||R.type==="ConditionalExpression"||R.type==="SequenceExpression"||R.type==="TSAsExpression"||h(R))&&(Y=[c([i,Y]),i]);}let H=q===0&&V.value.raw.endsWith(` -`)?y(Number.NEGATIVE_INFINITY,Y):d(Y,q,$);x.push(o(["${",H,m,"}"]));}},"quasis"),x.push("`"),x}function I(g,F,l){let E=g.getNode(),v=E.quasis[0].value.raw.trim().split(/\s*\|\s*/);if(v.length>1||v.some(N=>N.length>0)){F.__inJestEach=!0;let N=g.map(l,"expressions");F.__inJestEach=!1;let x=[],b=N.map(V=>"${"+p(V,Object.assign(Object.assign({},F),{},{printWidth:Number.POSITIVE_INFINITY,endOfLine:"lf"})).formatted+"}"),L=[{hasLineBreak:!1,cells:[]}];for(let V=1;V<E.quasis.length;V++){let q=t(L),Y=b[V-1];q.cells.push(Y),Y.includes(` -`)&&(q.hasLineBreak=!0),E.quasis[V].value.raw.includes(` -`)&&L.push({hasLineBreak:!1,cells:[]});}let M=Math.max(v.length,...L.map(V=>V.cells.length)),j=Array.from({length:M}).fill(0),$=[{cells:v},...L.filter(V=>V.cells.length>0)];for(let{cells:V}of $.filter(q=>!q.hasLineBreak))for(let[q,Y]of V.entries())j[q]=Math.max(j[q],s(Y));return x.push(m,"`",c([u,r(u,$.map(V=>r(" | ",V.cells.map((q,Y)=>V.hasLineBreak?q:q+" ".repeat(j[Y]-s(q))))))]),u,"`"),x}}function k(g,F){let l=g.getValue(),E=F();return A(l)&&(E=o([c([i,E]),i])),["${",E,m,"}"]}function P(g,F){return g.map(l=>k(l,F),"expressions")}function C(g,F){return f(g,l=>typeof l=="string"?F?l.replace(/(\\*)`/g,"$1$1\\`"):D(l):l)}function D(g){return g.replace(/([\\`]|\${)/g,"\\$1")}n.exports={printTemplateLiteral:B,printTemplateExpressions:P,escapeTemplateCharacters:C,uncookTemplateElementValue:D};}}),Fm=Z({"src/language-js/embed/markdown.js"(e,n){re();var{builders:{indent:t,softline:s,literalline:a,dedentToRoot:r}}=Oe(),{escapeTemplateCharacters:u}=kt();function i(c,y,m){let p=c.getValue().quasis[0].value.raw.replace(/((?:\\\\)*)\\`/g,(T,A)=>"\\".repeat(A.length/2)+"`"),f=o(p),h=f!=="";h&&(p=p.replace(new RegExp("^".concat(f),"gm"),""));let w=u(m(p,{parser:"markdown",__inJsTemplate:!0},{stripTrailingHardline:!0}),!0);return ["`",h?t([s,w]):[a,r(w)],s,"`"]}function o(c){let y=c.match(/^([^\S\n]*)\S/m);return y===null?"":y[1]}n.exports=i;}}),Am=Z({"src/language-js/embed/css.js"(e,n){re();var{isNonEmptyArray:t}=Ue(),{builders:{indent:s,hardline:a,softline:r},utils:{mapDoc:u,replaceEndOfLine:i,cleanDoc:o}}=Oe(),{printTemplateExpressions:c}=kt();function y(p,f,h){let w=p.getValue(),T=w.quasis.map(k=>k.value.raw),A=0,S=T.reduce((k,P,C)=>C===0?P:k+"@prettier-placeholder-"+A+++"-id"+P,""),B=h(S,{parser:"scss"},{stripTrailingHardline:!0}),I=c(p,f);return m(B,w,I)}function m(p,f,h){if(f.quasis.length===1&&!f.quasis[0].value.raw.trim())return "``";let T=d(p,h);if(!T)throw new Error("Couldn't insert all the expressions");return ["`",s([a,T]),r,"`"]}function d(p,f){if(!t(f))return p;let h=0,w=u(o(p),T=>typeof T!="string"||!T.includes("@prettier-placeholder")?T:T.split(/@prettier-placeholder-(\d+)-id/).map((A,S)=>S%2===0?i(A):(h++,f[A])));return f.length===h?w:null}n.exports=y;}}),Sm=Z({"src/language-js/embed/graphql.js"(e,n){re();var{builders:{indent:t,join:s,hardline:a}}=Oe(),{escapeTemplateCharacters:r,printTemplateExpressions:u}=kt();function i(c,y,m){let d=c.getValue(),p=d.quasis.length;if(p===1&&d.quasis[0].value.raw.trim()==="")return "``";let f=u(c,y),h=[];for(let w=0;w<p;w++){let T=d.quasis[w],A=w===0,S=w===p-1,B=T.value.cooked,I=B.split(` -`),k=I.length,P=f[w],C=k>2&&I[0].trim()===""&&I[1].trim()==="",D=k>2&&I[k-1].trim()===""&&I[k-2].trim()==="",g=I.every(l=>/^\s*(?:#[^\n\r]*)?$/.test(l));if(!S&&/#[^\n\r]*$/.test(I[k-1]))return null;let F=null;g?F=o(I):F=m(B,{parser:"graphql"},{stripTrailingHardline:!0}),F?(F=r(F,!1),!A&&C&&h.push(""),h.push(F),!S&&D&&h.push("")):!A&&!S&&C&&h.push(""),P&&h.push(P);}return ["`",t([a,s(a,h)]),a,"`"]}function o(c){let y=[],m=!1,d=c.map(p=>p.trim());for(let[p,f]of d.entries())f!==""&&(d[p-1]===""&&m?y.push([a,f]):y.push(f),m=!0);return y.length===0?null:s(a,y)}n.exports=i;}}),xm=Z({"src/language-js/embed/html.js"(e,n){re();var{builders:{indent:t,line:s,hardline:a,group:r},utils:{mapDoc:u}}=Oe(),{printTemplateExpressions:i,uncookTemplateElementValue:o}=kt(),c=0;function y(m,d,p,f,h){let{parser:w}=h,T=m.getValue(),A=c;c=c+1>>>0;let S=E=>"PRETTIER_HTML_PLACEHOLDER_".concat(E,"_").concat(A,"_IN_JS"),B=T.quasis.map((E,v,N)=>v===N.length-1?E.value.cooked:E.value.cooked+S(v)).join(""),I=i(m,d);if(I.length===0&&B.trim().length===0)return "``";let k=new RegExp(S("(\\d+)"),"g"),P=0,C=p(B,{parser:w,__onHtmlRoot(E){P=E.children.length;}},{stripTrailingHardline:!0}),D=u(C,E=>{if(typeof E!="string")return E;let v=[],N=E.split(k);for(let x=0;x<N.length;x++){let b=N[x];if(x%2===0){b&&(b=o(b),f.__embeddedInHtml&&(b=b.replace(/<\/(script)\b/gi,"<\\/$1")),v.push(b));continue}let L=Number(b);v.push(I[L]);}return v}),g=/^\s/.test(B)?" ":"",F=/\s$/.test(B)?" ":"",l=f.htmlWhitespaceSensitivity==="ignore"?a:g&&F?s:null;return r(l?["`",t([l,r(D)]),l,"`"]:["`",g,P>1?t(r(D)):r(D),F,"`"])}n.exports=y;}}),bm=Z({"src/language-js/embed.js"(e,n){re();var{hasComment:t,CommentCheckFlags:s,isObjectProperty:a}=Ke(),r=Fm(),u=Am(),i=Sm(),o=xm();function c(C){if(d(C)||w(C)||T(C)||p(C))return "css";if(B(C))return "graphql";if(k(C))return "html";if(f(C))return "angular";if(m(C))return "markdown"}function y(C,D,g,F){let l=C.getValue();if(l.type!=="TemplateLiteral"||P(l))return;let E=c(C);if(!!E){if(E==="markdown")return r(C,D,g);if(E==="css")return u(C,D,g);if(E==="graphql")return i(C,D,g);if(E==="html"||E==="angular")return o(C,D,g,F,{parser:E})}}function m(C){let D=C.getValue(),g=C.getParentNode();return g&&g.type==="TaggedTemplateExpression"&&D.quasis.length===1&&g.tag.type==="Identifier"&&(g.tag.name==="md"||g.tag.name==="markdown")}function d(C){let D=C.getValue(),g=C.getParentNode(),F=C.getParentNode(1);return F&&D.quasis&&g.type==="JSXExpressionContainer"&&F.type==="JSXElement"&&F.openingElement.name.name==="style"&&F.openingElement.attributes.some(l=>l.name.name==="jsx")||g&&g.type==="TaggedTemplateExpression"&&g.tag.type==="Identifier"&&g.tag.name==="css"||g&&g.type==="TaggedTemplateExpression"&&g.tag.type==="MemberExpression"&&g.tag.object.name==="css"&&(g.tag.property.name==="global"||g.tag.property.name==="resolve")}function p(C){return C.match(D=>D.type==="TemplateLiteral",(D,g)=>D.type==="ArrayExpression"&&g==="elements",(D,g)=>a(D)&&D.key.type==="Identifier"&&D.key.name==="styles"&&g==="value",...h)}function f(C){return C.match(D=>D.type==="TemplateLiteral",(D,g)=>a(D)&&D.key.type==="Identifier"&&D.key.name==="template"&&g==="value",...h)}var h=[(C,D)=>C.type==="ObjectExpression"&&D==="properties",(C,D)=>C.type==="CallExpression"&&C.callee.type==="Identifier"&&C.callee.name==="Component"&&D==="arguments",(C,D)=>C.type==="Decorator"&&D==="expression"];function w(C){let D=C.getParentNode();if(!D||D.type!=="TaggedTemplateExpression")return !1;let g=D.tag.type==="ParenthesizedExpression"?D.tag.expression:D.tag;switch(g.type){case"MemberExpression":return A(g.object)||S(g);case"CallExpression":return A(g.callee)||g.callee.type==="MemberExpression"&&(g.callee.object.type==="MemberExpression"&&(A(g.callee.object.object)||S(g.callee.object))||g.callee.object.type==="CallExpression"&&A(g.callee.object.callee));case"Identifier":return g.name==="css";default:return !1}}function T(C){let D=C.getParentNode(),g=C.getParentNode(1);return g&&D.type==="JSXExpressionContainer"&&g.type==="JSXAttribute"&&g.name.type==="JSXIdentifier"&&g.name.name==="css"}function A(C){return C.type==="Identifier"&&C.name==="styled"}function S(C){return /^[A-Z]/.test(C.object.name)&&C.property.name==="extend"}function B(C){let D=C.getValue(),g=C.getParentNode();return I(D,"GraphQL")||g&&(g.type==="TaggedTemplateExpression"&&(g.tag.type==="MemberExpression"&&g.tag.object.name==="graphql"&&g.tag.property.name==="experimental"||g.tag.type==="Identifier"&&(g.tag.name==="gql"||g.tag.name==="graphql"))||g.type==="CallExpression"&&g.callee.type==="Identifier"&&g.callee.name==="graphql")}function I(C,D){return t(C,s.Block|s.Leading,g=>{let{value:F}=g;return F===" ".concat(D," ")})}function k(C){return I(C.getValue(),"HTML")||C.match(D=>D.type==="TemplateLiteral",(D,g)=>D.type==="TaggedTemplateExpression"&&D.tag.type==="Identifier"&&D.tag.name==="html"&&g==="quasi")}function P(C){let{quasis:D}=C;return D.some(g=>{let{value:{cooked:F}}=g;return F===null})}n.exports=y;}}),Tm=Z({"src/language-js/clean.js"(e,n){re();var t=Pt(),s=new Set(["range","raw","comments","leadingComments","trailingComments","innerComments","extra","start","end","loc","flags","errors","tokens"]),a=u=>{for(let i of u.quasis)delete i.value;};function r(u,i,o){if(u.type==="Program"&&delete i.sourceType,(u.type==="BigIntLiteral"||u.type==="BigIntLiteralTypeAnnotation")&&i.value&&(i.value=i.value.toLowerCase()),(u.type==="BigIntLiteral"||u.type==="Literal")&&i.bigint&&(i.bigint=i.bigint.toLowerCase()),u.type==="DecimalLiteral"&&(i.value=Number(i.value)),u.type==="Literal"&&i.decimal&&(i.decimal=Number(i.decimal)),u.type==="EmptyStatement"||u.type==="JSXText"||u.type==="JSXExpressionContainer"&&(u.expression.type==="Literal"||u.expression.type==="StringLiteral")&&u.expression.value===" ")return null;if((u.type==="Property"||u.type==="ObjectProperty"||u.type==="MethodDefinition"||u.type==="ClassProperty"||u.type==="ClassMethod"||u.type==="PropertyDefinition"||u.type==="TSDeclareMethod"||u.type==="TSPropertySignature"||u.type==="ObjectTypeProperty")&&typeof u.key=="object"&&u.key&&(u.key.type==="Literal"||u.key.type==="NumericLiteral"||u.key.type==="StringLiteral"||u.key.type==="Identifier")&&delete i.key,u.type==="JSXElement"&&u.openingElement.name.name==="style"&&u.openingElement.attributes.some(m=>m.name.name==="jsx"))for(let{type:m,expression:d}of i.children)m==="JSXExpressionContainer"&&d.type==="TemplateLiteral"&&a(d);u.type==="JSXAttribute"&&u.name.name==="css"&&u.value.type==="JSXExpressionContainer"&&u.value.expression.type==="TemplateLiteral"&&a(i.value.expression),u.type==="JSXAttribute"&&u.value&&u.value.type==="Literal"&&/["']|"|'/.test(u.value.value)&&(i.value.value=i.value.value.replace(/["']|"|'/g,'"'));let c=u.expression||u.callee;if(u.type==="Decorator"&&c.type==="CallExpression"&&c.callee.name==="Component"&&c.arguments.length===1){let m=u.expression.arguments[0].properties;for(let[d,p]of i.expression.arguments[0].properties.entries())switch(m[d].key.name){case"styles":p.value.type==="ArrayExpression"&&a(p.value.elements[0]);break;case"template":p.value.type==="TemplateLiteral"&&a(p.value);break}}if(u.type==="TaggedTemplateExpression"&&(u.tag.type==="MemberExpression"||u.tag.type==="Identifier"&&(u.tag.name==="gql"||u.tag.name==="graphql"||u.tag.name==="css"||u.tag.name==="md"||u.tag.name==="markdown"||u.tag.name==="html")||u.tag.type==="CallExpression")&&a(i.quasi),u.type==="TemplateLiteral"){var y;(((y=u.leadingComments)===null||y===void 0?void 0:y.some(d=>t(d)&&["GraphQL","HTML"].some(p=>d.value===" ".concat(p," "))))||o.type==="CallExpression"&&o.callee.name==="graphql"||!u.leadingComments)&&a(i);}if(u.type==="InterpreterDirective"&&(i.value=i.value.trimEnd()),(u.type==="TSIntersectionType"||u.type==="TSUnionType")&&u.types.length===1)return i.types[0]}r.ignoredProperties=s,n.exports=r;}}),Oa={};Gt(Oa,{EOL:()=>Nn,arch:()=>Bm,cpus:()=>Ha,default:()=>Xa,endianness:()=>qa,freemem:()=>Wa,getNetworkInterfaces:()=>za,hostname:()=>Ma,loadavg:()=>Ra,networkInterfaces:()=>Ua,platform:()=>Nm,release:()=>Ja,tmpDir:()=>Tn,tmpdir:()=>Bn,totalmem:()=>$a,type:()=>Ga,uptime:()=>Va});function qa(){if(typeof Fr>"u"){var e=new ArrayBuffer(2),n=new Uint8Array(e),t=new Uint16Array(e);if(n[0]=1,n[1]=2,t[0]===258)Fr="BE";else if(t[0]===513)Fr="LE";else throw new Error("unable to figure out endianess")}return Fr}function Ma(){return typeof globalThis.location<"u"?globalThis.location.hostname:""}function Ra(){return []}function Va(){return 0}function Wa(){return Number.MAX_VALUE}function $a(){return Number.MAX_VALUE}function Ha(){return []}function Ga(){return "Browser"}function Ja(){return typeof globalThis.navigator<"u"?globalThis.navigator.appVersion:""}function Ua(){}function za(){}function Bm(){return "javascript"}function Nm(){return "browser"}function Tn(){return "/tmp"}var Fr,Bn,Nn,Xa,wm=mt({"node-modules-polyfills:os"(){re(),Bn=Tn,Nn=` -`,Xa={EOL:Nn,tmpdir:Bn,tmpDir:Tn,networkInterfaces:Ua,getNetworkInterfaces:za,release:Ja,type:Ga,cpus:Ha,totalmem:$a,freemem:Wa,uptime:Va,loadavg:Ra,hostname:Ma,endianness:qa};}}),_m=Z({"node-modules-polyfills-commonjs:os"(e,n){re();var t=(wm(),lt(Oa));if(t&&t.default){n.exports=t.default;for(let s in t)n.exports[s]=t[s];}else t&&(n.exports=t);}}),Pm=Z({"node_modules/detect-newline/index.js"(e,n){re();var t=s=>{if(typeof s!="string")throw new TypeError("Expected a string");let a=s.match(/(?:\r?\n)/g)||[];if(a.length===0)return;let r=a.filter(i=>i===`\r -`).length,u=a.length-r;return r>u?`\r -`:` -`};n.exports=t,n.exports.graceful=s=>typeof s=="string"&&t(s)||` -`;}}),km=Z({"node_modules/jest-docblock/build/index.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0}),e.extract=p,e.parse=h,e.parseWithComments=w,e.print=T,e.strip=f;function n(){let S=_m();return n=function(){return S},S}function t(){let S=s(Pm());return t=function(){return S},S}function s(S){return S&&S.__esModule?S:{default:S}}var a=/\*\/$/,r=/^\/\*\*/,u=/^\s*(\/\*\*?(.|\r?\n)*?\*\/)/,i=/(^|\s+)\/\/([^\r\n]*)/g,o=/^(\r?\n)+/,c=/(?:^|\r?\n) *(@[^\r\n]*?) *\r?\n *(?![^@\r\n]*\/\/[^]*)([^@\r\n\s][^@\r\n]+?) *\r?\n/g,y=/(?:^|\r?\n) *@(\S+) *([^\r\n]*)/g,m=/(\r?\n|^) *\* ?/g,d=[];function p(S){let B=S.match(u);return B?B[0].trimLeft():""}function f(S){let B=S.match(u);return B&&B[0]?S.substring(B[0].length):S}function h(S){return w(S).pragmas}function w(S){let B=(0, t().default)(S)||n().EOL;S=S.replace(r,"").replace(a,"").replace(m,"$1");let I="";for(;I!==S;)I=S,S=S.replace(c,"".concat(B,"$1 $2").concat(B));S=S.replace(o,"").trimRight();let k=Object.create(null),P=S.replace(y,"").replace(o,"").trimRight(),C;for(;C=y.exec(S);){let D=C[2].replace(i,"");typeof k[C[1]]=="string"||Array.isArray(k[C[1]])?k[C[1]]=d.concat(k[C[1]],D):k[C[1]]=D;}return {comments:P,pragmas:k}}function T(S){let{comments:B="",pragmas:I={}}=S,k=(0, t().default)(B)||n().EOL,P="/**",C=" *",D=" */",g=Object.keys(I),F=g.map(E=>A(E,I[E])).reduce((E,v)=>E.concat(v),[]).map(E=>C+" "+E+k).join("");if(!B){if(g.length===0)return "";if(g.length===1&&!Array.isArray(I[g[0]])){let E=I[g[0]];return "".concat(P," ").concat(A(g[0],E)[0]).concat(D)}}let l=B.split(k).map(E=>"".concat(C," ").concat(E)).join(k)+k;return P+k+(B?l:"")+(B&&g.length?C+k:"")+F+D}function A(S,B){return d.concat(B).map(I=>"@".concat(S," ").concat(I).trim())}}}),Im=Z({"src/language-js/utils/get-shebang.js"(e,n){re();function t(s){if(!s.startsWith("#!"))return "";let a=s.indexOf(` -`);return a===-1?s:s.slice(0,a)}n.exports=t;}}),Ka=Z({"src/language-js/pragma.js"(e,n){re();var{parseWithComments:t,strip:s,extract:a,print:r}=km(),{normalizeEndOfLine:u}=kn(),i=Im();function o(m){let d=i(m);d&&(m=m.slice(d.length+1));let p=a(m),{pragmas:f,comments:h}=t(p);return {shebang:d,text:m,pragmas:f,comments:h}}function c(m){let d=Object.keys(o(m).pragmas);return d.includes("prettier")||d.includes("format")}function y(m){let{shebang:d,text:p,pragmas:f,comments:h}=o(m),w=s(p),T=r({pragmas:Object.assign({format:""},f),comments:h.trimStart()});return (d?"".concat(d,` -`):"")+u(T)+(w.startsWith(` -`)?` -`:` - -`)+w}n.exports={hasPragma:c,insertPragma:y};}}),Ya=Z({"src/language-js/comments.js"(e,n){re();var{getLast:t,hasNewline:s,getNextNonSpaceNonCommentCharacterIndexWithStartIndex:a,getNextNonSpaceNonCommentCharacter:r,hasNewlineInRange:u,addLeadingComment:i,addTrailingComment:o,addDanglingComment:c,getNextNonSpaceNonCommentCharacterIndex:y,isNonEmptyArray:m}=Ue(),{getFunctionParameters:d,isPrettierIgnoreComment:p,isJsxNode:f,hasFlowShorthandAnnotationComment:h,hasFlowAnnotationComment:w,hasIgnoreComment:T,isCallLikeExpression:A,getCallArguments:S,isCallExpression:B,isMemberExpression:I,isObjectProperty:k,isLineComment:P,getComments:C,CommentCheckFlags:D,markerForIfWithoutBlockAndSameLineComment:g}=Ke(),{locStart:F,locEnd:l}=st(),E=Pt();function v(me){return [ve,De,q,j,$,V,Q,Ae,U,ge,Ne,ke,te,ie,G].some(_=>_(me))}function N(me){return [M,De,Y,Ne,j,$,V,Q,ie,z,le,ge,de,G,he].some(_=>_(me))}function x(me){return [ve,j,$,H,ue,te,ge,X,W,K,G,ae].some(_=>_(me))}function b(me,_){let J=(me.body||me.properties).find(ne=>{let{type:Ee}=ne;return Ee!=="EmptyStatement"});J?i(J,_):c(me,_);}function L(me,_){me.type==="BlockStatement"?b(me,_):i(me,_);}function M(me){let{comment:_,followingNode:J}=me;return J&&Ie(_)?(i(J,_),!0):!1}function j(me){let{comment:_,precedingNode:J,enclosingNode:ne,followingNode:Ee,text:We}=me;if((ne==null?void 0:ne.type)!=="IfStatement"||!Ee)return !1;if(r(We,_,l)===")")return o(J,_),!0;if(J===ne.consequent&&Ee===ne.alternate){if(J.type==="BlockStatement")o(J,_);else {let Pe=_.type==="SingleLine"||_.loc.start.line===_.loc.end.line,Se=_.loc.start.line===J.loc.start.line;Pe&&Se?c(J,_,g):c(ne,_);}return !0}return Ee.type==="BlockStatement"?(b(Ee,_),!0):Ee.type==="IfStatement"?(L(Ee.consequent,_),!0):ne.consequent===Ee?(i(Ee,_),!0):!1}function $(me){let{comment:_,precedingNode:J,enclosingNode:ne,followingNode:Ee,text:We}=me;return (ne==null?void 0:ne.type)!=="WhileStatement"||!Ee?!1:r(We,_,l)===")"?(o(J,_),!0):Ee.type==="BlockStatement"?(b(Ee,_),!0):ne.body===Ee?(i(Ee,_),!0):!1}function V(me){let{comment:_,precedingNode:J,enclosingNode:ne,followingNode:Ee}=me;return (ne==null?void 0:ne.type)!=="TryStatement"&&(ne==null?void 0:ne.type)!=="CatchClause"||!Ee?!1:ne.type==="CatchClause"&&J?(o(J,_),!0):Ee.type==="BlockStatement"?(b(Ee,_),!0):Ee.type==="TryStatement"?(L(Ee.finalizer,_),!0):Ee.type==="CatchClause"?(L(Ee.body,_),!0):!1}function q(me){let{comment:_,enclosingNode:J,followingNode:ne}=me;return I(J)&&(ne==null?void 0:ne.type)==="Identifier"?(i(J,_),!0):!1}function Y(me){let{comment:_,precedingNode:J,enclosingNode:ne,followingNode:Ee,text:We}=me,Be=J&&!u(We,l(J),F(_));return (!J||!Be)&&((ne==null?void 0:ne.type)==="ConditionalExpression"||(ne==null?void 0:ne.type)==="TSConditionalType")&&Ee?(i(Ee,_),!0):!1}function H(me){let{comment:_,precedingNode:J,enclosingNode:ne}=me;return k(ne)&&ne.shorthand&&ne.key===J&&ne.value.type==="AssignmentPattern"?(o(ne.value.left,_),!0):!1}var R=new Set(["ClassDeclaration","ClassExpression","DeclareClass","DeclareInterface","InterfaceDeclaration","TSInterfaceDeclaration"]);function Q(me){let{comment:_,precedingNode:J,enclosingNode:ne,followingNode:Ee}=me;if(R.has(ne==null?void 0:ne.type)){if(m(ne.decorators)&&!(Ee&&Ee.type==="Decorator"))return o(t(ne.decorators),_),!0;if(ne.body&&Ee===ne.body)return b(ne.body,_),!0;if(Ee){if(ne.superClass&&Ee===ne.superClass&&J&&(J===ne.id||J===ne.typeParameters))return o(J,_),!0;for(let We of ["implements","extends","mixins"])if(ne[We]&&Ee===ne[We][0])return J&&(J===ne.id||J===ne.typeParameters||J===ne.superClass)?o(J,_):c(ne,_,We),!0}}return !1}var ee=new Set(["ClassMethod","ClassProperty","PropertyDefinition","TSAbstractPropertyDefinition","TSAbstractMethodDefinition","TSDeclareMethod","MethodDefinition"]);function te(me){let{comment:_,precedingNode:J,enclosingNode:ne,text:Ee}=me;return ne&&J&&r(Ee,_,l)==="("&&(ne.type==="Property"||ne.type==="TSDeclareMethod"||ne.type==="TSAbstractMethodDefinition")&&J.type==="Identifier"&&ne.key===J&&r(Ee,J,l)!==":"||(J==null?void 0:J.type)==="Decorator"&&ee.has(ne==null?void 0:ne.type)?(o(J,_),!0):!1}var oe=new Set(["FunctionDeclaration","FunctionExpression","ClassMethod","MethodDefinition","ObjectMethod"]);function W(me){let{comment:_,precedingNode:J,enclosingNode:ne,text:Ee}=me;return r(Ee,_,l)!=="("?!1:J&&oe.has(ne==null?void 0:ne.type)?(o(J,_),!0):!1}function X(me){let{comment:_,enclosingNode:J,text:ne}=me;if((J==null?void 0:J.type)!=="ArrowFunctionExpression")return !1;let Ee=y(ne,_,l);return Ee!==!1&&ne.slice(Ee,Ee+2)==="=>"?(c(J,_),!0):!1}function ue(me){let{comment:_,enclosingNode:J,text:ne}=me;return r(ne,_,l)!==")"?!1:J&&(ye(J)&&d(J).length===0||A(J)&&S(J).length===0)?(c(J,_),!0):((J==null?void 0:J.type)==="MethodDefinition"||(J==null?void 0:J.type)==="TSAbstractMethodDefinition")&&d(J.value).length===0?(c(J.value,_),!0):!1}function De(me){let{comment:_,precedingNode:J,enclosingNode:ne,followingNode:Ee,text:We}=me;if((J==null?void 0:J.type)==="FunctionTypeParam"&&(ne==null?void 0:ne.type)==="FunctionTypeAnnotation"&&(Ee==null?void 0:Ee.type)!=="FunctionTypeParam"||((J==null?void 0:J.type)==="Identifier"||(J==null?void 0:J.type)==="AssignmentPattern")&&ne&&ye(ne)&&r(We,_,l)===")")return o(J,_),!0;if((ne==null?void 0:ne.type)==="FunctionDeclaration"&&(Ee==null?void 0:Ee.type)==="BlockStatement"){let Be=(()=>{let Pe=d(ne);if(Pe.length>0)return a(We,l(t(Pe)));let Se=a(We,l(ne.id));return Se!==!1&&a(We,Se+1)})();if(F(_)>Be)return b(Ee,_),!0}return !1}function ie(me){let{comment:_,enclosingNode:J}=me;return (J==null?void 0:J.type)==="LabeledStatement"?(i(J,_),!0):!1}function G(me){let{comment:_,enclosingNode:J}=me;return ((J==null?void 0:J.type)==="ContinueStatement"||(J==null?void 0:J.type)==="BreakStatement")&&!J.label?(o(J,_),!0):!1}function z(me){let{comment:_,precedingNode:J,enclosingNode:ne}=me;return B(ne)&&J&&ne.callee===J&&ne.arguments.length>0?(i(ne.arguments[0],_),!0):!1}function U(me){let{comment:_,precedingNode:J,enclosingNode:ne,followingNode:Ee}=me;return (ne==null?void 0:ne.type)==="UnionTypeAnnotation"||(ne==null?void 0:ne.type)==="TSUnionType"?(p(_)&&(Ee.prettierIgnore=!0,_.unignore=!0),J?(o(J,_),!0):!1):(((Ee==null?void 0:Ee.type)==="UnionTypeAnnotation"||(Ee==null?void 0:Ee.type)==="TSUnionType")&&p(_)&&(Ee.types[0].prettierIgnore=!0,_.unignore=!0),!1)}function le(me){let{comment:_,enclosingNode:J}=me;return k(J)?(i(J,_),!0):!1}function ge(me){let{comment:_,enclosingNode:J,followingNode:ne,ast:Ee,isLastComment:We}=me;return Ee&&Ee.body&&Ee.body.length===0?(We?c(Ee,_):i(Ee,_),!0):(J==null?void 0:J.type)==="Program"&&(J==null?void 0:J.body.length)===0&&!m(J.directives)?(We?c(J,_):i(J,_),!0):(ne==null?void 0:ne.type)==="Program"&&(ne==null?void 0:ne.body.length)===0&&(J==null?void 0:J.type)==="ModuleExpression"?(c(ne,_),!0):!1}function Ae(me){let{comment:_,enclosingNode:J}=me;return (J==null?void 0:J.type)==="ForInStatement"||(J==null?void 0:J.type)==="ForOfStatement"?(i(J,_),!0):!1}function Ne(me){let{comment:_,precedingNode:J,enclosingNode:ne,text:Ee}=me;if((ne==null?void 0:ne.type)==="ImportSpecifier"||(ne==null?void 0:ne.type)==="ExportSpecifier")return i(ne,_),!0;let We=(J==null?void 0:J.type)==="ImportSpecifier"&&(ne==null?void 0:ne.type)==="ImportDeclaration",Be=(J==null?void 0:J.type)==="ExportSpecifier"&&(ne==null?void 0:ne.type)==="ExportNamedDeclaration";return (We||Be)&&s(Ee,l(_))?(o(J,_),!0):!1}function ke(me){let{comment:_,enclosingNode:J}=me;return (J==null?void 0:J.type)==="AssignmentPattern"?(i(J,_),!0):!1}var ce=new Set(["VariableDeclarator","AssignmentExpression","TypeAlias","TSTypeAliasDeclaration"]),pe=new Set(["ObjectExpression","ArrayExpression","TemplateLiteral","TaggedTemplateExpression","ObjectTypeAnnotation","TSTypeLiteral"]);function de(me){let{comment:_,enclosingNode:J,followingNode:ne}=me;return ce.has(J==null?void 0:J.type)&&ne&&(pe.has(ne.type)||E(_))?(i(ne,_),!0):!1}function ae(me){let{comment:_,enclosingNode:J,followingNode:ne,text:Ee}=me;return !ne&&((J==null?void 0:J.type)==="TSMethodSignature"||(J==null?void 0:J.type)==="TSDeclareFunction"||(J==null?void 0:J.type)==="TSAbstractMethodDefinition")&&r(Ee,_,l)===";"?(o(J,_),!0):!1}function ve(me){let{comment:_,enclosingNode:J,followingNode:ne}=me;if(p(_)&&(J==null?void 0:J.type)==="TSMappedType"&&(ne==null?void 0:ne.type)==="TSTypeParameter"&&ne.constraint)return J.prettierIgnore=!0,_.unignore=!0,!0}function K(me){let{comment:_,precedingNode:J,enclosingNode:ne,followingNode:Ee}=me;return (ne==null?void 0:ne.type)!=="TSMappedType"?!1:(Ee==null?void 0:Ee.type)==="TSTypeParameter"&&Ee.name?(i(Ee.name,_),!0):(J==null?void 0:J.type)==="TSTypeParameter"&&J.constraint?(o(J.constraint,_),!0):!1}function he(me){let{comment:_,enclosingNode:J,followingNode:ne}=me;return !J||J.type!=="SwitchCase"||J.test?!1:(ne.type==="BlockStatement"&&P(_)?b(ne,_):c(J,_),!0)}function ye(me){return me.type==="ArrowFunctionExpression"||me.type==="FunctionExpression"||me.type==="FunctionDeclaration"||me.type==="ObjectMethod"||me.type==="ClassMethod"||me.type==="TSDeclareFunction"||me.type==="TSCallSignatureDeclaration"||me.type==="TSConstructSignatureDeclaration"||me.type==="TSMethodSignature"||me.type==="TSConstructorType"||me.type==="TSFunctionType"||me.type==="TSDeclareMethod"}function Ce(me,_){if((_.parser==="typescript"||_.parser==="flow"||_.parser==="acorn"||_.parser==="espree"||_.parser==="meriyah"||_.parser==="__babel_estree")&&me.type==="MethodDefinition"&&me.value&&me.value.type==="FunctionExpression"&&d(me.value).length===0&&!me.value.returnType&&!m(me.value.typeParameters)&&me.value.body)return [...me.decorators||[],me.key,me.value.body]}function Ie(me){return E(me)&&me.value[0]==="*"&&/@type\b/.test(me.value)}function Fe(me){let _=me.getValue(),J=me.getParentNode(),ne=Ee=>w(C(Ee,D.Leading))||w(C(Ee,D.Trailing));return (_&&(f(_)||h(_)||B(J)&&ne(_))||J&&(J.type==="JSXSpreadAttribute"||J.type==="JSXSpreadChild"||J.type==="UnionTypeAnnotation"||J.type==="TSUnionType"||(J.type==="ClassDeclaration"||J.type==="ClassExpression")&&J.superClass===_))&&(!T(me)||J.type==="UnionTypeAnnotation"||J.type==="TSUnionType")}n.exports={handleOwnLineComment:v,handleEndOfLineComment:N,handleRemainingComment:x,isTypeCastComment:Ie,getCommentChildNodes:Ce,willPrintOwnComments:Fe};}}),It=Z({"src/language-js/needs-parens.js"(e,n){re();var t=it(),s=On(),{getFunctionParameters:a,getLeftSidePathName:r,hasFlowShorthandAnnotationComment:u,hasNakedLeftSide:i,hasNode:o,isBitwiseOperator:c,startsWithNoLookaheadToken:y,shouldFlatten:m,getPrecedence:d,isCallExpression:p,isMemberExpression:f,isObjectProperty:h}=Ke();function w(P,C){let D=P.getParentNode();if(!D)return !1;let g=P.getName(),F=P.getNode();if(C.__isInHtmlInterpolation&&!C.bracketSpacing&&B(F)&&I(P))return !0;if(T(F))return !1;if(C.parser!=="flow"&&u(P.getValue()))return !0;if(F.type==="Identifier")return !!(F.extra&&F.extra.parenthesized&&/^PRETTIER_HTML_PLACEHOLDER_\d+_\d+_IN_JS$/.test(F.name)||g==="left"&&F.name==="async"&&D.type==="ForOfStatement"&&!D.await);switch(D.type){case"ParenthesizedExpression":return !1;case"ClassDeclaration":case"ClassExpression":{if(g==="superClass"&&(F.type==="ArrowFunctionExpression"||F.type==="AssignmentExpression"||F.type==="AwaitExpression"||F.type==="BinaryExpression"||F.type==="ConditionalExpression"||F.type==="LogicalExpression"||F.type==="NewExpression"||F.type==="ObjectExpression"||F.type==="SequenceExpression"||F.type==="TaggedTemplateExpression"||F.type==="UnaryExpression"||F.type==="UpdateExpression"||F.type==="YieldExpression"||F.type==="TSNonNullExpression"))return !0;break}case"ExportDefaultDeclaration":return k(P,C)||F.type==="SequenceExpression";case"Decorator":{if(g==="expression"){let l=!1,E=!1,v=F;for(;v;)switch(v.type){case"MemberExpression":E=!0,v=v.object;break;case"CallExpression":if(E||l)return C.parser!=="typescript";l=!0,v=v.callee;break;case"Identifier":return !1;case"TaggedTemplateExpression":return C.parser!=="typescript";default:return !0}return !0}break}case"ExpressionStatement":{if(y(F,!0))return !0;break}case"ArrowFunctionExpression":{if(g==="body"&&F.type!=="SequenceExpression"&&y(F,!1))return !0;break}}switch(F.type){case"UpdateExpression":if(D.type==="UnaryExpression")return F.prefix&&(F.operator==="++"&&D.operator==="+"||F.operator==="--"&&D.operator==="-");case"UnaryExpression":switch(D.type){case"UnaryExpression":return F.operator===D.operator&&(F.operator==="+"||F.operator==="-");case"BindExpression":return !0;case"MemberExpression":case"OptionalMemberExpression":return g==="object";case"TaggedTemplateExpression":return !0;case"NewExpression":case"CallExpression":case"OptionalCallExpression":return g==="callee";case"BinaryExpression":return g==="left"&&D.operator==="**";case"TSNonNullExpression":return !0;default:return !1}case"BinaryExpression":{if(D.type==="UpdateExpression"||F.operator==="in"&&A(P))return !0;if(F.operator==="|>"&&F.extra&&F.extra.parenthesized){let l=P.getParentNode(1);if(l.type==="BinaryExpression"&&l.operator==="|>")return !0}}case"TSTypeAssertion":case"TSAsExpression":case"LogicalExpression":switch(D.type){case"TSAsExpression":return F.type!=="TSAsExpression";case"ConditionalExpression":return F.type==="TSAsExpression";case"CallExpression":case"NewExpression":case"OptionalCallExpression":return g==="callee";case"ClassExpression":case"ClassDeclaration":return g==="superClass";case"TSTypeAssertion":case"TaggedTemplateExpression":case"UnaryExpression":case"JSXSpreadAttribute":case"SpreadElement":case"SpreadProperty":case"BindExpression":case"AwaitExpression":case"TSNonNullExpression":case"UpdateExpression":return !0;case"MemberExpression":case"OptionalMemberExpression":return g==="object";case"AssignmentExpression":case"AssignmentPattern":return g==="left"&&(F.type==="TSTypeAssertion"||F.type==="TSAsExpression");case"LogicalExpression":if(F.type==="LogicalExpression")return D.operator!==F.operator;case"BinaryExpression":{let{operator:l,type:E}=F;if(!l&&E!=="TSTypeAssertion")return !0;let v=d(l),N=D.operator,x=d(N);return x>v||g==="right"&&x===v||x===v&&!m(N,l)?!0:x<v&&l==="%"?N==="+"||N==="-":!!c(N)}default:return !1}case"SequenceExpression":switch(D.type){case"ReturnStatement":return !1;case"ForStatement":return !1;case"ExpressionStatement":return g!=="expression";case"ArrowFunctionExpression":return g!=="body";default:return !0}case"YieldExpression":if(D.type==="UnaryExpression"||D.type==="AwaitExpression"||D.type==="TSAsExpression"||D.type==="TSNonNullExpression")return !0;case"AwaitExpression":switch(D.type){case"TaggedTemplateExpression":case"UnaryExpression":case"LogicalExpression":case"SpreadElement":case"SpreadProperty":case"TSAsExpression":case"TSNonNullExpression":case"BindExpression":return !0;case"MemberExpression":case"OptionalMemberExpression":return g==="object";case"NewExpression":case"CallExpression":case"OptionalCallExpression":return g==="callee";case"ConditionalExpression":return g==="test";case"BinaryExpression":return !(!F.argument&&D.operator==="|>");default:return !1}case"TSConditionalType":if(g==="extendsType"&&D.type==="TSConditionalType")return !0;case"TSFunctionType":case"TSConstructorType":if(g==="checkType"&&D.type==="TSConditionalType")return !0;case"TSUnionType":case"TSIntersectionType":if((D.type==="TSUnionType"||D.type==="TSIntersectionType")&&D.types.length>1&&(!F.types||F.types.length>1))return !0;case"TSInferType":if(F.type==="TSInferType"&&D.type==="TSRestType")return !1;case"TSTypeOperator":return D.type==="TSArrayType"||D.type==="TSOptionalType"||D.type==="TSRestType"||g==="objectType"&&D.type==="TSIndexedAccessType"||D.type==="TSTypeOperator"||D.type==="TSTypeAnnotation"&&P.getParentNode(1).type.startsWith("TSJSDoc");case"ArrayTypeAnnotation":return D.type==="NullableTypeAnnotation";case"IntersectionTypeAnnotation":case"UnionTypeAnnotation":return D.type==="ArrayTypeAnnotation"||D.type==="NullableTypeAnnotation"||D.type==="IntersectionTypeAnnotation"||D.type==="UnionTypeAnnotation"||g==="objectType"&&(D.type==="IndexedAccessType"||D.type==="OptionalIndexedAccessType");case"NullableTypeAnnotation":return D.type==="ArrayTypeAnnotation"||g==="objectType"&&(D.type==="IndexedAccessType"||D.type==="OptionalIndexedAccessType");case"FunctionTypeAnnotation":{let l=D.type==="NullableTypeAnnotation"?P.getParentNode(1):D;return l.type==="UnionTypeAnnotation"||l.type==="IntersectionTypeAnnotation"||l.type==="ArrayTypeAnnotation"||g==="objectType"&&(l.type==="IndexedAccessType"||l.type==="OptionalIndexedAccessType")||l.type==="NullableTypeAnnotation"||D.type==="FunctionTypeParam"&&D.name===null&&a(F).some(E=>E.typeAnnotation&&E.typeAnnotation.type==="NullableTypeAnnotation")}case"OptionalIndexedAccessType":return g==="objectType"&&D.type==="IndexedAccessType";case"TypeofTypeAnnotation":return g==="objectType"&&(D.type==="IndexedAccessType"||D.type==="OptionalIndexedAccessType");case"StringLiteral":case"NumericLiteral":case"Literal":if(typeof F.value=="string"&&D.type==="ExpressionStatement"&&!D.directive){let l=P.getParentNode(1);return l.type==="Program"||l.type==="BlockStatement"}return g==="object"&&D.type==="MemberExpression"&&typeof F.value=="number";case"AssignmentExpression":{let l=P.getParentNode(1);return g==="body"&&D.type==="ArrowFunctionExpression"?!0:g==="key"&&(D.type==="ClassProperty"||D.type==="PropertyDefinition")&&D.computed||(g==="init"||g==="update")&&D.type==="ForStatement"?!1:D.type==="ExpressionStatement"?F.left.type==="ObjectPattern":!(g==="key"&&D.type==="TSPropertySignature"||D.type==="AssignmentExpression"||D.type==="SequenceExpression"&&l&&l.type==="ForStatement"&&(l.init===D||l.update===D)||g==="value"&&D.type==="Property"&&l&&l.type==="ObjectPattern"&&l.properties.includes(D)||D.type==="NGChainedExpression")}case"ConditionalExpression":switch(D.type){case"TaggedTemplateExpression":case"UnaryExpression":case"SpreadElement":case"SpreadProperty":case"BinaryExpression":case"LogicalExpression":case"NGPipeExpression":case"ExportDefaultDeclaration":case"AwaitExpression":case"JSXSpreadAttribute":case"TSTypeAssertion":case"TypeCastExpression":case"TSAsExpression":case"TSNonNullExpression":return !0;case"NewExpression":case"CallExpression":case"OptionalCallExpression":return g==="callee";case"ConditionalExpression":return g==="test";case"MemberExpression":case"OptionalMemberExpression":return g==="object";default:return !1}case"FunctionExpression":switch(D.type){case"NewExpression":case"CallExpression":case"OptionalCallExpression":return g==="callee";case"TaggedTemplateExpression":return !0;default:return !1}case"ArrowFunctionExpression":switch(D.type){case"BinaryExpression":return D.operator!=="|>"||F.extra&&F.extra.parenthesized;case"NewExpression":case"CallExpression":case"OptionalCallExpression":return g==="callee";case"MemberExpression":case"OptionalMemberExpression":return g==="object";case"TSAsExpression":case"TSNonNullExpression":case"BindExpression":case"TaggedTemplateExpression":case"UnaryExpression":case"LogicalExpression":case"AwaitExpression":case"TSTypeAssertion":return !0;case"ConditionalExpression":return g==="test";default:return !1}case"ClassExpression":if(s(F.decorators))return !0;switch(D.type){case"NewExpression":return g==="callee";default:return !1}case"OptionalMemberExpression":case"OptionalCallExpression":{let l=P.getParentNode(1);if(g==="object"&&D.type==="MemberExpression"||g==="callee"&&(D.type==="CallExpression"||D.type==="NewExpression")||D.type==="TSNonNullExpression"&&l.type==="MemberExpression"&&l.object===D)return !0}case"CallExpression":case"MemberExpression":case"TaggedTemplateExpression":case"TSNonNullExpression":if(g==="callee"&&(D.type==="BindExpression"||D.type==="NewExpression")){let l=F;for(;l;)switch(l.type){case"CallExpression":case"OptionalCallExpression":return !0;case"MemberExpression":case"OptionalMemberExpression":case"BindExpression":l=l.object;break;case"TaggedTemplateExpression":l=l.tag;break;case"TSNonNullExpression":l=l.expression;break;default:return !1}}return !1;case"BindExpression":return g==="callee"&&(D.type==="BindExpression"||D.type==="NewExpression")||g==="object"&&f(D);case"NGPipeExpression":return !(D.type==="NGRoot"||D.type==="NGMicrosyntaxExpression"||D.type==="ObjectProperty"&&!(F.extra&&F.extra.parenthesized)||D.type==="ArrayExpression"||p(D)&&D.arguments[g]===F||g==="right"&&D.type==="NGPipeExpression"||g==="property"&&D.type==="MemberExpression"||D.type==="AssignmentExpression");case"JSXFragment":case"JSXElement":return g==="callee"||g==="left"&&D.type==="BinaryExpression"&&D.operator==="<"||D.type!=="ArrayExpression"&&D.type!=="ArrowFunctionExpression"&&D.type!=="AssignmentExpression"&&D.type!=="AssignmentPattern"&&D.type!=="BinaryExpression"&&D.type!=="NewExpression"&&D.type!=="ConditionalExpression"&&D.type!=="ExpressionStatement"&&D.type!=="JsExpressionRoot"&&D.type!=="JSXAttribute"&&D.type!=="JSXElement"&&D.type!=="JSXExpressionContainer"&&D.type!=="JSXFragment"&&D.type!=="LogicalExpression"&&!p(D)&&!h(D)&&D.type!=="ReturnStatement"&&D.type!=="ThrowStatement"&&D.type!=="TypeCastExpression"&&D.type!=="VariableDeclarator"&&D.type!=="YieldExpression";case"TypeAnnotation":return g==="returnType"&&D.type==="ArrowFunctionExpression"&&S(F)}return !1}function T(P){return P.type==="BlockStatement"||P.type==="BreakStatement"||P.type==="ClassBody"||P.type==="ClassDeclaration"||P.type==="ClassMethod"||P.type==="ClassProperty"||P.type==="PropertyDefinition"||P.type==="ClassPrivateProperty"||P.type==="ContinueStatement"||P.type==="DebuggerStatement"||P.type==="DeclareClass"||P.type==="DeclareExportAllDeclaration"||P.type==="DeclareExportDeclaration"||P.type==="DeclareFunction"||P.type==="DeclareInterface"||P.type==="DeclareModule"||P.type==="DeclareModuleExports"||P.type==="DeclareVariable"||P.type==="DoWhileStatement"||P.type==="EnumDeclaration"||P.type==="ExportAllDeclaration"||P.type==="ExportDefaultDeclaration"||P.type==="ExportNamedDeclaration"||P.type==="ExpressionStatement"||P.type==="ForInStatement"||P.type==="ForOfStatement"||P.type==="ForStatement"||P.type==="FunctionDeclaration"||P.type==="IfStatement"||P.type==="ImportDeclaration"||P.type==="InterfaceDeclaration"||P.type==="LabeledStatement"||P.type==="MethodDefinition"||P.type==="ReturnStatement"||P.type==="SwitchStatement"||P.type==="ThrowStatement"||P.type==="TryStatement"||P.type==="TSDeclareFunction"||P.type==="TSEnumDeclaration"||P.type==="TSImportEqualsDeclaration"||P.type==="TSInterfaceDeclaration"||P.type==="TSModuleDeclaration"||P.type==="TSNamespaceExportDeclaration"||P.type==="TypeAlias"||P.type==="VariableDeclaration"||P.type==="WhileStatement"||P.type==="WithStatement"}function A(P){let C=0,D=P.getValue();for(;D;){let g=P.getParentNode(C++);if(g&&g.type==="ForStatement"&&g.init===D)return !0;D=g;}return !1}function S(P){return o(P,C=>C.type==="ObjectTypeAnnotation"&&o(C,D=>D.type==="FunctionTypeAnnotation"||void 0)||void 0)}function B(P){switch(P.type){case"ObjectExpression":return !0;default:return !1}}function I(P){let C=P.getValue(),D=P.getParentNode(),g=P.getName();switch(D.type){case"NGPipeExpression":if(typeof g=="number"&&D.arguments[g]===C&&D.arguments.length-1===g)return P.callParent(I);break;case"ObjectProperty":if(g==="value"){let F=P.getParentNode(1);return t(F.properties)===D}break;case"BinaryExpression":case"LogicalExpression":if(g==="right")return P.callParent(I);break;case"ConditionalExpression":if(g==="alternate")return P.callParent(I);break;case"UnaryExpression":if(D.prefix)return P.callParent(I);break}return !1}function k(P,C){let D=P.getValue(),g=P.getParentNode();return D.type==="FunctionExpression"||D.type==="ClassExpression"?g.type==="ExportDefaultDeclaration"||!w(P,C):!i(D)||g.type!=="ExportDefaultDeclaration"&&w(P,C)?!1:P.call(F=>k(F,C),...r(P,D))}n.exports=w;}}),Qa=Z({"src/language-js/print-preprocess.js"(e,n){re();function t(s,a){switch(a.parser){case"json":case"json5":case"json-stringify":case"__js_expression":case"__vue_expression":case"__vue_ts_expression":return Object.assign(Object.assign({},s),{},{type:a.parser.startsWith("__")?"JsExpressionRoot":"JsonRoot",node:s,comments:[],rootMarker:a.rootMarker});default:return s}}n.exports=t;}}),Lm=Z({"src/language-js/print/html-binding.js"(e,n){re();var{builders:{join:t,line:s,group:a,softline:r,indent:u}}=Oe();function i(c,y,m){let d=c.getValue();if(y.__onHtmlBindingRoot&&c.getName()===null&&y.__onHtmlBindingRoot(d,y),d.type==="File"){if(y.__isVueForBindingLeft)return c.call(p=>{let f=t([",",s],p.map(m,"params")),{params:h}=p.getValue();return h.length===1?f:["(",u([r,a(f)]),r,")"]},"program","body",0);if(y.__isVueBindings)return c.call(p=>t([",",s],p.map(m,"params")),"program","body",0)}}function o(c){switch(c.type){case"MemberExpression":switch(c.property.type){case"Identifier":case"NumericLiteral":case"StringLiteral":return o(c.object)}return !1;case"Identifier":return !0;default:return !1}}n.exports={isVueEventBindingExpression:o,printHtmlBinding:i};}}),$n=Z({"src/language-js/print/binaryish.js"(e,n){re();var{printComments:t}=et(),{getLast:s}=Ue(),{builders:{join:a,line:r,softline:u,group:i,indent:o,align:c,ifBreak:y,indentIfBreak:m},utils:{cleanDoc:d,getDocParts:p,isConcat:f}}=Oe(),{hasLeadingOwnLineComment:h,isBinaryish:w,isJsxNode:T,shouldFlatten:A,hasComment:S,CommentCheckFlags:B,isCallExpression:I,isMemberExpression:k,isObjectProperty:P,isEnabledHackPipeline:C}=Ke(),D=0;function g(E,v,N){let x=E.getValue(),b=E.getParentNode(),L=E.getParentNode(1),M=x!==b.body&&(b.type==="IfStatement"||b.type==="WhileStatement"||b.type==="SwitchStatement"||b.type==="DoWhileStatement"),j=C(v)&&x.operator==="|>",$=F(E,N,v,!1,M);if(M)return $;if(j)return i($);if(I(b)&&b.callee===x||b.type==="UnaryExpression"||k(b)&&!b.computed)return i([o([u,...$]),u]);let V=b.type==="ReturnStatement"||b.type==="ThrowStatement"||b.type==="JSXExpressionContainer"&&L.type==="JSXAttribute"||x.operator!=="|"&&b.type==="JsExpressionRoot"||x.type!=="NGPipeExpression"&&(b.type==="NGRoot"&&v.parser==="__ng_binding"||b.type==="NGMicrosyntaxExpression"&&L.type==="NGMicrosyntax"&&L.body.length===1)||x===b.body&&b.type==="ArrowFunctionExpression"||x!==b.body&&b.type==="ForStatement"||b.type==="ConditionalExpression"&&L.type!=="ReturnStatement"&&L.type!=="ThrowStatement"&&!I(L)||b.type==="TemplateLiteral",q=b.type==="AssignmentExpression"||b.type==="VariableDeclarator"||b.type==="ClassProperty"||b.type==="PropertyDefinition"||b.type==="TSAbstractPropertyDefinition"||b.type==="ClassPrivateProperty"||P(b),Y=w(x.left)&&A(x.operator,x.left.operator);if(V||l(x)&&!Y||!l(x)&&q)return i($);if($.length===0)return "";let H=T(x.right),R=$.findIndex(X=>typeof X!="string"&&!Array.isArray(X)&&X.type==="group"),Q=$.slice(0,R===-1?1:R+1),ee=$.slice(Q.length,H?-1:void 0),te=Symbol("logicalChain-"+ ++D),oe=i([...Q,o(ee)],{id:te});if(!H)return oe;let W=s($);return i([oe,m(W,{groupId:te})])}function F(E,v,N,x,b){let L=E.getValue();if(!w(L))return [i(v())];let M=[];A(L.operator,L.left.operator)?M=E.call(ee=>F(ee,v,N,!0,b),"left"):M.push(i(v("left")));let j=l(L),$=(L.operator==="|>"||L.type==="NGPipeExpression"||L.operator==="|"&&N.parser==="__vue_expression")&&!h(N.originalText,L.right),V=L.type==="NGPipeExpression"?"|":L.operator,q=L.type==="NGPipeExpression"&&L.arguments.length>0?i(o([u,": ",a([u,":",y(" ")],E.map(v,"arguments").map(ee=>c(2,i(ee))))])):"",Y;if(j)Y=[V," ",v("right"),q];else {let te=C(N)&&V==="|>"?E.call(oe=>F(oe,v,N,!0,b),"right"):v("right");Y=[$?r:"",V,$?" ":r,te,q];}let H=E.getParentNode(),R=S(L.left,B.Trailing|B.Line),Q=R||!(b&&L.type==="LogicalExpression")&&H.type!==L.type&&L.left.type!==L.type&&L.right.type!==L.type;if(M.push($?"":" ",Q?i(Y,{shouldBreak:R}):Y),x&&S(L)){let ee=d(t(E,M,N));return f(ee)||ee.type==="fill"?p(ee):[ee]}return M}function l(E){return E.type!=="LogicalExpression"?!1:!!(E.right.type==="ObjectExpression"&&E.right.properties.length>0||E.right.type==="ArrayExpression"&&E.right.elements.length>0||T(E.right))}n.exports={printBinaryishExpression:g,shouldInlineLogicalExpression:l};}}),jm=Z({"src/language-js/print/angular.js"(e,n){re();var{builders:{join:t,line:s,group:a}}=Oe(),{hasNode:r,hasComment:u,getComments:i}=Ke(),{printBinaryishExpression:o}=$n();function c(d,p,f){let h=d.getValue();if(!!h.type.startsWith("NG"))switch(h.type){case"NGRoot":return [f("node"),u(h.node)?" //"+i(h.node)[0].value.trimEnd():""];case"NGPipeExpression":return o(d,p,f);case"NGChainedExpression":return a(t([";",s],d.map(w=>m(w)?f():["(",f(),")"],"expressions")));case"NGEmptyExpression":return "";case"NGQuotedExpression":return [h.prefix,": ",h.value.trim()];case"NGMicrosyntax":return d.map((w,T)=>[T===0?"":y(w.getValue(),T,h)?" ":[";",s],f()],"body");case"NGMicrosyntaxKey":return /^[$_a-z][\w$]*(?:-[$_a-z][\w$])*$/i.test(h.name)?h.name:JSON.stringify(h.name);case"NGMicrosyntaxExpression":return [f("expression"),h.alias===null?"":[" as ",f("alias")]];case"NGMicrosyntaxKeyedExpression":{let w=d.getName(),T=d.getParentNode(),A=y(h,w,T)||(w===1&&(h.key.name==="then"||h.key.name==="else")||w===2&&h.key.name==="else"&&T.body[w-1].type==="NGMicrosyntaxKeyedExpression"&&T.body[w-1].key.name==="then")&&T.body[0].type==="NGMicrosyntaxExpression";return [f("key"),A?" ":": ",f("expression")]}case"NGMicrosyntaxLet":return ["let ",f("key"),h.value===null?"":[" = ",f("value")]];case"NGMicrosyntaxAs":return [f("key")," as ",f("alias")];default:throw new Error("Unknown Angular node type: ".concat(JSON.stringify(h.type),"."))}}function y(d,p,f){return d.type==="NGMicrosyntaxKeyedExpression"&&d.key.name==="of"&&p===1&&f.body[0].type==="NGMicrosyntaxLet"&&f.body[0].value===null}function m(d){return r(d.getValue(),p=>{switch(p.type){case void 0:return !1;case"CallExpression":case"OptionalCallExpression":case"AssignmentExpression":return !0}})}n.exports={printAngular:c};}}),Om=Z({"src/language-js/print/jsx.js"(e,n){re();var{printComments:t,printDanglingComments:s}=et(),{builders:{line:a,hardline:r,softline:u,group:i,indent:o,conditionalGroup:c,fill:y,ifBreak:m,lineSuffixBoundary:d,join:p},utils:{willBreak:f}}=Oe(),{getLast:h,getPreferredQuote:w}=Ue(),{isJsxNode:T,rawText:A,isLiteral:S,isCallExpression:B,isStringLiteral:I,isBinaryish:k,hasComment:P,CommentCheckFlags:C,hasNodeIgnoreComment:D}=Ke(),g=It(),{willPrintOwnComments:F}=Ya(),l=ie=>ie===""||ie===a||ie===r||ie===u;function E(ie,G,z){let U=ie.getValue();if(U.type==="JSXElement"&&W(U))return [z("openingElement"),z("closingElement")];let le=U.type==="JSXElement"?z("openingElement"):z("openingFragment"),ge=U.type==="JSXElement"?z("closingElement"):z("closingFragment");if(U.children.length===1&&U.children[0].type==="JSXExpressionContainer"&&(U.children[0].expression.type==="TemplateLiteral"||U.children[0].expression.type==="TaggedTemplateExpression"))return [le,...ie.map(z,"children"),ge];U.children=U.children.map(Fe=>ue(Fe)?{type:"JSXText",value:" ",raw:" "}:Fe);let Ae=U.children.some(T),Ne=U.children.filter(Fe=>Fe.type==="JSXExpressionContainer").length>1,ke=U.type==="JSXElement"&&U.openingElement.attributes.length>1,ce=f(le)||Ae||ke||Ne,pe=ie.getParentNode().rootMarker==="mdx",de=G.singleQuote?"{' '}":'{" "}',ae=pe?" ":m([de,u]," "),ve=U.openingElement&&U.openingElement.name&&U.openingElement.name.name==="fbt",K=v(ie,G,z,ae,ve),he=U.children.some(Fe=>X(Fe));for(let Fe=K.length-2;Fe>=0;Fe--){let me=K[Fe]===""&&K[Fe+1]==="",_=K[Fe]===r&&K[Fe+1]===""&&K[Fe+2]===r,J=(K[Fe]===u||K[Fe]===r)&&K[Fe+1]===""&&K[Fe+2]===ae,ne=K[Fe]===ae&&K[Fe+1]===""&&(K[Fe+2]===u||K[Fe+2]===r),Ee=K[Fe]===ae&&K[Fe+1]===""&&K[Fe+2]===ae,We=K[Fe]===u&&K[Fe+1]===""&&K[Fe+2]===r||K[Fe]===r&&K[Fe+1]===""&&K[Fe+2]===u;_&&he||me||J||Ee||We?K.splice(Fe,2):ne&&K.splice(Fe+1,2);}for(;K.length>0&&l(h(K));)K.pop();for(;K.length>1&&l(K[0])&&l(K[1]);)K.shift(),K.shift();let ye=[];for(let[Fe,me]of K.entries()){if(me===ae){if(Fe===1&&K[Fe-1]===""){if(K.length===2){ye.push(de);continue}ye.push([de,r]);continue}else if(Fe===K.length-1){ye.push(de);continue}else if(K[Fe-1]===""&&K[Fe-2]===r){ye.push(de);continue}}ye.push(me),f(me)&&(ce=!0);}let Ce=he?y(ye):i(ye,{shouldBreak:!0});if(pe)return Ce;let Ie=i([le,o([r,Ce]),r,ge]);return ce?Ie:c([i([le,...K,ge]),Ie])}function v(ie,G,z,U,le){let ge=[];return ie.each((Ae,Ne,ke)=>{let ce=Ae.getValue();if(S(ce)){let pe=A(ce);if(X(ce)){let de=pe.split(ee);if(de[0]===""){if(ge.push(""),de.shift(),/\n/.test(de[0])){let ve=ke[Ne+1];ge.push(x(le,de[1],ce,ve));}else ge.push(U);de.shift();}let ae;if(h(de)===""&&(de.pop(),ae=de.pop()),de.length===0)return;for(let[ve,K]of de.entries())ve%2===1?ge.push(a):ge.push(K);if(ae!==void 0)if(/\n/.test(ae)){let ve=ke[Ne+1];ge.push(x(le,h(ge),ce,ve));}else ge.push(U);else {let ve=ke[Ne+1];ge.push(N(le,h(ge),ce,ve));}}else /\n/.test(pe)?pe.match(/\n/g).length>1&&ge.push("",r):ge.push("",U);}else {let pe=z();ge.push(pe);let de=ke[Ne+1];if(de&&X(de)){let ve=oe(A(de)).split(ee)[0];ge.push(N(le,ve,ce,de));}else ge.push(r);}},"children"),ge}function N(ie,G,z,U){return ie?"":z.type==="JSXElement"&&!z.closingElement||U&&U.type==="JSXElement"&&!U.closingElement?G.length===1?u:r:u}function x(ie,G,z,U){return ie?r:G.length===1?z.type==="JSXElement"&&!z.closingElement||U&&U.type==="JSXElement"&&!U.closingElement?r:u:r}function b(ie,G,z){let U=ie.getParentNode();if(!U||{ArrayExpression:!0,JSXAttribute:!0,JSXElement:!0,JSXExpressionContainer:!0,JSXFragment:!0,ExpressionStatement:!0,CallExpression:!0,OptionalCallExpression:!0,ConditionalExpression:!0,JsExpressionRoot:!0}[U.type])return G;let ge=ie.match(void 0,Ne=>Ne.type==="ArrowFunctionExpression",B,Ne=>Ne.type==="JSXExpressionContainer"),Ae=g(ie,z);return i([Ae?"":m("("),o([u,G]),u,Ae?"":m(")")],{shouldBreak:ge})}function L(ie,G,z){let U=ie.getValue(),le=[];if(le.push(z("name")),U.value){let ge;if(I(U.value)){let Ne=A(U.value).slice(1,-1).replace(/'/g,"'").replace(/"/g,'"'),{escaped:ke,quote:ce,regex:pe}=w(Ne,G.jsxSingleQuote?"'":'"');Ne=Ne.replace(pe,ke),ge=[ce,Ne,ce];}else ge=z("value");le.push("=",ge);}return le}function M(ie,G,z){let U=ie.getValue(),le=(ge,Ae)=>ge.type==="JSXEmptyExpression"||!P(ge)&&(ge.type==="ArrayExpression"||ge.type==="ObjectExpression"||ge.type==="ArrowFunctionExpression"||ge.type==="AwaitExpression"&&(le(ge.argument,ge)||ge.argument.type==="JSXElement")||B(ge)||ge.type==="FunctionExpression"||ge.type==="TemplateLiteral"||ge.type==="TaggedTemplateExpression"||ge.type==="DoExpression"||T(Ae)&&(ge.type==="ConditionalExpression"||k(ge)));return le(U.expression,ie.getParentNode(0))?i(["{",z("expression"),d,"}"]):i(["{",o([u,z("expression")]),u,d,"}"])}function j(ie,G,z){let U=ie.getValue(),le=U.name&&P(U.name)||U.typeParameters&&P(U.typeParameters);if(U.selfClosing&&U.attributes.length===0&&!le)return ["<",z("name"),z("typeParameters")," />"];if(U.attributes&&U.attributes.length===1&&U.attributes[0].value&&I(U.attributes[0].value)&&!U.attributes[0].value.value.includes(` -`)&&!le&&!P(U.attributes[0]))return i(["<",z("name"),z("typeParameters")," ",...ie.map(z,"attributes"),U.selfClosing?" />":">"]);let ge=U.attributes.length>0&&P(h(U.attributes),C.Trailing),Ae=U.attributes.length===0&&!le||(G.bracketSameLine||G.jsxBracketSameLine)&&(!le||U.attributes.length>0)&&!ge,Ne=U.attributes&&U.attributes.some(ce=>ce.value&&I(ce.value)&&ce.value.value.includes(` -`)),ke=G.singleAttributePerLine&&U.attributes.length>1?r:a;return i(["<",z("name"),z("typeParameters"),o(ie.map(()=>[ke,z()],"attributes")),U.selfClosing?a:Ae?">":u,U.selfClosing?"/>":Ae?"":">"],{shouldBreak:Ne})}function $(ie,G,z){let U=ie.getValue(),le=[];le.push("</");let ge=z("name");return P(U.name,C.Leading|C.Line)?le.push(o([r,ge]),r):P(U.name,C.Leading|C.Block)?le.push(" ",ge):le.push(ge),le.push(">"),le}function V(ie,G){let z=ie.getValue(),U=P(z),le=P(z,C.Line),ge=z.type==="JSXOpeningFragment";return [ge?"<":"</",o([le?r:U&&!ge?" ":"",s(ie,G,!0)]),le?r:"",">"]}function q(ie,G,z){let U=t(ie,E(ie,G,z),G);return b(ie,U,G)}function Y(ie,G){let z=ie.getValue(),U=P(z,C.Line);return [s(ie,G,!U),U?r:""]}function H(ie,G,z){let U=ie.getValue();return ["{",ie.call(le=>{let ge=["...",z()],Ae=le.getValue();return !P(Ae)||!F(le)?ge:[o([u,t(le,ge,G)]),u]},U.type==="JSXSpreadAttribute"?"argument":"expression"),"}"]}function R(ie,G,z){let U=ie.getValue();if(!!U.type.startsWith("JSX"))switch(U.type){case"JSXAttribute":return L(ie,G,z);case"JSXIdentifier":return String(U.name);case"JSXNamespacedName":return p(":",[z("namespace"),z("name")]);case"JSXMemberExpression":return p(".",[z("object"),z("property")]);case"JSXSpreadAttribute":return H(ie,G,z);case"JSXSpreadChild":return H(ie,G,z);case"JSXExpressionContainer":return M(ie,G,z);case"JSXFragment":case"JSXElement":return q(ie,G,z);case"JSXOpeningElement":return j(ie,G,z);case"JSXClosingElement":return $(ie,G,z);case"JSXOpeningFragment":case"JSXClosingFragment":return V(ie,G);case"JSXEmptyExpression":return Y(ie,G);case"JSXText":throw new Error("JSXTest should be handled by JSXElement");default:throw new Error("Unknown JSX node type: ".concat(JSON.stringify(U.type),"."))}}var Q=` -\r `,ee=new RegExp("(["+Q+"]+)"),te=new RegExp("[^"+Q+"]"),oe=ie=>ie.replace(new RegExp("(?:^"+ee.source+"|"+ee.source+"$)"),"");function W(ie){if(ie.children.length===0)return !0;if(ie.children.length>1)return !1;let G=ie.children[0];return S(G)&&!X(G)}function X(ie){return S(ie)&&(te.test(A(ie))||!/\n/.test(A(ie)))}function ue(ie){return ie.type==="JSXExpressionContainer"&&S(ie.expression)&&ie.expression.value===" "&&!P(ie.expression)}function De(ie){let G=ie.getValue(),z=ie.getParentNode();if(!z||!G||!T(G)||!T(z))return !1;let U=z.children.indexOf(G),le=null;for(let ge=U;ge>0;ge--){let Ae=z.children[ge-1];if(!(Ae.type==="JSXText"&&!X(Ae))){le=Ae;break}}return le&&le.type==="JSXExpressionContainer"&&le.expression.type==="JSXEmptyExpression"&&D(le.expression)}n.exports={hasJsxIgnoreComment:De,printJsx:R};}}),ct=Z({"src/language-js/print/misc.js"(e,n){re();var{isNonEmptyArray:t}=Ue(),{builders:{indent:s,join:a,line:r}}=Oe(),{isFlowAnnotationComment:u}=Ke();function i(h){let w=h.getValue();return !w.optional||w.type==="Identifier"&&w===h.getParentNode().key?"":w.type==="OptionalCallExpression"||w.type==="OptionalMemberExpression"&&w.computed?"?.":"?"}function o(h){return h.getValue().definite||h.match(void 0,(w,T)=>T==="id"&&w.type==="VariableDeclarator"&&w.definite)?"!":""}function c(h,w,T){let A=h.getValue();return A.typeArguments?T("typeArguments"):A.typeParameters?T("typeParameters"):""}function y(h,w,T){let A=h.getValue();if(!A.typeAnnotation)return "";let S=h.getParentNode(),B=S.type==="DeclareFunction"&&S.id===A;return u(w.originalText,A.typeAnnotation)?[" /*: ",T("typeAnnotation")," */"]:[B?"":": ",T("typeAnnotation")]}function m(h,w,T){return ["::",T("callee")]}function d(h,w,T){let A=h.getValue();return t(A.modifiers)?[a(" ",h.map(T,"modifiers"))," "]:""}function p(h,w,T){return h.type==="EmptyStatement"?";":h.type==="BlockStatement"||T?[" ",w]:s([r,w])}function f(h,w,T){return ["...",T("argument"),y(h,w,T)]}n.exports={printOptionalToken:i,printDefiniteToken:o,printFunctionTypeParameters:c,printBindExpressionCallee:m,printTypeScriptModifiers:d,printTypeAnnotation:y,printRestSpread:f,adjustClause:p};}}),zt=Z({"src/language-js/print/array.js"(e,n){re();var{printDanglingComments:t}=et(),{builders:{line:s,softline:a,hardline:r,group:u,indent:i,ifBreak:o,fill:c}}=Oe(),{getLast:y,hasNewline:m}=Ue(),{shouldPrintComma:d,hasComment:p,CommentCheckFlags:f,isNextLineEmpty:h,isNumericLiteral:w,isSignedNumericLiteral:T}=Ke(),{locStart:A}=st(),{printOptionalToken:S,printTypeAnnotation:B}=ct();function I(D,g,F){let l=D.getValue(),E=[],v=l.type==="TupleExpression"?"#[":"[",N="]";if(l.elements.length===0)p(l,f.Dangling)?E.push(u([v,t(D,g),a,N])):E.push(v,N);else {let x=y(l.elements),b=!(x&&x.type==="RestElement"),L=x===null,M=Symbol("array"),j=!g.__inJestEach&&l.elements.length>1&&l.elements.every((q,Y,H)=>{let R=q&&q.type;if(R!=="ArrayExpression"&&R!=="ObjectExpression")return !1;let Q=H[Y+1];if(Q&&R!==Q.type)return !1;let ee=R==="ArrayExpression"?"elements":"properties";return q[ee]&&q[ee].length>1}),$=k(l,g),V=b?L?",":d(g)?$?o(",","",{groupId:M}):o(","):"":"";E.push(u([v,i([a,$?C(D,g,F,V):[P(D,g,"elements",F),V],t(D,g,!0)]),a,N],{shouldBreak:j,id:M}));}return E.push(S(D),B(D,g,F)),E}function k(D,g){return D.elements.length>1&&D.elements.every(F=>F&&(w(F)||T(F)&&!p(F.argument))&&!p(F,f.Trailing|f.Line,l=>!m(g.originalText,A(l),{backwards:!0})))}function P(D,g,F,l){let E=[],v=[];return D.each(N=>{E.push(v,u(l())),v=[",",s],N.getValue()&&h(N.getValue(),g)&&v.push(a);},F),E}function C(D,g,F,l){let E=[];return D.each((v,N,x)=>{let b=N===x.length-1;E.push([F(),b?l:","]),b||E.push(h(v.getValue(),g)?[r,r]:p(x[N+1],f.Leading|f.Line)?r:s);},"elements"),c(E)}n.exports={printArray:I,printArrayItems:P,isConciselyPrintedArray:k};}}),Za=Z({"src/language-js/print/call-arguments.js"(e,n){re();var{printDanglingComments:t}=et(),{getLast:s,getPenultimate:a}=Ue(),{getFunctionParameters:r,hasComment:u,CommentCheckFlags:i,isFunctionCompositionArgs:o,isJsxNode:c,isLongCurriedCallExpression:y,shouldPrintComma:m,getCallArguments:d,iterateCallArgumentsPath:p,isNextLineEmpty:f,isCallExpression:h,isStringLiteral:w,isObjectProperty:T}=Ke(),{builders:{line:A,hardline:S,softline:B,group:I,indent:k,conditionalGroup:P,ifBreak:C,breakParent:D},utils:{willBreak:g}}=Oe(),{ArgExpansionBailout:F}=Jt(),{isConciselyPrintedArray:l}=zt();function E(j,$,V){let q=j.getValue(),Y=q.type==="ImportExpression",H=d(q);if(H.length===0)return ["(",t(j,$,!0),")"];if(b(H))return ["(",V(["arguments",0]),", ",V(["arguments",1]),")"];let R=!1,Q=!1,ee=H.length-1,te=[];p(j,(ie,G)=>{let z=ie.getNode(),U=[V()];G===ee||(f(z,$)?(G===0&&(Q=!0),R=!0,U.push(",",S,S)):U.push(",",A)),te.push(U);});let oe=!(Y||q.callee&&q.callee.type==="Import")&&m($,"all")?",":"";function W(){return I(["(",k([A,...te]),oe,A,")"],{shouldBreak:!0})}if(R||j.getParentNode().type!=="Decorator"&&o(H))return W();let X=x(H),ue=N(H,$);if(X||ue){if(X?te.slice(1).some(g):te.slice(0,-1).some(g))return W();let ie=[];try{j.try(()=>{p(j,(G,z)=>{X&&z===0&&(ie=[[V([],{expandFirstArg:!0}),te.length>1?",":"",Q?S:A,Q?S:""],...te.slice(1)]),ue&&z===ee&&(ie=[...te.slice(0,-1),V([],{expandLastArg:!0})]);});});}catch(G){if(G instanceof F)return W();throw G}return [te.some(g)?D:"",P([["(",...ie,")"],X?["(",I(ie[0],{shouldBreak:!0}),...ie.slice(1),")"]:["(",...te.slice(0,-1),I(s(ie),{shouldBreak:!0}),")"],W()])]}let De=["(",k([B,...te]),C(oe),B,")"];return y(j)?De:I(De,{shouldBreak:te.some(g)||R})}function v(j){let $=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return j.type==="ObjectExpression"&&(j.properties.length>0||u(j))||j.type==="ArrayExpression"&&(j.elements.length>0||u(j))||j.type==="TSTypeAssertion"&&v(j.expression)||j.type==="TSAsExpression"&&v(j.expression)||j.type==="FunctionExpression"||j.type==="ArrowFunctionExpression"&&(!j.returnType||!j.returnType.typeAnnotation||j.returnType.typeAnnotation.type!=="TSTypeReference"||L(j.body))&&(j.body.type==="BlockStatement"||j.body.type==="ArrowFunctionExpression"&&v(j.body,!0)||j.body.type==="ObjectExpression"||j.body.type==="ArrayExpression"||!$&&(h(j.body)||j.body.type==="ConditionalExpression")||c(j.body))||j.type==="DoExpression"||j.type==="ModuleExpression"}function N(j,$){let V=s(j),q=a(j);return !u(V,i.Leading)&&!u(V,i.Trailing)&&v(V)&&(!q||q.type!==V.type)&&(j.length!==2||q.type!=="ArrowFunctionExpression"||V.type!=="ArrayExpression")&&!(j.length>1&&V.type==="ArrayExpression"&&l(V,$))}function x(j){if(j.length!==2)return !1;let[$,V]=j;return $.type==="ModuleExpression"&&M(V)?!0:!u($)&&($.type==="FunctionExpression"||$.type==="ArrowFunctionExpression"&&$.body.type==="BlockStatement")&&V.type!=="FunctionExpression"&&V.type!=="ArrowFunctionExpression"&&V.type!=="ConditionalExpression"&&!v(V)}function b(j){return j.length===2&&j[0].type==="ArrowFunctionExpression"&&r(j[0]).length===0&&j[0].body.type==="BlockStatement"&&j[1].type==="ArrayExpression"&&!j.some($=>u($))}function L(j){return j.type==="BlockStatement"&&(j.body.some($=>$.type!=="EmptyStatement")||u(j,i.Dangling))}function M(j){return j.type==="ObjectExpression"&&j.properties.length===1&&T(j.properties[0])&&j.properties[0].key.type==="Identifier"&&j.properties[0].key.name==="type"&&w(j.properties[0].value)&&j.properties[0].value.value==="module"}n.exports=E;}}),eo=Z({"src/language-js/print/member.js"(e,n){re();var{builders:{softline:t,group:s,indent:a,label:r}}=Oe(),{isNumericLiteral:u,isMemberExpression:i,isCallExpression:o}=Ke(),{printOptionalToken:c}=ct();function y(d,p,f){let h=d.getValue(),w=d.getParentNode(),T,A=0;do T=d.getParentNode(A),A++;while(T&&(i(T)||T.type==="TSNonNullExpression"));let S=f("object"),B=m(d,p,f),I=T&&(T.type==="NewExpression"||T.type==="BindExpression"||T.type==="AssignmentExpression"&&T.left.type!=="Identifier")||h.computed||h.object.type==="Identifier"&&h.property.type==="Identifier"&&!i(w)||(w.type==="AssignmentExpression"||w.type==="VariableDeclarator")&&(o(h.object)&&h.object.arguments.length>0||h.object.type==="TSNonNullExpression"&&o(h.object.expression)&&h.object.expression.arguments.length>0||S.label==="member-chain");return r(S.label==="member-chain"?"member-chain":"member",[S,I?B:s(a([t,B]))])}function m(d,p,f){let h=f("property"),w=d.getValue(),T=c(d);return w.computed?!w.property||u(w.property)?[T,"[",h,"]"]:s([T,"[",a([t,h]),t,"]"]):[T,".",h]}n.exports={printMemberExpression:y,printMemberLookup:m};}}),qm=Z({"src/language-js/print/member-chain.js"(e,n){re();var{printComments:t}=et(),{getLast:s,isNextLineEmptyAfterIndex:a,getNextNonSpaceNonCommentCharacterIndex:r}=Ue(),u=It(),{isCallExpression:i,isMemberExpression:o,isFunctionOrArrowExpression:c,isLongCurriedCallExpression:y,isMemberish:m,isNumericLiteral:d,isSimpleCallArgument:p,hasComment:f,CommentCheckFlags:h,isNextLineEmpty:w}=Ke(),{locEnd:T}=st(),{builders:{join:A,hardline:S,group:B,indent:I,conditionalGroup:k,breakParent:P,label:C},utils:{willBreak:D}}=Oe(),g=Za(),{printMemberLookup:F}=eo(),{printOptionalToken:l,printFunctionTypeParameters:E,printBindExpressionCallee:v}=ct();function N(x,b,L){let M=x.getParentNode(),j=!M||M.type==="ExpressionStatement",$=[];function V(de){let{originalText:ae}=b,ve=r(ae,de,T);return ae.charAt(ve)===")"?ve!==!1&&a(ae,ve+1):w(de,b)}function q(de){let ae=de.getValue();i(ae)&&(m(ae.callee)||i(ae.callee))?($.unshift({node:ae,printed:[t(de,[l(de),E(de,b,L),g(de,b,L)],b),V(ae)?S:""]}),de.call(ve=>q(ve),"callee")):m(ae)?($.unshift({node:ae,needsParens:u(de,b),printed:t(de,o(ae)?F(de,b,L):v(de,b,L),b)}),de.call(ve=>q(ve),"object")):ae.type==="TSNonNullExpression"?($.unshift({node:ae,printed:t(de,"!",b)}),de.call(ve=>q(ve),"expression")):$.unshift({node:ae,printed:L()});}let Y=x.getValue();$.unshift({node:Y,printed:[l(x),E(x,b,L),g(x,b,L)]}),Y.callee&&x.call(de=>q(de),"callee");let H=[],R=[$[0]],Q=1;for(;Q<$.length&&($[Q].node.type==="TSNonNullExpression"||i($[Q].node)||o($[Q].node)&&$[Q].node.computed&&d($[Q].node.property));++Q)R.push($[Q]);if(!i($[0].node))for(;Q+1<$.length&&(m($[Q].node)&&m($[Q+1].node));++Q)R.push($[Q]);H.push(R),R=[];let ee=!1;for(;Q<$.length;++Q){if(ee&&m($[Q].node)){if($[Q].node.computed&&d($[Q].node.property)){R.push($[Q]);continue}H.push(R),R=[],ee=!1;}(i($[Q].node)||$[Q].node.type==="ImportExpression")&&(ee=!0),R.push($[Q]),f($[Q].node,h.Trailing)&&(H.push(R),R=[],ee=!1);}R.length>0&&H.push(R);function te(de){return /^[A-Z]|^[$_]+$/.test(de)}function oe(de){return de.length<=b.tabWidth}function W(de){let ae=de[1].length>0&&de[1][0].node.computed;if(de[0].length===1){let K=de[0][0].node;return K.type==="ThisExpression"||K.type==="Identifier"&&(te(K.name)||j&&oe(K.name)||ae)}let ve=s(de[0]).node;return o(ve)&&ve.property.type==="Identifier"&&(te(ve.property.name)||ae)}let X=H.length>=2&&!f(H[1][0].node)&&W(H);function ue(de){let ae=de.map(ve=>ve.printed);return de.length>0&&s(de).needsParens?["(",...ae,")"]:ae}function De(de){return de.length===0?"":I(B([S,A(S,de.map(ue))]))}let ie=H.map(ue),G=ie,z=X?3:2,U=H.flat(),le=U.slice(1,-1).some(de=>f(de.node,h.Leading))||U.slice(0,-1).some(de=>f(de.node,h.Trailing))||H[z]&&f(H[z][0].node,h.Leading);if(H.length<=z&&!le)return y(x)?G:B(G);let ge=s(H[X?1:0]).node,Ae=!i(ge)&&V(ge),Ne=[ue(H[0]),X?H.slice(1,2).map(ue):"",Ae?S:"",De(H.slice(X?2:1))],ke=$.map(de=>{let{node:ae}=de;return ae}).filter(i);function ce(){let de=s(s(H)).node,ae=s(ie);return i(de)&&D(ae)&&ke.slice(0,-1).some(ve=>ve.arguments.some(c))}let pe;return le||ke.length>2&&ke.some(de=>!de.arguments.every(ae=>p(ae,0)))||ie.slice(0,-1).some(D)||ce()?pe=B(Ne):pe=[D(G)||Ae?P:"",k([G,Ne])],C("member-chain",pe)}n.exports=N;}}),to=Z({"src/language-js/print/call-expression.js"(e,n){re();var{builders:{join:t,group:s}}=Oe(),a=It(),{getCallArguments:r,hasFlowAnnotationComment:u,isCallExpression:i,isMemberish:o,isStringLiteral:c,isTemplateOnItsOwnLine:y,isTestCall:m,iterateCallArgumentsPath:d}=Ke(),p=qm(),f=Za(),{printOptionalToken:h,printFunctionTypeParameters:w}=ct();function T(S,B,I){let k=S.getValue(),P=S.getParentNode(),C=k.type==="NewExpression",D=k.type==="ImportExpression",g=h(S),F=r(k);if(F.length>0&&(!D&&!C&&A(k,P)||F.length===1&&y(F[0],B.originalText)||!C&&m(k,P))){let v=[];return d(S,()=>{v.push(I());}),[C?"new ":"",I("callee"),g,w(S,B,I),"(",t(", ",v),")"]}let l=(B.parser==="babel"||B.parser==="babel-flow")&&k.callee&&k.callee.type==="Identifier"&&u(k.callee.trailingComments);if(l&&(k.callee.trailingComments[0].printed=!0),!D&&!C&&o(k.callee)&&!S.call(v=>a(v,B),"callee"))return p(S,B,I);let E=[C?"new ":"",D?"import":I("callee"),g,l?"/*:: ".concat(k.callee.trailingComments[0].value.slice(2).trim()," */"):"",w(S,B,I),f(S,B,I)];return D||i(k.callee)?s(E):E}function A(S,B){if(S.callee.type!=="Identifier")return !1;if(S.callee.name==="require")return !0;if(S.callee.name==="define"){let I=r(S);return B.type==="ExpressionStatement"&&(I.length===1||I.length===2&&I[0].type==="ArrayExpression"||I.length===3&&c(I[0])&&I[1].type==="ArrayExpression")}return !1}n.exports={printCallExpression:T};}}),Xt=Z({"src/language-js/print/assignment.js"(e,n){re();var{isNonEmptyArray:t,getStringWidth:s}=Ue(),{builders:{line:a,group:r,indent:u,indentIfBreak:i,lineSuffixBoundary:o},utils:{cleanDoc:c,willBreak:y,canBreak:m}}=Oe(),{hasLeadingOwnLineComment:d,isBinaryish:p,isStringLiteral:f,isLiteral:h,isNumericLiteral:w,isCallExpression:T,isMemberExpression:A,getCallArguments:S,rawText:B,hasComment:I,isSignedNumericLiteral:k,isObjectProperty:P}=Ke(),{shouldInlineLogicalExpression:C}=$n(),{printCallExpression:D}=to();function g(W,X,ue,De,ie,G){let z=E(W,X,ue,De,G),U=ue(G,{assignmentLayout:z});switch(z){case"break-after-operator":return r([r(De),ie,r(u([a,U]))]);case"never-break-after-operator":return r([r(De),ie," ",U]);case"fluid":{let le=Symbol("assignment");return r([r(De),ie,r(u(a),{id:le}),o,i(U,{groupId:le})])}case"break-lhs":return r([De,ie," ",r(U)]);case"chain":return [r(De),ie,a,U];case"chain-tail":return [r(De),ie,u([a,U])];case"chain-tail-arrow-chain":return [r(De),ie,U];case"only-left":return De}}function F(W,X,ue){let De=W.getValue();return g(W,X,ue,ue("left"),[" ",De.operator],"right")}function l(W,X,ue){return g(W,X,ue,ue("id")," =","init")}function E(W,X,ue,De,ie){let G=W.getValue(),z=G[ie];if(!z)return "only-left";let U=!x(z);if(W.match(x,b,Ne=>!U||Ne.type!=="ExpressionStatement"&&Ne.type!=="VariableDeclaration"))return U?z.type==="ArrowFunctionExpression"&&z.body.type==="ArrowFunctionExpression"?"chain-tail-arrow-chain":"chain-tail":"chain";if(!U&&x(z.right)||d(X.originalText,z))return "break-after-operator";if(z.type==="CallExpression"&&z.callee.name==="require"||X.parser==="json5"||X.parser==="json")return "never-break-after-operator";if(N(G)||L(G)||$(G)||V(G)&&m(De))return "break-lhs";let Ae=ee(G,De,X);return W.call(()=>v(W,X,ue,Ae),ie)?"break-after-operator":Ae||z.type==="TemplateLiteral"||z.type==="TaggedTemplateExpression"||z.type==="BooleanLiteral"||w(z)||z.type==="ClassExpression"?"never-break-after-operator":"fluid"}function v(W,X,ue,De){let ie=W.getValue();if(p(ie)&&!C(ie))return !0;switch(ie.type){case"StringLiteralTypeAnnotation":case"SequenceExpression":return !0;case"ConditionalExpression":{let{test:U}=ie;return p(U)&&!C(U)}case"ClassExpression":return t(ie.decorators)}if(De)return !1;let G=ie,z=[];for(;;)if(G.type==="UnaryExpression")G=G.argument,z.push("argument");else if(G.type==="TSNonNullExpression")G=G.expression,z.push("expression");else break;return !!(f(G)||W.call(()=>H(W,X,ue),...z))}function N(W){if(b(W)){let X=W.left||W.id;return X.type==="ObjectPattern"&&X.properties.length>2&&X.properties.some(ue=>P(ue)&&(!ue.shorthand||ue.value&&ue.value.type==="AssignmentPattern"))}return !1}function x(W){return W.type==="AssignmentExpression"}function b(W){return x(W)||W.type==="VariableDeclarator"}function L(W){let X=M(W);if(t(X)){let ue=W.type==="TSTypeAliasDeclaration"?"constraint":"bound";if(X.length>1&&X.some(De=>De[ue]||De.default))return !0}return !1}function M(W){return j(W)&&W.typeParameters&&W.typeParameters.params?W.typeParameters.params:null}function j(W){return W.type==="TSTypeAliasDeclaration"||W.type==="TypeAlias"}function $(W){if(W.type!=="VariableDeclarator")return !1;let{typeAnnotation:X}=W.id;if(!X||!X.typeAnnotation)return !1;let ue=q(X.typeAnnotation);return t(ue)&&ue.length>1&&ue.some(De=>t(q(De))||De.type==="TSConditionalType")}function V(W){return W.type==="VariableDeclarator"&&W.init&&W.init.type==="ArrowFunctionExpression"}function q(W){return Y(W)&&W.typeParameters&&W.typeParameters.params?W.typeParameters.params:null}function Y(W){return W.type==="TSTypeReference"||W.type==="GenericTypeAnnotation"}function H(W,X,ue){let De=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,ie=W.getValue(),G=()=>H(W,X,ue,!0);if(ie.type==="TSNonNullExpression")return W.call(G,"expression");if(T(ie)){if(D(W,X,ue).label==="member-chain")return !1;let U=S(ie);return !(U.length===0||U.length===1&&Q(U[0],X))||te(ie,ue)?!1:W.call(G,"callee")}return A(ie)?W.call(G,"object"):De&&(ie.type==="Identifier"||ie.type==="ThisExpression")}var R=.25;function Q(W,X){let{printWidth:ue}=X;if(I(W))return !1;let De=ue*R;if(W.type==="ThisExpression"||W.type==="Identifier"&&W.name.length<=De||k(W)&&!I(W.argument))return !0;let ie=W.type==="Literal"&&"regex"in W&&W.regex.pattern||W.type==="RegExpLiteral"&&W.pattern;return ie?ie.length<=De:f(W)?B(W).length<=De:W.type==="TemplateLiteral"?W.expressions.length===0&&W.quasis[0].value.raw.length<=De&&!W.quasis[0].value.raw.includes(` -`):h(W)}function ee(W,X,ue){if(!P(W))return !1;X=c(X);let De=3;return typeof X=="string"&&s(X)<ue.tabWidth+De}function te(W,X){let ue=oe(W);if(t(ue)){if(ue.length>1)return !0;if(ue.length===1){let ie=ue[0];if(ie.type==="TSUnionType"||ie.type==="UnionTypeAnnotation"||ie.type==="TSIntersectionType"||ie.type==="IntersectionTypeAnnotation"||ie.type==="TSTypeLiteral"||ie.type==="ObjectTypeAnnotation")return !0}let De=W.typeParameters?"typeParameters":"typeArguments";if(y(X(De)))return !0}return !1}function oe(W){return W.typeParameters&&W.typeParameters.params||W.typeArguments&&W.typeArguments.params}n.exports={printVariableDeclarator:l,printAssignmentExpression:F,printAssignment:g,isArrowFunctionVariableDeclarator:V};}}),wr=Z({"src/language-js/print/function-parameters.js"(e,n){re();var{getNextNonSpaceNonCommentCharacter:t}=Ue(),{printDanglingComments:s}=et(),{builders:{line:a,hardline:r,softline:u,group:i,indent:o,ifBreak:c},utils:{removeLines:y,willBreak:m}}=Oe(),{getFunctionParameters:d,iterateFunctionParametersPath:p,isSimpleType:f,isTestCall:h,isTypeAnnotationAFunction:w,isObjectType:T,isObjectTypePropertyAFunction:A,hasRestParameter:S,shouldPrintComma:B,hasComment:I,isNextLineEmpty:k}=Ke(),{locEnd:P}=st(),{ArgExpansionBailout:C}=Jt(),{printFunctionTypeParameters:D}=ct();function g(v,N,x,b,L){let M=v.getValue(),j=d(M),$=L?D(v,x,N):"";if(j.length===0)return [$,"(",s(v,x,!0,ee=>t(x.originalText,ee,P)===")"),")"];let V=v.getParentNode(),q=h(V),Y=F(M),H=[];if(p(v,(ee,te)=>{let oe=te===j.length-1;oe&&M.rest&&H.push("..."),H.push(N()),!oe&&(H.push(","),q||Y?H.push(" "):k(j[te],x)?H.push(r,r):H.push(a));}),b){if(m($)||m(H))throw new C;return i([y($),"(",y(H),")"])}let R=j.every(ee=>!ee.decorators);return Y&&R?[$,"(",...H,")"]:q?[$,"(",...H,")"]:(A(V)||w(V)||V.type==="TypeAlias"||V.type==="UnionTypeAnnotation"||V.type==="TSUnionType"||V.type==="IntersectionTypeAnnotation"||V.type==="FunctionTypeAnnotation"&&V.returnType===M)&&j.length===1&&j[0].name===null&&M.this!==j[0]&&j[0].typeAnnotation&&M.typeParameters===null&&f(j[0].typeAnnotation)&&!M.rest?x.arrowParens==="always"?["(",...H,")"]:H:[$,"(",o([u,...H]),c(!S(M)&&B(x,"all")?",":""),u,")"]}function F(v){if(!v)return !1;let N=d(v);if(N.length!==1)return !1;let[x]=N;return !I(x)&&(x.type==="ObjectPattern"||x.type==="ArrayPattern"||x.type==="Identifier"&&x.typeAnnotation&&(x.typeAnnotation.type==="TypeAnnotation"||x.typeAnnotation.type==="TSTypeAnnotation")&&T(x.typeAnnotation.typeAnnotation)||x.type==="FunctionTypeParam"&&T(x.typeAnnotation)||x.type==="AssignmentPattern"&&(x.left.type==="ObjectPattern"||x.left.type==="ArrayPattern")&&(x.right.type==="Identifier"||x.right.type==="ObjectExpression"&&x.right.properties.length===0||x.right.type==="ArrayExpression"&&x.right.elements.length===0))}function l(v){let N;return v.returnType?(N=v.returnType,N.typeAnnotation&&(N=N.typeAnnotation)):v.typeAnnotation&&(N=v.typeAnnotation),N}function E(v,N){let x=l(v);if(!x)return !1;let b=v.typeParameters&&v.typeParameters.params;if(b){if(b.length>1)return !1;if(b.length===1){let L=b[0];if(L.constraint||L.default)return !1}}return d(v).length===1&&(T(x)||m(N))}n.exports={printFunctionParameters:g,shouldHugFunctionParameters:F,shouldGroupFunctionParameters:E};}}),_r=Z({"src/language-js/print/type-annotation.js"(e,n){re();var{printComments:t,printDanglingComments:s}=et(),{isNonEmptyArray:a}=Ue(),{builders:{group:r,join:u,line:i,softline:o,indent:c,align:y,ifBreak:m}}=Oe(),d=It(),{locStart:p}=st(),{isSimpleType:f,isObjectType:h,hasLeadingOwnLineComment:w,isObjectTypePropertyAFunction:T,shouldPrintComma:A}=Ke(),{printAssignment:S}=Xt(),{printFunctionParameters:B,shouldGroupFunctionParameters:I}=wr(),{printArrayItems:k}=zt();function P(x){if(f(x)||h(x))return !0;if(x.type==="UnionTypeAnnotation"||x.type==="TSUnionType"){let b=x.types.filter(M=>M.type==="VoidTypeAnnotation"||M.type==="TSVoidKeyword"||M.type==="NullLiteralTypeAnnotation"||M.type==="TSNullKeyword").length,L=x.types.some(M=>M.type==="ObjectTypeAnnotation"||M.type==="TSTypeLiteral"||M.type==="GenericTypeAnnotation"||M.type==="TSTypeReference");if(x.types.length-1===b&&L)return !0}return !1}function C(x,b,L){let M=b.semi?";":"",j=x.getValue(),$=[];return $.push("opaque type ",L("id"),L("typeParameters")),j.supertype&&$.push(": ",L("supertype")),j.impltype&&$.push(" = ",L("impltype")),$.push(M),$}function D(x,b,L){let M=b.semi?";":"",j=x.getValue(),$=[];j.declare&&$.push("declare "),$.push("type ",L("id"),L("typeParameters"));let V=j.type==="TSTypeAliasDeclaration"?"typeAnnotation":"right";return [S(x,b,L,$," =",V),M]}function g(x,b,L){let M=x.getValue(),j=x.map(L,"types"),$=[],V=!1;for(let q=0;q<j.length;++q)q===0?$.push(j[q]):h(M.types[q-1])&&h(M.types[q])?$.push([" & ",V?c(j[q]):j[q]]):!h(M.types[q-1])&&!h(M.types[q])?$.push(c([" &",i,j[q]])):(q>1&&(V=!0),$.push(" & ",q>1?c(j[q]):j[q]));return r($)}function F(x,b,L){let M=x.getValue(),j=x.getParentNode(),$=j.type!=="TypeParameterInstantiation"&&j.type!=="TSTypeParameterInstantiation"&&j.type!=="GenericTypeAnnotation"&&j.type!=="TSTypeReference"&&j.type!=="TSTypeAssertion"&&j.type!=="TupleTypeAnnotation"&&j.type!=="TSTupleType"&&!(j.type==="FunctionTypeParam"&&!j.name&&x.getParentNode(1).this!==j)&&!((j.type==="TypeAlias"||j.type==="VariableDeclarator"||j.type==="TSTypeAliasDeclaration")&&w(b.originalText,M)),V=P(M),q=x.map(R=>{let Q=L();return V||(Q=y(2,Q)),t(R,Q,b)},"types");if(V)return u(" | ",q);let Y=$&&!w(b.originalText,M),H=[m([Y?i:"","| "]),u([i,"| "],q)];return d(x,b)?r([c(H),o]):j.type==="TupleTypeAnnotation"&&j.types.length>1||j.type==="TSTupleType"&&j.elementTypes.length>1?r([c([m(["(",o]),H]),o,m(")")]):r($?c(H):H)}function l(x,b,L){let M=x.getValue(),j=[],$=x.getParentNode(0),V=x.getParentNode(1),q=x.getParentNode(2),Y=M.type==="TSFunctionType"||!(($.type==="ObjectTypeProperty"||$.type==="ObjectTypeInternalSlot")&&!$.variance&&!$.optional&&p($)===p(M)||$.type==="ObjectTypeCallProperty"||q&&q.type==="DeclareFunction"),H=Y&&($.type==="TypeAnnotation"||$.type==="TSTypeAnnotation"),R=H&&Y&&($.type==="TypeAnnotation"||$.type==="TSTypeAnnotation")&&V.type==="ArrowFunctionExpression";T($)&&(Y=!0,H=!0),R&&j.push("(");let Q=B(x,L,b,!1,!0),ee=M.returnType||M.predicate||M.typeAnnotation?[Y?" => ":": ",L("returnType"),L("predicate"),L("typeAnnotation")]:"",te=I(M,ee);return j.push(te?r(Q):Q),ee&&j.push(ee),R&&j.push(")"),r(j)}function E(x,b,L){let M=x.getValue(),j=M.type==="TSTupleType"?"elementTypes":"types",$=M[j],V=a($),q=V?o:"";return r(["[",c([q,k(x,b,j,L)]),m(V&&A(b,"all")?",":""),s(x,b,!0),q,"]"])}function v(x,b,L){let M=x.getValue(),j=M.type==="OptionalIndexedAccessType"&&M.optional?"?.[":"[";return [L("objectType"),j,L("indexType"),"]"]}function N(x,b,L){let M=x.getValue();return [M.postfix?"":L,b("typeAnnotation"),M.postfix?L:""]}n.exports={printOpaqueType:C,printTypeAlias:D,printIntersectionType:g,printUnionType:F,printFunctionType:l,printTupleType:E,printIndexedAccessType:v,shouldHugType:P,printJSDocType:N};}}),Pr=Z({"src/language-js/print/type-parameters.js"(e,n){re();var{printDanglingComments:t}=et(),{builders:{join:s,line:a,hardline:r,softline:u,group:i,indent:o,ifBreak:c}}=Oe(),{isTestCall:y,hasComment:m,CommentCheckFlags:d,isTSXFile:p,shouldPrintComma:f,getFunctionParameters:h,isObjectType:w}=Ke(),{createGroupIdMapper:T}=Ue(),{shouldHugType:A}=_r(),{isArrowFunctionVariableDeclarator:S}=Xt(),B=T("typeParameters");function I(C,D,g,F){let l=C.getValue();if(!l[F])return "";if(!Array.isArray(l[F]))return g(F);let E=C.getNode(2),v=E&&y(E);if(!C.match(L=>!(L[F].length===1&&w(L[F][0])),void 0,(L,M)=>M==="typeAnnotation",L=>L.type==="Identifier",S)&&(v||l[F].length===0||l[F].length===1&&(l[F][0].type==="NullableTypeAnnotation"||A(l[F][0]))))return ["<",s(", ",C.map(g,F)),k(C,D),">"];let b=l.type==="TSTypeParameterInstantiation"?"":h(l).length===1&&p(D)&&!l[F][0].constraint&&C.getParentNode().type==="ArrowFunctionExpression"?",":f(D,"all")?c(","):"";return i(["<",o([u,s([",",a],C.map(g,F))]),b,u,">"],{id:B(l)})}function k(C,D){let g=C.getValue();if(!m(g,d.Dangling))return "";let F=!m(g,d.Line),l=t(C,D,F);return F?l:[l,r]}function P(C,D,g){let F=C.getValue(),l=[],E=C.getParentNode();return E.type==="TSMappedType"?(l.push("[",g("name")),F.constraint&&l.push(" in ",g("constraint")),E.nameType&&l.push(" as ",C.callParent(()=>g("nameType"))),l.push("]"),l):(F.variance&&l.push(g("variance")),F.in&&l.push("in "),F.out&&l.push("out "),l.push(g("name")),F.bound&&l.push(": ",g("bound")),F.constraint&&l.push(" extends ",g("constraint")),F.default&&l.push(" = ",g("default")),l)}n.exports={printTypeParameter:P,printTypeParameters:I,getTypeParametersGroupId:B};}}),Kt=Z({"src/language-js/print/property.js"(e,n){re();var{printComments:t}=et(),{printString:s,printNumber:a}=Ue(),{isNumericLiteral:r,isSimpleNumber:u,isStringLiteral:i,isStringPropSafeToUnquote:o,rawText:c}=Ke(),{printAssignment:y}=Xt(),m=new WeakMap;function d(f,h,w){let T=f.getNode();if(T.computed)return ["[",w("key"),"]"];let A=f.getParentNode(),{key:S}=T;if(T.type==="ClassPrivateProperty"&&S.type==="Identifier")return ["#",w("key")];if(h.quoteProps==="consistent"&&!m.has(A)){let B=(A.properties||A.body||A.members).some(I=>!I.computed&&I.key&&i(I.key)&&!o(I,h));m.set(A,B);}if((S.type==="Identifier"||r(S)&&u(a(c(S)))&&String(S.value)===a(c(S))&&!(h.parser==="typescript"||h.parser==="babel-ts"))&&(h.parser==="json"||h.quoteProps==="consistent"&&m.get(A))){let B=s(JSON.stringify(S.type==="Identifier"?S.name:S.value.toString()),h);return f.call(I=>t(I,B,h),"key")}return o(T,h)&&(h.quoteProps==="as-needed"||h.quoteProps==="consistent"&&!m.get(A))?f.call(B=>t(B,/^\d/.test(S.value)?a(S.value):S.value,h),"key"):w("key")}function p(f,h,w){return f.getValue().shorthand?w("value"):y(f,h,w,d(f,h,w),":","value")}n.exports={printProperty:p,printPropertyKey:d};}}),kr=Z({"src/language-js/print/function.js"(e,n){re();var t=Ut(),{printDanglingComments:s,printCommentsSeparately:a}=et(),r=it(),{getNextNonSpaceNonCommentCharacterIndex:u}=Ue(),{builders:{line:i,softline:o,group:c,indent:y,ifBreak:m,hardline:d,join:p,indentIfBreak:f},utils:{removeLines:h,willBreak:w}}=Oe(),{ArgExpansionBailout:T}=Jt(),{getFunctionParameters:A,hasLeadingOwnLineComment:S,isFlowAnnotationComment:B,isJsxNode:I,isTemplateOnItsOwnLine:k,shouldPrintComma:P,startsWithNoLookaheadToken:C,isBinaryish:D,isLineComment:g,hasComment:F,getComments:l,CommentCheckFlags:E,isCallLikeExpression:v,isCallExpression:N,getCallArguments:x,hasNakedLeftSide:b,getLeftSide:L}=Ke(),{locEnd:M}=st(),{printFunctionParameters:j,shouldGroupFunctionParameters:$}=wr(),{printPropertyKey:V}=Kt(),{printFunctionTypeParameters:q}=ct();function Y(z,U,le,ge){let Ae=z.getValue(),Ne=!1;if((Ae.type==="FunctionDeclaration"||Ae.type==="FunctionExpression")&&ge&&ge.expandLastArg){let ae=z.getParentNode();N(ae)&&x(ae).length>1&&(Ne=!0);}let ke=[];Ae.type==="TSDeclareFunction"&&Ae.declare&&ke.push("declare "),Ae.async&&ke.push("async "),Ae.generator?ke.push("function* "):ke.push("function "),Ae.id&&ke.push(U("id"));let ce=j(z,U,le,Ne),pe=X(z,U,le),de=$(Ae,pe);return ke.push(q(z,le,U),c([de?c(ce):ce,pe]),Ae.body?" ":"",U("body")),le.semi&&(Ae.declare||!Ae.body)&&ke.push(";"),ke}function H(z,U,le){let ge=z.getNode(),{kind:Ae}=ge,Ne=ge.value||ge,ke=[];return !Ae||Ae==="init"||Ae==="method"||Ae==="constructor"?Ne.async&&ke.push("async "):(t.ok(Ae==="get"||Ae==="set"),ke.push(Ae," ")),Ne.generator&&ke.push("*"),ke.push(V(z,U,le),ge.optional||ge.key.optional?"?":""),ge===Ne?ke.push(R(z,U,le)):Ne.type==="FunctionExpression"?ke.push(z.call(ce=>R(ce,U,le),"value")):ke.push(le("value")),ke}function R(z,U,le){let ge=z.getNode(),Ae=j(z,le,U),Ne=X(z,le,U),ke=$(ge,Ne),ce=[q(z,U,le),c([ke?c(Ae):Ae,Ne])];return ge.body?ce.push(" ",le("body")):ce.push(U.semi?";":""),ce}function Q(z,U,le,ge){let Ae=z.getValue(),Ne=[];if(Ae.async&&Ne.push("async "),W(z,U))Ne.push(le(["params",0]));else {let ce=ge&&(ge.expandLastArg||ge.expandFirstArg),pe=X(z,le,U);if(ce){if(w(pe))throw new T;pe=c(h(pe));}Ne.push(c([j(z,le,U,ce,!0),pe]));}let ke=s(z,U,!0,ce=>{let pe=u(U.originalText,ce,M);return pe!==!1&&U.originalText.slice(pe,pe+2)==="=>"});return ke&&Ne.push(" ",ke),Ne}function ee(z,U,le,ge,Ae,Ne){let ke=z.getName(),ce=z.getParentNode(),pe=v(ce)&&ke==="callee",de=Boolean(U&&U.assignmentLayout),ae=Ne.body.type!=="BlockStatement"&&Ne.body.type!=="ObjectExpression"&&Ne.body.type!=="SequenceExpression",ve=pe&&ae||U&&U.assignmentLayout==="chain-tail-arrow-chain",K=Symbol("arrow-chain");return Ne.body.type==="SequenceExpression"&&(Ae=c(["(",y([o,Ae]),o,")"])),c([c(y([pe||de?o:"",c(p([" =>",i],le),{shouldBreak:ge})]),{id:K,shouldBreak:ve})," =>",f(ae?y([i,Ae]):[" ",Ae],{groupId:K}),pe?m(o,"",{groupId:K}):""])}function te(z,U,le,ge){let Ae=z.getValue(),Ne=[],ke=[],ce=!1;if(function K(){let he=Q(z,U,le,ge);if(Ne.length===0)Ne.push(he);else {let{leading:ye,trailing:Ce}=a(z,U);Ne.push([ye,he]),ke.unshift(Ce);}ce=ce||Ae.returnType&&A(Ae).length>0||Ae.typeParameters||A(Ae).some(ye=>ye.type!=="Identifier"),Ae.body.type!=="ArrowFunctionExpression"||ge&&ge.expandLastArg?ke.unshift(le("body",ge)):(Ae=Ae.body,z.call(K,"body"));}(),Ne.length>1)return ee(z,ge,Ne,ce,ke,Ae);let pe=Ne;if(pe.push(" =>"),!S(U.originalText,Ae.body)&&(Ae.body.type==="ArrayExpression"||Ae.body.type==="ObjectExpression"||Ae.body.type==="BlockStatement"||I(Ae.body)||k(Ae.body,U.originalText)||Ae.body.type==="ArrowFunctionExpression"||Ae.body.type==="DoExpression"))return c([...pe," ",ke]);if(Ae.body.type==="SequenceExpression")return c([...pe,c([" (",y([o,ke]),o,")"])]);let de=(ge&&ge.expandLastArg||z.getParentNode().type==="JSXExpressionContainer")&&!F(Ae),ae=ge&&ge.expandLastArg&&P(U,"all"),ve=Ae.body.type==="ConditionalExpression"&&!C(Ae.body,!1);return c([...pe,c([y([i,ve?m("","("):"",ke,ve?m("",")"):""]),de?[m(ae?",":""),o]:""])])}function oe(z){let U=A(z);return U.length===1&&!z.typeParameters&&!F(z,E.Dangling)&&U[0].type==="Identifier"&&!U[0].typeAnnotation&&!F(U[0])&&!U[0].optional&&!z.predicate&&!z.returnType}function W(z,U){if(U.arrowParens==="always")return !1;if(U.arrowParens==="avoid"){let le=z.getValue();return oe(le)}return !1}function X(z,U,le){let ge=z.getValue(),Ae=U("returnType");if(ge.returnType&&B(le.originalText,ge.returnType))return [" /*: ",Ae," */"];let Ne=[Ae];return ge.returnType&&ge.returnType.typeAnnotation&&Ne.unshift(": "),ge.predicate&&Ne.push(ge.returnType?" ":": ",U("predicate")),Ne}function ue(z,U,le){let ge=z.getValue(),Ae=U.semi?";":"",Ne=[];ge.argument&&(G(U,ge.argument)?Ne.push([" (",y([d,le("argument")]),d,")"]):D(ge.argument)||ge.argument.type==="SequenceExpression"?Ne.push(c([m(" ("," "),y([o,le("argument")]),o,m(")")])):Ne.push(" ",le("argument")));let ke=l(ge),ce=r(ke),pe=ce&&g(ce);return pe&&Ne.push(Ae),F(ge,E.Dangling)&&Ne.push(" ",s(z,U,!0)),pe||Ne.push(Ae),Ne}function De(z,U,le){return ["return",ue(z,U,le)]}function ie(z,U,le){return ["throw",ue(z,U,le)]}function G(z,U){if(S(z.originalText,U))return !0;if(b(U)){let le=U,ge;for(;ge=L(le);)if(le=ge,S(z.originalText,le))return !0}return !1}n.exports={printFunction:Y,printArrowFunction:te,printMethod:H,printReturnStatement:De,printThrowStatement:ie,printMethodInternal:R,shouldPrintParamsWithoutParens:W};}}),Hn=Z({"src/language-js/print/decorators.js"(e,n){re();var{isNonEmptyArray:t,hasNewline:s}=Ue(),{builders:{line:a,hardline:r,join:u,breakParent:i,group:o}}=Oe(),{locStart:c,locEnd:y}=st(),{getParentExportDeclaration:m}=Ke();function d(T,A,S){let B=T.getValue();return o([u(a,T.map(S,"decorators")),h(B,A)?r:a])}function p(T,A,S){return [u(r,T.map(S,"declaration","decorators")),r]}function f(T,A,S){let B=T.getValue(),{decorators:I}=B;if(!t(I)||w(T.getParentNode()))return;let k=B.type==="ClassExpression"||B.type==="ClassDeclaration"||h(B,A);return [m(T)?r:k?i:"",u(a,T.map(S,"decorators")),a]}function h(T,A){return T.decorators.some(S=>s(A.originalText,y(S)))}function w(T){if(T.type!=="ExportDefaultDeclaration"&&T.type!=="ExportNamedDeclaration"&&T.type!=="DeclareExportDeclaration")return !1;let A=T.declaration&&T.declaration.decorators;return t(A)&&c(T,{ignoreDecorators:!0})>c(A[0])}n.exports={printDecorators:f,printClassMemberDecorators:d,printDecoratorsBeforeExport:p,hasDecoratorsBeforeExport:w};}}),Yt=Z({"src/language-js/print/class.js"(e,n){re();var{isNonEmptyArray:t,createGroupIdMapper:s}=Ue(),{printComments:a,printDanglingComments:r}=et(),{builders:{join:u,line:i,hardline:o,softline:c,group:y,indent:m,ifBreak:d}}=Oe(),{hasComment:p,CommentCheckFlags:f}=Ke(),{getTypeParametersGroupId:h}=Pr(),{printMethod:w}=kr(),{printOptionalToken:T,printTypeAnnotation:A,printDefiniteToken:S}=ct(),{printPropertyKey:B}=Kt(),{printAssignment:I}=Xt(),{printClassMemberDecorators:k}=Hn();function P(x,b,L){let M=x.getValue(),j=[];M.declare&&j.push("declare "),M.abstract&&j.push("abstract "),j.push("class");let $=M.id&&p(M.id,f.Trailing)||M.typeParameters&&p(M.typeParameters,f.Trailing)||M.superClass&&p(M.superClass)||t(M.extends)||t(M.mixins)||t(M.implements),V=[],q=[];if(M.id&&V.push(" ",L("id")),V.push(L("typeParameters")),M.superClass){let Y=[E(x,b,L),L("superTypeParameters")],H=x.call(R=>["extends ",a(R,Y,b)],"superClass");$?q.push(i,y(H)):q.push(" ",H);}else q.push(l(x,b,L,"extends"));if(q.push(l(x,b,L,"mixins"),l(x,b,L,"implements")),$){let Y;F(M)?Y=[...V,m(q)]:Y=m([...V,q]),j.push(y(Y,{id:C(M)}));}else j.push(...V,...q);return j.push(" ",L("body")),j}var C=s("heritageGroup");function D(x){return d(o,"",{groupId:C(x)})}function g(x){return ["superClass","extends","mixins","implements"].filter(b=>Boolean(x[b])).length>1}function F(x){return x.typeParameters&&!p(x.typeParameters,f.Trailing|f.Line)&&!g(x)}function l(x,b,L,M){let j=x.getValue();if(!t(j[M]))return "";let $=r(x,b,!0,V=>{let{marker:q}=V;return q===M});return [F(j)?d(" ",i,{groupId:h(j.typeParameters)}):i,$,$&&o,M,y(m([i,u([",",i],x.map(L,M))]))]}function E(x,b,L){let M=L("superClass");return x.getParentNode().type==="AssignmentExpression"?y(d(["(",m([c,M]),c,")"],M)):M}function v(x,b,L){let M=x.getValue(),j=[];return t(M.decorators)&&j.push(k(x,b,L)),M.accessibility&&j.push(M.accessibility+" "),M.readonly&&j.push("readonly "),M.declare&&j.push("declare "),M.static&&j.push("static "),(M.type==="TSAbstractMethodDefinition"||M.abstract)&&j.push("abstract "),M.override&&j.push("override "),j.push(w(x,b,L)),j}function N(x,b,L){let M=x.getValue(),j=[],$=b.semi?";":"";return t(M.decorators)&&j.push(k(x,b,L)),M.accessibility&&j.push(M.accessibility+" "),M.declare&&j.push("declare "),M.static&&j.push("static "),(M.type==="TSAbstractPropertyDefinition"||M.abstract)&&j.push("abstract "),M.override&&j.push("override "),M.readonly&&j.push("readonly "),M.variance&&j.push(L("variance")),M.type==="ClassAccessorProperty"&&j.push("accessor "),j.push(B(x,b,L),T(x),S(x),A(x,b,L)),[I(x,b,L,j," =","value"),$]}n.exports={printClass:P,printClassMethod:v,printClassProperty:N,printHardlineAfterHeritage:D};}}),ro=Z({"src/language-js/print/interface.js"(e,n){re();var{isNonEmptyArray:t}=Ue(),{builders:{join:s,line:a,group:r,indent:u,ifBreak:i}}=Oe(),{hasComment:o,identity:c,CommentCheckFlags:y}=Ke(),{getTypeParametersGroupId:m}=Pr(),{printTypeScriptModifiers:d}=ct();function p(f,h,w){let T=f.getValue(),A=[];T.declare&&A.push("declare "),T.type==="TSInterfaceDeclaration"&&A.push(T.abstract?"abstract ":"",d(f,h,w)),A.push("interface");let S=[],B=[];T.type!=="InterfaceTypeAnnotation"&&S.push(" ",w("id"),w("typeParameters"));let I=T.typeParameters&&!o(T.typeParameters,y.Trailing|y.Line);return t(T.extends)&&B.push(I?i(" ",a,{groupId:m(T.typeParameters)}):a,"extends ",(T.extends.length===1?c:u)(s([",",a],f.map(w,"extends")))),T.id&&o(T.id,y.Trailing)||t(T.extends)?I?A.push(r([...S,u(B)])):A.push(r(u([...S,...B]))):A.push(...S,...B),A.push(" ",w("body")),r(A)}n.exports={printInterface:p};}}),no=Z({"src/language-js/print/module.js"(e,n){re();var{isNonEmptyArray:t}=Ue(),{builders:{softline:s,group:a,indent:r,join:u,line:i,ifBreak:o,hardline:c}}=Oe(),{printDanglingComments:y}=et(),{hasComment:m,CommentCheckFlags:d,shouldPrintComma:p,needsHardlineAfterDanglingComment:f,isStringLiteral:h,rawText:w}=Ke(),{locStart:T,hasSameLoc:A}=st(),{hasDecoratorsBeforeExport:S,printDecoratorsBeforeExport:B}=Hn();function I(N,x,b){let L=N.getValue(),M=x.semi?";":"",j=[],{importKind:$}=L;return j.push("import"),$&&$!=="value"&&j.push(" ",$),j.push(g(N,x,b),D(N,x,b),l(N,x,b),M),j}function k(N,x,b){let L=N.getValue(),M=[];S(L)&&M.push(B(N,x,b));let{type:j,exportKind:$,declaration:V}=L;return M.push("export"),(L.default||j==="ExportDefaultDeclaration")&&M.push(" default"),m(L,d.Dangling)&&(M.push(" ",y(N,x,!0)),f(L)&&M.push(c)),V?M.push(" ",b("declaration")):M.push($==="type"?" type":"",g(N,x,b),D(N,x,b),l(N,x,b)),C(L,x)&&M.push(";"),M}function P(N,x,b){let L=N.getValue(),M=x.semi?";":"",j=[],{exportKind:$,exported:V}=L;return j.push("export"),$==="type"&&j.push(" type"),j.push(" *"),V&&j.push(" as ",b("exported")),j.push(D(N,x,b),l(N,x,b),M),j}function C(N,x){if(!x.semi)return !1;let{type:b,declaration:L}=N,M=N.default||b==="ExportDefaultDeclaration";if(!L)return !0;let{type:j}=L;return !!(M&&j!=="ClassDeclaration"&&j!=="FunctionDeclaration"&&j!=="TSInterfaceDeclaration"&&j!=="DeclareClass"&&j!=="DeclareFunction"&&j!=="TSDeclareFunction"&&j!=="EnumDeclaration")}function D(N,x,b){let L=N.getValue();if(!L.source)return "";let M=[];return F(L,x)||M.push(" from"),M.push(" ",b("source")),M}function g(N,x,b){let L=N.getValue();if(F(L,x))return "";let M=[" "];if(t(L.specifiers)){let j=[],$=[];N.each(()=>{let V=N.getValue().type;if(V==="ExportNamespaceSpecifier"||V==="ExportDefaultSpecifier"||V==="ImportNamespaceSpecifier"||V==="ImportDefaultSpecifier")j.push(b());else if(V==="ExportSpecifier"||V==="ImportSpecifier")$.push(b());else throw new Error("Unknown specifier type ".concat(JSON.stringify(V)))},"specifiers"),M.push(u(", ",j)),$.length>0&&(j.length>0&&M.push(", "),$.length>1||j.length>0||L.specifiers.some(q=>m(q))?M.push(a(["{",r([x.bracketSpacing?i:s,u([",",i],$)]),o(p(x)?",":""),x.bracketSpacing?i:s,"}"])):M.push(["{",x.bracketSpacing?" ":"",...$,x.bracketSpacing?" ":"","}"]));}else M.push("{}");return M}function F(N,x){let{type:b,importKind:L,source:M,specifiers:j}=N;return b!=="ImportDeclaration"||t(j)||L==="type"?!1:!/{\s*}/.test(x.originalText.slice(T(N),T(M)))}function l(N,x,b){let L=N.getNode();return t(L.assertions)?[" assert {",x.bracketSpacing?" ":"",u(", ",N.map(b,"assertions")),x.bracketSpacing?" ":"","}"]:""}function E(N,x,b){let L=N.getNode(),{type:M}=L,j=[],$=M==="ImportSpecifier"?L.importKind:L.exportKind;$&&$!=="value"&&j.push($," ");let V=M.startsWith("Import"),q=V?"imported":"local",Y=V?"local":"exported",H=L[q],R=L[Y],Q="",ee="";return M==="ExportNamespaceSpecifier"||M==="ImportNamespaceSpecifier"?Q="*":H&&(Q=b(q)),R&&!v(L)&&(ee=b(Y)),j.push(Q,Q&&ee?" as ":"",ee),j}function v(N){if(N.type!=="ImportSpecifier"&&N.type!=="ExportSpecifier")return !1;let{local:x,[N.type==="ImportSpecifier"?"imported":"exported"]:b}=N;if(x.type!==b.type||!A(x,b))return !1;if(h(x))return x.value===b.value&&w(x)===w(b);switch(x.type){case"Identifier":return x.name===b.name;default:return !1}}n.exports={printImportDeclaration:I,printExportDeclaration:k,printExportAllDeclaration:P,printModuleSpecifier:E};}}),Gn=Z({"src/language-js/print/object.js"(e,n){re();var{printDanglingComments:t}=et(),{builders:{line:s,softline:a,group:r,indent:u,ifBreak:i,hardline:o}}=Oe(),{getLast:c,hasNewlineInRange:y,hasNewline:m,isNonEmptyArray:d}=Ue(),{shouldPrintComma:p,hasComment:f,getComments:h,CommentCheckFlags:w,isNextLineEmpty:T}=Ke(),{locStart:A,locEnd:S}=st(),{printOptionalToken:B,printTypeAnnotation:I}=ct(),{shouldHugFunctionParameters:k}=wr(),{shouldHugType:P}=_r(),{printHardlineAfterHeritage:C}=Yt();function D(g,F,l){let E=F.semi?";":"",v=g.getValue(),N;v.type==="TSTypeLiteral"?N="members":v.type==="TSInterfaceBody"?N="body":N="properties";let x=v.type==="ObjectTypeAnnotation",b=[N];x&&b.push("indexers","callProperties","internalSlots");let L=b.map(W=>v[W][0]).sort((W,X)=>A(W)-A(X))[0],M=g.getParentNode(0),j=x&&M&&(M.type==="InterfaceDeclaration"||M.type==="DeclareInterface"||M.type==="DeclareClass")&&g.getName()==="body",$=v.type==="TSInterfaceBody"||j||v.type==="ObjectPattern"&&M.type!=="FunctionDeclaration"&&M.type!=="FunctionExpression"&&M.type!=="ArrowFunctionExpression"&&M.type!=="ObjectMethod"&&M.type!=="ClassMethod"&&M.type!=="ClassPrivateMethod"&&M.type!=="AssignmentPattern"&&M.type!=="CatchClause"&&v.properties.some(W=>W.value&&(W.value.type==="ObjectPattern"||W.value.type==="ArrayPattern"))||v.type!=="ObjectPattern"&&L&&y(F.originalText,A(v),A(L)),V=j?";":v.type==="TSInterfaceBody"||v.type==="TSTypeLiteral"?i(E,";"):",",q=v.type==="RecordExpression"?"#{":v.exact?"{|":"{",Y=v.exact?"|}":"}",H=[];for(let W of b)g.each(X=>{let ue=X.getValue();H.push({node:ue,printed:l(),loc:A(ue)});},W);b.length>1&&H.sort((W,X)=>W.loc-X.loc);let R=[],Q=H.map(W=>{let X=[...R,r(W.printed)];return R=[V,s],(W.node.type==="TSPropertySignature"||W.node.type==="TSMethodSignature"||W.node.type==="TSConstructSignatureDeclaration")&&f(W.node,w.PrettierIgnore)&&R.shift(),T(W.node,F)&&R.push(o),X});if(v.inexact){let W;if(f(v,w.Dangling)){let X=f(v,w.Line);W=[t(g,F,!0),X||m(F.originalText,S(c(h(v))))?o:s,"..."];}else W=["..."];Q.push([...R,...W]);}let ee=c(v[N]),te=!(v.inexact||ee&&ee.type==="RestElement"||ee&&(ee.type==="TSPropertySignature"||ee.type==="TSCallSignatureDeclaration"||ee.type==="TSMethodSignature"||ee.type==="TSConstructSignatureDeclaration")&&f(ee,w.PrettierIgnore)),oe;if(Q.length===0){if(!f(v,w.Dangling))return [q,Y,I(g,F,l)];oe=r([q,t(g,F),a,Y,B(g),I(g,F,l)]);}else oe=[j&&d(v.properties)?C(M):"",q,u([F.bracketSpacing?s:a,...Q]),i(te&&(V!==","||p(F))?V:""),F.bracketSpacing?s:a,Y,B(g),I(g,F,l)];return g.match(W=>W.type==="ObjectPattern"&&!W.decorators,(W,X,ue)=>k(W)&&(X==="params"||X==="parameters"||X==="this"||X==="rest")&&ue===0)||g.match(P,(W,X)=>X==="typeAnnotation",(W,X)=>X==="typeAnnotation",(W,X,ue)=>k(W)&&(X==="params"||X==="parameters"||X==="this"||X==="rest")&&ue===0)||!$&&g.match(W=>W.type==="ObjectPattern",W=>W.type==="AssignmentExpression"||W.type==="VariableDeclarator")?oe:r(oe,{shouldBreak:$})}n.exports={printObject:D};}}),Mm=Z({"src/language-js/print/flow.js"(e,n){re();var t=Ut(),{printDanglingComments:s}=et(),{printString:a,printNumber:r}=Ue(),{builders:{hardline:u,softline:i,group:o,indent:c}}=Oe(),{getParentExportDeclaration:y,isFunctionNotation:m,isGetterOrSetter:d,rawText:p,shouldPrintComma:f}=Ke(),{locStart:h,locEnd:w}=st(),{printClass:T}=Yt(),{printOpaqueType:A,printTypeAlias:S,printIntersectionType:B,printUnionType:I,printFunctionType:k,printTupleType:P,printIndexedAccessType:C}=_r(),{printInterface:D}=ro(),{printTypeParameter:g,printTypeParameters:F}=Pr(),{printExportDeclaration:l,printExportAllDeclaration:E}=no(),{printArrayItems:v}=zt(),{printObject:N}=Gn(),{printPropertyKey:x}=Kt(),{printOptionalToken:b,printTypeAnnotation:L,printRestSpread:M}=ct();function j(V,q,Y){let H=V.getValue(),R=q.semi?";":"",Q=[];switch(H.type){case"DeclareClass":return $(V,T(V,q,Y));case"DeclareFunction":return $(V,["function ",Y("id"),H.predicate?" ":"",Y("predicate"),R]);case"DeclareModule":return $(V,["module ",Y("id")," ",Y("body")]);case"DeclareModuleExports":return $(V,["module.exports",": ",Y("typeAnnotation"),R]);case"DeclareVariable":return $(V,["var ",Y("id"),R]);case"DeclareOpaqueType":return $(V,A(V,q,Y));case"DeclareInterface":return $(V,D(V,q,Y));case"DeclareTypeAlias":return $(V,S(V,q,Y));case"DeclareExportDeclaration":return $(V,l(V,q,Y));case"DeclareExportAllDeclaration":return $(V,E(V,q,Y));case"OpaqueType":return A(V,q,Y);case"TypeAlias":return S(V,q,Y);case"IntersectionTypeAnnotation":return B(V,q,Y);case"UnionTypeAnnotation":return I(V,q,Y);case"FunctionTypeAnnotation":return k(V,q,Y);case"TupleTypeAnnotation":return P(V,q,Y);case"GenericTypeAnnotation":return [Y("id"),F(V,q,Y,"typeParameters")];case"IndexedAccessType":case"OptionalIndexedAccessType":return C(V,q,Y);case"TypeAnnotation":return Y("typeAnnotation");case"TypeParameter":return g(V,q,Y);case"TypeofTypeAnnotation":return ["typeof ",Y("argument")];case"ExistsTypeAnnotation":return "*";case"EmptyTypeAnnotation":return "empty";case"MixedTypeAnnotation":return "mixed";case"ArrayTypeAnnotation":return [Y("elementType"),"[]"];case"BooleanLiteralTypeAnnotation":return String(H.value);case"EnumDeclaration":return ["enum ",Y("id")," ",Y("body")];case"EnumBooleanBody":case"EnumNumberBody":case"EnumStringBody":case"EnumSymbolBody":{if(H.type==="EnumSymbolBody"||H.explicitType){let ee=null;switch(H.type){case"EnumBooleanBody":ee="boolean";break;case"EnumNumberBody":ee="number";break;case"EnumStringBody":ee="string";break;case"EnumSymbolBody":ee="symbol";break}Q.push("of ",ee," ");}if(H.members.length===0&&!H.hasUnknownMembers)Q.push(o(["{",s(V,q),i,"}"]));else {let ee=H.members.length>0?[u,v(V,q,"members",Y),H.hasUnknownMembers||f(q)?",":""]:[];Q.push(o(["{",c([...ee,...H.hasUnknownMembers?[u,"..."]:[]]),s(V,q,!0),u,"}"]));}return Q}case"EnumBooleanMember":case"EnumNumberMember":case"EnumStringMember":return [Y("id")," = ",typeof H.init=="object"?Y("init"):String(H.init)];case"EnumDefaultedMember":return Y("id");case"FunctionTypeParam":{let ee=H.name?Y("name"):V.getParentNode().this===H?"this":"";return [ee,b(V),ee?": ":"",Y("typeAnnotation")]}case"InterfaceDeclaration":case"InterfaceTypeAnnotation":return D(V,q,Y);case"ClassImplements":case"InterfaceExtends":return [Y("id"),Y("typeParameters")];case"NullableTypeAnnotation":return ["?",Y("typeAnnotation")];case"Variance":{let{kind:ee}=H;return t.ok(ee==="plus"||ee==="minus"),ee==="plus"?"+":"-"}case"ObjectTypeCallProperty":return H.static&&Q.push("static "),Q.push(Y("value")),Q;case"ObjectTypeIndexer":return [H.static?"static ":"",H.variance?Y("variance"):"","[",Y("id"),H.id?": ":"",Y("key"),"]: ",Y("value")];case"ObjectTypeProperty":{let ee="";return H.proto?ee="proto ":H.static&&(ee="static "),[ee,d(H)?H.kind+" ":"",H.variance?Y("variance"):"",x(V,q,Y),b(V),m(H)?"":": ",Y("value")]}case"ObjectTypeAnnotation":return N(V,q,Y);case"ObjectTypeInternalSlot":return [H.static?"static ":"","[[",Y("id"),"]]",b(V),H.method?"":": ",Y("value")];case"ObjectTypeSpreadProperty":return M(V,q,Y);case"QualifiedTypeofIdentifier":case"QualifiedTypeIdentifier":return [Y("qualification"),".",Y("id")];case"StringLiteralTypeAnnotation":return a(p(H),q);case"NumberLiteralTypeAnnotation":t.strictEqual(typeof H.value,"number");case"BigIntLiteralTypeAnnotation":return H.extra?r(H.extra.raw):r(H.raw);case"TypeCastExpression":return ["(",Y("expression"),L(V,q,Y),")"];case"TypeParameterDeclaration":case"TypeParameterInstantiation":{let ee=F(V,q,Y,"params");if(q.parser==="flow"){let te=h(H),oe=w(H),W=q.originalText.lastIndexOf("/*",te),X=q.originalText.indexOf("*/",oe);if(W!==-1&&X!==-1){let ue=q.originalText.slice(W+2,X).trim();if(ue.startsWith("::")&&!ue.includes("/*")&&!ue.includes("*/"))return ["/*:: ",ee," */"]}}return ee}case"InferredPredicate":return "%checks";case"DeclaredPredicate":return ["%checks(",Y("value"),")"];case"AnyTypeAnnotation":return "any";case"BooleanTypeAnnotation":return "boolean";case"BigIntTypeAnnotation":return "bigint";case"NullLiteralTypeAnnotation":return "null";case"NumberTypeAnnotation":return "number";case"SymbolTypeAnnotation":return "symbol";case"StringTypeAnnotation":return "string";case"VoidTypeAnnotation":return "void";case"ThisTypeAnnotation":return "this";case"Node":case"Printable":case"SourceLocation":case"Position":case"Statement":case"Function":case"Pattern":case"Expression":case"Declaration":case"Specifier":case"NamedSpecifier":case"Comment":case"MemberTypeAnnotation":case"Type":throw new Error("unprintable type: "+JSON.stringify(H.type))}}function $(V,q){let Y=y(V);return Y?(t.strictEqual(Y.type,"DeclareExportDeclaration"),q):["declare ",q]}n.exports={printFlow:j};}}),Rm=Z({"src/language-js/utils/is-ts-keyword-type.js"(e,n){re();function t(s){let{type:a}=s;return a.startsWith("TS")&&a.endsWith("Keyword")}n.exports=t;}}),uo=Z({"src/language-js/print/ternary.js"(e,n){re();var{hasNewlineInRange:t}=Ue(),{isJsxNode:s,getComments:a,isCallExpression:r,isMemberExpression:u}=Ke(),{locStart:i,locEnd:o}=st(),c=Pt(),{builders:{line:y,softline:m,group:d,indent:p,align:f,ifBreak:h,dedent:w,breakParent:T}}=Oe();function A(P){let C=[P];for(let D=0;D<C.length;D++){let g=C[D];for(let F of ["test","consequent","alternate"]){let l=g[F];if(s(l))return !0;l.type==="ConditionalExpression"&&C.push(l);}}return !1}function S(P,C,D){let g=P.getValue(),F=g.type==="ConditionalExpression",l=F?"alternate":"falseType",E=P.getParentNode(),v=F?D("test"):[D("checkType")," ","extends"," ",D("extendsType")];return E.type===g.type&&E[l]===g?f(2,v):v}var B=new Map([["AssignmentExpression","right"],["VariableDeclarator","init"],["ReturnStatement","argument"],["ThrowStatement","argument"],["UnaryExpression","argument"],["YieldExpression","argument"]]);function I(P){let C=P.getValue();if(C.type!=="ConditionalExpression")return !1;let D,g=C;for(let F=0;!D;F++){let l=P.getParentNode(F);if(r(l)&&l.callee===g||u(l)&&l.object===g||l.type==="TSNonNullExpression"&&l.expression===g){g=l;continue}l.type==="NewExpression"&&l.callee===g||l.type==="TSAsExpression"&&l.expression===g?(D=P.getParentNode(F+1),g=l):D=l;}return g===C?!1:D[B.get(D.type)]===g}function k(P,C,D){let g=P.getValue(),F=g.type==="ConditionalExpression",l=F?"consequent":"trueType",E=F?"alternate":"falseType",v=F?["test"]:["checkType","extendsType"],N=g[l],x=g[E],b=[],L=!1,M=P.getParentNode(),j=M.type===g.type&&v.some(ue=>M[ue]===g),$=M.type===g.type&&!j,V,q,Y=0;do q=V||g,V=P.getParentNode(Y),Y++;while(V&&V.type===g.type&&v.every(ue=>V[ue]!==q));let H=V||M,R=q;if(F&&(s(g[v[0]])||s(N)||s(x)||A(R))){L=!0,$=!0;let ue=ie=>[h("("),p([m,ie]),m,h(")")],De=ie=>ie.type==="NullLiteral"||ie.type==="Literal"&&ie.value===null||ie.type==="Identifier"&&ie.name==="undefined";b.push(" ? ",De(N)?D(l):ue(D(l))," : ",x.type===g.type||De(x)?D(E):ue(D(E)));}else {let ue=[y,"? ",N.type===g.type?h("","("):"",f(2,D(l)),N.type===g.type?h("",")"):"",y,": ",x.type===g.type?D(E):f(2,D(E))];b.push(M.type!==g.type||M[E]===g||j?ue:C.useTabs?w(p(ue)):f(Math.max(0,C.tabWidth-2),ue));}let ee=[...v.map(ue=>a(g[ue])),a(N),a(x)].flat().some(ue=>c(ue)&&t(C.originalText,i(ue),o(ue))),te=ue=>M===H?d(ue,{shouldBreak:ee}):ee?[ue,T]:ue,oe=!L&&(u(M)||M.type==="NGPipeExpression"&&M.left===g)&&!M.computed,W=I(P),X=te([S(P,C,D),$?b:p(b),F&&oe&&!W?m:""]);return j||W?d([p([m,X]),m]):X}n.exports={printTernary:k};}}),so=Z({"src/language-js/print/statement.js"(e,n){re();var{builders:{hardline:t}}=Oe(),s=It(),{getLeftSidePathName:a,hasNakedLeftSide:r,isJsxNode:u,isTheOnlyJsxElementInMarkdown:i,hasComment:o,CommentCheckFlags:c,isNextLineEmpty:y}=Ke(),{shouldPrintParamsWithoutParens:m}=kr();function d(B,I,k,P){let C=B.getValue(),D=[],g=C.type==="ClassBody",F=p(C[P]);return B.each((l,E,v)=>{let N=l.getValue();if(N.type==="EmptyStatement")return;let x=k();!I.semi&&!g&&!i(I,l)&&f(l,I)?o(N,c.Leading)?D.push(k([],{needsSemi:!0})):D.push(";",x):D.push(x),!I.semi&&g&&A(N)&&S(N,v[E+1])&&D.push(";"),N!==F&&(D.push(t),y(N,I)&&D.push(t));},P),D}function p(B){for(let I=B.length-1;I>=0;I--){let k=B[I];if(k.type!=="EmptyStatement")return k}}function f(B,I){return B.getNode().type!=="ExpressionStatement"?!1:B.call(P=>h(P,I),"expression")}function h(B,I){let k=B.getValue();switch(k.type){case"ParenthesizedExpression":case"TypeCastExpression":case"ArrayExpression":case"ArrayPattern":case"TemplateLiteral":case"TemplateElement":case"RegExpLiteral":return !0;case"ArrowFunctionExpression":{if(!m(B,I))return !0;break}case"UnaryExpression":{let{prefix:P,operator:C}=k;if(P&&(C==="+"||C==="-"))return !0;break}case"BindExpression":{if(!k.object)return !0;break}case"Literal":{if(k.regex)return !0;break}default:if(u(k))return !0}return s(B,I)?!0:r(k)?B.call(P=>h(P,I),...a(B,k)):!1}function w(B,I,k){return d(B,I,k,"body")}function T(B,I,k){return d(B,I,k,"consequent")}var A=B=>{let{type:I}=B;return I==="ClassProperty"||I==="PropertyDefinition"||I==="ClassPrivateProperty"||I==="ClassAccessorProperty"};function S(B,I){let k=B.key&&B.key.name;if((k==="static"||k==="get"||k==="set")&&!B.value&&!B.typeAnnotation)return !0;if(!I||I.static||I.accessibility)return !1;if(!I.computed){let P=I.key&&I.key.name;if(P==="in"||P==="instanceof")return !0}if(A(I)&&I.variance&&!I.static&&!I.declare)return !0;switch(I.type){case"ClassProperty":case"PropertyDefinition":case"TSAbstractPropertyDefinition":return I.computed;case"MethodDefinition":case"TSAbstractMethodDefinition":case"ClassMethod":case"ClassPrivateMethod":{if((I.value?I.value.async:I.async)||I.kind==="get"||I.kind==="set")return !1;let C=I.value?I.value.generator:I.generator;return !!(I.computed||C)}case"TSIndexSignature":return !0}return !1}n.exports={printBody:w,printSwitchCaseConsequent:T};}}),io=Z({"src/language-js/print/block.js"(e,n){re();var{printDanglingComments:t}=et(),{isNonEmptyArray:s}=Ue(),{builders:{hardline:a,indent:r}}=Oe(),{hasComment:u,CommentCheckFlags:i,isNextLineEmpty:o}=Ke(),{printHardlineAfterHeritage:c}=Yt(),{printBody:y}=so();function m(p,f,h){let w=p.getValue(),T=[];if(w.type==="StaticBlock"&&T.push("static "),w.type==="ClassBody"&&s(w.body)){let S=p.getParentNode();T.push(c(S));}T.push("{");let A=d(p,f,h);if(A)T.push(r([a,A]),a);else {let S=p.getParentNode(),B=p.getParentNode(1);S.type==="ArrowFunctionExpression"||S.type==="FunctionExpression"||S.type==="FunctionDeclaration"||S.type==="ObjectMethod"||S.type==="ClassMethod"||S.type==="ClassPrivateMethod"||S.type==="ForStatement"||S.type==="WhileStatement"||S.type==="DoWhileStatement"||S.type==="DoExpression"||S.type==="CatchClause"&&!B.finalizer||S.type==="TSModuleDeclaration"||S.type==="TSDeclareFunction"||w.type==="StaticBlock"||w.type==="ClassBody"||T.push(a);}return T.push("}"),T}function d(p,f,h){let w=p.getValue(),T=s(w.directives),A=w.body.some(I=>I.type!=="EmptyStatement"),S=u(w,i.Dangling);if(!T&&!A&&!S)return "";let B=[];if(T&&p.each((I,k,P)=>{B.push(h()),(k<P.length-1||A||S)&&(B.push(a),o(I.getValue(),f)&&B.push(a));},"directives"),A&&B.push(y(p,f,h)),S&&B.push(t(p,f,!0)),w.type==="Program"){let I=p.getParentNode();(!I||I.type!=="ModuleExpression")&&B.push(a);}return B}n.exports={printBlock:m,printBlockBody:d};}}),Vm=Z({"src/language-js/print/typescript.js"(e,n){re();var{printDanglingComments:t}=et(),{hasNewlineInRange:s}=Ue(),{builders:{join:a,line:r,hardline:u,softline:i,group:o,indent:c,conditionalGroup:y,ifBreak:m}}=Oe(),{isLiteral:d,getTypeScriptMappedTypeModifier:p,shouldPrintComma:f,isCallExpression:h,isMemberExpression:w}=Ke(),T=Rm(),{locStart:A,locEnd:S}=st(),{printOptionalToken:B,printTypeScriptModifiers:I}=ct(),{printTernary:k}=uo(),{printFunctionParameters:P,shouldGroupFunctionParameters:C}=wr(),{printTemplateLiteral:D}=kt(),{printArrayItems:g}=zt(),{printObject:F}=Gn(),{printClassProperty:l,printClassMethod:E}=Yt(),{printTypeParameter:v,printTypeParameters:N}=Pr(),{printPropertyKey:x}=Kt(),{printFunction:b,printMethodInternal:L}=kr(),{printInterface:M}=ro(),{printBlock:j}=io(),{printTypeAlias:$,printIntersectionType:V,printUnionType:q,printFunctionType:Y,printTupleType:H,printIndexedAccessType:R,printJSDocType:Q}=_r();function ee(te,oe,W){let X=te.getValue();if(!X.type.startsWith("TS"))return;if(T(X))return X.type.slice(2,-7).toLowerCase();let ue=oe.semi?";":"",De=[];switch(X.type){case"TSThisType":return "this";case"TSTypeAssertion":{let ie=!(X.expression.type==="ArrayExpression"||X.expression.type==="ObjectExpression"),G=o(["<",c([i,W("typeAnnotation")]),i,">"]),z=[m("("),c([i,W("expression")]),i,m(")")];return ie?y([[G,W("expression")],[G,o(z,{shouldBreak:!0})],[G,W("expression")]]):o([G,W("expression")])}case"TSDeclareFunction":return b(te,W,oe);case"TSExportAssignment":return ["export = ",W("expression"),ue];case"TSModuleBlock":return j(te,oe,W);case"TSInterfaceBody":case"TSTypeLiteral":return F(te,oe,W);case"TSTypeAliasDeclaration":return $(te,oe,W);case"TSQualifiedName":return a(".",[W("left"),W("right")]);case"TSAbstractMethodDefinition":case"TSDeclareMethod":return E(te,oe,W);case"TSAbstractPropertyDefinition":return l(te,oe,W);case"TSInterfaceHeritage":case"TSExpressionWithTypeArguments":return De.push(W("expression")),X.typeParameters&&De.push(W("typeParameters")),De;case"TSTemplateLiteralType":return D(te,W,oe);case"TSNamedTupleMember":return [W("label"),X.optional?"?":"",": ",W("elementType")];case"TSRestType":return ["...",W("typeAnnotation")];case"TSOptionalType":return [W("typeAnnotation"),"?"];case"TSInterfaceDeclaration":return M(te,oe,W);case"TSClassImplements":return [W("expression"),W("typeParameters")];case"TSTypeParameterDeclaration":case"TSTypeParameterInstantiation":return N(te,oe,W,"params");case"TSTypeParameter":return v(te,oe,W);case"TSAsExpression":{De.push(W("expression")," as ",W("typeAnnotation"));let ie=te.getParentNode();return h(ie)&&ie.callee===X||w(ie)&&ie.object===X?o([c([i,...De]),i]):De}case"TSArrayType":return [W("elementType"),"[]"];case"TSPropertySignature":return X.readonly&&De.push("readonly "),De.push(x(te,oe,W),B(te)),X.typeAnnotation&&De.push(": ",W("typeAnnotation")),X.initializer&&De.push(" = ",W("initializer")),De;case"TSParameterProperty":return X.accessibility&&De.push(X.accessibility+" "),X.export&&De.push("export "),X.static&&De.push("static "),X.override&&De.push("override "),X.readonly&&De.push("readonly "),De.push(W("parameter")),De;case"TSTypeQuery":return ["typeof ",W("exprName"),W("typeParameters")];case"TSIndexSignature":{let ie=te.getParentNode(),G=X.parameters.length>1?m(f(oe)?",":""):"",z=o([c([i,a([", ",i],te.map(W,"parameters"))]),G,i]);return [X.export?"export ":"",X.accessibility?[X.accessibility," "]:"",X.static?"static ":"",X.readonly?"readonly ":"",X.declare?"declare ":"","[",X.parameters?z:"",X.typeAnnotation?"]: ":"]",X.typeAnnotation?W("typeAnnotation"):"",ie.type==="ClassBody"?ue:""]}case"TSTypePredicate":return [X.asserts?"asserts ":"",W("parameterName"),X.typeAnnotation?[" is ",W("typeAnnotation")]:""];case"TSNonNullExpression":return [W("expression"),"!"];case"TSImportType":return [X.isTypeOf?"typeof ":"","import(",W(X.parameter?"parameter":"argument"),")",X.qualifier?[".",W("qualifier")]:"",N(te,oe,W,"typeParameters")];case"TSLiteralType":return W("literal");case"TSIndexedAccessType":return R(te,oe,W);case"TSConstructSignatureDeclaration":case"TSCallSignatureDeclaration":case"TSConstructorType":{if(X.type==="TSConstructorType"&&X.abstract&&De.push("abstract "),X.type!=="TSCallSignatureDeclaration"&&De.push("new "),De.push(o(P(te,W,oe,!1,!0))),X.returnType||X.typeAnnotation){let ie=X.type==="TSConstructorType";De.push(ie?" => ":": ",W("returnType"),W("typeAnnotation"));}return De}case"TSTypeOperator":return [X.operator," ",W("typeAnnotation")];case"TSMappedType":{let ie=s(oe.originalText,A(X),S(X));return o(["{",c([oe.bracketSpacing?r:i,X.readonly?[p(X.readonly,"readonly")," "]:"",I(te,oe,W),W("typeParameter"),X.optional?p(X.optional,"?"):"",X.typeAnnotation?": ":"",W("typeAnnotation"),m(ue)]),t(te,oe,!0),oe.bracketSpacing?r:i,"}"],{shouldBreak:ie})}case"TSMethodSignature":{let ie=X.kind&&X.kind!=="method"?"".concat(X.kind," "):"";De.push(X.accessibility?[X.accessibility," "]:"",ie,X.export?"export ":"",X.static?"static ":"",X.readonly?"readonly ":"",X.abstract?"abstract ":"",X.declare?"declare ":"",X.computed?"[":"",W("key"),X.computed?"]":"",B(te));let G=P(te,W,oe,!1,!0),z=X.returnType?"returnType":"typeAnnotation",U=X[z],le=U?W(z):"",ge=C(X,le);return De.push(ge?o(G):G),U&&De.push(": ",o(le)),o(De)}case"TSNamespaceExportDeclaration":return De.push("export as namespace ",W("id")),oe.semi&&De.push(";"),o(De);case"TSEnumDeclaration":return X.declare&&De.push("declare "),X.modifiers&&De.push(I(te,oe,W)),X.const&&De.push("const "),De.push("enum ",W("id")," "),X.members.length===0?De.push(o(["{",t(te,oe),i,"}"])):De.push(o(["{",c([u,g(te,oe,"members",W),f(oe,"es5")?",":""]),t(te,oe,!0),u,"}"])),De;case"TSEnumMember":return X.computed?De.push("[",W("id"),"]"):De.push(W("id")),X.initializer&&De.push(" = ",W("initializer")),De;case"TSImportEqualsDeclaration":return X.isExport&&De.push("export "),De.push("import "),X.importKind&&X.importKind!=="value"&&De.push(X.importKind," "),De.push(W("id")," = ",W("moduleReference")),oe.semi&&De.push(";"),o(De);case"TSExternalModuleReference":return ["require(",W("expression"),")"];case"TSModuleDeclaration":{let ie=te.getParentNode(),G=d(X.id),z=ie.type==="TSModuleDeclaration",U=X.body&&X.body.type==="TSModuleDeclaration";if(z)De.push(".");else {X.declare&&De.push("declare "),De.push(I(te,oe,W));let le=oe.originalText.slice(A(X),A(X.id));X.id.type==="Identifier"&&X.id.name==="global"&&!/namespace|module/.test(le)||De.push(G||/(?:^|\s)module(?:\s|$)/.test(le)?"module ":"namespace ");}return De.push(W("id")),U?De.push(W("body")):X.body?De.push(" ",o(W("body"))):De.push(ue),De}case"TSConditionalType":return k(te,oe,W);case"TSInferType":return ["infer"," ",W("typeParameter")];case"TSIntersectionType":return V(te,oe,W);case"TSUnionType":return q(te,oe,W);case"TSFunctionType":return Y(te,oe,W);case"TSTupleType":return H(te,oe,W);case"TSTypeReference":return [W("typeName"),N(te,oe,W,"typeParameters")];case"TSTypeAnnotation":return W("typeAnnotation");case"TSEmptyBodyFunctionExpression":return L(te,oe,W);case"TSJSDocAllType":return "*";case"TSJSDocUnknownType":return "?";case"TSJSDocNullableType":return Q(te,W,"?");case"TSJSDocNonNullableType":return Q(te,W,"!");case"TSInstantiationExpression":return [W("expression"),W("typeParameters")];default:throw new Error("Unknown TypeScript node type: ".concat(JSON.stringify(X.type),"."))}}n.exports={printTypescript:ee};}}),Wm=Z({"src/language-js/print/comment.js"(e,n){re();var{hasNewline:t}=Ue(),{builders:{join:s,hardline:a},utils:{replaceTextEndOfLine:r}}=Oe(),{isLineComment:u}=Ke(),{locStart:i,locEnd:o}=st(),c=Pt();function y(p,f){let h=p.getValue();if(u(h))return f.originalText.slice(i(h),o(h)).trimEnd();if(c(h)){if(m(h)){let A=d(h);return h.trailing&&!t(f.originalText,i(h),{backwards:!0})?[a,A]:A}let w=o(h),T=f.originalText.slice(w-3,w)==="*-/";return ["/*",r(h.value),T?"*-/":"*/"]}throw new Error("Not a comment: "+JSON.stringify(h))}function m(p){let f="*".concat(p.value,"*").split(` -`);return f.length>1&&f.every(h=>h.trim()[0]==="*")}function d(p){let f=p.value.split(` -`);return ["/*",s(a,f.map((h,w)=>w===0?h.trimEnd():" "+(w<f.length-1?h.trim():h.trimStart()))),"*/"]}n.exports={printComment:y};}}),$m=Z({"src/language-js/print/literal.js"(e,n){re();var{printString:t,printNumber:s}=Ue();function a(i,o){let c=i.getNode();switch(c.type){case"RegExpLiteral":return u(c);case"BigIntLiteral":return r(c.bigint||c.extra.raw);case"NumericLiteral":return s(c.extra.raw);case"StringLiteral":return t(c.extra.raw,o);case"NullLiteral":return "null";case"BooleanLiteral":return String(c.value);case"DecimalLiteral":return s(c.value)+"m";case"Literal":{if(c.regex)return u(c.regex);if(c.bigint)return r(c.raw);if(c.decimal)return s(c.decimal)+"m";let{value:y}=c;return typeof y=="number"?s(c.raw):typeof y=="string"?t(c.raw,o):String(y)}}}function r(i){return i.toLowerCase()}function u(i){let{pattern:o,flags:c}=i;return c=[...c].sort().join(""),"/".concat(o,"/").concat(c)}n.exports={printLiteral:a};}}),Hm=Z({"src/language-js/printer-estree.js"(e,n){re();var{printDanglingComments:t}=et(),{hasNewline:s}=Ue(),{builders:{join:a,line:r,hardline:u,softline:i,group:o,indent:c},utils:{replaceTextEndOfLine:y}}=Oe(),m=bm(),d=Tm(),{insertPragma:p}=Ka(),f=Ya(),h=It(),w=Qa(),{hasFlowShorthandAnnotationComment:T,hasComment:A,CommentCheckFlags:S,isTheOnlyJsxElementInMarkdown:B,isLineComment:I,isNextLineEmpty:k,needsHardlineAfterDanglingComment:P,rawText:C,hasIgnoreComment:D,isCallExpression:g,isMemberExpression:F,markerForIfWithoutBlockAndSameLineComment:l}=Ke(),{locStart:E,locEnd:v}=st(),N=Pt(),{printHtmlBinding:x,isVueEventBindingExpression:b}=Lm(),{printAngular:L}=jm(),{printJsx:M,hasJsxIgnoreComment:j}=Om(),{printFlow:$}=Mm(),{printTypescript:V}=Vm(),{printOptionalToken:q,printBindExpressionCallee:Y,printTypeAnnotation:H,adjustClause:R,printRestSpread:Q,printDefiniteToken:ee}=ct(),{printImportDeclaration:te,printExportDeclaration:oe,printExportAllDeclaration:W,printModuleSpecifier:X}=no(),{printTernary:ue}=uo(),{printTemplateLiteral:De}=kt(),{printArray:ie}=zt(),{printObject:G}=Gn(),{printClass:z,printClassMethod:U,printClassProperty:le}=Yt(),{printProperty:ge}=Kt(),{printFunction:Ae,printArrowFunction:Ne,printMethod:ke,printReturnStatement:ce,printThrowStatement:pe}=kr(),{printCallExpression:de}=to(),{printVariableDeclarator:ae,printAssignmentExpression:ve}=Xt(),{printBinaryishExpression:K}=$n(),{printSwitchCaseConsequent:he}=so(),{printMemberExpression:ye}=eo(),{printBlock:Ce,printBlockBody:Ie}=io(),{printComment:Fe}=Wm(),{printLiteral:me}=$m(),{printDecorators:_}=Hn();function J(Be,Pe,Se,Qe){let xe=ne(Be,Pe,Se,Qe);if(!xe)return "";let Xe=Be.getValue(),{type:we}=Xe;if(we==="ClassMethod"||we==="ClassPrivateMethod"||we==="ClassProperty"||we==="ClassAccessorProperty"||we==="PropertyDefinition"||we==="TSAbstractPropertyDefinition"||we==="ClassPrivateProperty"||we==="MethodDefinition"||we==="TSAbstractMethodDefinition"||we==="TSDeclareMethod")return xe;let je=[xe],Re=_(Be,Pe,Se),be=Xe.type==="ClassExpression"&ℜif(Re&&(je=[...Re,xe],!be))return o(je);if(!h(Be,Pe))return Qe&&Qe.needsSemi&&je.unshift(";"),je.length===1&&je[0]===xe?xe:je;if(be&&(je=[c([r,...je])]),je.unshift("("),Qe&&Qe.needsSemi&&je.unshift(";"),T(Xe)){let[qe]=Xe.trailingComments;je.push(" /*",qe.value.trimStart(),"*/"),qe.printed=!0;}return be&&je.push(r),je.push(")"),je}function ne(Be,Pe,Se,Qe){let xe=Be.getValue(),Xe=Pe.semi?";":"";if(!xe)return "";if(typeof xe=="string")return xe;for(let je of [me,x,L,M,$,V]){let Re=je(Be,Pe,Se);if(typeof Re<"u")return Re}let we=[];switch(xe.type){case"JsExpressionRoot":return Se("node");case"JsonRoot":return [Se("node"),u];case"File":return xe.program&&xe.program.interpreter&&we.push(Se(["program","interpreter"])),we.push(Se("program")),we;case"Program":return Ie(Be,Pe,Se);case"EmptyStatement":return "";case"ExpressionStatement":{if(xe.directive)return [Ee(xe.expression,Pe),Xe];if(Pe.parser==="__vue_event_binding"||Pe.parser==="__vue_ts_event_binding"){let Re=Be.getParentNode();if(Re.type==="Program"&&Re.body.length===1&&Re.body[0]===xe)return [Se("expression"),b(xe.expression)?";":""]}let je=t(Be,Pe,!0,Re=>{let{marker:be}=Re;return be===l});return [Se("expression"),B(Pe,Be)?"":Xe,je?[" ",je]:""]}case"ParenthesizedExpression":return !A(xe.expression)&&(xe.expression.type==="ObjectExpression"||xe.expression.type==="ArrayExpression")?["(",Se("expression"),")"]:o(["(",c([i,Se("expression")]),i,")"]);case"AssignmentExpression":return ve(Be,Pe,Se);case"VariableDeclarator":return ae(Be,Pe,Se);case"BinaryExpression":case"LogicalExpression":return K(Be,Pe,Se);case"AssignmentPattern":return [Se("left")," = ",Se("right")];case"OptionalMemberExpression":case"MemberExpression":return ye(Be,Pe,Se);case"MetaProperty":return [Se("meta"),".",Se("property")];case"BindExpression":return xe.object&&we.push(Se("object")),we.push(o(c([i,Y(Be,Pe,Se)]))),we;case"Identifier":return [xe.name,q(Be),ee(Be),H(Be,Pe,Se)];case"V8IntrinsicIdentifier":return ["%",xe.name];case"SpreadElement":case"SpreadElementPattern":case"SpreadProperty":case"SpreadPropertyPattern":case"RestElement":return Q(Be,Pe,Se);case"FunctionDeclaration":case"FunctionExpression":return Ae(Be,Se,Pe,Qe);case"ArrowFunctionExpression":return Ne(Be,Pe,Se,Qe);case"YieldExpression":return we.push("yield"),xe.delegate&&we.push("*"),xe.argument&&we.push(" ",Se("argument")),we;case"AwaitExpression":{if(we.push("await"),xe.argument){we.push(" ",Se("argument"));let je=Be.getParentNode();if(g(je)&&je.callee===xe||F(je)&&je.object===xe){we=[c([i,...we]),i];let Re=Be.findAncestor(be=>be.type==="AwaitExpression"||be.type==="BlockStatement");if(!Re||Re.type!=="AwaitExpression")return o(we)}}return we}case"ExportDefaultDeclaration":case"ExportNamedDeclaration":return oe(Be,Pe,Se);case"ExportAllDeclaration":return W(Be,Pe,Se);case"ImportDeclaration":return te(Be,Pe,Se);case"ImportSpecifier":case"ExportSpecifier":case"ImportNamespaceSpecifier":case"ExportNamespaceSpecifier":case"ImportDefaultSpecifier":case"ExportDefaultSpecifier":return X(Be,Pe,Se);case"ImportAttribute":return [Se("key"),": ",Se("value")];case"Import":return "import";case"BlockStatement":case"StaticBlock":case"ClassBody":return Ce(Be,Pe,Se);case"ThrowStatement":return pe(Be,Pe,Se);case"ReturnStatement":return ce(Be,Pe,Se);case"NewExpression":case"ImportExpression":case"OptionalCallExpression":case"CallExpression":return de(Be,Pe,Se);case"ObjectExpression":case"ObjectPattern":case"RecordExpression":return G(Be,Pe,Se);case"ObjectProperty":case"Property":return xe.method||xe.kind==="get"||xe.kind==="set"?ke(Be,Pe,Se):ge(Be,Pe,Se);case"ObjectMethod":return ke(Be,Pe,Se);case"Decorator":return ["@",Se("expression")];case"ArrayExpression":case"ArrayPattern":case"TupleExpression":return ie(Be,Pe,Se);case"SequenceExpression":{let je=Be.getParentNode(0);if(je.type==="ExpressionStatement"||je.type==="ForStatement"){let Re=[];return Be.each((be,Le)=>{Le===0?Re.push(Se()):Re.push(",",c([r,Se()]));},"expressions"),o(Re)}return o(a([",",r],Be.map(Se,"expressions")))}case"ThisExpression":return "this";case"Super":return "super";case"Directive":return [Se("value"),Xe];case"DirectiveLiteral":return Ee(xe,Pe);case"UnaryExpression":return we.push(xe.operator),/[a-z]$/.test(xe.operator)&&we.push(" "),A(xe.argument)?we.push(o(["(",c([i,Se("argument")]),i,")"])):we.push(Se("argument")),we;case"UpdateExpression":return we.push(Se("argument"),xe.operator),xe.prefix&&we.reverse(),we;case"ConditionalExpression":return ue(Be,Pe,Se);case"VariableDeclaration":{let je=Be.map(Se,"declarations"),Re=Be.getParentNode(),be=Re.type==="ForStatement"||Re.type==="ForInStatement"||Re.type==="ForOfStatement",Le=xe.declarations.some(se=>se.init),qe;return je.length===1&&!A(xe.declarations[0])?qe=je[0]:je.length>0&&(qe=c(je[0])),we=[xe.declare?"declare ":"",xe.kind,qe?[" ",qe]:"",c(je.slice(1).map(se=>[",",Le&&!be?u:r,se]))],be&&Re.body!==xe||we.push(Xe),o(we)}case"WithStatement":return o(["with (",Se("object"),")",R(xe.body,Se("body"))]);case"IfStatement":{let je=R(xe.consequent,Se("consequent")),Re=o(["if (",o([c([i,Se("test")]),i]),")",je]);if(we.push(Re),xe.alternate){let be=A(xe.consequent,S.Trailing|S.Line)||P(xe),Le=xe.consequent.type==="BlockStatement"&&!be;we.push(Le?" ":u),A(xe,S.Dangling)&&we.push(t(Be,Pe,!0),be?u:" "),we.push("else",o(R(xe.alternate,Se("alternate"),xe.alternate.type==="IfStatement")));}return we}case"ForStatement":{let je=R(xe.body,Se("body")),Re=t(Be,Pe,!0),be=Re?[Re,i]:"";return !xe.init&&!xe.test&&!xe.update?[be,o(["for (;;)",je])]:[be,o(["for (",o([c([i,Se("init"),";",r,Se("test"),";",r,Se("update")]),i]),")",je])]}case"WhileStatement":return o(["while (",o([c([i,Se("test")]),i]),")",R(xe.body,Se("body"))]);case"ForInStatement":return o(["for (",Se("left")," in ",Se("right"),")",R(xe.body,Se("body"))]);case"ForOfStatement":return o(["for",xe.await?" await":""," (",Se("left")," of ",Se("right"),")",R(xe.body,Se("body"))]);case"DoWhileStatement":{let je=R(xe.body,Se("body"));return we=[o(["do",je])],xe.body.type==="BlockStatement"?we.push(" "):we.push(u),we.push("while (",o([c([i,Se("test")]),i]),")",Xe),we}case"DoExpression":return [xe.async?"async ":"","do ",Se("body")];case"BreakStatement":return we.push("break"),xe.label&&we.push(" ",Se("label")),we.push(Xe),we;case"ContinueStatement":return we.push("continue"),xe.label&&we.push(" ",Se("label")),we.push(Xe),we;case"LabeledStatement":return xe.body.type==="EmptyStatement"?[Se("label"),":;"]:[Se("label"),": ",Se("body")];case"TryStatement":return ["try ",Se("block"),xe.handler?[" ",Se("handler")]:"",xe.finalizer?[" finally ",Se("finalizer")]:""];case"CatchClause":if(xe.param){let je=A(xe.param,be=>!N(be)||be.leading&&s(Pe.originalText,v(be))||be.trailing&&s(Pe.originalText,E(be),{backwards:!0})),Re=Se("param");return ["catch ",je?["(",c([i,Re]),i,") "]:["(",Re,") "],Se("body")]}return ["catch ",Se("body")];case"SwitchStatement":return [o(["switch (",c([i,Se("discriminant")]),i,")"])," {",xe.cases.length>0?c([u,a(u,Be.map((je,Re,be)=>{let Le=je.getValue();return [Se(),Re!==be.length-1&&k(Le,Pe)?u:""]},"cases"))]):"",u,"}"];case"SwitchCase":{xe.test?we.push("case ",Se("test"),":"):we.push("default:"),A(xe,S.Dangling)&&we.push(" ",t(Be,Pe,!0));let je=xe.consequent.filter(Re=>Re.type!=="EmptyStatement");if(je.length>0){let Re=he(Be,Pe,Se);we.push(je.length===1&&je[0].type==="BlockStatement"?[" ",Re]:c([u,Re]));}return we}case"DebuggerStatement":return ["debugger",Xe];case"ClassDeclaration":case"ClassExpression":return z(Be,Pe,Se);case"ClassMethod":case"ClassPrivateMethod":case"MethodDefinition":return U(Be,Pe,Se);case"ClassProperty":case"PropertyDefinition":case"ClassPrivateProperty":case"ClassAccessorProperty":return le(Be,Pe,Se);case"TemplateElement":return y(xe.value.raw);case"TemplateLiteral":return De(Be,Se,Pe);case"TaggedTemplateExpression":return [Se("tag"),Se("typeParameters"),Se("quasi")];case"PrivateIdentifier":return ["#",Se("name")];case"PrivateName":return ["#",Se("id")];case"InterpreterDirective":return we.push("#!",xe.value,u),k(xe,Pe)&&we.push(u),we;case"TopicReference":return "%";case"ArgumentPlaceholder":return "?";case"ModuleExpression":{we.push("module {");let je=Se("body");return je&&we.push(c([u,je]),u),we.push("}"),we}default:throw new Error("unknown type: "+JSON.stringify(xe.type))}}function Ee(Be,Pe){let Se=C(Be),Qe=Se.slice(1,-1);if(Qe.includes('"')||Qe.includes("'"))return Se;let xe=Pe.singleQuote?"'":'"';return xe+Qe+xe}function We(Be){return Be.type&&!N(Be)&&!I(Be)&&Be.type!=="EmptyStatement"&&Be.type!=="TemplateElement"&&Be.type!=="Import"&&Be.type!=="TSEmptyBodyFunctionExpression"}n.exports={preprocess:w,print:J,embed:m,insertPragma:p,massageAstNode:d,hasPrettierIgnore(Be){return D(Be)||j(Be)},willPrintOwnComments:f.willPrintOwnComments,canAttachComment:We,printComment:Fe,isBlockComment:N,handleComments:{avoidAstMutation:!0,ownLine:f.handleOwnLineComment,endOfLine:f.handleEndOfLineComment,remaining:f.handleRemainingComment},getCommentChildNodes:f.getCommentChildNodes};}}),Gm=Z({"src/language-js/printer-estree-json.js"(e,n){re();var{builders:{hardline:t,indent:s,join:a}}=Oe(),r=Qa();function u(c,y,m){let d=c.getValue();switch(d.type){case"JsonRoot":return [m("node"),t];case"ArrayExpression":{if(d.elements.length===0)return "[]";let p=c.map(()=>c.getValue()===null?"null":m(),"elements");return ["[",s([t,a([",",t],p)]),t,"]"]}case"ObjectExpression":return d.properties.length===0?"{}":["{",s([t,a([",",t],c.map(m,"properties"))]),t,"}"];case"ObjectProperty":return [m("key"),": ",m("value")];case"UnaryExpression":return [d.operator==="+"?"":d.operator,m("argument")];case"NullLiteral":return "null";case"BooleanLiteral":return d.value?"true":"false";case"StringLiteral":case"NumericLiteral":return JSON.stringify(d.value);case"Identifier":{let p=c.getParentNode();return p&&p.type==="ObjectProperty"&&p.key===d?JSON.stringify(d.name):d.name}case"TemplateLiteral":return m(["quasis",0]);case"TemplateElement":return JSON.stringify(d.value.cooked);default:throw new Error("unknown type: "+JSON.stringify(d.type))}}var i=new Set(["start","end","extra","loc","comments","leadingComments","trailingComments","innerComments","errors","range","tokens"]);function o(c,y){let{type:m}=c;if(m==="ObjectProperty"&&c.key.type==="Identifier"){y.key={type:"StringLiteral",value:c.key.name};return}if(m==="UnaryExpression"&&c.operator==="+")return y.argument;if(m==="ArrayExpression"){for(let[d,p]of c.elements.entries())p===null&&y.elements.splice(d,0,{type:"NullLiteral"});return}if(m==="TemplateLiteral")return {type:"StringLiteral",value:c.quasis[0].value.cooked}}o.ignoredProperties=i,n.exports={preprocess:r,print:u,massageAstNode:o};}}),Lt=Z({"src/common/common-options.js"(e,n){re();var t="Common";n.exports={bracketSpacing:{since:"0.0.0",category:t,type:"boolean",default:!0,description:"Print spaces between brackets.",oppositeDescription:"Do not print spaces between brackets."},singleQuote:{since:"0.0.0",category:t,type:"boolean",default:!1,description:"Use single quotes instead of double quotes."},proseWrap:{since:"1.8.2",category:t,type:"choice",default:[{since:"1.8.2",value:!0},{since:"1.9.0",value:"preserve"}],description:"How to wrap prose.",choices:[{since:"1.9.0",value:"always",description:"Wrap prose if it exceeds the print width."},{since:"1.9.0",value:"never",description:"Do not wrap prose."},{since:"1.9.0",value:"preserve",description:"Wrap prose as-is."}]},bracketSameLine:{since:"2.4.0",category:t,type:"boolean",default:!1,description:"Put > of opening tags on the last line instead of on a new line."},singleAttributePerLine:{since:"2.6.0",category:t,type:"boolean",default:!1,description:"Enforce single attribute per line in HTML, Vue and JSX."}};}}),Jm=Z({"src/language-js/options.js"(e,n){re();var t=Lt(),s="JavaScript";n.exports={arrowParens:{since:"1.9.0",category:s,type:"choice",default:[{since:"1.9.0",value:"avoid"},{since:"2.0.0",value:"always"}],description:"Include parentheses around a sole arrow function parameter.",choices:[{value:"always",description:"Always include parens. Example: `(x) => x`"},{value:"avoid",description:"Omit parens when possible. Example: `x => x`"}]},bracketSameLine:t.bracketSameLine,bracketSpacing:t.bracketSpacing,jsxBracketSameLine:{since:"0.17.0",category:s,type:"boolean",description:"Put > on the last line instead of at a new line.",deprecated:"2.4.0"},semi:{since:"1.0.0",category:s,type:"boolean",default:!0,description:"Print semicolons.",oppositeDescription:"Do not print semicolons, except at the beginning of lines which may need them."},singleQuote:t.singleQuote,jsxSingleQuote:{since:"1.15.0",category:s,type:"boolean",default:!1,description:"Use single quotes in JSX."},quoteProps:{since:"1.17.0",category:s,type:"choice",default:"as-needed",description:"Change when properties in objects are quoted.",choices:[{value:"as-needed",description:"Only add quotes around object properties where required."},{value:"consistent",description:"If at least one property in an object requires quotes, quote all properties."},{value:"preserve",description:"Respect the input use of quotes in object properties."}]},trailingComma:{since:"0.0.0",category:s,type:"choice",default:[{since:"0.0.0",value:!1},{since:"0.19.0",value:"none"},{since:"2.0.0",value:"es5"}],description:"Print trailing commas wherever possible when multi-line.",choices:[{value:"es5",description:"Trailing commas where valid in ES5 (objects, arrays, etc.)"},{value:"none",description:"No trailing commas."},{value:"all",description:"Trailing commas wherever possible (including function arguments)."}]},singleAttributePerLine:t.singleAttributePerLine};}}),Um=Z({"src/language-js/parse/parsers.js"(){re();}}),Fn=Z({"node_modules/linguist-languages/data/JavaScript.json"(e,n){n.exports={name:"JavaScript",type:"programming",tmScope:"source.js",aceMode:"javascript",codemirrorMode:"javascript",codemirrorMimeType:"text/javascript",color:"#f1e05a",aliases:["js","node"],extensions:[".js","._js",".bones",".cjs",".es",".es6",".frag",".gs",".jake",".javascript",".jsb",".jscad",".jsfl",".jslib",".jsm",".jspre",".jss",".jsx",".mjs",".njs",".pac",".sjs",".ssjs",".xsjs",".xsjslib"],filenames:["Jakefile"],interpreters:["chakra","d8","gjs","js","node","nodejs","qjs","rhino","v8","v8-shell"],languageId:183};}}),zm=Z({"node_modules/linguist-languages/data/TypeScript.json"(e,n){n.exports={name:"TypeScript",type:"programming",color:"#3178c6",aliases:["ts"],interpreters:["deno","ts-node"],extensions:[".ts",".cts",".mts"],tmScope:"source.ts",aceMode:"typescript",codemirrorMode:"javascript",codemirrorMimeType:"application/typescript",languageId:378};}}),Xm=Z({"node_modules/linguist-languages/data/TSX.json"(e,n){n.exports={name:"TSX",type:"programming",color:"#3178c6",group:"TypeScript",extensions:[".tsx"],tmScope:"source.tsx",aceMode:"javascript",codemirrorMode:"jsx",codemirrorMimeType:"text/jsx",languageId:94901924};}}),aa=Z({"node_modules/linguist-languages/data/JSON.json"(e,n){n.exports={name:"JSON",type:"data",color:"#292929",tmScope:"source.json",aceMode:"json",codemirrorMode:"javascript",codemirrorMimeType:"application/json",aliases:["geojson","jsonl","topojson"],extensions:[".json",".4DForm",".4DProject",".avsc",".geojson",".gltf",".har",".ice",".JSON-tmLanguage",".jsonl",".mcmeta",".tfstate",".tfstate.backup",".topojson",".webapp",".webmanifest",".yy",".yyp"],filenames:[".arcconfig",".auto-changelog",".c8rc",".htmlhintrc",".imgbotconfig",".nycrc",".tern-config",".tern-project",".watchmanconfig","Pipfile.lock","composer.lock","mcmod.info"],languageId:174};}}),Km=Z({"node_modules/linguist-languages/data/JSON with Comments.json"(e,n){n.exports={name:"JSON with Comments",type:"data",color:"#292929",group:"JSON",tmScope:"source.js",aceMode:"javascript",codemirrorMode:"javascript",codemirrorMimeType:"text/javascript",aliases:["jsonc"],extensions:[".jsonc",".code-snippets",".sublime-build",".sublime-commands",".sublime-completions",".sublime-keymap",".sublime-macro",".sublime-menu",".sublime-mousemap",".sublime-project",".sublime-settings",".sublime-theme",".sublime-workspace",".sublime_metrics",".sublime_session"],filenames:[".babelrc",".devcontainer.json",".eslintrc.json",".jscsrc",".jshintrc",".jslintrc","api-extractor.json","devcontainer.json","jsconfig.json","language-configuration.json","tsconfig.json","tslint.json"],languageId:423};}}),Ym=Z({"node_modules/linguist-languages/data/JSON5.json"(e,n){n.exports={name:"JSON5",type:"data",color:"#267CB9",extensions:[".json5"],tmScope:"source.js",aceMode:"javascript",codemirrorMode:"javascript",codemirrorMimeType:"application/json",languageId:175};}}),Qm=Z({"src/language-js/index.js"(e,n){re();var t=Tt(),s=Hm(),a=Gm(),r=Jm(),u=Um(),i=[t(Fn(),c=>({since:"0.0.0",parsers:["babel","acorn","espree","meriyah","babel-flow","babel-ts","flow","typescript"],vscodeLanguageIds:["javascript","mongo"],interpreters:[...c.interpreters,"zx"],extensions:[...c.extensions.filter(y=>y!==".jsx"),".wxs"]})),t(Fn(),()=>({name:"Flow",since:"0.0.0",parsers:["flow","babel-flow"],vscodeLanguageIds:["javascript"],aliases:[],filenames:[],extensions:[".js.flow"]})),t(Fn(),()=>({name:"JSX",since:"0.0.0",parsers:["babel","babel-flow","babel-ts","flow","typescript","espree","meriyah"],vscodeLanguageIds:["javascriptreact"],aliases:void 0,filenames:void 0,extensions:[".jsx"],group:"JavaScript",interpreters:void 0,tmScope:"source.js.jsx",aceMode:"javascript",codemirrorMode:"jsx",codemirrorMimeType:"text/jsx",color:void 0})),t(zm(),()=>({since:"1.4.0",parsers:["typescript","babel-ts"],vscodeLanguageIds:["typescript"]})),t(Xm(),()=>({since:"1.4.0",parsers:["typescript","babel-ts"],vscodeLanguageIds:["typescriptreact"]})),t(aa(),()=>({name:"JSON.stringify",since:"1.13.0",parsers:["json-stringify"],vscodeLanguageIds:["json"],extensions:[".importmap"],filenames:["package.json","package-lock.json","composer.json"]})),t(aa(),c=>({since:"1.5.0",parsers:["json"],vscodeLanguageIds:["json"],extensions:c.extensions.filter(y=>y!==".jsonl")})),t(Km(),c=>({since:"1.5.0",parsers:["json"],vscodeLanguageIds:["jsonc"],filenames:[...c.filenames,".eslintrc",".swcrc"]})),t(Ym(),()=>({since:"1.13.0",parsers:["json5"],vscodeLanguageIds:["json5"]}))],o={estree:s,"estree-json":a};n.exports={languages:i,options:r,printers:o,parsers:u};}}),Zm=Z({"src/language-css/clean.js"(e,n){re();var{isFrontMatterNode:t}=Ue(),s=it(),a=new Set(["raw","raws","sourceIndex","source","before","after","trailingComma"]);function r(i,o,c){if(t(i)&&i.lang==="yaml"&&delete o.value,i.type==="css-comment"&&c.type==="css-root"&&c.nodes.length>0&&((c.nodes[0]===i||t(c.nodes[0])&&c.nodes[1]===i)&&(delete o.text,/^\*\s*@(?:format|prettier)\s*$/.test(i.text))||c.type==="css-root"&&s(c.nodes)===i))return null;if(i.type==="value-root"&&delete o.text,(i.type==="media-query"||i.type==="media-query-list"||i.type==="media-feature-expression")&&delete o.value,i.type==="css-rule"&&delete o.params,i.type==="selector-combinator"&&(o.value=o.value.replace(/\s+/g," ")),i.type==="media-feature"&&(o.value=o.value.replace(/ /g,"")),(i.type==="value-word"&&(i.isColor&&i.isHex||["initial","inherit","unset","revert"].includes(o.value.replace().toLowerCase()))||i.type==="media-feature"||i.type==="selector-root-invalid"||i.type==="selector-pseudo")&&(o.value=o.value.toLowerCase()),i.type==="css-decl"&&(o.prop=o.prop.toLowerCase()),(i.type==="css-atrule"||i.type==="css-import")&&(o.name=o.name.toLowerCase()),i.type==="value-number"&&(o.unit=o.unit.toLowerCase()),(i.type==="media-feature"||i.type==="media-keyword"||i.type==="media-type"||i.type==="media-unknown"||i.type==="media-url"||i.type==="media-value"||i.type==="selector-attribute"||i.type==="selector-string"||i.type==="selector-class"||i.type==="selector-combinator"||i.type==="value-string")&&o.value&&(o.value=u(o.value)),i.type==="selector-attribute"&&(o.attribute=o.attribute.trim(),o.namespace&&typeof o.namespace=="string"&&(o.namespace=o.namespace.trim(),o.namespace.length===0&&(o.namespace=!0)),o.value&&(o.value=o.value.trim().replace(/^["']|["']$/g,""),delete o.quoted)),(i.type==="media-value"||i.type==="media-type"||i.type==="value-number"||i.type==="selector-root-invalid"||i.type==="selector-class"||i.type==="selector-combinator"||i.type==="selector-tag")&&o.value&&(o.value=o.value.replace(/([\d+.Ee-]+)([A-Za-z]*)/g,(y,m,d)=>{let p=Number(m);return Number.isNaN(p)?y:p+d.toLowerCase()})),i.type==="selector-tag"){let y=i.value.toLowerCase();["from","to"].includes(y)&&(o.value=y);}if(i.type==="css-atrule"&&i.name.toLowerCase()==="supports"&&delete o.value,i.type==="selector-unknown"&&delete o.value,i.type==="value-comma_group"){let y=i.groups.findIndex(m=>m.type==="value-number"&&m.unit==="...");y!==-1&&(o.groups[y].unit="",o.groups.splice(y+1,0,{type:"value-word",value:"...",isColor:!1,isHex:!1}));}}r.ignoredProperties=a;function u(i){return i.replace(/'/g,'"').replace(/\\([^\dA-Fa-f])/g,"$1")}n.exports=r;}}),Jn=Z({"src/utils/front-matter/print.js"(e,n){re();var{builders:{hardline:t,markAsRoot:s}}=Oe();function a(r,u){if(r.lang==="yaml"){let i=r.value.trim(),o=i?u(i,{parser:"yaml"},{stripTrailingHardline:!0}):"";return s([r.startDelimiter,t,o,o?t:"",r.endDelimiter])}}n.exports=a;}}),ed=Z({"src/language-css/embed.js"(e,n){re();var{builders:{hardline:t}}=Oe(),s=Jn();function a(r,u,i){let o=r.getValue();if(o.type==="front-matter"){let c=s(o,i);return c?[c,t]:""}}n.exports=a;}}),ao=Z({"src/utils/front-matter/parse.js"(e,n){re();var t=new RegExp("^(?<startDelimiter>-{3}|\\+{3})(?<language>[^\\n]*)\\n(?:|(?<value>.*?)\\n)(?<endDelimiter>\\k<startDelimiter>|\\.{3})[^\\S\\n]*(?:\\n|$)","s");function s(a){let r=a.match(t);if(!r)return {content:a};let{startDelimiter:u,language:i,value:o="",endDelimiter:c}=r.groups,y=i.trim()||"yaml";if(u==="+++"&&(y="toml"),y!=="yaml"&&u!==c)return {content:a};let[m]=r;return {frontMatter:{type:"front-matter",lang:y,value:o,startDelimiter:u,endDelimiter:c,raw:m.replace(/\n$/,"")},content:m.replace(/[^\n]/g," ")+a.slice(m.length)}}n.exports=s;}}),td=Z({"src/language-css/pragma.js"(e,n){re();var t=Ka(),s=ao();function a(u){return t.hasPragma(s(u).content)}function r(u){let{frontMatter:i,content:o}=s(u);return (i?i.raw+` - -`:"")+t.insertPragma(o)}n.exports={hasPragma:a,insertPragma:r};}}),rd=Z({"src/language-css/utils/index.js"(e,n){re();var t=new Set(["red","green","blue","alpha","a","rgb","hue","h","saturation","s","lightness","l","whiteness","w","blackness","b","tint","shade","blend","blenda","contrast","hsl","hsla","hwb","hwba"]);function s(G,z){let U=Array.isArray(z)?z:[z],le=-1,ge;for(;ge=G.getParentNode(++le);)if(U.includes(ge.type))return le;return -1}function a(G,z){let U=s(G,z);return U===-1?null:G.getParentNode(U)}function r(G){var z;let U=a(G,"css-decl");return U==null||(z=U.prop)===null||z===void 0?void 0:z.toLowerCase()}var u=new Set(["initial","inherit","unset","revert"]);function i(G){return u.has(G.toLowerCase())}function o(G,z){let U=a(G,"css-atrule");return (U==null?void 0:U.name)&&U.name.toLowerCase().endsWith("keyframes")&&["from","to"].includes(z.toLowerCase())}function c(G){return G.includes("$")||G.includes("@")||G.includes("#")||G.startsWith("%")||G.startsWith("--")||G.startsWith(":--")||G.includes("(")&&G.includes(")")?G:G.toLowerCase()}function y(G,z){var U;let le=a(G,"value-func");return (le==null||(U=le.value)===null||U===void 0?void 0:U.toLowerCase())===z}function m(G){var z;let U=a(G,"css-rule"),le=U==null||(z=U.raws)===null||z===void 0?void 0:z.selector;return le&&(le.startsWith(":import")||le.startsWith(":export"))}function d(G,z){let U=Array.isArray(z)?z:[z],le=a(G,"css-atrule");return le&&U.includes(le.name.toLowerCase())}function p(G){let z=G.getValue(),U=a(G,"css-atrule");return (U==null?void 0:U.name)==="import"&&z.groups[0].value==="url"&&z.groups.length===2}function f(G){return G.type==="value-func"&&G.value.toLowerCase()==="url"}function h(G,z){var U;let le=(U=G.getParentNode())===null||U===void 0?void 0:U.nodes;return le&&le.indexOf(z)===le.length-1}function w(G){let{selector:z}=G;return z?typeof z=="string"&&/^@.+:.*$/.test(z)||z.value&&/^@.+:.*$/.test(z.value):!1}function T(G){return G.type==="value-word"&&["from","through","end"].includes(G.value)}function A(G){return G.type==="value-word"&&["and","or","not"].includes(G.value)}function S(G){return G.type==="value-word"&&G.value==="in"}function B(G){return G.type==="value-operator"&&G.value==="*"}function I(G){return G.type==="value-operator"&&G.value==="/"}function k(G){return G.type==="value-operator"&&G.value==="+"}function P(G){return G.type==="value-operator"&&G.value==="-"}function C(G){return G.type==="value-operator"&&G.value==="%"}function D(G){return B(G)||I(G)||k(G)||P(G)||C(G)}function g(G){return G.type==="value-word"&&["==","!="].includes(G.value)}function F(G){return G.type==="value-word"&&["<",">","<=",">="].includes(G.value)}function l(G){return G.type==="css-atrule"&&["if","else","for","each","while"].includes(G.name)}function E(G){var z;return ((z=G.raws)===null||z===void 0?void 0:z.params)&&/^\(\s*\)$/.test(G.raws.params)}function v(G){return G.name.startsWith("prettier-placeholder")}function N(G){return G.prop.startsWith("@prettier-placeholder")}function x(G,z){return G.value==="$$"&&G.type==="value-func"&&(z==null?void 0:z.type)==="value-word"&&!z.raws.before}function b(G){var z,U;return ((z=G.value)===null||z===void 0?void 0:z.type)==="value-root"&&((U=G.value.group)===null||U===void 0?void 0:U.type)==="value-value"&&G.prop.toLowerCase()==="composes"}function L(G){var z,U,le;return ((z=G.value)===null||z===void 0||(U=z.group)===null||U===void 0||(le=U.group)===null||le===void 0?void 0:le.type)==="value-paren_group"&&G.value.group.group.open!==null&&G.value.group.group.close!==null}function M(G){var z;return ((z=G.raws)===null||z===void 0?void 0:z.before)===""}function j(G){var z,U;return G.type==="value-comma_group"&&((z=G.groups)===null||z===void 0||(U=z[1])===null||U===void 0?void 0:U.type)==="value-colon"}function $(G){var z;return G.type==="value-paren_group"&&((z=G.groups)===null||z===void 0?void 0:z[0])&&j(G.groups[0])}function V(G){var z;let U=G.getValue();if(U.groups.length===0)return !1;let le=G.getParentNode(1);if(!$(U)&&!(le&&$(le)))return !1;let ge=a(G,"css-decl");return !!(ge!=null&&(z=ge.prop)!==null&&z!==void 0&&z.startsWith("$")||$(le)||le.type==="value-func")}function q(G){return G.type==="value-comment"&&G.inline}function Y(G){return G.type==="value-word"&&G.value==="#"}function H(G){return G.type==="value-word"&&G.value==="{"}function R(G){return G.type==="value-word"&&G.value==="}"}function Q(G){return ["value-word","value-atword"].includes(G.type)}function ee(G){return (G==null?void 0:G.type)==="value-colon"}function te(G,z){if(!j(z))return !1;let{groups:U}=z,le=U.indexOf(G);return le===-1?!1:ee(U[le+1])}function oe(G){return G.value&&["not","and","or"].includes(G.value.toLowerCase())}function W(G){return G.type!=="value-func"?!1:t.has(G.value.toLowerCase())}function X(G){return /\/\//.test(G.split(/[\n\r]/).pop())}function ue(G){return (G==null?void 0:G.type)==="value-atword"&&G.value.startsWith("prettier-placeholder-")}function De(G,z){var U,le;if(((U=G.open)===null||U===void 0?void 0:U.value)!=="("||((le=G.close)===null||le===void 0?void 0:le.value)!==")"||G.groups.some(ge=>ge.type!=="value-comma_group"))return !1;if(z.type==="value-comma_group"){let ge=z.groups.indexOf(G)-1,Ae=z.groups[ge];if((Ae==null?void 0:Ae.type)==="value-word"&&Ae.value==="with")return !0}return !1}function ie(G){var z,U;return G.type==="value-paren_group"&&((z=G.open)===null||z===void 0?void 0:z.value)==="("&&((U=G.close)===null||U===void 0?void 0:U.value)===")"}n.exports={getAncestorCounter:s,getAncestorNode:a,getPropOfDeclNode:r,maybeToLowerCase:c,insideValueFunctionNode:y,insideICSSRuleNode:m,insideAtRuleNode:d,insideURLFunctionInImportAtRuleNode:p,isKeyframeAtRuleKeywords:o,isWideKeywords:i,isLastNode:h,isSCSSControlDirectiveNode:l,isDetachedRulesetDeclarationNode:w,isRelationalOperatorNode:F,isEqualityOperatorNode:g,isMultiplicationNode:B,isDivisionNode:I,isAdditionNode:k,isSubtractionNode:P,isModuloNode:C,isMathOperatorNode:D,isEachKeywordNode:S,isForKeywordNode:T,isURLFunctionNode:f,isIfElseKeywordNode:A,hasComposesNode:b,hasParensAroundNode:L,hasEmptyRawBefore:M,isDetachedRulesetCallNode:E,isTemplatePlaceholderNode:v,isTemplatePropNode:N,isPostcssSimpleVarNode:x,isKeyValuePairNode:j,isKeyValuePairInParenGroupNode:$,isKeyInValuePairNode:te,isSCSSMapItemNode:V,isInlineValueCommentNode:q,isHashNode:Y,isLeftCurlyBraceNode:H,isRightCurlyBraceNode:R,isWordNode:Q,isColonNode:ee,isMediaAndSupportsKeywords:oe,isColorAdjusterFuncNode:W,lastLineHasInlineComment:X,isAtWordPlaceholderNode:ue,isConfigurationNode:De,isParenGroupNode:ie};}}),nd=Z({"src/utils/line-column-to-index.js"(e,n){re(),n.exports=function(t,s){let a=0;for(let r=0;r<t.line-1;++r)a=s.indexOf(` -`,a)+1;return a+t.column};}}),ud=Z({"src/language-css/loc.js"(e,n){re();var{skipEverythingButNewLine:t}=Tr(),s=it(),a=nd();function r(p,f){return typeof p.sourceIndex=="number"?p.sourceIndex:p.source?a(p.source.start,f)-1:null}function u(p,f){if(p.type==="css-comment"&&p.inline)return t(f,p.source.startOffset);let h=p.nodes&&s(p.nodes);return h&&p.source&&!p.source.end&&(p=h),p.source&&p.source.end?a(p.source.end,f):null}function i(p,f){p.source&&(p.source.startOffset=r(p,f),p.source.endOffset=u(p,f));for(let h in p){let w=p[h];h==="source"||!w||typeof w!="object"||(w.type==="value-root"||w.type==="value-unknown"?o(w,c(p),w.text||w.value):i(w,f));}}function o(p,f,h){p.source&&(p.source.startOffset=r(p,h)+f,p.source.endOffset=u(p,h)+f);for(let w in p){let T=p[w];w==="source"||!T||typeof T!="object"||o(T,f,h);}}function c(p){let f=p.source.startOffset;return typeof p.prop=="string"&&(f+=p.prop.length),p.type==="css-atrule"&&typeof p.name=="string"&&(f+=1+p.name.length+p.raws.afterName.match(/^\s*:?\s*/)[0].length),p.type!=="css-atrule"&&p.raws&&typeof p.raws.between=="string"&&(f+=p.raws.between.length),f}function y(p){let f="initial",h="initial",w,T=!1,A=[];for(let S=0;S<p.length;S++){let B=p[S];switch(f){case"initial":if(B==="'"){f="single-quotes";continue}if(B==='"'){f="double-quotes";continue}if((B==="u"||B==="U")&&p.slice(S,S+4).toLowerCase()==="url("){f="url",S+=3;continue}if(B==="*"&&p[S-1]==="/"){f="comment-block";continue}if(B==="/"&&p[S-1]==="/"){f="comment-inline",w=S-1;continue}continue;case"single-quotes":if(B==="'"&&p[S-1]!=="\\"&&(f=h,h="initial"),B===` -`||B==="\r")return p;continue;case"double-quotes":if(B==='"'&&p[S-1]!=="\\"&&(f=h,h="initial"),B===` -`||B==="\r")return p;continue;case"url":if(B===")"&&(f="initial"),B===` -`||B==="\r")return p;if(B==="'"){f="single-quotes",h="url";continue}if(B==='"'){f="double-quotes",h="url";continue}continue;case"comment-block":B==="/"&&p[S-1]==="*"&&(f="initial");continue;case"comment-inline":(B==='"'||B==="'"||B==="*")&&(T=!0),(B===` -`||B==="\r")&&(T&&A.push([w,S]),f="initial",T=!1);continue}}for(let[S,B]of A)p=p.slice(0,S)+p.slice(S,B).replace(/["'*]/g," ")+p.slice(B);return p}function m(p){return p.source.startOffset}function d(p){return p.source.endOffset}n.exports={locStart:m,locEnd:d,calculateLoc:i,replaceQuotesInInlineComments:y};}}),sd=Z({"src/language-css/utils/is-less-parser.js"(e,n){re();function t(s){return s.parser==="css"||s.parser==="less"}n.exports=t;}}),id=Z({"src/language-css/utils/is-scss.js"(e,n){re();function t(s,a){return s==="less"||s==="scss"?s==="scss":/(?:\w\s*:\s*[^:}]+|#){|@import[^\n]+(?:url|,)/.test(a)}n.exports=t;}}),ad=Z({"src/language-css/utils/css-units.evaluate.js"(e,n){n.exports={em:"em",rem:"rem",ex:"ex",rex:"rex",cap:"cap",rcap:"rcap",ch:"ch",rch:"rch",ic:"ic",ric:"ric",lh:"lh",rlh:"rlh",vw:"vw",svw:"svw",lvw:"lvw",dvw:"dvw",vh:"vh",svh:"svh",lvh:"lvh",dvh:"dvh",vi:"vi",svi:"svi",lvi:"lvi",dvi:"dvi",vb:"vb",svb:"svb",lvb:"lvb",dvb:"dvb",vmin:"vmin",svmin:"svmin",lvmin:"lvmin",dvmin:"dvmin",vmax:"vmax",svmax:"svmax",lvmax:"lvmax",dvmax:"dvmax",cm:"cm",mm:"mm",q:"Q",in:"in",pt:"pt",pc:"pc",px:"px",deg:"deg",grad:"grad",rad:"rad",turn:"turn",s:"s",ms:"ms",hz:"Hz",khz:"kHz",dpi:"dpi",dpcm:"dpcm",dppx:"dppx",x:"x"};}}),od=Z({"src/language-css/utils/print-unit.js"(e,n){re();var t=ad();function s(a){let r=a.toLowerCase();return Object.prototype.hasOwnProperty.call(t,r)?t[r]:a}n.exports=s;}}),ld=Z({"src/language-css/printer-postcss.js"(e,n){re();var t=it(),{printNumber:s,printString:a,hasNewline:r,isFrontMatterNode:u,isNextLineEmpty:i,isNonEmptyArray:o}=Ue(),{builders:{join:c,line:y,hardline:m,softline:d,group:p,fill:f,indent:h,dedent:w,ifBreak:T,breakParent:A},utils:{removeLines:S,getDocParts:B}}=Oe(),I=Zm(),k=ed(),{insertPragma:P}=td(),{getAncestorNode:C,getPropOfDeclNode:D,maybeToLowerCase:g,insideValueFunctionNode:F,insideICSSRuleNode:l,insideAtRuleNode:E,insideURLFunctionInImportAtRuleNode:v,isKeyframeAtRuleKeywords:N,isWideKeywords:x,isLastNode:b,isSCSSControlDirectiveNode:L,isDetachedRulesetDeclarationNode:M,isRelationalOperatorNode:j,isEqualityOperatorNode:$,isMultiplicationNode:V,isDivisionNode:q,isAdditionNode:Y,isSubtractionNode:H,isMathOperatorNode:R,isEachKeywordNode:Q,isForKeywordNode:ee,isURLFunctionNode:te,isIfElseKeywordNode:oe,hasComposesNode:W,hasParensAroundNode:X,hasEmptyRawBefore:ue,isKeyValuePairNode:De,isKeyInValuePairNode:ie,isDetachedRulesetCallNode:G,isTemplatePlaceholderNode:z,isTemplatePropNode:U,isPostcssSimpleVarNode:le,isSCSSMapItemNode:ge,isInlineValueCommentNode:Ae,isHashNode:Ne,isLeftCurlyBraceNode:ke,isRightCurlyBraceNode:ce,isWordNode:pe,isColonNode:de,isMediaAndSupportsKeywords:ae,isColorAdjusterFuncNode:ve,lastLineHasInlineComment:K,isAtWordPlaceholderNode:he,isConfigurationNode:ye,isParenGroupNode:Ce}=rd(),{locStart:Ie,locEnd:Fe}=ud(),me=sd(),_=id(),J=od();function ne(be){return be.trailingComma==="es5"||be.trailingComma==="all"}function Ee(be,Le,qe){let se=be.getValue();if(!se)return "";if(typeof se=="string")return se;switch(se.type){case"front-matter":return [se.raw,m];case"css-root":{let He=We(be,Le,qe),Me=se.raws.after.trim();return [He,Me?" ".concat(Me):"",B(He).length>0?m:""]}case"css-comment":{let He=se.inline||se.raws.inline,Me=Le.originalText.slice(Ie(se),Fe(se));return He?Me.trimEnd():Me}case"css-rule":return [qe("selector"),se.important?" !important":"",se.nodes?[se.selector&&se.selector.type==="selector-unknown"&&K(se.selector.value)?y:" ","{",se.nodes.length>0?h([m,We(be,Le,qe)]):"",m,"}",M(se)?";":""]:";"];case"css-decl":{let He=be.getParentNode(),{between:Me}=se.raws,ze=Me.trim(),nt=ze===":",tt=W(se)?S(qe("value")):qe("value");return !nt&&K(ze)&&(tt=h([m,w(tt)])),[se.raws.before.replace(/[\s;]/g,""),l(be)?se.prop:g(se.prop),ze.startsWith("//")?" ":"",ze,se.extend?"":" ",me(Le)&&se.extend&&se.selector?["extend(",qe("selector"),")"]:"",tt,se.raws.important?se.raws.important.replace(/\s*!\s*important/i," !important"):se.important?" !important":"",se.raws.scssDefault?se.raws.scssDefault.replace(/\s*!default/i," !default"):se.scssDefault?" !default":"",se.raws.scssGlobal?se.raws.scssGlobal.replace(/\s*!global/i," !global"):se.scssGlobal?" !global":"",se.nodes?[" {",h([d,We(be,Le,qe)]),d,"}"]:U(se)&&!He.raws.semicolon&&Le.originalText[Fe(se)-1]!==";"?"":Le.__isHTMLStyleAttribute&&b(be,se)?T(";"):";"]}case"css-atrule":{let He=be.getParentNode(),Me=z(se)&&!He.raws.semicolon&&Le.originalText[Fe(se)-1]!==";";if(me(Le)){if(se.mixin)return [qe("selector"),se.important?" !important":"",Me?"":";"];if(se.function)return [se.name,qe("params"),Me?"":";"];if(se.variable)return ["@",se.name,": ",se.value?qe("value"):"",se.raws.between.trim()?se.raws.between.trim()+" ":"",se.nodes?["{",h([se.nodes.length>0?d:"",We(be,Le,qe)]),d,"}"]:"",Me?"":";"]}return ["@",G(se)||se.name.endsWith(":")?se.name:g(se.name),se.params?[G(se)?"":z(se)?se.raws.afterName===""?"":se.name.endsWith(":")?" ":/^\s*\n\s*\n/.test(se.raws.afterName)?[m,m]:/^\s*\n/.test(se.raws.afterName)?m:" ":" ",qe("params")]:"",se.selector?h([" ",qe("selector")]):"",se.value?p([" ",qe("value"),L(se)?X(se)?" ":y:""]):se.name==="else"?" ":"",se.nodes?[L(se)?"":se.selector&&!se.selector.nodes&&typeof se.selector.value=="string"&&K(se.selector.value)||!se.selector&&typeof se.params=="string"&&K(se.params)?y:" ","{",h([se.nodes.length>0?d:"",We(be,Le,qe)]),d,"}"]:Me?"":";"]}case"media-query-list":{let He=[];return be.each(Me=>{let ze=Me.getValue();ze.type==="media-query"&&ze.value===""||He.push(qe());},"nodes"),p(h(c(y,He)))}case"media-query":return [c(" ",be.map(qe,"nodes")),b(be,se)?"":","];case"media-type":return je(Xe(se.value,Le));case"media-feature-expression":return se.nodes?["(",...be.map(qe,"nodes"),")"]:se.value;case"media-feature":return g(Xe(se.value.replace(/ +/g," "),Le));case"media-colon":return [se.value," "];case"media-value":return je(Xe(se.value,Le));case"media-keyword":return Xe(se.value,Le);case"media-url":return Xe(se.value.replace(/^url\(\s+/gi,"url(").replace(/\s+\)$/g,")"),Le);case"media-unknown":return se.value;case"selector-root":return p([E(be,"custom-selector")?[C(be,"css-atrule").customSelector,y]:"",c([",",E(be,["extend","custom-selector","nest"])?y:m],be.map(qe,"nodes"))]);case"selector-selector":return p(h(be.map(qe,"nodes")));case"selector-comment":return se.value;case"selector-string":return Xe(se.value,Le);case"selector-tag":{let He=be.getParentNode(),Me=He&&He.nodes.indexOf(se),ze=Me&&He.nodes[Me-1];return [se.namespace?[se.namespace===!0?"":se.namespace.trim(),"|"]:"",ze.type==="selector-nesting"?se.value:je(N(be,se.value)?se.value.toLowerCase():se.value)]}case"selector-id":return ["#",se.value];case"selector-class":return [".",je(Xe(se.value,Le))];case"selector-attribute":return ["[",se.namespace?[se.namespace===!0?"":se.namespace.trim(),"|"]:"",se.attribute.trim(),se.operator?se.operator:"",se.value?we(Xe(se.value.trim(),Le),Le):"",se.insensitive?" i":"","]"];case"selector-combinator":{if(se.value==="+"||se.value===">"||se.value==="~"||se.value===">>>"){let ze=be.getParentNode();return [ze.type==="selector-selector"&&ze.nodes[0]===se?"":y,se.value,b(be,se)?"":" "]}let He=se.value.trim().startsWith("(")?y:"",Me=je(Xe(se.value.trim(),Le))||y;return [He,Me]}case"selector-universal":return [se.namespace?[se.namespace===!0?"":se.namespace.trim(),"|"]:"",se.value];case"selector-pseudo":return [g(se.value),o(se.nodes)?["(",c(", ",be.map(qe,"nodes")),")"]:""];case"selector-nesting":return se.value;case"selector-unknown":{let He=C(be,"css-rule");if(He&&He.isSCSSNesterProperty)return je(Xe(g(se.value),Le));let Me=be.getParentNode();if(Me.raws&&Me.raws.selector){let nt=Ie(Me),tt=nt+Me.raws.selector.length;return Le.originalText.slice(nt,tt).trim()}let ze=be.getParentNode(1);if(Me.type==="value-paren_group"&&ze&&ze.type==="value-func"&&ze.value==="selector"){let nt=Fe(Me.open)+1,tt=Ie(Me.close),pt=Le.originalText.slice(nt,tt).trim();return K(pt)?[A,pt]:pt}return se.value}case"value-value":case"value-root":return qe("group");case"value-comment":return Le.originalText.slice(Ie(se),Fe(se));case"value-comma_group":{let He=be.getParentNode(),Me=be.getParentNode(1),ze=D(be),nt=ze&&He.type==="value-value"&&(ze==="grid"||ze.startsWith("grid-template")),tt=C(be,"css-atrule"),pt=tt&&L(tt),O=se.groups.some(ut=>Ae(ut)),fe=be.map(qe,"groups"),Te=[],$e=F(be,"url"),Je=!1,Ze=!1;for(let ut=0;ut<se.groups.length;++ut){Te.push(fe[ut]);let rt=se.groups[ut-1],Ve=se.groups[ut],Ge=se.groups[ut+1],Zt=se.groups[ut+2];if($e){(Ge&&Y(Ge)||Y(Ve))&&Te.push(" ");continue}if(E(be,"forward")&&Ve.type==="value-word"&&Ve.value&&rt!==void 0&&rt.type==="value-word"&&rt.value==="as"&&Ge.type==="value-operator"&&Ge.value==="*"||!Ge||Ve.type==="value-word"&&Ve.value.endsWith("-")&&he(Ge))continue;let fo=Ve.type==="value-string"&&Ve.value.startsWith("#{"),Do=Je&&Ge.type==="value-string"&&Ge.value.endsWith("}");if(fo||Do){Je=!Je;continue}if(Je||de(Ve)||de(Ge)||Ve.type==="value-atword"&&Ve.value===""||Ve.value==="~"||Ve.value&&Ve.value.includes("\\")&&Ge&&Ge.type!=="value-comment"||rt&&rt.value&&rt.value.indexOf("\\")===rt.value.length-1&&Ve.type==="value-operator"&&Ve.value==="/"||Ve.value==="\\"||le(Ve,Ge)||Ne(Ve)||ke(Ve)||ce(Ge)||ke(Ge)&&ue(Ge)||ce(Ve)&&ue(Ge)||Ve.value==="--"&&Ne(Ge))continue;let Xn=R(Ve),Kn=R(Ge);if((Xn&&Ne(Ge)||Kn&&ce(Ve))&&ue(Ge)||!rt&&q(Ve)||F(be,"calc")&&(Y(Ve)||Y(Ge)||H(Ve)||H(Ge))&&ue(Ge))continue;let mo=(Y(Ve)||H(Ve))&&ut===0&&(Ge.type==="value-number"||Ge.isHex)&&Me&&ve(Me)&&!ue(Ge),Yn=Zt&&Zt.type==="value-func"||Zt&&pe(Zt)||Ve.type==="value-func"||pe(Ve),Qn=Ge.type==="value-func"||pe(Ge)||rt&&rt.type==="value-func"||rt&&pe(rt);if(!(!(V(Ge)||V(Ve))&&!F(be,"calc")&&!mo&&(q(Ge)&&!Yn||q(Ve)&&!Qn||Y(Ge)&&!Yn||Y(Ve)&&!Qn||H(Ge)||H(Ve))&&(ue(Ge)||Xn&&(!rt||rt&&R(rt))))){if(Ae(Ve)){if(He.type==="value-paren_group"){Te.push(w(m));continue}Te.push(m);continue}if(pt&&($(Ge)||j(Ge)||oe(Ge)||Q(Ve)||ee(Ve))){Te.push(" ");continue}if(tt&&tt.name.toLowerCase()==="namespace"){Te.push(" ");continue}if(nt){Ve.source&&Ge.source&&Ve.source.start.line!==Ge.source.start.line?(Te.push(m),Ze=!0):Te.push(" ");continue}if(Kn){Te.push(" ");continue}if(!(Ge&&Ge.value==="...")&&!(he(Ve)&&he(Ge)&&Fe(Ve)===Ie(Ge))){if(he(Ve)&&Ce(Ge)&&Fe(Ve)===Ie(Ge.open)){Te.push(d);continue}if(Ve.value==="with"&&Ce(Ge)){Te.push(" ");continue}Te.push(y);}}}return O&&Te.push(A),Ze&&Te.unshift(m),pt?p(h(Te)):v(be)?p(f(Te)):p(h(f(Te)))}case"value-paren_group":{let He=be.getParentNode();if(He&&te(He)&&(se.groups.length===1||se.groups.length>0&&se.groups[0].type==="value-comma_group"&&se.groups[0].groups.length>0&&se.groups[0].groups[0].type==="value-word"&&se.groups[0].groups[0].value.startsWith("data:")))return [se.open?qe("open"):"",c(",",be.map(qe,"groups")),se.close?qe("close"):""];if(!se.open){let $e=be.map(qe,"groups"),Je=[];for(let Ze=0;Ze<$e.length;Ze++)Ze!==0&&Je.push([",",y]),Je.push($e[Ze]);return p(h(f(Je)))}let Me=ge(be),ze=t(se.groups),nt=ze&&ze.type==="value-comment",tt=ie(se,He),pt=ye(se,He),O=pt||Me&&!tt,fe=pt||tt,Te=p([se.open?qe("open"):"",h([d,c([y],be.map(($e,Je)=>{let Ze=$e.getValue(),ut=Je===se.groups.length-1,rt=[qe(),ut?"":","];if(De(Ze)&&Ze.type==="value-comma_group"&&Ze.groups&&Ze.groups[0].type!=="value-paren_group"&&Ze.groups[2]&&Ze.groups[2].type==="value-paren_group"){let Ve=B(rt[0].contents.contents);return Ve[1]=p(Ve[1]),p(w(rt))}if(!ut&&Ze.type==="value-comma_group"&&o(Ze.groups)){let Ve=t(Ze.groups);Ve.source&&i(Le.originalText,Ve,Fe)&&rt.push(m);}return rt},"groups"))]),T(!nt&&_(Le.parser,Le.originalText)&&Me&&ne(Le)?",":""),d,se.close?qe("close"):""],{shouldBreak:O});return fe?w(Te):Te}case"value-func":return [se.value,E(be,"supports")&&ae(se)?" ":"",qe("group")];case"value-paren":return se.value;case"value-number":return [Re(se.value),J(se.unit)];case"value-operator":return se.value;case"value-word":return se.isColor&&se.isHex||x(se.value)?se.value.toLowerCase():se.value;case"value-colon":{let He=be.getParentNode(),Me=He&&He.groups.indexOf(se),ze=Me&&He.groups[Me-1];return [se.value,ze&&typeof ze.value=="string"&&t(ze.value)==="\\"||F(be,"url")?"":y]}case"value-comma":return [se.value," "];case"value-string":return a(se.raws.quote+se.value+se.raws.quote,Le);case"value-atword":return ["@",se.value];case"value-unicode-range":return se.value;case"value-unknown":return se.value;default:throw new Error("Unknown postcss type ".concat(JSON.stringify(se.type)))}}function We(be,Le,qe){let se=[];return be.each((He,Me,ze)=>{let nt=ze[Me-1];if(nt&&nt.type==="css-comment"&&nt.text.trim()==="prettier-ignore"){let tt=He.getValue();se.push(Le.originalText.slice(Ie(tt),Fe(tt)));}else se.push(qe());Me!==ze.length-1&&(ze[Me+1].type==="css-comment"&&!r(Le.originalText,Ie(ze[Me+1]),{backwards:!0})&&!u(ze[Me])||ze[Me+1].type==="css-atrule"&&ze[Me+1].name==="else"&&ze[Me].type!=="css-comment"?se.push(" "):(se.push(Le.__isHTMLStyleAttribute?y:m),i(Le.originalText,He.getValue(),Fe)&&!u(ze[Me])&&se.push(m)));},"nodes"),se}var Be=/(["'])(?:(?!\1)[^\\]|\\.)*\1/gs,Pe=/(?:\d*\.\d+|\d+\.?)(?:[Ee][+-]?\d+)?/g,Se=/[A-Za-z]+/g,Qe=/[$@]?[A-Z_a-z\u0080-\uFFFF][\w\u0080-\uFFFF-]*/g,xe=new RegExp(Be.source+"|(".concat(Qe.source,")?(").concat(Pe.source,")(").concat(Se.source,")?"),"g");function Xe(be,Le){return be.replace(Be,qe=>a(qe,Le))}function we(be,Le){let qe=Le.singleQuote?"'":'"';return be.includes('"')||be.includes("'")?be:qe+be+qe}function je(be){return be.replace(xe,(Le,qe,se,He,Me)=>!se&&He?Re(He)+g(Me||""):Le)}function Re(be){return s(be).replace(/\.0(?=$|e)/,"")}n.exports={print:Ee,embed:k,insertPragma:P,massageAstNode:I};}}),cd=Z({"src/language-css/options.js"(e,n){re();var t=Lt();n.exports={singleQuote:t.singleQuote};}}),pd=Z({"src/language-css/parsers.js"(){re();}}),fd=Z({"node_modules/linguist-languages/data/CSS.json"(e,n){n.exports={name:"CSS",type:"markup",tmScope:"source.css",aceMode:"css",codemirrorMode:"css",codemirrorMimeType:"text/css",color:"#563d7c",extensions:[".css"],languageId:50};}}),Dd=Z({"node_modules/linguist-languages/data/PostCSS.json"(e,n){n.exports={name:"PostCSS",type:"markup",color:"#dc3a0c",tmScope:"source.postcss",group:"CSS",extensions:[".pcss",".postcss"],aceMode:"text",languageId:262764437};}}),md=Z({"node_modules/linguist-languages/data/Less.json"(e,n){n.exports={name:"Less",type:"markup",color:"#1d365d",aliases:["less-css"],extensions:[".less"],tmScope:"source.css.less",aceMode:"less",codemirrorMode:"css",codemirrorMimeType:"text/css",languageId:198};}}),dd=Z({"node_modules/linguist-languages/data/SCSS.json"(e,n){n.exports={name:"SCSS",type:"markup",color:"#c6538c",tmScope:"source.css.scss",aceMode:"scss",codemirrorMode:"css",codemirrorMimeType:"text/x-scss",extensions:[".scss"],languageId:329};}}),gd=Z({"src/language-css/index.js"(e,n){re();var t=Tt(),s=ld(),a=cd(),r=pd(),u=[t(fd(),o=>({since:"1.4.0",parsers:["css"],vscodeLanguageIds:["css"],extensions:[...o.extensions,".wxss"]})),t(Dd(),()=>({since:"1.4.0",parsers:["css"],vscodeLanguageIds:["postcss"]})),t(md(),()=>({since:"1.4.0",parsers:["less"],vscodeLanguageIds:["less"]})),t(dd(),()=>({since:"1.4.0",parsers:["scss"],vscodeLanguageIds:["scss"]}))],i={postcss:s};n.exports={languages:u,options:a,printers:i,parsers:r};}}),yd=Z({"src/language-handlebars/loc.js"(e,n){re();function t(a){return a.loc.start.offset}function s(a){return a.loc.end.offset}n.exports={locStart:t,locEnd:s};}}),hd=Z({"src/language-handlebars/clean.js"(e,n){re();function t(s,a){if(s.type==="TextNode"){let r=s.chars.trim();if(!r)return null;a.chars=r.replace(/[\t\n\f\r ]+/g," ");}s.type==="AttrNode"&&s.name.toLowerCase()==="class"&&delete a.value;}t.ignoredProperties=new Set(["loc","selfClosing"]),n.exports=t;}}),vd=Z({"vendors/html-void-elements.json"(e,n){n.exports={htmlVoidElements:["area","base","basefont","bgsound","br","col","command","embed","frame","hr","image","img","input","isindex","keygen","link","menuitem","meta","nextid","param","source","track","wbr"]};}}),Cd=Z({"src/language-handlebars/utils.js"(e,n){re();var{htmlVoidElements:t}=vd(),s=it();function a(S){let B=S.getValue(),I=S.getParentNode(0);return !!(m(S,["ElementNode"])&&s(I.children)===B||m(S,["Block"])&&s(I.body)===B)}function r(S){return S.toUpperCase()===S}function u(S){return y(S,["ElementNode"])&&typeof S.tag=="string"&&!S.tag.startsWith(":")&&(r(S.tag[0])||S.tag.includes("."))}var i=new Set(t);function o(S){return i.has(S.tag)||u(S)&&S.children.every(B=>c(B))}function c(S){return y(S,["TextNode"])&&!/\S/.test(S.chars)}function y(S,B){return S&&B.includes(S.type)}function m(S,B){let I=S.getParentNode(0);return y(I,B)}function d(S,B){let I=h(S);return y(I,B)}function p(S,B){let I=w(S);return y(I,B)}function f(S,B){var I,k,P,C;let D=S.getValue(),g=(I=S.getParentNode(0))!==null&&I!==void 0?I:{},F=(k=(P=(C=g.children)!==null&&C!==void 0?C:g.body)!==null&&P!==void 0?P:g.parts)!==null&&k!==void 0?k:[],l=F.indexOf(D);return l!==-1&&F[l+B]}function h(S){let B=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;return f(S,-B)}function w(S){return f(S,1)}function T(S){return y(S,["MustacheCommentStatement"])&&typeof S.value=="string"&&S.value.trim()==="prettier-ignore"}function A(S){let B=S.getValue(),I=h(S,2);return T(B)||T(I)}n.exports={getNextNode:w,getPreviousNode:h,hasPrettierIgnore:A,isLastNodeOfSiblings:a,isNextNodeOfSomeType:p,isNodeOfSomeType:y,isParentOfSomeType:m,isPreviousNodeOfSomeType:d,isVoid:o,isWhitespaceNode:c};}}),Ed=Z({"src/language-handlebars/printer-glimmer.js"(e,n){re();var{builders:{dedent:t,fill:s,group:a,hardline:r,ifBreak:u,indent:i,join:o,line:c,softline:y},utils:{getDocParts:m,replaceTextEndOfLine:d}}=Oe(),{getPreferredQuote:p,isNonEmptyArray:f}=Ue(),{locStart:h,locEnd:w}=yd(),T=hd(),{getNextNode:A,getPreviousNode:S,hasPrettierIgnore:B,isLastNodeOfSiblings:I,isNextNodeOfSomeType:k,isNodeOfSomeType:P,isParentOfSomeType:C,isPreviousNodeOfSomeType:D,isVoid:g,isWhitespaceNode:F}=Cd(),l=2;function E(K,he,ye){let Ce=K.getValue();if(!Ce)return "";if(B(K))return he.originalText.slice(h(Ce),w(Ce));let Ie=he.singleQuote?"'":'"';switch(Ce.type){case"Block":case"Program":case"Template":return a(K.map(ye,"body"));case"ElementNode":{let Fe=a(N(K,ye)),me=he.htmlWhitespaceSensitivity==="ignore"&&k(K,["ElementNode"])?y:"";if(g(Ce))return [Fe,me];let _=["</",Ce.tag,">"];return Ce.children.length===0?[Fe,i(_),me]:he.htmlWhitespaceSensitivity==="ignore"?[Fe,i(x(K,he,ye)),r,i(_),me]:[Fe,i(a(x(K,he,ye))),i(_),me]}case"BlockStatement":{let Fe=K.getParentNode(1);return Fe&&Fe.inverse&&Fe.inverse.body.length===1&&Fe.inverse.body[0]===Ce&&Fe.inverse.body[0].path.parts[0]==="if"?[ee(K,ye),ue(K,ye,he),De(K,ye,he)]:[R(K,ye),a([ue(K,ye,he),De(K,ye,he),te(K,ye,he)])]}case"ElementModifierStatement":return a(["{{",pe(K,ye),"}}"]);case"MustacheStatement":return a([L(Ce),pe(K,ye),M(Ce)]);case"SubExpression":return a(["(",ce(K,ye),y,")"]);case"AttrNode":{let Fe=Ce.value.type==="TextNode";if(Fe&&Ce.value.chars===""&&h(Ce.value)===w(Ce.value))return Ce.name;let _=Fe?p(Ce.value.chars,Ie).quote:Ce.value.type==="ConcatStatement"?p(Ce.value.parts.filter(ne=>ne.type==="TextNode").map(ne=>ne.chars).join(""),Ie).quote:"",J=ye("value");return [Ce.name,"=",_,Ce.name==="class"&&_?a(i(J)):J,_]}case"ConcatStatement":return K.map(ye,"parts");case"Hash":return o(c,K.map(ye,"pairs"));case"HashPair":return [Ce.key,"=",ye("value")];case"TextNode":{let Fe=Ce.chars.replace(/{{/g,"\\{{"),me=z(K);if(me){if(me==="class"){let xe=Fe.trim().split(/\s+/).join(" "),Xe=!1,we=!1;return C(K,["ConcatStatement"])&&(D(K,["MustacheStatement"])&&/^\s/.test(Fe)&&(Xe=!0),k(K,["MustacheStatement"])&&/\s$/.test(Fe)&&xe!==""&&(we=!0)),[Xe?c:"",xe,we?c:""]}return d(Fe)}let J=/^[\t\n\f\r ]*$/.test(Fe),ne=!S(K),Ee=!A(K);if(he.htmlWhitespaceSensitivity!=="ignore"){let xe=/^[\t\n\f\r ]*/,Xe=/[\t\n\f\r ]*$/,we=Ee&&C(K,["Template"]),je=ne&&C(K,["Template"]);if(J){if(je||we)return "";let se=[c],He=U(Fe);return He&&(se=Ae(He)),I(K)&&(se=se.map(Me=>t(Me))),se}let[Re]=Fe.match(xe),[be]=Fe.match(Xe),Le=[];if(Re){Le=[c];let se=U(Re);se&&(Le=Ae(se)),Fe=Fe.replace(xe,"");}let qe=[];if(be){if(!we){qe=[c];let se=U(be);se&&(qe=Ae(se)),I(K)&&(qe=qe.map(He=>t(He)));}Fe=Fe.replace(Xe,"");}return [...Le,s(ie(Fe)),...qe]}let We=U(Fe),Be=le(Fe),Pe=ge(Fe);if((ne||Ee)&&J&&C(K,["Block","ElementNode","Template"]))return "";J&&We?(Be=Math.min(We,l),Pe=0):(k(K,["BlockStatement","ElementNode"])&&(Pe=Math.max(Pe,1)),D(K,["BlockStatement","ElementNode"])&&(Be=Math.max(Be,1)));let Se="",Qe="";return Pe===0&&k(K,["MustacheStatement"])&&(Qe=" "),Be===0&&D(K,["MustacheStatement"])&&(Se=" "),ne&&(Be=0,Se=""),Ee&&(Pe=0,Qe=""),Fe=Fe.replace(/^[\t\n\f\r ]+/g,Se).replace(/[\t\n\f\r ]+$/,Qe),[...Ae(Be),s(ie(Fe)),...Ae(Pe)]}case"MustacheCommentStatement":{let Fe=h(Ce),me=w(Ce),_=he.originalText.charAt(Fe+2)==="~",J=he.originalText.charAt(me-3)==="~",ne=Ce.value.includes("}}")?"--":"";return ["{{",_?"~":"","!",ne,Ce.value,ne,J?"~":"","}}"]}case"PathExpression":return Ce.original;case"BooleanLiteral":return String(Ce.value);case"CommentStatement":return ["<!--",Ce.value,"-->"];case"StringLiteral":{if(ke(K)){let Fe=he.singleQuote?'"':"'";return Ne(Ce.value,Fe)}return Ne(Ce.value,Ie)}case"NumberLiteral":return String(Ce.value);case"UndefinedLiteral":return "undefined";case"NullLiteral":return "null";default:throw new Error("unknown glimmer type: "+JSON.stringify(Ce.type))}}function v(K,he){return h(K)-h(he)}function N(K,he){let ye=K.getValue(),Ce=["attributes","modifiers","comments"].filter(Fe=>f(ye[Fe])),Ie=Ce.flatMap(Fe=>ye[Fe]).sort(v);for(let Fe of Ce)K.each(me=>{let _=Ie.indexOf(me.getValue());Ie.splice(_,1,[c,he()]);},Fe);return f(ye.blockParams)&&Ie.push(c,ve(ye)),["<",ye.tag,i(Ie),b(ye)]}function x(K,he,ye){let Ie=K.getValue().children.every(Fe=>F(Fe));return he.htmlWhitespaceSensitivity==="ignore"&&Ie?"":K.map((Fe,me)=>{let _=ye();return me===0&&he.htmlWhitespaceSensitivity==="ignore"?[y,_]:_},"children")}function b(K){return g(K)?u([y,"/>"],[" />",y]):u([y,">"],">")}function L(K){let he=K.escaped===!1?"{{{":"{{",ye=K.strip&&K.strip.open?"~":"";return [he,ye]}function M(K){let he=K.escaped===!1?"}}}":"}}";return [K.strip&&K.strip.close?"~":"",he]}function j(K){let he=L(K),ye=K.openStrip.open?"~":"";return [he,ye,"#"]}function $(K){let he=M(K);return [K.openStrip.close?"~":"",he]}function V(K){let he=L(K),ye=K.closeStrip.open?"~":"";return [he,ye,"/"]}function q(K){let he=M(K);return [K.closeStrip.close?"~":"",he]}function Y(K){let he=L(K),ye=K.inverseStrip.open?"~":"";return [he,ye]}function H(K){let he=M(K);return [K.inverseStrip.close?"~":"",he]}function R(K,he){let ye=K.getValue(),Ce=j(ye),Ie=$(ye),Fe=[de(K,he)],me=ae(K,he);if(me&&Fe.push(c,me),f(ye.program.blockParams)){let _=ve(ye.program);Fe.push(c,_);}return a([Ce,i(Fe),y,Ie])}function Q(K,he){return [he.htmlWhitespaceSensitivity==="ignore"?r:"",Y(K),"else",H(K)]}function ee(K,he){let ye=K.getParentNode(1);return [Y(ye),"else if ",ae(K,he),H(ye)]}function te(K,he,ye){let Ce=K.getValue();return ye.htmlWhitespaceSensitivity==="ignore"?[oe(Ce)?y:r,V(Ce),he("path"),q(Ce)]:[V(Ce),he("path"),q(Ce)]}function oe(K){return P(K,["BlockStatement"])&&K.program.body.every(he=>F(he))}function W(K){return X(K)&&K.inverse.body.length===1&&P(K.inverse.body[0],["BlockStatement"])&&K.inverse.body[0].path.parts[0]==="if"}function X(K){return P(K,["BlockStatement"])&&K.inverse}function ue(K,he,ye){let Ce=K.getValue();if(oe(Ce))return "";let Ie=he("program");return ye.htmlWhitespaceSensitivity==="ignore"?i([r,Ie]):i(Ie)}function De(K,he,ye){let Ce=K.getValue(),Ie=he("inverse"),Fe=ye.htmlWhitespaceSensitivity==="ignore"?[r,Ie]:Ie;return W(Ce)?Fe:X(Ce)?[Q(Ce,ye),i(Fe)]:""}function ie(K){return m(o(c,G(K)))}function G(K){return K.split(/[\t\n\f\r ]+/)}function z(K){for(let he=0;he<2;he++){let ye=K.getParentNode(he);if(ye&&ye.type==="AttrNode")return ye.name.toLowerCase()}}function U(K){return K=typeof K=="string"?K:"",K.split(` -`).length-1}function le(K){K=typeof K=="string"?K:"";let he=(K.match(/^([^\S\n\r]*[\n\r])+/g)||[])[0]||"";return U(he)}function ge(K){K=typeof K=="string"?K:"";let he=(K.match(/([\n\r][^\S\n\r]*)+$/g)||[])[0]||"";return U(he)}function Ae(){let K=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return Array.from({length:Math.min(K,l)}).fill(r)}function Ne(K,he){let{quote:ye,regex:Ce}=p(K,he);return [ye,K.replace(Ce,"\\".concat(ye)),ye]}function ke(K){let he=0,ye=K.getParentNode(he);for(;ye&&P(ye,["SubExpression"]);)he++,ye=K.getParentNode(he);return !!(ye&&P(K.getParentNode(he+1),["ConcatStatement"])&&P(K.getParentNode(he+2),["AttrNode"]))}function ce(K,he){let ye=de(K,he),Ce=ae(K,he);return Ce?i([ye,c,a(Ce)]):ye}function pe(K,he){let ye=de(K,he),Ce=ae(K,he);return Ce?[i([ye,c,Ce]),y]:ye}function de(K,he){return he("path")}function ae(K,he){let ye=K.getValue(),Ce=[];if(ye.params.length>0){let Ie=K.map(he,"params");Ce.push(...Ie);}if(ye.hash&&ye.hash.pairs.length>0){let Ie=he("hash");Ce.push(Ie);}return Ce.length===0?"":o(c,Ce)}function ve(K){return ["as |",K.blockParams.join(" "),"|"]}n.exports={print:E,massageAstNode:T};}}),Fd=Z({"src/language-handlebars/parsers.js"(){re();}}),Ad=Z({"node_modules/linguist-languages/data/Handlebars.json"(e,n){n.exports={name:"Handlebars",type:"markup",color:"#f7931e",aliases:["hbs","htmlbars"],extensions:[".handlebars",".hbs"],tmScope:"text.html.handlebars",aceMode:"handlebars",languageId:155};}}),Sd=Z({"src/language-handlebars/index.js"(e,n){re();var t=Tt(),s=Ed(),a=Fd(),r=[t(Ad(),()=>({since:"2.3.0",parsers:["glimmer"],vscodeLanguageIds:["handlebars"]}))],u={glimmer:s};n.exports={languages:r,printers:u,parsers:a};}}),xd=Z({"src/language-graphql/pragma.js"(e,n){re();function t(a){return /^\s*#[^\S\n]*@(?:format|prettier)\s*(?:\n|$)/.test(a)}function s(a){return `# @format - -`+a}n.exports={hasPragma:t,insertPragma:s};}}),bd=Z({"src/language-graphql/loc.js"(e,n){re();function t(a){return typeof a.start=="number"?a.start:a.loc&&a.loc.start}function s(a){return typeof a.end=="number"?a.end:a.loc&&a.loc.end}n.exports={locStart:t,locEnd:s};}}),Td=Z({"src/language-graphql/printer-graphql.js"(e,n){re();var{builders:{join:t,hardline:s,line:a,softline:r,group:u,indent:i,ifBreak:o}}=Oe(),{isNextLineEmpty:c,isNonEmptyArray:y}=Ue(),{insertPragma:m}=xd(),{locStart:d,locEnd:p}=bd();function f(k,P,C){let D=k.getValue();if(!D)return "";if(typeof D=="string")return D;switch(D.kind){case"Document":{let g=[];return k.each((F,l,E)=>{g.push(C()),l!==E.length-1&&(g.push(s),c(P.originalText,F.getValue(),p)&&g.push(s));},"definitions"),[...g,s]}case"OperationDefinition":{let g=P.originalText[d(D)]!=="{",F=Boolean(D.name);return [g?D.operation:"",g&&F?[" ",C("name")]:"",g&&!F&&y(D.variableDefinitions)?" ":"",y(D.variableDefinitions)?u(["(",i([r,t([o("",", "),r],k.map(C,"variableDefinitions"))]),r,")"]):"",h(k,C,D),D.selectionSet?!g&&!F?"":" ":"",C("selectionSet")]}case"FragmentDefinition":return ["fragment ",C("name"),y(D.variableDefinitions)?u(["(",i([r,t([o("",", "),r],k.map(C,"variableDefinitions"))]),r,")"]):""," on ",C("typeCondition"),h(k,C,D)," ",C("selectionSet")];case"SelectionSet":return ["{",i([s,t(s,w(k,P,C,"selections"))]),s,"}"];case"Field":return u([D.alias?[C("alias"),": "]:"",C("name"),D.arguments.length>0?u(["(",i([r,t([o("",", "),r],w(k,P,C,"arguments"))]),r,")"]):"",h(k,C,D),D.selectionSet?" ":"",C("selectionSet")]);case"Name":return D.value;case"StringValue":{if(D.block){let g=D.value.replace(/"""/g,"\\$&").split(` -`);return g.length===1&&(g[0]=g[0].trim()),g.every(F=>F==="")&&(g.length=0),t(s,['"""',...g,'"""'])}return ['"',D.value.replace(/["\\]/g,"\\$&").replace(/\n/g,"\\n"),'"']}case"IntValue":case"FloatValue":case"EnumValue":return D.value;case"BooleanValue":return D.value?"true":"false";case"NullValue":return "null";case"Variable":return ["$",C("name")];case"ListValue":return u(["[",i([r,t([o("",", "),r],k.map(C,"values"))]),r,"]"]);case"ObjectValue":return u(["{",P.bracketSpacing&&D.fields.length>0?" ":"",i([r,t([o("",", "),r],k.map(C,"fields"))]),r,o("",P.bracketSpacing&&D.fields.length>0?" ":""),"}"]);case"ObjectField":case"Argument":return [C("name"),": ",C("value")];case"Directive":return ["@",C("name"),D.arguments.length>0?u(["(",i([r,t([o("",", "),r],w(k,P,C,"arguments"))]),r,")"]):""];case"NamedType":return C("name");case"VariableDefinition":return [C("variable"),": ",C("type"),D.defaultValue?[" = ",C("defaultValue")]:"",h(k,C,D)];case"ObjectTypeExtension":case"ObjectTypeDefinition":return [C("description"),D.description?s:"",D.kind==="ObjectTypeExtension"?"extend ":"","type ",C("name"),D.interfaces.length>0?[" implements ",...S(k,P,C)]:"",h(k,C,D),D.fields.length>0?[" {",i([s,t(s,w(k,P,C,"fields"))]),s,"}"]:""];case"FieldDefinition":return [C("description"),D.description?s:"",C("name"),D.arguments.length>0?u(["(",i([r,t([o("",", "),r],w(k,P,C,"arguments"))]),r,")"]):"",": ",C("type"),h(k,C,D)];case"DirectiveDefinition":return [C("description"),D.description?s:"","directive ","@",C("name"),D.arguments.length>0?u(["(",i([r,t([o("",", "),r],w(k,P,C,"arguments"))]),r,")"]):"",D.repeatable?" repeatable":""," on ",t(" | ",k.map(C,"locations"))];case"EnumTypeExtension":case"EnumTypeDefinition":return [C("description"),D.description?s:"",D.kind==="EnumTypeExtension"?"extend ":"","enum ",C("name"),h(k,C,D),D.values.length>0?[" {",i([s,t(s,w(k,P,C,"values"))]),s,"}"]:""];case"EnumValueDefinition":return [C("description"),D.description?s:"",C("name"),h(k,C,D)];case"InputValueDefinition":return [C("description"),D.description?D.description.block?s:a:"",C("name"),": ",C("type"),D.defaultValue?[" = ",C("defaultValue")]:"",h(k,C,D)];case"InputObjectTypeExtension":case"InputObjectTypeDefinition":return [C("description"),D.description?s:"",D.kind==="InputObjectTypeExtension"?"extend ":"","input ",C("name"),h(k,C,D),D.fields.length>0?[" {",i([s,t(s,w(k,P,C,"fields"))]),s,"}"]:""];case"SchemaExtension":return ["extend schema",h(k,C,D),...D.operationTypes.length>0?[" {",i([s,t(s,w(k,P,C,"operationTypes"))]),s,"}"]:[]];case"SchemaDefinition":return [C("description"),D.description?s:"","schema",h(k,C,D)," {",D.operationTypes.length>0?i([s,t(s,w(k,P,C,"operationTypes"))]):"",s,"}"];case"OperationTypeDefinition":return [C("operation"),": ",C("type")];case"InterfaceTypeExtension":case"InterfaceTypeDefinition":return [C("description"),D.description?s:"",D.kind==="InterfaceTypeExtension"?"extend ":"","interface ",C("name"),D.interfaces.length>0?[" implements ",...S(k,P,C)]:"",h(k,C,D),D.fields.length>0?[" {",i([s,t(s,w(k,P,C,"fields"))]),s,"}"]:""];case"FragmentSpread":return ["...",C("name"),h(k,C,D)];case"InlineFragment":return ["...",D.typeCondition?[" on ",C("typeCondition")]:"",h(k,C,D)," ",C("selectionSet")];case"UnionTypeExtension":case"UnionTypeDefinition":return u([C("description"),D.description?s:"",u([D.kind==="UnionTypeExtension"?"extend ":"","union ",C("name"),h(k,C,D),D.types.length>0?[" =",o(""," "),i([o([a," "]),t([a,"| "],k.map(C,"types"))])]:""])]);case"ScalarTypeExtension":case"ScalarTypeDefinition":return [C("description"),D.description?s:"",D.kind==="ScalarTypeExtension"?"extend ":"","scalar ",C("name"),h(k,C,D)];case"NonNullType":return [C("type"),"!"];case"ListType":return ["[",C("type"),"]"];default:throw new Error("unknown graphql type: "+JSON.stringify(D.kind))}}function h(k,P,C){if(C.directives.length===0)return "";let D=t(a,k.map(P,"directives"));return C.kind==="FragmentDefinition"||C.kind==="OperationDefinition"?u([a,D]):[" ",u(i([r,D]))]}function w(k,P,C,D){return k.map((g,F,l)=>{let E=C();return F<l.length-1&&c(P.originalText,g.getValue(),p)?[E,s]:E},D)}function T(k){return k.kind&&k.kind!=="Comment"}function A(k){let P=k.getValue();if(P.kind==="Comment")return "#"+P.value.trimEnd();throw new Error("Not a comment: "+JSON.stringify(P))}function S(k,P,C){let D=k.getNode(),g=[],{interfaces:F}=D,l=k.map(E=>C(E),"interfaces");for(let E=0;E<F.length;E++){let v=F[E];g.push(l[E]);let N=F[E+1];if(N){let x=P.originalText.slice(v.loc.end,N.loc.start),b=x.includes("#"),L=x.replace(/#.*/g,"").trim();g.push(L===","?",":" &",b?a:" ");}}return g}function B(k,P){k.kind==="StringValue"&&k.block&&!k.value.includes(` -`)&&(P.value=P.value.trim());}B.ignoredProperties=new Set(["loc","comments"]);function I(k){var P;let C=k.getValue();return C==null||(P=C.comments)===null||P===void 0?void 0:P.some(D=>D.value.trim()==="prettier-ignore")}n.exports={print:f,massageAstNode:B,hasPrettierIgnore:I,insertPragma:m,printComment:A,canAttachComment:T};}}),Bd=Z({"src/language-graphql/options.js"(e,n){re();var t=Lt();n.exports={bracketSpacing:t.bracketSpacing};}}),Nd=Z({"src/language-graphql/parsers.js"(){re();}}),wd=Z({"node_modules/linguist-languages/data/GraphQL.json"(e,n){n.exports={name:"GraphQL",type:"data",color:"#e10098",extensions:[".graphql",".gql",".graphqls"],tmScope:"source.graphql",aceMode:"text",languageId:139};}}),_d=Z({"src/language-graphql/index.js"(e,n){re();var t=Tt(),s=Td(),a=Bd(),r=Nd(),u=[t(wd(),()=>({since:"1.5.0",parsers:["graphql"],vscodeLanguageIds:["graphql"]}))],i={graphql:s};n.exports={languages:u,options:a,printers:i,parsers:r};}}),oo=Z({"src/language-markdown/loc.js"(e,n){re();function t(a){return a.position.start.offset}function s(a){return a.position.end.offset}n.exports={locStart:t,locEnd:s};}}),Pd=Z({"src/language-markdown/constants.evaluate.js"(e,n){n.exports={cjkPattern:"(?:[\\u02ea-\\u02eb\\u1100-\\u11ff\\u2e80-\\u2e99\\u2e9b-\\u2ef3\\u2f00-\\u2fd5\\u2ff0-\\u303f\\u3041-\\u3096\\u3099-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u3190-\\u3191\\u3196-\\u31ba\\u31c0-\\u31e3\\u31f0-\\u321e\\u322a-\\u3247\\u3260-\\u327e\\u328a-\\u32b0\\u32c0-\\u32cb\\u32d0-\\u3370\\u337b-\\u337f\\u33e0-\\u33fe\\u3400-\\u4db5\\u4e00-\\u9fef\\ua960-\\ua97c\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufe10-\\ufe1f\\ufe30-\\ufe6f\\uff00-\\uffef]|[\\ud840-\\ud868\\ud86a-\\ud86c\\ud86f-\\ud872\\ud874-\\ud879][\\udc00-\\udfff]|\\ud82c[\\udc00-\\udd1e\\udd50-\\udd52\\udd64-\\udd67]|\\ud83c[\\ude00\\ude50-\\ude51]|\\ud869[\\udc00-\\uded6\\udf00-\\udfff]|\\ud86d[\\udc00-\\udf34\\udf40-\\udfff]|\\ud86e[\\udc00-\\udc1d\\udc20-\\udfff]|\\ud873[\\udc00-\\udea1\\udeb0-\\udfff]|\\ud87a[\\udc00-\\udfe0]|\\ud87e[\\udc00-\\ude1d])(?:[\\ufe00-\\ufe0f]|\\udb40[\\udd00-\\uddef])?",kPattern:"[\\u1100-\\u11ff\\u3001-\\u3003\\u3008-\\u3011\\u3013-\\u301f\\u302e-\\u3030\\u3037\\u30fb\\u3131-\\u318e\\u3200-\\u321e\\u3260-\\u327e\\ua960-\\ua97c\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\ufe45-\\ufe46\\uff61-\\uff65\\uffa0-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc]",punctuationPattern:"[\\u0021-\\u002f\\u003a-\\u0040\\u005b-\\u0060\\u007b-\\u007e\\u00a1\\u00a7\\u00ab\\u00b6-\\u00b7\\u00bb\\u00bf\\u037e\\u0387\\u055a-\\u055f\\u0589-\\u058a\\u05be\\u05c0\\u05c3\\u05c6\\u05f3-\\u05f4\\u0609-\\u060a\\u060c-\\u060d\\u061b\\u061e-\\u061f\\u066a-\\u066d\\u06d4\\u0700-\\u070d\\u07f7-\\u07f9\\u0830-\\u083e\\u085e\\u0964-\\u0965\\u0970\\u09fd\\u0a76\\u0af0\\u0c77\\u0c84\\u0df4\\u0e4f\\u0e5a-\\u0e5b\\u0f04-\\u0f12\\u0f14\\u0f3a-\\u0f3d\\u0f85\\u0fd0-\\u0fd4\\u0fd9-\\u0fda\\u104a-\\u104f\\u10fb\\u1360-\\u1368\\u1400\\u166e\\u169b-\\u169c\\u16eb-\\u16ed\\u1735-\\u1736\\u17d4-\\u17d6\\u17d8-\\u17da\\u1800-\\u180a\\u1944-\\u1945\\u1a1e-\\u1a1f\\u1aa0-\\u1aa6\\u1aa8-\\u1aad\\u1b5a-\\u1b60\\u1bfc-\\u1bff\\u1c3b-\\u1c3f\\u1c7e-\\u1c7f\\u1cc0-\\u1cc7\\u1cd3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205e\\u207d-\\u207e\\u208d-\\u208e\\u2308-\\u230b\\u2329-\\u232a\\u2768-\\u2775\\u27c5-\\u27c6\\u27e6-\\u27ef\\u2983-\\u2998\\u29d8-\\u29db\\u29fc-\\u29fd\\u2cf9-\\u2cfc\\u2cfe-\\u2cff\\u2d70\\u2e00-\\u2e2e\\u2e30-\\u2e4f\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301f\\u3030\\u303d\\u30a0\\u30fb\\ua4fe-\\ua4ff\\ua60d-\\ua60f\\ua673\\ua67e\\ua6f2-\\ua6f7\\ua874-\\ua877\\ua8ce-\\ua8cf\\ua8f8-\\ua8fa\\ua8fc\\ua92e-\\ua92f\\ua95f\\ua9c1-\\ua9cd\\ua9de-\\ua9df\\uaa5c-\\uaa5f\\uaade-\\uaadf\\uaaf0-\\uaaf1\\uabeb\\ufd3e-\\ufd3f\\ufe10-\\ufe19\\ufe30-\\ufe52\\ufe54-\\ufe61\\ufe63\\ufe68\\ufe6a-\\ufe6b\\uff01-\\uff03\\uff05-\\uff0a\\uff0c-\\uff0f\\uff1a-\\uff1b\\uff1f-\\uff20\\uff3b-\\uff3d\\uff3f\\uff5b\\uff5d\\uff5f-\\uff65]|\\ud800[\\udd00-\\udd02\\udf9f\\udfd0]|\\ud801[\\udd6f]|\\ud802[\\udc57\\udd1f\\udd3f\\ude50-\\ude58\\ude7f\\udef0-\\udef6\\udf39-\\udf3f\\udf99-\\udf9c]|\\ud803[\\udf55-\\udf59]|\\ud804[\\udc47-\\udc4d\\udcbb-\\udcbc\\udcbe-\\udcc1\\udd40-\\udd43\\udd74-\\udd75\\uddc5-\\uddc8\\uddcd\\udddb\\udddd-\\udddf\\ude38-\\ude3d\\udea9]|\\ud805[\\udc4b-\\udc4f\\udc5b\\udc5d\\udcc6\\uddc1-\\uddd7\\ude41-\\ude43\\ude60-\\ude6c\\udf3c-\\udf3e]|\\ud806[\\udc3b\\udde2\\ude3f-\\ude46\\ude9a-\\ude9c\\ude9e-\\udea2]|\\ud807[\\udc41-\\udc45\\udc70-\\udc71\\udef7-\\udef8\\udfff]|\\ud809[\\udc70-\\udc74]|\\ud81a[\\ude6e-\\ude6f\\udef5\\udf37-\\udf3b\\udf44]|\\ud81b[\\ude97-\\ude9a\\udfe2]|\\ud82f[\\udc9f]|\\ud836[\\ude87-\\ude8b]|\\ud83a[\\udd5e-\\udd5f]"};}}),Un=Z({"src/language-markdown/utils.js"(e,n){re();var{getLast:t}=Ue(),{locStart:s,locEnd:a}=oo(),{cjkPattern:r,kPattern:u,punctuationPattern:i}=Pd(),o=["liquidNode","inlineCode","emphasis","esComment","strong","delete","wikiLink","link","linkReference","image","imageReference","footnote","footnoteReference","sentence","whitespace","word","break","inlineMath"],c=[...o,"tableCell","paragraph","heading"],y=new RegExp(u),m=new RegExp(i);function d(A,S){let B="non-cjk",I="cj-letter",k="k-letter",P="cjk-punctuation",C=[],D=(S.proseWrap==="preserve"?A:A.replace(new RegExp("(".concat(r,`) -(`).concat(r,")"),"g"),"$1$2")).split(/([\t\n ]+)/);for(let[F,l]of D.entries()){if(F%2===1){C.push({type:"whitespace",value:/\n/.test(l)?` -`:" "});continue}if((F===0||F===D.length-1)&&l==="")continue;let E=l.split(new RegExp("(".concat(r,")")));for(let[v,N]of E.entries())if(!((v===0||v===E.length-1)&&N==="")){if(v%2===0){N!==""&&g({type:"word",value:N,kind:B,hasLeadingPunctuation:m.test(N[0]),hasTrailingPunctuation:m.test(t(N))});continue}g(m.test(N)?{type:"word",value:N,kind:P,hasLeadingPunctuation:!0,hasTrailingPunctuation:!0}:{type:"word",value:N,kind:y.test(N)?k:I,hasLeadingPunctuation:!1,hasTrailingPunctuation:!1});}}return C;function g(F){let l=t(C);l&&l.type==="word"&&(l.kind===B&&F.kind===I&&!l.hasTrailingPunctuation||l.kind===I&&F.kind===B&&!F.hasLeadingPunctuation?C.push({type:"whitespace",value:" "}):!E(B,P)&&![l.value,F.value].some(v=>/\u3000/.test(v))&&C.push({type:"whitespace",value:""})),C.push(F);function E(v,N){return l.kind===v&&F.kind===N||l.kind===N&&F.kind===v}}}function p(A,S){let[,B,I,k]=S.slice(A.position.start.offset,A.position.end.offset).match(/^\s*(\d+)(\.|\))(\s*)/);return {numberText:B,marker:I,leadingSpaces:k}}function f(A,S){if(!A.ordered||A.children.length<2)return !1;let B=Number(p(A.children[0],S.originalText).numberText),I=Number(p(A.children[1],S.originalText).numberText);if(B===0&&A.children.length>2){let k=Number(p(A.children[2],S.originalText).numberText);return I===1&&k===1}return I===1}function h(A,S){let{value:B}=A;return A.position.end.offset===S.length&&B.endsWith(` -`)&&S.endsWith(` -`)?B.slice(0,-1):B}function w(A,S){return function B(I,k,P){let C=Object.assign({},S(I,k,P));return C.children&&(C.children=C.children.map((D,g)=>B(D,g,[C,...P]))),C}(A,null,[])}function T(A){if((A==null?void 0:A.type)!=="link"||A.children.length!==1)return !1;let[S]=A.children;return s(A)===s(S)&&a(A)===a(S)}n.exports={mapAst:w,splitText:d,punctuationPattern:i,getFencedCodeBlockValue:h,getOrderedListItemInfo:p,hasGitDiffFriendlyOrderedList:f,INLINE_NODE_TYPES:o,INLINE_NODE_WRAPPER_TYPES:c,isAutolink:T};}}),kd=Z({"src/language-markdown/embed.js"(e,n){re();var{inferParserByLanguage:t,getMaxContinuousCount:s}=Ue(),{builders:{hardline:a,markAsRoot:r},utils:{replaceEndOfLine:u}}=Oe(),i=Jn(),{getFencedCodeBlockValue:o}=Un();function c(y,m,d,p){let f=y.getValue();if(f.type==="code"&&f.lang!==null){let h=t(f.lang,p);if(h){let w=p.__inJsTemplate?"~":"`",T=w.repeat(Math.max(3,s(f.value,w)+1)),A={parser:h};f.lang==="tsx"&&(A.filepath="dummy.tsx");let S=d(o(f,p.originalText),A,{stripTrailingHardline:!0});return r([T,f.lang,f.meta?" "+f.meta:"",a,u(S),a,T])}}switch(f.type){case"front-matter":return i(f,d);case"importExport":return [d(f.value,{parser:"babel"},{stripTrailingHardline:!0}),a];case"jsx":return d("<$>".concat(f.value,"</$>"),{parser:"__js_expression",rootMarker:"mdx"},{stripTrailingHardline:!0})}return null}n.exports=c;}}),lo=Z({"src/language-markdown/pragma.js"(e,n){re();var t=ao(),s=["format","prettier"];function a(r){let u="@(".concat(s.join("|"),")"),i=new RegExp(["<!--\\s*".concat(u,"\\s*-->"),"{\\s*\\/\\*\\s*".concat(u,"\\s*\\*\\/\\s*}"),`<!--.*\r? -[\\s\\S]*(^| -)[^\\S -]*`.concat(u,`[^\\S -]*($| -)[\\s\\S]* -.*-->`)].join("|"),"m"),o=r.match(i);return (o==null?void 0:o.index)===0}n.exports={startWithPragma:a,hasPragma:r=>a(t(r).content.trimStart()),insertPragma:r=>{let u=t(r),i="<!-- @".concat(s[0]," -->");return u.frontMatter?"".concat(u.frontMatter.raw,` - -`).concat(i,` - -`).concat(u.content):"".concat(i,` - -`).concat(u.content)}};}}),Id=Z({"src/language-markdown/print-preprocess.js"(e,n){re();var t=it(),{getOrderedListItemInfo:s,mapAst:a,splitText:r}=Un(),u=/^.$/su;function i(T,A){return T=y(T,A),T=p(T),T=c(T),T=h(T,A),T=w(T,A),T=f(T,A),T=o(T),T=m(T),T}function o(T){return a(T,A=>A.type!=="import"&&A.type!=="export"?A:Object.assign(Object.assign({},A),{},{type:"importExport"}))}function c(T){return a(T,A=>A.type!=="inlineCode"?A:Object.assign(Object.assign({},A),{},{value:A.value.replace(/\s+/g," ")}))}function y(T,A){return a(T,S=>S.type!=="text"||S.value==="*"||S.value==="_"||!u.test(S.value)||S.position.end.offset-S.position.start.offset===S.value.length?S:Object.assign(Object.assign({},S),{},{value:A.originalText.slice(S.position.start.offset,S.position.end.offset)}))}function m(T){return d(T,(A,S)=>A.type==="importExport"&&S.type==="importExport",(A,S)=>({type:"importExport",value:A.value+` - -`+S.value,position:{start:A.position.start,end:S.position.end}}))}function d(T,A,S){return a(T,B=>{if(!B.children)return B;let I=B.children.reduce((k,P)=>{let C=t(k);return C&&A(C,P)?k.splice(-1,1,S(C,P)):k.push(P),k},[]);return Object.assign(Object.assign({},B),{},{children:I})})}function p(T){return d(T,(A,S)=>A.type==="text"&&S.type==="text",(A,S)=>({type:"text",value:A.value+S.value,position:{start:A.position.start,end:S.position.end}}))}function f(T,A){return a(T,(S,B,I)=>{let[k]=I;if(S.type!=="text")return S;let{value:P}=S;return k.type==="paragraph"&&(B===0&&(P=P.trimStart()),B===k.children.length-1&&(P=P.trimEnd())),{type:"sentence",position:S.position,children:r(P,A)}})}function h(T,A){return a(T,(S,B,I)=>{if(S.type==="code"){let k=/^\n?(?: {4,}|\t)/.test(A.originalText.slice(S.position.start.offset,S.position.end.offset));if(S.isIndented=k,k)for(let P=0;P<I.length;P++){let C=I[P];if(C.hasIndentedCodeblock)break;C.type==="list"&&(C.hasIndentedCodeblock=!0);}}return S})}function w(T,A){return a(T,(I,k,P)=>{if(I.type==="list"&&I.children.length>0){for(let C=0;C<P.length;C++){let D=P[C];if(D.type==="list"&&!D.isAligned)return I.isAligned=!1,I}I.isAligned=B(I);}return I});function S(I){return I.children.length===0?-1:I.children[0].position.start.column-1}function B(I){if(!I.ordered)return !0;let[k,P]=I.children;if(s(k,A.originalText).leadingSpaces.length>1)return !0;let D=S(k);if(D===-1)return !1;if(I.children.length===1)return D%A.tabWidth===0;let g=S(P);return D!==g?!1:D%A.tabWidth===0?!0:s(P,A.originalText).leadingSpaces.length>1}}n.exports=i;}}),Ld=Z({"src/language-markdown/clean.js"(e,n){re();var{isFrontMatterNode:t}=Ue(),{startWithPragma:s}=lo(),a=new Set(["position","raw"]);function r(u,i,o){if((u.type==="front-matter"||u.type==="code"||u.type==="yaml"||u.type==="import"||u.type==="export"||u.type==="jsx")&&delete i.value,u.type==="list"&&delete i.isAligned,(u.type==="list"||u.type==="listItem")&&(delete i.spread,delete i.loose),u.type==="text"||(u.type==="inlineCode"&&(i.value=u.value.replace(/[\t\n ]+/g," ")),u.type==="wikiLink"&&(i.value=u.value.trim().replace(/[\t\n]+/g," ")),(u.type==="definition"||u.type==="linkReference")&&(i.label=u.label.trim().replace(/[\t\n ]+/g," ").toLowerCase()),(u.type==="definition"||u.type==="link"||u.type==="image")&&u.title&&(i.title=u.title.replace(/\\(["')])/g,"$1")),o&&o.type==="root"&&o.children.length>0&&(o.children[0]===u||t(o.children[0])&&o.children[1]===u)&&u.type==="html"&&s(u.value)))return null}r.ignoredProperties=a,n.exports=r;}}),jd=Z({"src/language-markdown/printer-markdown.js"(e,n){re();var{getLast:t,getMinNotPresentContinuousCount:s,getMaxContinuousCount:a,getStringWidth:r,isNonEmptyArray:u}=Ue(),{builders:{breakParent:i,join:o,line:c,literalline:y,markAsRoot:m,hardline:d,softline:p,ifBreak:f,fill:h,align:w,indent:T,group:A,hardlineWithoutBreakParent:S},utils:{normalizeDoc:B,replaceTextEndOfLine:I},printer:{printDocToString:k}}=Oe(),P=kd(),{insertPragma:C}=lo(),{locStart:D,locEnd:g}=oo(),F=Id(),l=Ld(),{getFencedCodeBlockValue:E,hasGitDiffFriendlyOrderedList:v,splitText:N,punctuationPattern:x,INLINE_NODE_TYPES:b,INLINE_NODE_WRAPPER_TYPES:L,isAutolink:M}=Un(),j=new Set(["importExport"]),$=["heading","tableCell","link","wikiLink"],V=new Set(["listItem","definition","footnoteDefinition"]);function q(ce,pe,de){let ae=ce.getValue();if(le(ce))return N(pe.originalText.slice(ae.position.start.offset,ae.position.end.offset),pe).map(ve=>ve.type==="word"?ve.value:ve.value===""?"":oe(ce,ve.value,pe));switch(ae.type){case"front-matter":return pe.originalText.slice(ae.position.start.offset,ae.position.end.offset);case"root":return ae.children.length===0?"":[B(X(ce,pe,de)),j.has(De(ae).type)?"":d];case"paragraph":return ue(ce,pe,de,{postprocessor:h});case"sentence":return ue(ce,pe,de);case"word":{let ve=ae.value.replace(/\*/g,"\\$&").replace(new RegExp(["(^|".concat(x,")(_+)"),"(_+)(".concat(x,"|$)")].join("|"),"g"),(ye,Ce,Ie,Fe,me)=>(Ie?"".concat(Ce).concat(Ie):"".concat(Fe).concat(me)).replace(/_/g,"\\_")),K=(ye,Ce,Ie)=>ye.type==="sentence"&&Ie===0,he=(ye,Ce,Ie)=>M(ye.children[Ie-1]);return ve!==ae.value&&(ce.match(void 0,K,he)||ce.match(void 0,K,(ye,Ce,Ie)=>ye.type==="emphasis"&&Ie===0,he))&&(ve=ve.replace(/^(\\?[*_])+/,ye=>ye.replace(/\\/g,""))),ve}case"whitespace":{let ve=ce.getParentNode(),K=ve.children.indexOf(ae),he=ve.children[K+1],ye=he&&/^>|^(?:[*+-]|#{1,6}|\d+[).])$/.test(he.value)?"never":pe.proseWrap;return oe(ce,ae.value,{proseWrap:ye})}case"emphasis":{let ve;if(M(ae.children[0]))ve=pe.originalText[ae.position.start.offset];else {let K=ce.getParentNode(),he=K.children.indexOf(ae),ye=K.children[he-1],Ce=K.children[he+1];ve=ye&&ye.type==="sentence"&&ye.children.length>0&&t(ye.children).type==="word"&&!t(ye.children).hasTrailingPunctuation||Ce&&Ce.type==="sentence"&&Ce.children.length>0&&Ce.children[0].type==="word"&&!Ce.children[0].hasLeadingPunctuation||te(ce,"emphasis")?"*":"_";}return [ve,ue(ce,pe,de),ve]}case"strong":return ["**",ue(ce,pe,de),"**"];case"delete":return ["~~",ue(ce,pe,de),"~~"];case"inlineCode":{let ve=s(ae.value,"`"),K="`".repeat(ve||1),he=ve&&!/^\s/.test(ae.value)?" ":"";return [K,he,ae.value,he,K]}case"wikiLink":{let ve="";return pe.proseWrap==="preserve"?ve=ae.value:ve=ae.value.replace(/[\t\n]+/g," "),["[[",ve,"]]"]}case"link":switch(pe.originalText[ae.position.start.offset]){case"<":{let ve="mailto:",K=ae.url.startsWith(ve)&&pe.originalText.slice(ae.position.start.offset+1,ae.position.start.offset+1+ve.length)!==ve?ae.url.slice(ve.length):ae.url;return ["<",K,">"]}case"[":return ["[",ue(ce,pe,de),"](",ge(ae.url,")"),Ae(ae.title,pe),")"];default:return pe.originalText.slice(ae.position.start.offset,ae.position.end.offset)}case"image":return ["![",ae.alt||"","](",ge(ae.url,")"),Ae(ae.title,pe),")"];case"blockquote":return ["> ",w("> ",ue(ce,pe,de))];case"heading":return ["#".repeat(ae.depth)+" ",ue(ce,pe,de)];case"code":{if(ae.isIndented){let he=" ".repeat(4);return w(he,[he,...I(ae.value,d)])}let ve=pe.__inJsTemplate?"~":"`",K=ve.repeat(Math.max(3,a(ae.value,ve)+1));return [K,ae.lang||"",ae.meta?" "+ae.meta:"",d,...I(E(ae,pe.originalText),d),d,K]}case"html":{let ve=ce.getParentNode(),K=ve.type==="root"&&t(ve.children)===ae?ae.value.trimEnd():ae.value,he=/^<!--.*-->$/s.test(K);return I(K,he?d:m(y))}case"list":{let ve=R(ae,ce.getParentNode()),K=v(ae,pe);return ue(ce,pe,de,{processor:(he,ye)=>{let Ce=Fe(),Ie=he.getValue();if(Ie.children.length===2&&Ie.children[1].type==="html"&&Ie.children[0].position.start.column!==Ie.children[1].position.start.column)return [Ce,Y(he,pe,de,Ce)];return [Ce,w(" ".repeat(Ce.length),Y(he,pe,de,Ce))];function Fe(){let me=ae.ordered?(ye===0?ae.start:K?1:ae.start+ye)+(ve%2===0?". ":") "):ve%2===0?"- ":"* ";return ae.isAligned||ae.hasIndentedCodeblock?H(me,pe):me}}})}case"thematicBreak":{let ve=ee(ce,"list");return ve===-1?"---":R(ce.getParentNode(ve),ce.getParentNode(ve+1))%2===0?"***":"---"}case"linkReference":return ["[",ue(ce,pe,de),"]",ae.referenceType==="full"?["[",ae.identifier,"]"]:ae.referenceType==="collapsed"?"[]":""];case"imageReference":switch(ae.referenceType){case"full":return ["![",ae.alt||"","][",ae.identifier,"]"];default:return ["![",ae.alt,"]",ae.referenceType==="collapsed"?"[]":""]}case"definition":{let ve=pe.proseWrap==="always"?c:" ";return A(["[",ae.identifier,"]:",T([ve,ge(ae.url),ae.title===null?"":[ve,Ae(ae.title,pe,!1)]])])}case"footnote":return ["[^",ue(ce,pe,de),"]"];case"footnoteReference":return ["[^",ae.identifier,"]"];case"footnoteDefinition":{let ve=ce.getParentNode().children[ce.getName()+1],K=ae.children.length===1&&ae.children[0].type==="paragraph"&&(pe.proseWrap==="never"||pe.proseWrap==="preserve"&&ae.children[0].position.start.line===ae.children[0].position.end.line);return ["[^",ae.identifier,"]: ",K?ue(ce,pe,de):A([w(" ".repeat(4),ue(ce,pe,de,{processor:(he,ye)=>ye===0?A([p,de()]):de()})),ve&&ve.type==="footnoteDefinition"?p:""])]}case"table":return W(ce,pe,de);case"tableCell":return ue(ce,pe,de);case"break":return /\s/.test(pe.originalText[ae.position.start.offset])?[" ",m(y)]:["\\",d];case"liquidNode":return I(ae.value,d);case"importExport":return [ae.value,d];case"esComment":return ["{/* ",ae.value," */}"];case"jsx":return ae.value;case"math":return ["$$",d,ae.value?[...I(ae.value,d),d]:"","$$"];case"inlineMath":return pe.originalText.slice(D(ae),g(ae));case"tableRow":case"listItem":default:throw new Error("Unknown markdown type ".concat(JSON.stringify(ae.type)))}}function Y(ce,pe,de,ae){let ve=ce.getValue(),K=ve.checked===null?"":ve.checked?"[x] ":"[ ] ";return [K,ue(ce,pe,de,{processor:(he,ye)=>{if(ye===0&&he.getValue().type!=="list")return w(" ".repeat(K.length),de());let Ce=" ".repeat(Ne(pe.tabWidth-ae.length,0,3));return [Ce,w(Ce,de())]}})]}function H(ce,pe){let de=ae();return ce+" ".repeat(de>=4?0:de);function ae(){let ve=ce.length%pe.tabWidth;return ve===0?0:pe.tabWidth-ve}}function R(ce,pe){return Q(ce,pe,de=>de.ordered===ce.ordered)}function Q(ce,pe,de){let ae=-1;for(let ve of pe.children)if(ve.type===ce.type&&de(ve)?ae++:ae=-1,ve===ce)return ae}function ee(ce,pe){let de=Array.isArray(pe)?pe:[pe],ae=-1,ve;for(;ve=ce.getParentNode(++ae);)if(de.includes(ve.type))return ae;return -1}function te(ce,pe){let de=ee(ce,pe);return de===-1?null:ce.getParentNode(de)}function oe(ce,pe,de){if(de.proseWrap==="preserve"&&pe===` -`)return d;let ae=de.proseWrap==="always"&&!te(ce,$);return pe!==""?ae?c:" ":ae?p:""}function W(ce,pe,de){let ae=ce.getValue(),ve=[],K=ce.map(me=>me.map((_,J)=>{let ne=k(de(),pe).formatted,Ee=r(ne);return ve[J]=Math.max(ve[J]||3,Ee),{text:ne,width:Ee}},"children"),"children"),he=Ce(!1);if(pe.proseWrap!=="never")return [i,he];let ye=Ce(!0);return [i,A(f(ye,he))];function Ce(me){let _=[Fe(K[0],me),Ie(me)];return K.length>1&&_.push(o(S,K.slice(1).map(J=>Fe(J,me)))),o(S,_)}function Ie(me){let _=ve.map((J,ne)=>{let Ee=ae.align[ne],We=Ee==="center"||Ee==="left"?":":"-",Be=Ee==="center"||Ee==="right"?":":"-",Pe=me?"-":"-".repeat(J-2);return "".concat(We).concat(Pe).concat(Be)});return "| ".concat(_.join(" | ")," |")}function Fe(me,_){let J=me.map((ne,Ee)=>{let{text:We,width:Be}=ne;if(_)return We;let Pe=ve[Ee]-Be,Se=ae.align[Ee],Qe=0;Se==="right"?Qe=Pe:Se==="center"&&(Qe=Math.floor(Pe/2));let xe=Pe-Qe;return "".concat(" ".repeat(Qe)).concat(We).concat(" ".repeat(xe))});return "| ".concat(J.join(" | ")," |")}}function X(ce,pe,de){let ae=[],ve=null,{children:K}=ce.getValue();for(let[he,ye]of K.entries())switch(ie(ye)){case"start":ve===null&&(ve={index:he,offset:ye.position.end.offset});break;case"end":ve!==null&&(ae.push({start:ve,end:{index:he,offset:ye.position.start.offset}}),ve=null);break;}return ue(ce,pe,de,{processor:(he,ye)=>{if(ae.length>0){let Ce=ae[0];if(ye===Ce.start.index)return [K[Ce.start.index].value,pe.originalText.slice(Ce.start.offset,Ce.end.offset),K[Ce.end.index].value];if(Ce.start.index<ye&&ye<Ce.end.index)return !1;if(ye===Ce.end.index)return ae.shift(),!1}return de()}})}function ue(ce,pe,de){let ae=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},{postprocessor:ve}=ae,K=ae.processor||(()=>de()),he=ce.getValue(),ye=[],Ce;return ce.each((Ie,Fe)=>{let me=Ie.getValue(),_=K(Ie,Fe);if(_!==!1){let J={parts:ye,prevNode:Ce,parentNode:he,options:pe};G(me,J)&&(ye.push(d),Ce&&j.has(Ce.type)||(z(me,J)||U(me,J))&&ye.push(d),U(me,J)&&ye.push(d)),ye.push(_),Ce=me;}},"children"),ve?ve(ye):ye}function De(ce){let pe=ce;for(;u(pe.children);)pe=t(pe.children);return pe}function ie(ce){let pe;if(ce.type==="html")pe=ce.value.match(/^<!--\s*prettier-ignore(?:-(start|end))?\s*-->$/);else {let de;ce.type==="esComment"?de=ce:ce.type==="paragraph"&&ce.children.length===1&&ce.children[0].type==="esComment"&&(de=ce.children[0]),de&&(pe=de.value.match(/^prettier-ignore(?:-(start|end))?$/));}return pe?pe[1]||"next":!1}function G(ce,pe){let de=pe.parts.length===0,ae=b.includes(ce.type),ve=ce.type==="html"&&L.includes(pe.parentNode.type);return !de&&!ae&&!ve}function z(ce,pe){var de,ae,ve;let he=(pe.prevNode&&pe.prevNode.type)===ce.type&&V.has(ce.type),ye=pe.parentNode.type==="listItem"&&!pe.parentNode.loose,Ce=((de=pe.prevNode)===null||de===void 0?void 0:de.type)==="listItem"&&pe.prevNode.loose,Ie=ie(pe.prevNode)==="next",Fe=ce.type==="html"&&((ae=pe.prevNode)===null||ae===void 0?void 0:ae.type)==="html"&&pe.prevNode.position.end.line+1===ce.position.start.line,me=ce.type==="html"&&pe.parentNode.type==="listItem"&&((ve=pe.prevNode)===null||ve===void 0?void 0:ve.type)==="paragraph"&&pe.prevNode.position.end.line+1===ce.position.start.line;return Ce||!(he||ye||Ie||Fe||me)}function U(ce,pe){let de=pe.prevNode&&pe.prevNode.type==="list",ae=ce.type==="code"&&ce.isIndented;return de&&ae}function le(ce){let pe=te(ce,["linkReference","imageReference"]);return pe&&(pe.type!=="linkReference"||pe.referenceType!=="full")}function ge(ce){let pe=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],de=[" ",...Array.isArray(pe)?pe:[pe]];return new RegExp(de.map(ae=>"\\".concat(ae)).join("|")).test(ce)?"<".concat(ce,">"):ce}function Ae(ce,pe){let de=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(!ce)return "";if(de)return " "+Ae(ce,pe,!1);if(ce=ce.replace(/\\(["')])/g,"$1"),ce.includes('"')&&ce.includes("'")&&!ce.includes(")"))return "(".concat(ce,")");let ae=ce.split("'").length-1,ve=ce.split('"').length-1,K=ae>ve?'"':ve>ae||pe.singleQuote?"'":'"';return ce=ce.replace(/\\/,"\\\\"),ce=ce.replace(new RegExp("(".concat(K,")"),"g"),"\\$1"),"".concat(K).concat(ce).concat(K)}function Ne(ce,pe,de){return ce<pe?pe:ce>de?de:ce}function ke(ce){let pe=Number(ce.getName());if(pe===0)return !1;let de=ce.getParentNode().children[pe-1];return ie(de)==="next"}n.exports={preprocess:F,print:q,embed:P,massageAstNode:l,hasPrettierIgnore:ke,insertPragma:C};}}),Od=Z({"src/language-markdown/options.js"(e,n){re();var t=Lt();n.exports={proseWrap:t.proseWrap,singleQuote:t.singleQuote};}}),qd=Z({"src/language-markdown/parsers.js"(){re();}}),oa=Z({"node_modules/linguist-languages/data/Markdown.json"(e,n){n.exports={name:"Markdown",type:"prose",color:"#083fa1",aliases:["pandoc"],aceMode:"markdown",codemirrorMode:"gfm",codemirrorMimeType:"text/x-gfm",wrap:!0,extensions:[".md",".livemd",".markdown",".mdown",".mdwn",".mdx",".mkd",".mkdn",".mkdown",".ronn",".scd",".workbook"],filenames:["contents.lr"],tmScope:"source.gfm",languageId:222};}}),Md=Z({"src/language-markdown/index.js"(e,n){re();var t=Tt(),s=jd(),a=Od(),r=qd(),u=[t(oa(),o=>({since:"1.8.0",parsers:["markdown"],vscodeLanguageIds:["markdown"],filenames:[...o.filenames,"README"],extensions:o.extensions.filter(c=>c!==".mdx")})),t(oa(),()=>({name:"MDX",since:"1.15.0",parsers:["mdx"],vscodeLanguageIds:["mdx"],filenames:[],extensions:[".mdx"]}))],i={mdast:s};n.exports={languages:u,options:a,printers:i,parsers:r};}}),Rd=Z({"src/language-html/clean.js"(e,n){re();var{isFrontMatterNode:t}=Ue(),s=new Set(["sourceSpan","startSourceSpan","endSourceSpan","nameSpan","valueSpan"]);function a(r,u){if(r.type==="text"||r.type==="comment"||t(r)||r.type==="yaml"||r.type==="toml")return null;r.type==="attribute"&&delete u.value,r.type==="docType"&&delete u.value;}a.ignoredProperties=s,n.exports=a;}}),Vd=Z({"src/language-html/constants.evaluate.js"(e,n){n.exports={CSS_DISPLAY_TAGS:{area:"none",base:"none",basefont:"none",datalist:"none",head:"none",link:"none",meta:"none",noembed:"none",noframes:"none",param:"block",rp:"none",script:"block",source:"block",style:"none",template:"inline",track:"block",title:"none",html:"block",body:"block",address:"block",blockquote:"block",center:"block",div:"block",figure:"block",figcaption:"block",footer:"block",form:"block",header:"block",hr:"block",legend:"block",listing:"block",main:"block",p:"block",plaintext:"block",pre:"block",xmp:"block",slot:"contents",ruby:"ruby",rt:"ruby-text",article:"block",aside:"block",h1:"block",h2:"block",h3:"block",h4:"block",h5:"block",h6:"block",hgroup:"block",nav:"block",section:"block",dir:"block",dd:"block",dl:"block",dt:"block",ol:"block",ul:"block",li:"list-item",table:"table",caption:"table-caption",colgroup:"table-column-group",col:"table-column",thead:"table-header-group",tbody:"table-row-group",tfoot:"table-footer-group",tr:"table-row",td:"table-cell",th:"table-cell",fieldset:"block",button:"inline-block",details:"block",summary:"block",dialog:"block",meter:"inline-block",progress:"inline-block",object:"inline-block",video:"inline-block",audio:"inline-block",select:"inline-block",option:"block",optgroup:"block"},CSS_DISPLAY_DEFAULT:"inline",CSS_WHITE_SPACE_TAGS:{listing:"pre",plaintext:"pre",pre:"pre",xmp:"pre",nobr:"nowrap",table:"initial",textarea:"pre-wrap"},CSS_WHITE_SPACE_DEFAULT:"normal"};}}),Wd=Z({"src/language-html/utils/is-unknown-namespace.js"(e,n){re();function t(s){return s.type==="element"&&!s.hasExplicitNamespace&&!["html","svg"].includes(s.namespace)}n.exports=t;}}),jt=Z({"src/language-html/utils/index.js"(e,n){re();var{inferParserByLanguage:t,isFrontMatterNode:s}=Ue(),{builders:{line:a,hardline:r,join:u},utils:{getDocParts:i,replaceTextEndOfLine:o}}=Oe(),{CSS_DISPLAY_TAGS:c,CSS_DISPLAY_DEFAULT:y,CSS_WHITE_SPACE_TAGS:m,CSS_WHITE_SPACE_DEFAULT:d}=Vd(),p=Wd(),f=new Set([" ",` -`,"\f","\r"," "]),h=_=>_.replace(/^[\t\n\f\r ]+/,""),w=_=>_.replace(/[\t\n\f\r ]+$/,""),T=_=>h(w(_)),A=_=>_.replace(/^[\t\f\r ]*\n/g,""),S=_=>A(w(_)),B=_=>_.split(/[\t\n\f\r ]+/),I=_=>_.match(/^[\t\n\f\r ]*/)[0],k=_=>{let[,J,ne,Ee]=_.match(/^([\t\n\f\r ]*)(.*?)([\t\n\f\r ]*)$/s);return {leadingWhitespace:J,trailingWhitespace:Ee,text:ne}},P=_=>/[\t\n\f\r ]/.test(_);function C(_,J){return !!(_.type==="ieConditionalComment"&&_.lastChild&&!_.lastChild.isSelfClosing&&!_.lastChild.endSourceSpan||_.type==="ieConditionalComment"&&!_.complete||le(_)&&_.children.some(ne=>ne.type!=="text"&&ne.type!=="interpolation")||ye(_,J)&&!l(_)&&_.type!=="interpolation")}function D(_){return _.type==="attribute"||!_.parent||!_.prev?!1:g(_.prev)}function g(_){return _.type==="comment"&&_.value.trim()==="prettier-ignore"}function F(_){return _.type==="text"||_.type==="comment"}function l(_){return _.type==="element"&&(_.fullName==="script"||_.fullName==="style"||_.fullName==="svg:style"||p(_)&&(_.name==="script"||_.name==="style"))}function E(_){return _.children&&!l(_)}function v(_){return l(_)||_.type==="interpolation"||N(_)}function N(_){return ke(_).startsWith("pre")}function x(_,J){let ne=Ee();if(ne&&!_.prev&&_.parent&&_.parent.tagDefinition&&_.parent.tagDefinition.ignoreFirstLf)return _.type==="interpolation";return ne;function Ee(){return s(_)?!1:(_.type==="text"||_.type==="interpolation")&&_.prev&&(_.prev.type==="text"||_.prev.type==="interpolation")?!0:!_.parent||_.parent.cssDisplay==="none"?!1:le(_.parent)?!0:!(!_.prev&&(_.parent.type==="root"||le(_)&&_.parent||l(_.parent)||K(_.parent,J)||!De(_.parent.cssDisplay))||_.prev&&!z(_.prev.cssDisplay))}}function b(_,J){return s(_)?!1:(_.type==="text"||_.type==="interpolation")&&_.next&&(_.next.type==="text"||_.next.type==="interpolation")?!0:!_.parent||_.parent.cssDisplay==="none"?!1:le(_.parent)?!0:!(!_.next&&(_.parent.type==="root"||le(_)&&_.parent||l(_.parent)||K(_.parent,J)||!ie(_.parent.cssDisplay))||_.next&&!G(_.next.cssDisplay))}function L(_){return U(_.cssDisplay)&&!l(_)}function M(_){return s(_)||_.next&&_.sourceSpan.end&&_.sourceSpan.end.line+1<_.next.sourceSpan.start.line}function j(_){return $(_)||_.type==="element"&&_.children.length>0&&(["body","script","style"].includes(_.name)||_.children.some(J=>te(J)))||_.firstChild&&_.firstChild===_.lastChild&&_.firstChild.type!=="text"&&H(_.firstChild)&&(!_.lastChild.isTrailingSpaceSensitive||R(_.lastChild))}function $(_){return _.type==="element"&&_.children.length>0&&(["html","head","ul","ol","select"].includes(_.name)||_.cssDisplay.startsWith("table")&&_.cssDisplay!=="table-cell")}function V(_){return Q(_)||_.prev&&q(_.prev)||Y(_)}function q(_){return Q(_)||_.type==="element"&&_.fullName==="br"||Y(_)}function Y(_){return H(_)&&R(_)}function H(_){return _.hasLeadingSpaces&&(_.prev?_.prev.sourceSpan.end.line<_.sourceSpan.start.line:_.parent.type==="root"||_.parent.startSourceSpan.end.line<_.sourceSpan.start.line)}function R(_){return _.hasTrailingSpaces&&(_.next?_.next.sourceSpan.start.line>_.sourceSpan.end.line:_.parent.type==="root"||_.parent.endSourceSpan&&_.parent.endSourceSpan.start.line>_.sourceSpan.end.line)}function Q(_){switch(_.type){case"ieConditionalComment":case"comment":case"directive":return !0;case"element":return ["script","select"].includes(_.name)}return !1}function ee(_){return _.lastChild?ee(_.lastChild):_}function te(_){return _.children&&_.children.some(J=>J.type!=="text")}function oe(_){let{type:J,lang:ne}=_.attrMap;if(J==="module"||J==="text/javascript"||J==="text/babel"||J==="application/javascript"||ne==="jsx")return "babel";if(J==="application/x-typescript"||ne==="ts"||ne==="tsx")return "typescript";if(J==="text/markdown")return "markdown";if(J==="text/html")return "html";if(J&&(J.endsWith("json")||J.endsWith("importmap"))||J==="speculationrules")return "json";if(J==="text/x-handlebars-template")return "glimmer"}function W(_,J){let{lang:ne}=_.attrMap;if(!ne||ne==="postcss"||ne==="css")return "css";if(ne==="scss")return "scss";if(ne==="less")return "less";if(ne==="stylus")return t("stylus",J)}function X(_,J){if(_.name==="script"&&!_.attrMap.src)return !_.attrMap.lang&&!_.attrMap.type?"babel":oe(_);if(_.name==="style")return W(_,J);if(J&&ye(_,J))return oe(_)||!("src"in _.attrMap)&&t(_.attrMap.lang,J)}function ue(_){return _==="block"||_==="list-item"||_.startsWith("table")}function De(_){return !ue(_)&&_!=="inline-block"}function ie(_){return !ue(_)&&_!=="inline-block"}function G(_){return !ue(_)}function z(_){return !ue(_)}function U(_){return !ue(_)&&_!=="inline-block"}function le(_){return ke(_).startsWith("pre")}function ge(_,J){let ne=0;for(let Ee=_.stack.length-1;Ee>=0;Ee--){let We=_.stack[Ee];We&&typeof We=="object"&&!Array.isArray(We)&&J(We)&&ne++;}return ne}function Ae(_,J){let ne=_;for(;ne;){if(J(ne))return !0;ne=ne.parent;}return !1}function Ne(_,J){if(_.prev&&_.prev.type==="comment"){let Ee=_.prev.value.match(/^\s*display:\s*([a-z]+)\s*$/);if(Ee)return Ee[1]}let ne=!1;if(_.type==="element"&&_.namespace==="svg")if(Ae(_,Ee=>Ee.fullName==="svg:foreignObject"))ne=!0;else return _.name==="svg"?"inline-block":"block";switch(J.htmlWhitespaceSensitivity){case"strict":return "inline";case"ignore":return "block";default:return J.parser==="vue"&&_.parent&&_.parent.type==="root"?"block":_.type==="element"&&(!_.namespace||ne||p(_))&&c[_.name]||y}}function ke(_){return _.type==="element"&&(!_.namespace||p(_))&&m[_.name]||d}function ce(_){let J=Number.POSITIVE_INFINITY;for(let ne of _.split(` -`)){if(ne.length===0)continue;if(!f.has(ne[0]))return 0;let Ee=I(ne).length;ne.length!==Ee&&Ee<J&&(J=Ee);}return J===Number.POSITIVE_INFINITY?0:J}function pe(_){let J=arguments.length>1&&arguments[1]!==void 0?arguments[1]:ce(_);return J===0?_:_.split(` -`).map(ne=>ne.slice(J)).join(` -`)}function de(_,J){let ne=0;for(let Ee=0;Ee<_.length;Ee++)_[Ee]===J&&ne++;return ne}function ae(_){return _.replace(/'/g,"'").replace(/"/g,'"')}var ve=new Set(["template","style","script"]);function K(_,J){return he(_,J)&&!ve.has(_.fullName)}function he(_,J){return J.parser==="vue"&&_.type==="element"&&_.parent.type==="root"&&_.fullName.toLowerCase()!=="html"}function ye(_,J){return he(_,J)&&(K(_,J)||_.attrMap.lang&&_.attrMap.lang!=="html")}function Ce(_){let J=_.fullName;return J.charAt(0)==="#"||J==="slot-scope"||J==="v-slot"||J.startsWith("v-slot:")}function Ie(_,J){let ne=_.parent;if(!he(ne,J))return !1;let Ee=ne.fullName,We=_.fullName;return Ee==="script"&&We==="setup"||Ee==="style"&&We==="vars"}function Fe(_){let J=arguments.length>1&&arguments[1]!==void 0?arguments[1]:_.value;return _.parent.isWhitespaceSensitive?_.parent.isIndentationSensitive?o(J):o(pe(S(J)),r):i(u(a,B(J)))}function me(_,J){return he(_,J)&&_.name==="script"}n.exports={htmlTrim:T,htmlTrimPreserveIndentation:S,hasHtmlWhitespace:P,getLeadingAndTrailingHtmlWhitespace:k,canHaveInterpolation:E,countChars:de,countParents:ge,dedentString:pe,forceBreakChildren:$,forceBreakContent:j,forceNextEmptyLine:M,getLastDescendant:ee,getNodeCssStyleDisplay:Ne,getNodeCssStyleWhiteSpace:ke,hasPrettierIgnore:D,inferScriptParser:X,isVueCustomBlock:K,isVueNonHtmlBlock:ye,isVueScriptTag:me,isVueSlotAttribute:Ce,isVueSfcBindingsAttribute:Ie,isVueSfcBlock:he,isDanglingSpaceSensitiveNode:L,isIndentationSensitiveNode:N,isLeadingSpaceSensitiveNode:x,isPreLikeNode:le,isScriptLikeTag:l,isTextLikeNode:F,isTrailingSpaceSensitiveNode:b,isWhitespaceSensitiveNode:v,isUnknownNamespace:p,preferHardlineAsLeadingSpaces:V,preferHardlineAsTrailingSpaces:q,shouldPreserveContent:C,unescapeQuoteEntities:ae,getTextValueParts:Fe};}}),$d=Z({"node_modules/angular-html-parser/lib/compiler/src/chars.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0}),e.$EOF=0,e.$BSPACE=8,e.$TAB=9,e.$LF=10,e.$VTAB=11,e.$FF=12,e.$CR=13,e.$SPACE=32,e.$BANG=33,e.$DQ=34,e.$HASH=35,e.$$=36,e.$PERCENT=37,e.$AMPERSAND=38,e.$SQ=39,e.$LPAREN=40,e.$RPAREN=41,e.$STAR=42,e.$PLUS=43,e.$COMMA=44,e.$MINUS=45,e.$PERIOD=46,e.$SLASH=47,e.$COLON=58,e.$SEMICOLON=59,e.$LT=60,e.$EQ=61,e.$GT=62,e.$QUESTION=63,e.$0=48,e.$7=55,e.$9=57,e.$A=65,e.$E=69,e.$F=70,e.$X=88,e.$Z=90,e.$LBRACKET=91,e.$BACKSLASH=92,e.$RBRACKET=93,e.$CARET=94,e.$_=95,e.$a=97,e.$b=98,e.$e=101,e.$f=102,e.$n=110,e.$r=114,e.$t=116,e.$u=117,e.$v=118,e.$x=120,e.$z=122,e.$LBRACE=123,e.$BAR=124,e.$RBRACE=125,e.$NBSP=160,e.$PIPE=124,e.$TILDA=126,e.$AT=64,e.$BT=96;function n(i){return i>=e.$TAB&&i<=e.$SPACE||i==e.$NBSP}e.isWhitespace=n;function t(i){return e.$0<=i&&i<=e.$9}e.isDigit=t;function s(i){return i>=e.$a&&i<=e.$z||i>=e.$A&&i<=e.$Z}e.isAsciiLetter=s;function a(i){return i>=e.$a&&i<=e.$f||i>=e.$A&&i<=e.$F||t(i)}e.isAsciiHexDigit=a;function r(i){return i===e.$LF||i===e.$CR}e.isNewLine=r;function u(i){return e.$0<=i&&i<=e.$7}e.isOctalDigit=u;}}),Hd=Z({"node_modules/angular-html-parser/lib/compiler/src/aot/static_symbol.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0});var n=class{constructor(s,a,r){this.filePath=s,this.name=a,this.members=r;}assertNoMembers(){if(this.members.length)throw new Error("Illegal state: symbol without members expected, but got ".concat(JSON.stringify(this),"."))}};e.StaticSymbol=n;var t=class{constructor(){this.cache=new Map;}get(s,a,r){r=r||[];let u=r.length?".".concat(r.join(".")):"",i='"'.concat(s,'".').concat(a).concat(u),o=this.cache.get(i);return o||(o=new n(s,a,r),this.cache.set(i,o)),o}};e.StaticSymbolCache=t;}}),Gd=Z({"node_modules/angular-html-parser/lib/compiler/src/util.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0});var n=/-+([a-z0-9])/g;function t(l){return l.replace(n,function(){for(var E=arguments.length,v=new Array(E),N=0;N<E;N++)v[N]=arguments[N];return v[1].toUpperCase()})}e.dashCaseToCamelCase=t;function s(l,E){return r(l,":",E)}e.splitAtColon=s;function a(l,E){return r(l,".",E)}e.splitAtPeriod=a;function r(l,E,v){let N=l.indexOf(E);return N==-1?v:[l.slice(0,N).trim(),l.slice(N+1).trim()]}function u(l,E,v){return Array.isArray(l)?E.visitArray(l,v):A(l)?E.visitStringMap(l,v):l==null||typeof l=="string"||typeof l=="number"||typeof l=="boolean"?E.visitPrimitive(l,v):E.visitOther(l,v)}e.visitValue=u;function i(l){return l!=null}e.isDefined=i;function o(l){return l===void 0?null:l}e.noUndefined=o;var c=class{visitArray(l,E){return l.map(v=>u(v,this,E))}visitStringMap(l,E){let v={};return Object.keys(l).forEach(N=>{v[N]=u(l[N],this,E);}),v}visitPrimitive(l,E){return l}visitOther(l,E){return l}};e.ValueTransformer=c,e.SyncAsync={assertSync:l=>{if(k(l))throw new Error("Illegal state: value cannot be a promise");return l},then:(l,E)=>k(l)?l.then(E):E(l),all:l=>l.some(k)?Promise.all(l):l};function y(l){throw new Error("Internal Error: ".concat(l))}e.error=y;function m(l,E){let v=Error(l);return v[d]=!0,E&&(v[p]=E),v}e.syntaxError=m;var d="ngSyntaxError",p="ngParseErrors";function f(l){return l[d]}e.isSyntaxError=f;function h(l){return l[p]||[]}e.getParseErrors=h;function w(l){return l.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}e.escapeRegExp=w;var T=Object.getPrototypeOf({});function A(l){return typeof l=="object"&&l!==null&&Object.getPrototypeOf(l)===T}function S(l){let E="";for(let v=0;v<l.length;v++){let N=l.charCodeAt(v);if(N>=55296&&N<=56319&&l.length>v+1){let x=l.charCodeAt(v+1);x>=56320&&x<=57343&&(v++,N=(N-55296<<10)+x-56320+65536);}N<=127?E+=String.fromCharCode(N):N<=2047?E+=String.fromCharCode(N>>6&31|192,N&63|128):N<=65535?E+=String.fromCharCode(N>>12|224,N>>6&63|128,N&63|128):N<=2097151&&(E+=String.fromCharCode(N>>18&7|240,N>>12&63|128,N>>6&63|128,N&63|128));}return E}e.utf8Encode=S;function B(l){if(typeof l=="string")return l;if(l instanceof Array)return "["+l.map(B).join(", ")+"]";if(l==null)return ""+l;if(l.overriddenName)return "".concat(l.overriddenName);if(l.name)return "".concat(l.name);if(!l.toString)return "object";let E=l.toString();if(E==null)return ""+E;let v=E.indexOf(` -`);return v===-1?E:E.substring(0,v)}e.stringify=B;function I(l){return typeof l=="function"&&l.hasOwnProperty("__forward_ref__")?l():l}e.resolveForwardRef=I;function k(l){return !!l&&typeof l.then=="function"}e.isPromise=k;var P=class{constructor(l){this.full=l;let E=l.split(".");this.major=E[0],this.minor=E[1],this.patch=E.slice(2).join(".");}};e.Version=P;var C=typeof window<"u"&&window,D=typeof self<"u"&&typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&self,g=typeof globalThis<"u"&&globalThis,F=g||C||D;e.global=F;}}),Jd=Z({"node_modules/angular-html-parser/lib/compiler/src/compile_metadata.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0});var n=Hd(),t=Gd(),s=/^(?:(?:\[([^\]]+)\])|(?:\(([^\)]+)\)))|(\@[-\w]+)$/;function a(v){return v.replace(/\W/g,"_")}e.sanitizeIdentifier=a;var r=0;function u(v){if(!v||!v.reference)return null;let N=v.reference;if(N instanceof n.StaticSymbol)return N.name;if(N.__anonymousType)return N.__anonymousType;let x=t.stringify(N);return x.indexOf("(")>=0?(x="anonymous_".concat(r++),N.__anonymousType=x):x=a(x),x}e.identifierName=u;function i(v){let N=v.reference;return N instanceof n.StaticSymbol?N.filePath:"./".concat(t.stringify(N))}e.identifierModuleUrl=i;function o(v,N){return "View_".concat(u({reference:v}),"_").concat(N)}e.viewClassName=o;function c(v){return "RenderType_".concat(u({reference:v}))}e.rendererTypeName=c;function y(v){return "HostView_".concat(u({reference:v}))}e.hostViewClassName=y;function m(v){return "".concat(u({reference:v}),"NgFactory")}e.componentFactoryName=m;var d;(function(v){v[v.Pipe=0]="Pipe",v[v.Directive=1]="Directive",v[v.NgModule=2]="NgModule",v[v.Injectable=3]="Injectable";})(d=e.CompileSummaryKind||(e.CompileSummaryKind={}));function p(v){return v.value!=null?a(v.value):u(v.identifier)}e.tokenName=p;function f(v){return v.identifier!=null?v.identifier.reference:v.value}e.tokenReference=f;var h=class{constructor(){let{moduleUrl:v,styles:N,styleUrls:x}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.moduleUrl=v||null,this.styles=k(N),this.styleUrls=k(x);}};e.CompileStylesheetMetadata=h;var w=class{constructor(v){let{encapsulation:N,template:x,templateUrl:b,htmlAst:L,styles:M,styleUrls:j,externalStylesheets:$,animations:V,ngContentSelectors:q,interpolation:Y,isInline:H,preserveWhitespaces:R}=v;if(this.encapsulation=N,this.template=x,this.templateUrl=b,this.htmlAst=L,this.styles=k(M),this.styleUrls=k(j),this.externalStylesheets=k($),this.animations=V?C(V):[],this.ngContentSelectors=q||[],Y&&Y.length!=2)throw new Error("'interpolation' should have a start and an end symbol.");this.interpolation=Y,this.isInline=H,this.preserveWhitespaces=R;}toSummary(){return {ngContentSelectors:this.ngContentSelectors,encapsulation:this.encapsulation,styles:this.styles,animations:this.animations}}};e.CompileTemplateMetadata=w;var T=class{static create(v){let{isHost:N,type:x,isComponent:b,selector:L,exportAs:M,changeDetection:j,inputs:$,outputs:V,host:q,providers:Y,viewProviders:H,queries:R,guards:Q,viewQueries:ee,entryComponents:te,template:oe,componentViewType:W,rendererType:X,componentFactory:ue}=v,De={},ie={},G={};q!=null&&Object.keys(q).forEach(le=>{let ge=q[le],Ae=le.match(s);Ae===null?G[le]=ge:Ae[1]!=null?ie[Ae[1]]=ge:Ae[2]!=null&&(De[Ae[2]]=ge);});let z={};$!=null&&$.forEach(le=>{let ge=t.splitAtColon(le,[le,le]);z[ge[0]]=ge[1];});let U={};return V!=null&&V.forEach(le=>{let ge=t.splitAtColon(le,[le,le]);U[ge[0]]=ge[1];}),new T({isHost:N,type:x,isComponent:!!b,selector:L,exportAs:M,changeDetection:j,inputs:z,outputs:U,hostListeners:De,hostProperties:ie,hostAttributes:G,providers:Y,viewProviders:H,queries:R,guards:Q,viewQueries:ee,entryComponents:te,template:oe,componentViewType:W,rendererType:X,componentFactory:ue})}constructor(v){let{isHost:N,type:x,isComponent:b,selector:L,exportAs:M,changeDetection:j,inputs:$,outputs:V,hostListeners:q,hostProperties:Y,hostAttributes:H,providers:R,viewProviders:Q,queries:ee,guards:te,viewQueries:oe,entryComponents:W,template:X,componentViewType:ue,rendererType:De,componentFactory:ie}=v;this.isHost=!!N,this.type=x,this.isComponent=b,this.selector=L,this.exportAs=M,this.changeDetection=j,this.inputs=$,this.outputs=V,this.hostListeners=q,this.hostProperties=Y,this.hostAttributes=H,this.providers=k(R),this.viewProviders=k(Q),this.queries=k(ee),this.guards=te,this.viewQueries=k(oe),this.entryComponents=k(W),this.template=X,this.componentViewType=ue,this.rendererType=De,this.componentFactory=ie;}toSummary(){return {summaryKind:d.Directive,type:this.type,isComponent:this.isComponent,selector:this.selector,exportAs:this.exportAs,inputs:this.inputs,outputs:this.outputs,hostListeners:this.hostListeners,hostProperties:this.hostProperties,hostAttributes:this.hostAttributes,providers:this.providers,viewProviders:this.viewProviders,queries:this.queries,guards:this.guards,viewQueries:this.viewQueries,entryComponents:this.entryComponents,changeDetection:this.changeDetection,template:this.template&&this.template.toSummary(),componentViewType:this.componentViewType,rendererType:this.rendererType,componentFactory:this.componentFactory}}};e.CompileDirectiveMetadata=T;var A=class{constructor(v){let{type:N,name:x,pure:b}=v;this.type=N,this.name=x,this.pure=!!b;}toSummary(){return {summaryKind:d.Pipe,type:this.type,name:this.name,pure:this.pure}}};e.CompilePipeMetadata=A;var S=class{};e.CompileShallowModuleMetadata=S;var B=class{constructor(v){let{type:N,providers:x,declaredDirectives:b,exportedDirectives:L,declaredPipes:M,exportedPipes:j,entryComponents:$,bootstrapComponents:V,importedModules:q,exportedModules:Y,schemas:H,transitiveModule:R,id:Q}=v;this.type=N||null,this.declaredDirectives=k(b),this.exportedDirectives=k(L),this.declaredPipes=k(M),this.exportedPipes=k(j),this.providers=k(x),this.entryComponents=k($),this.bootstrapComponents=k(V),this.importedModules=k(q),this.exportedModules=k(Y),this.schemas=k(H),this.id=Q||null,this.transitiveModule=R||null;}toSummary(){let v=this.transitiveModule;return {summaryKind:d.NgModule,type:this.type,entryComponents:v.entryComponents,providers:v.providers,modules:v.modules,exportedDirectives:v.exportedDirectives,exportedPipes:v.exportedPipes}}};e.CompileNgModuleMetadata=B;var I=class{constructor(){this.directivesSet=new Set,this.directives=[],this.exportedDirectivesSet=new Set,this.exportedDirectives=[],this.pipesSet=new Set,this.pipes=[],this.exportedPipesSet=new Set,this.exportedPipes=[],this.modulesSet=new Set,this.modules=[],this.entryComponentsSet=new Set,this.entryComponents=[],this.providers=[];}addProvider(v,N){this.providers.push({provider:v,module:N});}addDirective(v){this.directivesSet.has(v.reference)||(this.directivesSet.add(v.reference),this.directives.push(v));}addExportedDirective(v){this.exportedDirectivesSet.has(v.reference)||(this.exportedDirectivesSet.add(v.reference),this.exportedDirectives.push(v));}addPipe(v){this.pipesSet.has(v.reference)||(this.pipesSet.add(v.reference),this.pipes.push(v));}addExportedPipe(v){this.exportedPipesSet.has(v.reference)||(this.exportedPipesSet.add(v.reference),this.exportedPipes.push(v));}addModule(v){this.modulesSet.has(v.reference)||(this.modulesSet.add(v.reference),this.modules.push(v));}addEntryComponent(v){this.entryComponentsSet.has(v.componentType)||(this.entryComponentsSet.add(v.componentType),this.entryComponents.push(v));}};e.TransitiveCompileNgModuleMetadata=I;function k(v){return v||[]}var P=class{constructor(v,N){let{useClass:x,useValue:b,useExisting:L,useFactory:M,deps:j,multi:$}=N;this.token=v,this.useClass=x||null,this.useValue=b,this.useExisting=L,this.useFactory=M||null,this.dependencies=j||null,this.multi=!!$;}};e.ProviderMeta=P;function C(v){return v.reduce((N,x)=>{let b=Array.isArray(x)?C(x):x;return N.concat(b)},[])}e.flatten=C;function D(v){return v.replace(/(\w+:\/\/[\w:-]+)?(\/+)?/,"ng:///")}function g(v,N,x){let b;return x.isInline?N.type.reference instanceof n.StaticSymbol?b="".concat(N.type.reference.filePath,".").concat(N.type.reference.name,".html"):b="".concat(u(v),"/").concat(u(N.type),".html"):b=x.templateUrl,N.type.reference instanceof n.StaticSymbol?b:D(b)}e.templateSourceUrl=g;function F(v,N){let x=v.moduleUrl.split(/\/\\/g),b=x[x.length-1];return D("css/".concat(N).concat(b,".ngstyle.js"))}e.sharedStylesheetJitUrl=F;function l(v){return D("".concat(u(v.type),"/module.ngfactory.js"))}e.ngModuleJitUrl=l;function E(v,N){return D("".concat(u(v),"/").concat(u(N.type),".ngfactory.js"))}e.templateJitUrl=E;}}),Ud=Z({"node_modules/angular-html-parser/lib/compiler/src/parse_util.js"(e){re(),Object.defineProperty(e,"__esModule",{value:!0});var n=$d(),t=Jd(),s=class{constructor(y,m,d,p){this.file=y,this.offset=m,this.line=d,this.col=p;}toString(){return this.offset!=null?"".concat(this.file.url,"@").concat(this.line,":").concat(this.col):this.file.url}moveBy(y){let m=this.file.content,d=m.length,p=this.offset,f=this.line,h=this.col;for(;p>0&&y<0;)if(p--,y++,m.charCodeAt(p)==n.$LF){f--;let T=m.substr(0,p-1).lastIndexOf(String.fromCharCode(n.$LF));h=T>0?p-T:p;}else h--;for(;p<d&&y>0;){let w=m.charCodeAt(p);p++,y--,w==n.$LF?(f++,h=0):h++;}return new s(this.file,p,f,h)}getContext(y,m){let d=this.file.content,p=this.offset;if(p!=null){p>d.length-1&&(p=d.length-1);let f=p,h=0,w=0;for(;h<y&&p>0&&(p--,h++,!(d[p]==` -`&&++w==m)););for(h=0,w=0;h<y&&f<d.length-1&&(f++,h++,!(d[f]==` -`&&++w==m)););return {before:d.substring(p,this.offset),after:d.substring(this.offset,f+1)}}return null}};e.ParseLocation=s;var a=class{constructor(y,m){this.content=y,this.url=m;}};e.ParseSourceFile=a;var r=class{constructor(y,m){let d=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null;this.start=y,this.end=m,this.details=d;}toString(){return this.start.file.content.substring(this.start.offset,this.end.offset)}};e.ParseSourceSpan=r,e.EMPTY_PARSE_LOCATION=new s(new a("",""),0,0,0),e.EMPTY_SOURCE_SPAN=new r(e.EMPTY_PARSE_LOCATION,e.EMPTY_PARSE_LOCATION);var u;(function(y){y[y.WARNING=0]="WARNING",y[y.ERROR=1]="ERROR";})(u=e.ParseErrorLevel||(e.ParseErrorLevel={}));var i=class{constructor(y,m){let d=arguments.length>2&&arguments[2]!==void 0?arguments[2]:u.ERROR;this.span=y,this.msg=m,this.level=d;}contextualMessage(){let y=this.span.start.getContext(100,3);return y?"".concat(this.msg,' ("').concat(y.before,"[").concat(u[this.level]," ->]").concat(y.after,'")'):this.msg}toString(){let y=this.span.details?", ".concat(this.span.details):"";return "".concat(this.contextualMessage(),": ").concat(this.span.start).concat(y)}};e.ParseError=i;function o(y,m){let d=t.identifierModuleUrl(m),p=d!=null?"in ".concat(y," ").concat(t.identifierName(m)," in ").concat(d):"in ".concat(y," ").concat(t.identifierName(m)),f=new a("",p);return new r(new s(f,-1,-1,-1),new s(f,-1,-1,-1))}e.typeSourceSpan=o;function c(y,m,d){let p="in ".concat(y," ").concat(m," in ").concat(d),f=new a("",p);return new r(new s(f,-1,-1,-1),new s(f,-1,-1,-1))}e.r3JitTypeSourceSpan=c;}}),zd=Z({"src/language-html/print-preprocess.js"(e,n){re();var{ParseSourceSpan:t}=Ud(),{htmlTrim:s,getLeadingAndTrailingHtmlWhitespace:a,hasHtmlWhitespace:r,canHaveInterpolation:u,getNodeCssStyleDisplay:i,isDanglingSpaceSensitiveNode:o,isIndentationSensitiveNode:c,isLeadingSpaceSensitiveNode:y,isTrailingSpaceSensitiveNode:m,isWhitespaceSensitiveNode:d,isVueScriptTag:p}=jt(),f=[w,T,S,I,k,D,P,C,g,B,F];function h(l,E){for(let v of f)v(l,E);return l}function w(l){l.walk(E=>{if(E.type==="element"&&E.tagDefinition.ignoreFirstLf&&E.children.length>0&&E.children[0].type==="text"&&E.children[0].value[0]===` -`){let v=E.children[0];v.value.length===1?E.removeChild(v):v.value=v.value.slice(1);}});}function T(l){let E=v=>v.type==="element"&&v.prev&&v.prev.type==="ieConditionalStartComment"&&v.prev.sourceSpan.end.offset===v.startSourceSpan.start.offset&&v.firstChild&&v.firstChild.type==="ieConditionalEndComment"&&v.firstChild.sourceSpan.start.offset===v.startSourceSpan.end.offset;l.walk(v=>{if(v.children)for(let N=0;N<v.children.length;N++){let x=v.children[N];if(!E(x))continue;let b=x.prev,L=x.firstChild;v.removeChild(b),N--;let M=new t(b.sourceSpan.start,L.sourceSpan.end),j=new t(M.start,x.sourceSpan.end);x.condition=b.condition,x.sourceSpan=j,x.startSourceSpan=M,x.removeChild(L);}});}function A(l,E,v){l.walk(N=>{if(N.children)for(let x=0;x<N.children.length;x++){let b=N.children[x];if(b.type!=="text"&&!E(b))continue;b.type!=="text"&&(b.type="text",b.value=v(b));let L=b.prev;!L||L.type!=="text"||(L.value+=b.value,L.sourceSpan=new t(L.sourceSpan.start,b.sourceSpan.end),N.removeChild(b),x--);}});}function S(l){return A(l,E=>E.type==="cdata",E=>"<![CDATA[".concat(E.value,"]]>"))}function B(l){let E=v=>v.type==="element"&&v.attrs.length===0&&v.children.length===1&&v.firstChild.type==="text"&&!r(v.children[0].value)&&!v.firstChild.hasLeadingSpaces&&!v.firstChild.hasTrailingSpaces&&v.isLeadingSpaceSensitive&&!v.hasLeadingSpaces&&v.isTrailingSpaceSensitive&&!v.hasTrailingSpaces&&v.prev&&v.prev.type==="text"&&v.next&&v.next.type==="text";l.walk(v=>{if(v.children)for(let N=0;N<v.children.length;N++){let x=v.children[N];if(!E(x))continue;let b=x.prev,L=x.next;b.value+="<".concat(x.rawName,">")+x.firstChild.value+"</".concat(x.rawName,">")+L.value,b.sourceSpan=new t(b.sourceSpan.start,L.sourceSpan.end),b.isTrailingSpaceSensitive=L.isTrailingSpaceSensitive,b.hasTrailingSpaces=L.hasTrailingSpaces,v.removeChild(x),N--,v.removeChild(L);}});}function I(l,E){if(E.parser==="html")return;let v=/{{(.+?)}}/s;l.walk(N=>{if(!!u(N))for(let x of N.children){if(x.type!=="text")continue;let b=x.sourceSpan.start,L=null,M=x.value.split(v);for(let j=0;j<M.length;j++,b=L){let $=M[j];if(j%2===0){L=b.moveBy($.length),$.length>0&&N.insertChildBefore(x,{type:"text",value:$,sourceSpan:new t(b,L)});continue}L=b.moveBy($.length+4),N.insertChildBefore(x,{type:"interpolation",sourceSpan:new t(b,L),children:$.length===0?[]:[{type:"text",value:$,sourceSpan:new t(b.moveBy(2),L.moveBy(-2))}]});}N.removeChild(x);}});}function k(l){l.walk(E=>{if(!E.children)return;if(E.children.length===0||E.children.length===1&&E.children[0].type==="text"&&s(E.children[0].value).length===0){E.hasDanglingSpaces=E.children.length>0,E.children=[];return}let v=d(E),N=c(E);if(!v)for(let x=0;x<E.children.length;x++){let b=E.children[x];if(b.type!=="text")continue;let{leadingWhitespace:L,text:M,trailingWhitespace:j}=a(b.value),$=b.prev,V=b.next;M?(b.value=M,b.sourceSpan=new t(b.sourceSpan.start.moveBy(L.length),b.sourceSpan.end.moveBy(-j.length)),L&&($&&($.hasTrailingSpaces=!0),b.hasLeadingSpaces=!0),j&&(b.hasTrailingSpaces=!0,V&&(V.hasLeadingSpaces=!0))):(E.removeChild(b),x--,(L||j)&&($&&($.hasTrailingSpaces=!0),V&&(V.hasLeadingSpaces=!0)));}E.isWhitespaceSensitive=v,E.isIndentationSensitive=N;});}function P(l){l.walk(E=>{E.isSelfClosing=!E.children||E.type==="element"&&(E.tagDefinition.isVoid||E.startSourceSpan===E.endSourceSpan);});}function C(l,E){l.walk(v=>{v.type==="element"&&(v.hasHtmComponentClosingTag=v.endSourceSpan&&/^<\s*\/\s*\/\s*>$/.test(E.originalText.slice(v.endSourceSpan.start.offset,v.endSourceSpan.end.offset)));});}function D(l,E){l.walk(v=>{v.cssDisplay=i(v,E);});}function g(l,E){l.walk(v=>{let{children:N}=v;if(!!N){if(N.length===0){v.isDanglingSpaceSensitive=o(v);return}for(let x of N)x.isLeadingSpaceSensitive=y(x,E),x.isTrailingSpaceSensitive=m(x,E);for(let x=0;x<N.length;x++){let b=N[x];b.isLeadingSpaceSensitive=(x===0||b.prev.isTrailingSpaceSensitive)&&b.isLeadingSpaceSensitive,b.isTrailingSpaceSensitive=(x===N.length-1||b.next.isLeadingSpaceSensitive)&&b.isTrailingSpaceSensitive;}}});}function F(l,E){if(E.parser==="vue"){let v=l.children.find(x=>p(x,E));if(!v)return;let{lang:N}=v.attrMap;(N==="ts"||N==="typescript")&&(E.__should_parse_vue_template_with_ts=!0);}}n.exports=h;}}),Xd=Z({"src/language-html/pragma.js"(e,n){re();function t(a){return /^\s*<!--\s*@(?:format|prettier)\s*-->/.test(a)}function s(a){return `<!-- @format --> - -`+a.replace(/^\s*\n/,"")}n.exports={hasPragma:t,insertPragma:s};}}),zn=Z({"src/language-html/loc.js"(e,n){re();function t(a){return a.sourceSpan.start.offset}function s(a){return a.sourceSpan.end.offset}n.exports={locStart:t,locEnd:s};}}),Qt=Z({"src/language-html/print/tag.js"(e,n){re();var t=Ut(),{isNonEmptyArray:s}=Ue(),{builders:{indent:a,join:r,line:u,softline:i,hardline:o},utils:{replaceTextEndOfLine:c}}=Oe(),{locStart:y,locEnd:m}=zn(),{isTextLikeNode:d,getLastDescendant:p,isPreLikeNode:f,hasPrettierIgnore:h,shouldPreserveContent:w,isVueSfcBlock:T}=jt();function A(q,Y){return [q.isSelfClosing?"":S(q,Y),B(q,Y)]}function S(q,Y){return q.lastChild&&l(q.lastChild)?"":[I(q,Y),P(q,Y)]}function B(q,Y){return (q.next?g(q.next):F(q.parent))?"":[C(q,Y),k(q,Y)]}function I(q,Y){return F(q)?C(q.lastChild,Y):""}function k(q,Y){return l(q)?P(q.parent,Y):E(q)?$(q.next):""}function P(q,Y){if(t(!q.isSelfClosing),D(q,Y))return "";switch(q.type){case"ieConditionalComment":return "<!";case"element":if(q.hasHtmComponentClosingTag)return "<//";default:return "</".concat(q.rawName)}}function C(q,Y){if(D(q,Y))return "";switch(q.type){case"ieConditionalComment":case"ieConditionalEndComment":return "[endif]-->";case"ieConditionalStartComment":return "]><!-->";case"interpolation":return "}}";case"element":if(q.isSelfClosing)return "/>";default:return ">"}}function D(q,Y){return !q.isSelfClosing&&!q.endSourceSpan&&(h(q)||w(q.parent,Y))}function g(q){return q.prev&&q.prev.type!=="docType"&&!d(q.prev)&&q.isLeadingSpaceSensitive&&!q.hasLeadingSpaces}function F(q){return q.lastChild&&q.lastChild.isTrailingSpaceSensitive&&!q.lastChild.hasTrailingSpaces&&!d(p(q.lastChild))&&!f(q)}function l(q){return !q.next&&!q.hasTrailingSpaces&&q.isTrailingSpaceSensitive&&d(p(q))}function E(q){return q.next&&!d(q.next)&&d(q)&&q.isTrailingSpaceSensitive&&!q.hasTrailingSpaces}function v(q){let Y=q.trim().match(/^prettier-ignore-attribute(?:\s+(.+))?$/s);return Y?Y[1]?Y[1].split(/\s+/):!0:!1}function N(q){return !q.prev&&q.isLeadingSpaceSensitive&&!q.hasLeadingSpaces}function x(q,Y,H){let R=q.getValue();if(!s(R.attrs))return R.isSelfClosing?" ":"";let Q=R.prev&&R.prev.type==="comment"&&v(R.prev.value),ee=typeof Q=="boolean"?()=>Q:Array.isArray(Q)?De=>Q.includes(De.rawName):()=>!1,te=q.map(De=>{let ie=De.getValue();return ee(ie)?c(Y.originalText.slice(y(ie),m(ie))):H()},"attrs"),oe=R.type==="element"&&R.fullName==="script"&&R.attrs.length===1&&R.attrs[0].fullName==="src"&&R.children.length===0,X=Y.singleAttributePerLine&&R.attrs.length>1&&!T(R,Y)?o:u,ue=[a([oe?" ":u,r(X,te)])];return R.firstChild&&N(R.firstChild)||R.isSelfClosing&&F(R.parent)||oe?ue.push(R.isSelfClosing?" ":""):ue.push(Y.bracketSameLine?R.isSelfClosing?" ":"":R.isSelfClosing?u:i),ue}function b(q){return q.firstChild&&N(q.firstChild)?"":V(q)}function L(q,Y,H){let R=q.getValue();return [M(R,Y),x(q,Y,H),R.isSelfClosing?"":b(R)]}function M(q,Y){return q.prev&&E(q.prev)?"":[j(q,Y),$(q)]}function j(q,Y){return N(q)?V(q.parent):g(q)?C(q.prev,Y):""}function $(q){switch(q.type){case"ieConditionalComment":case"ieConditionalStartComment":return "<!--[if ".concat(q.condition);case"ieConditionalEndComment":return "<!--<!";case"interpolation":return "{{";case"docType":return "<!DOCTYPE";case"element":if(q.condition)return "<!--[if ".concat(q.condition,"]><!--><").concat(q.rawName);default:return "<".concat(q.rawName)}}function V(q){switch(t(!q.isSelfClosing),q.type){case"ieConditionalComment":return "]>";case"element":if(q.condition)return "><!--<![endif]-->";default:return ">"}}n.exports={printClosingTag:A,printClosingTagStart:S,printClosingTagStartMarker:P,printClosingTagEndMarker:C,printClosingTagSuffix:k,printClosingTagEnd:B,needsToBorrowLastChildClosingTagEndMarker:F,needsToBorrowParentClosingTagStartMarker:l,needsToBorrowPrevClosingTagEndMarker:g,printOpeningTag:L,printOpeningTagStart:M,printOpeningTagPrefix:j,printOpeningTagStartMarker:$,printOpeningTagEndMarker:V,needsToBorrowNextOpeningTagStartMarker:E,needsToBorrowParentOpeningTagEndMarker:N};}}),Kd=Z({"node_modules/parse-srcset/src/parse-srcset.js"(e,n){re(),function(t,s){typeof define=="function"&&define.amd?define([],s):typeof n=="object"&&n.exports?n.exports=s():t.parseSrcset=s();}(e,function(){return function(t,s){var a=s&&s.logger||console;function r(P){return P===" "||P===" "||P===` -`||P==="\f"||P==="\r"}function u(P){var C,D=P.exec(t.substring(S));if(D)return C=D[0],S+=C.length,C}for(var i=t.length,o=/^[ \t\n\r\u000c]+/,c=/^[, \t\n\r\u000c]+/,y=/^[^ \t\n\r\u000c]+/,m=/[,]+$/,d=/^\d+$/,p=/^-?(?:[0-9]+|[0-9]*\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/,f,h,w,T,A,S=0,B=[];;){if(u(c),S>=i)return B;f=u(y),h=[],f.slice(-1)===","?(f=f.replace(m,""),k()):I();}function I(){for(u(o),w="",T="in descriptor";;){if(A=t.charAt(S),T==="in descriptor")if(r(A))w&&(h.push(w),w="",T="after descriptor");else if(A===","){S+=1,w&&h.push(w),k();return}else if(A==="(")w=w+A,T="in parens";else if(A===""){w&&h.push(w),k();return}else w=w+A;else if(T==="in parens")if(A===")")w=w+A,T="in descriptor";else if(A===""){h.push(w),k();return}else w=w+A;else if(T==="after descriptor"&&!r(A))if(A===""){k();return}else T="in descriptor",S-=1;S+=1;}}function k(){var P=!1,C,D,g,F,l={},E,v,N,x,b;for(F=0;F<h.length;F++)E=h[F],v=E[E.length-1],N=E.substring(0,E.length-1),x=parseInt(N,10),b=parseFloat(N),d.test(N)&&v==="w"?((C||D)&&(P=!0),x===0?P=!0:C=x):p.test(N)&&v==="x"?((C||D||g)&&(P=!0),b<0?P=!0:D=b):d.test(N)&&v==="h"?((g||D)&&(P=!0),x===0?P=!0:g=x):P=!0;P?a&&a.error&&a.error("Invalid srcset descriptor found in '"+t+"' at '"+E+"'."):(l.url=f,C&&(l.w=C),D&&(l.d=D),g&&(l.h=g),B.push(l));}}});}}),Yd=Z({"src/language-html/syntax-attribute.js"(e,n){re();var t=Kd(),{builders:{ifBreak:s,join:a,line:r}}=Oe();function u(o){let c=t(o,{logger:{error(I){throw new Error(I)}}}),y=c.some(I=>{let{w:k}=I;return k}),m=c.some(I=>{let{h:k}=I;return k}),d=c.some(I=>{let{d:k}=I;return k});if(y+m+d>1)throw new Error("Mixed descriptor in srcset is not supported");let p=y?"w":m?"h":"d",f=y?"w":m?"h":"x",h=I=>Math.max(...I),w=c.map(I=>I.url),T=h(w.map(I=>I.length)),A=c.map(I=>I[p]).map(I=>I?I.toString():""),S=A.map(I=>{let k=I.indexOf(".");return k===-1?I.length:k}),B=h(S);return a([",",r],w.map((I,k)=>{let P=[I],C=A[k];if(C){let D=T-I.length+1,g=B-S[k],F=" ".repeat(D+g);P.push(s(F," "),C+f);}return P}))}function i(o){return o.trim().split(/\s+/).join(" ")}n.exports={printImgSrcset:u,printClassNames:i};}}),Qd=Z({"src/language-html/syntax-vue.js"(e,n){re();var{builders:{group:t}}=Oe();function s(i,o){let{left:c,operator:y,right:m}=a(i);return [t(o("function _(".concat(c,") {}"),{parser:"babel",__isVueForBindingLeft:!0}))," ",y," ",o(m,{parser:"__js_expression"},{stripTrailingHardline:!0})]}function a(i){let o=/(.*?)\s+(in|of)\s+(.*)/s,c=/,([^,\]}]*)(?:,([^,\]}]*))?$/,y=/^\(|\)$/g,m=i.match(o);if(!m)return;let d={};if(d.for=m[3].trim(),!d.for)return;let p=m[1].trim().replace(y,""),f=p.match(c);f?(d.alias=p.replace(c,""),d.iterator1=f[1].trim(),f[2]&&(d.iterator2=f[2].trim())):d.alias=p;let h=[d.alias,d.iterator1,d.iterator2];if(!h.some((w,T)=>!w&&(T===0||h.slice(T+1).some(Boolean))))return {left:h.filter(Boolean).join(","),operator:m[2],right:d.for}}function r(i,o){return o("function _(".concat(i,") {}"),{parser:"babel",__isVueBindings:!0})}function u(i){let o=/^(?:[\w$]+|\([^)]*\))\s*=>|^function\s*\(/,c=/^[$A-Z_a-z][\w$]*(?:\.[$A-Z_a-z][\w$]*|\['[^']*']|\["[^"]*"]|\[\d+]|\[[$A-Z_a-z][\w$]*])*$/,y=i.trim();return o.test(y)||c.test(y)}n.exports={isVueEventBindingExpression:u,printVueFor:s,printVueBindings:r};}}),co=Z({"src/language-html/get-node-content.js"(e,n){re();var{needsToBorrowParentClosingTagStartMarker:t,printClosingTagStartMarker:s,needsToBorrowLastChildClosingTagEndMarker:a,printClosingTagEndMarker:r,needsToBorrowParentOpeningTagEndMarker:u,printOpeningTagEndMarker:i}=Qt();function o(c,y){let m=c.startSourceSpan.end.offset;c.firstChild&&u(c.firstChild)&&(m-=i(c).length);let d=c.endSourceSpan.start.offset;return c.lastChild&&t(c.lastChild)?d+=s(c,y).length:a(c)&&(d-=r(c.lastChild,y).length),y.originalText.slice(m,d)}n.exports=o;}}),Zd=Z({"src/language-html/embed.js"(e,n){re();var{builders:{breakParent:t,group:s,hardline:a,indent:r,line:u,fill:i,softline:o},utils:{mapDoc:c,replaceTextEndOfLine:y}}=Oe(),m=Jn(),{printClosingTag:d,printClosingTagSuffix:p,needsToBorrowPrevClosingTagEndMarker:f,printOpeningTagPrefix:h,printOpeningTag:w}=Qt(),{printImgSrcset:T,printClassNames:A}=Yd(),{printVueFor:S,printVueBindings:B,isVueEventBindingExpression:I}=Qd(),{isScriptLikeTag:k,isVueNonHtmlBlock:P,inferScriptParser:C,htmlTrimPreserveIndentation:D,dedentString:g,unescapeQuoteEntities:F,isVueSlotAttribute:l,isVueSfcBindingsAttribute:E,getTextValueParts:v}=jt(),N=co();function x(L,M,j){let $=te=>new RegExp(te.join("|")).test(L.fullName),V=()=>F(L.value),q=!1,Y=(te,oe)=>{let W=te.type==="NGRoot"?te.node.type==="NGMicrosyntax"&&te.node.body.length===1&&te.node.body[0].type==="NGMicrosyntaxExpression"?te.node.body[0].expression:te.node:te.type==="JsExpressionRoot"?te.node:te;W&&(W.type==="ObjectExpression"||W.type==="ArrayExpression"||oe.parser==="__vue_expression"&&(W.type==="TemplateLiteral"||W.type==="StringLiteral"))&&(q=!0);},H=te=>s(te),R=function(te){let oe=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return s([r([o,te]),oe?o:""])},Q=te=>q?H(te):R(te),ee=(te,oe)=>M(te,Object.assign({__onHtmlBindingRoot:Y,__embeddedInHtml:!0},oe));if(L.fullName==="srcset"&&(L.parent.fullName==="img"||L.parent.fullName==="source"))return R(T(V()));if(L.fullName==="class"&&!j.parentParser){let te=V();if(!te.includes("{{"))return A(te)}if(L.fullName==="style"&&!j.parentParser){let te=V();if(!te.includes("{{"))return R(ee(te,{parser:"css",__isHTMLStyleAttribute:!0}))}if(j.parser==="vue"){if(L.fullName==="v-for")return S(V(),ee);if(l(L)||E(L,j))return B(V(),ee);let te=["^@","^v-on:"],oe=["^:","^v-bind:"],W=["^v-"];if($(te)){let X=V(),ue=I(X)?"__js_expression":j.__should_parse_vue_template_with_ts?"__vue_ts_event_binding":"__vue_event_binding";return Q(ee(X,{parser:ue}))}if($(oe))return Q(ee(V(),{parser:"__vue_expression"}));if($(W))return Q(ee(V(),{parser:"__js_expression"}))}if(j.parser==="angular"){let te=(G,z)=>ee(G,Object.assign(Object.assign({},z),{},{trailingComma:"none"})),oe=["^\\*"],W=["^\\(.+\\)$","^on-"],X=["^\\[.+\\]$","^bind(on)?-","^ng-(if|show|hide|class|style)$"],ue=["^i18n(-.+)?$"];if($(W))return Q(te(V(),{parser:"__ng_action"}));if($(X))return Q(te(V(),{parser:"__ng_binding"}));if($(ue)){let G=V().trim();return R(i(v(L,G)),!G.includes("@@"))}if($(oe))return Q(te(V(),{parser:"__ng_directive"}));let De=/{{(.+?)}}/s,ie=V();if(De.test(ie)){let G=[];for(let[z,U]of ie.split(De).entries())if(z%2===0)G.push(y(U));else try{G.push(s(["{{",r([u,te(U,{parser:"__ng_interpolation",__isInHtmlInterpolation:!0})]),u,"}}"]));}catch{G.push("{{",y(U),"}}");}return s(G)}}return null}function b(L,M,j,$){let V=L.getValue();switch(V.type){case"element":{if(k(V)||V.type==="interpolation")return;if(!V.isSelfClosing&&P(V,$)){let q=C(V,$);if(!q)return;let Y=N(V,$),H=/^\s*$/.test(Y),R="";return H||(R=j(D(Y),{parser:q,__embeddedInHtml:!0},{stripTrailingHardline:!0}),H=R===""),[h(V,$),s(w(L,$,M)),H?"":a,R,H?"":a,d(V,$),p(V,$)]}break}case"text":{if(k(V.parent)){let q=C(V.parent,$);if(q){let Y=q==="markdown"?g(V.value.replace(/^[^\S\n]*\n/,"")):V.value,H={parser:q,__embeddedInHtml:!0};if($.parser==="html"&&q==="babel"){let R="script",{attrMap:Q}=V.parent;Q&&(Q.type==="module"||Q.type==="text/babel"&&Q["data-type"]==="module")&&(R="module"),H.__babelSourceType=R;}return [t,h(V,$),j(Y,H,{stripTrailingHardline:!0}),p(V,$)]}}else if(V.parent.type==="interpolation"){let q={__isInHtmlInterpolation:!0,__embeddedInHtml:!0};return $.parser==="angular"?(q.parser="__ng_interpolation",q.trailingComma="none"):$.parser==="vue"?q.parser=$.__should_parse_vue_template_with_ts?"__vue_ts_expression":"__vue_expression":q.parser="__js_expression",[r([u,j(V.value,q,{stripTrailingHardline:!0})]),V.parent.next&&f(V.parent.next)?" ":u]}break}case"attribute":{if(!V.value)break;if(/^PRETTIER_HTML_PLACEHOLDER_\d+_\d+_IN_JS$/.test($.originalText.slice(V.valueSpan.start.offset,V.valueSpan.end.offset)))return [V.rawName,"=",V.value];if($.parser==="lwc"&&/^{.*}$/s.test($.originalText.slice(V.valueSpan.start.offset,V.valueSpan.end.offset)))return [V.rawName,"=",V.value];let q=x(V,(Y,H)=>j(Y,Object.assign({__isInHtmlAttribute:!0,__embeddedInHtml:!0},H),{stripTrailingHardline:!0}),$);if(q)return [V.rawName,'="',s(c(q,Y=>typeof Y=="string"?Y.replace(/"/g,"""):Y)),'"'];break}case"front-matter":return m(V,j)}}n.exports=b;}}),po=Z({"src/language-html/print/children.js"(e,n){re();var{builders:{breakParent:t,group:s,ifBreak:a,line:r,softline:u,hardline:i},utils:{replaceTextEndOfLine:o}}=Oe(),{locStart:c,locEnd:y}=zn(),{forceBreakChildren:m,forceNextEmptyLine:d,isTextLikeNode:p,hasPrettierIgnore:f,preferHardlineAsLeadingSpaces:h}=jt(),{printOpeningTagPrefix:w,needsToBorrowNextOpeningTagStartMarker:T,printOpeningTagStartMarker:A,needsToBorrowPrevClosingTagEndMarker:S,printClosingTagEndMarker:B,printClosingTagSuffix:I,needsToBorrowParentClosingTagStartMarker:k}=Qt();function P(g,F,l){let E=g.getValue();return f(E)?[w(E,F),...o(F.originalText.slice(c(E)+(E.prev&&T(E.prev)?A(E).length:0),y(E)-(E.next&&S(E.next)?B(E,F).length:0))),I(E,F)]:l()}function C(g,F){return p(g)&&p(F)?g.isTrailingSpaceSensitive?g.hasTrailingSpaces?h(F)?i:r:"":h(F)?i:u:T(g)&&(f(F)||F.firstChild||F.isSelfClosing||F.type==="element"&&F.attrs.length>0)||g.type==="element"&&g.isSelfClosing&&S(F)?"":!F.isLeadingSpaceSensitive||h(F)||S(F)&&g.lastChild&&k(g.lastChild)&&g.lastChild.lastChild&&k(g.lastChild.lastChild)?i:F.hasLeadingSpaces?r:u}function D(g,F,l){let E=g.getValue();if(m(E))return [t,...g.map(N=>{let x=N.getValue(),b=x.prev?C(x.prev,x):"";return [b?[b,d(x.prev)?i:""]:"",P(N,F,l)]},"children")];let v=E.children.map(()=>Symbol(""));return g.map((N,x)=>{let b=N.getValue();if(p(b)){if(b.prev&&p(b.prev)){let Y=C(b.prev,b);if(Y)return d(b.prev)?[i,i,P(N,F,l)]:[Y,P(N,F,l)]}return P(N,F,l)}let L=[],M=[],j=[],$=[],V=b.prev?C(b.prev,b):"",q=b.next?C(b,b.next):"";return V&&(d(b.prev)?L.push(i,i):V===i?L.push(i):p(b.prev)?M.push(V):M.push(a("",u,{groupId:v[x-1]}))),q&&(d(b)?p(b.next)&&$.push(i,i):q===i?p(b.next)&&$.push(i):j.push(q)),[...L,s([...M,s([P(N,F,l),...j],{id:v[x]})]),...$]},"children")}n.exports={printChildren:D};}}),eg=Z({"src/language-html/print/element.js"(e,n){re();var{builders:{breakParent:t,dedentToRoot:s,group:a,ifBreak:r,indentIfBreak:u,indent:i,line:o,softline:c},utils:{replaceTextEndOfLine:y}}=Oe(),m=co(),{shouldPreserveContent:d,isScriptLikeTag:p,isVueCustomBlock:f,countParents:h,forceBreakContent:w}=jt(),{printOpeningTagPrefix:T,printOpeningTag:A,printClosingTagSuffix:S,printClosingTag:B,needsToBorrowPrevClosingTagEndMarker:I,needsToBorrowLastChildClosingTagEndMarker:k}=Qt(),{printChildren:P}=po();function C(D,g,F){let l=D.getValue();if(d(l,g))return [T(l,g),a(A(D,g,F)),...y(m(l,g)),...B(l,g),S(l,g)];let E=l.children.length===1&&l.firstChild.type==="interpolation"&&l.firstChild.isLeadingSpaceSensitive&&!l.firstChild.hasLeadingSpaces&&l.lastChild.isTrailingSpaceSensitive&&!l.lastChild.hasTrailingSpaces,v=Symbol("element-attr-group-id"),N=M=>a([a(A(D,g,F),{id:v}),M,B(l,g)]),x=M=>E?u(M,{groupId:v}):(p(l)||f(l,g))&&l.parent.type==="root"&&g.parser==="vue"&&!g.vueIndentScriptAndStyle?M:i(M),b=()=>E?r(c,"",{groupId:v}):l.firstChild.hasLeadingSpaces&&l.firstChild.isLeadingSpaceSensitive?o:l.firstChild.type==="text"&&l.isWhitespaceSensitive&&l.isIndentationSensitive?s(c):c,L=()=>(l.next?I(l.next):k(l.parent))?l.lastChild.hasTrailingSpaces&&l.lastChild.isTrailingSpaceSensitive?" ":"":E?r(c,"",{groupId:v}):l.lastChild.hasTrailingSpaces&&l.lastChild.isTrailingSpaceSensitive?o:(l.lastChild.type==="comment"||l.lastChild.type==="text"&&l.isWhitespaceSensitive&&l.isIndentationSensitive)&&new RegExp("\\n[\\t ]{".concat(g.tabWidth*h(D,j=>j.parent&&j.parent.type!=="root"),"}$")).test(l.lastChild.value)?"":c;return l.children.length===0?N(l.hasDanglingSpaces&&l.isDanglingSpaceSensitive?o:""):N([w(l)?t:"",x([b(),P(D,g,F)]),L()])}n.exports={printElement:C};}}),tg=Z({"src/language-html/printer-html.js"(e,n){re();var{builders:{fill:t,group:s,hardline:a,literalline:r},utils:{cleanDoc:u,getDocParts:i,isConcat:o,replaceTextEndOfLine:c}}=Oe(),y=Rd(),{countChars:m,unescapeQuoteEntities:d,getTextValueParts:p}=jt(),f=zd(),{insertPragma:h}=Xd(),{locStart:w,locEnd:T}=zn(),A=Zd(),{printClosingTagSuffix:S,printClosingTagEnd:B,printOpeningTagPrefix:I,printOpeningTagStart:k}=Qt(),{printElement:P}=eg(),{printChildren:C}=po();function D(g,F,l){let E=g.getValue();switch(E.type){case"front-matter":return c(E.raw);case"root":return F.__onHtmlRoot&&F.__onHtmlRoot(E),[s(C(g,F,l)),a];case"element":case"ieConditionalComment":return P(g,F,l);case"ieConditionalStartComment":case"ieConditionalEndComment":return [k(E),B(E)];case"interpolation":return [k(E,F),...g.map(l,"children"),B(E,F)];case"text":{if(E.parent.type==="interpolation"){let N=/\n[^\S\n]*$/,x=N.test(E.value),b=x?E.value.replace(N,""):E.value;return [...c(b),x?a:""]}let v=u([I(E,F),...p(E),S(E,F)]);return o(v)||v.type==="fill"?t(i(v)):v}case"docType":return [s([k(E,F)," ",E.value.replace(/^html\b/i,"html").replace(/\s+/g," ")]),B(E,F)];case"comment":return [I(E,F),...c(F.originalText.slice(w(E),T(E)),r),S(E,F)];case"attribute":{if(E.value===null)return E.rawName;let v=d(E.value),N=m(v,"'"),x=m(v,'"'),b=N<x?"'":'"';return [E.rawName,"=",b,...c(b==='"'?v.replace(/"/g,"""):v.replace(/'/g,"'")),b]}default:throw new Error("Unexpected node type ".concat(E.type))}}n.exports={preprocess:f,print:D,insertPragma:h,massageAstNode:y,embed:A};}}),rg=Z({"src/language-html/options.js"(e,n){re();var t=Lt(),s="HTML";n.exports={bracketSameLine:t.bracketSameLine,htmlWhitespaceSensitivity:{since:"1.15.0",category:s,type:"choice",default:"css",description:"How to handle whitespaces in HTML.",choices:[{value:"css",description:"Respect the default value of CSS display property."},{value:"strict",description:"Whitespaces are considered sensitive."},{value:"ignore",description:"Whitespaces are considered insensitive."}]},singleAttributePerLine:t.singleAttributePerLine,vueIndentScriptAndStyle:{since:"1.19.0",category:s,type:"boolean",default:!1,description:"Indent script and style tags in Vue files."}};}}),ng=Z({"src/language-html/parsers.js"(){re();}}),An=Z({"node_modules/linguist-languages/data/HTML.json"(e,n){n.exports={name:"HTML",type:"markup",tmScope:"text.html.basic",aceMode:"html",codemirrorMode:"htmlmixed",codemirrorMimeType:"text/html",color:"#e34c26",aliases:["xhtml"],extensions:[".html",".hta",".htm",".html.hl",".inc",".xht",".xhtml"],languageId:146};}}),ug=Z({"node_modules/linguist-languages/data/Vue.json"(e,n){n.exports={name:"Vue",type:"markup",color:"#41b883",extensions:[".vue"],tmScope:"text.html.vue",aceMode:"html",languageId:391};}}),sg=Z({"src/language-html/index.js"(e,n){re();var t=Tt(),s=tg(),a=rg(),r=ng(),u=[t(An(),()=>({name:"Angular",since:"1.15.0",parsers:["angular"],vscodeLanguageIds:["html"],extensions:[".component.html"],filenames:[]})),t(An(),o=>({since:"1.15.0",parsers:["html"],vscodeLanguageIds:["html"],extensions:[...o.extensions,".mjml"]})),t(An(),()=>({name:"Lightning Web Components",since:"1.17.0",parsers:["lwc"],vscodeLanguageIds:["html"],extensions:[],filenames:[]})),t(ug(),()=>({since:"1.10.0",parsers:["vue"],vscodeLanguageIds:["vue"]}))],i={html:s};n.exports={languages:u,printers:i,options:a,parsers:r};}}),ig=Z({"src/language-yaml/pragma.js"(e,n){re();function t(r){return /^\s*@(?:prettier|format)\s*$/.test(r)}function s(r){return /^\s*#[^\S\n]*@(?:prettier|format)\s*?(?:\n|$)/.test(r)}function a(r){return `# @format - -`.concat(r)}n.exports={isPragma:t,hasPragma:s,insertPragma:a};}}),ag=Z({"src/language-yaml/loc.js"(e,n){re();function t(a){return a.position.start.offset}function s(a){return a.position.end.offset}n.exports={locStart:t,locEnd:s};}}),og=Z({"src/language-yaml/embed.js"(e,n){re();function t(s,a,r,u){if(s.getValue().type==="root"&&u.filepath&&/(?:[/\\]|^)\.(?:prettier|stylelint)rc$/.test(u.filepath))return r(u.originalText,Object.assign(Object.assign({},u),{},{parser:"json"}))}n.exports=t;}}),Ot=Z({"src/language-yaml/utils.js"(e,n){re();var{getLast:t,isNonEmptyArray:s}=Ue();function a(C,D){let g=0,F=C.stack.length-1;for(let l=0;l<F;l++){let E=C.stack[l];r(E)&&D(E)&&g++;}return g}function r(C,D){return C&&typeof C.type=="string"&&(!D||D.includes(C.type))}function u(C,D,g){return D("children"in C?Object.assign(Object.assign({},C),{},{children:C.children.map(F=>u(F,D,C))}):C,g)}function i(C,D,g){Object.defineProperty(C,D,{get:g,enumerable:!1});}function o(C,D){let g=0,F=D.length;for(let l=C.position.end.offset-1;l<F;l++){let E=D[l];if(E===` -`&&g++,g===1&&/\S/.test(E))return !1;if(g===2)return !0}return !1}function c(C){switch(C.getValue().type){case"tag":case"anchor":case"comment":return !1}let g=C.stack.length;for(let F=1;F<g;F++){let l=C.stack[F],E=C.stack[F-1];if(Array.isArray(E)&&typeof l=="number"&&l!==E.length-1)return !1}return !0}function y(C){return s(C.children)?y(t(C.children)):C}function m(C){return C.value.trim()==="prettier-ignore"}function d(C){let D=C.getValue();if(D.type==="documentBody"){let g=C.getParentNode();return S(g.head)&&m(t(g.head.endComments))}return h(D)&&m(t(D.leadingComments))}function p(C){return !s(C.children)&&!f(C)}function f(C){return h(C)||w(C)||T(C)||A(C)||S(C)}function h(C){return s(C==null?void 0:C.leadingComments)}function w(C){return s(C==null?void 0:C.middleComments)}function T(C){return C==null?void 0:C.indicatorComment}function A(C){return C==null?void 0:C.trailingComment}function S(C){return s(C==null?void 0:C.endComments)}function B(C){let D=[],g;for(let F of C.split(/( +)/))F!==" "?g===" "?D.push(F):D.push((D.pop()||"")+F):g===void 0&&D.unshift(""),g=F;return g===" "&&D.push((D.pop()||"")+" "),D[0]===""&&(D.shift(),D.unshift(" "+(D.shift()||""))),D}function I(C,D,g){let F=D.split(` -`).map((l,E,v)=>E===0&&E===v.length-1?l:E!==0&&E!==v.length-1?l.trim():E===0?l.trimEnd():l.trimStart());return g.proseWrap==="preserve"?F.map(l=>l.length===0?[]:[l]):F.map(l=>l.length===0?[]:B(l)).reduce((l,E,v)=>v!==0&&F[v-1].length>0&&E.length>0&&!(C==="quoteDouble"&&t(t(l)).endsWith("\\"))?[...l.slice(0,-1),[...t(l),...E]]:[...l,E],[]).map(l=>g.proseWrap==="never"?[l.join(" ")]:l)}function k(C,D){let{parentIndent:g,isLastDescendant:F,options:l}=D,E=C.position.start.line===C.position.end.line?"":l.originalText.slice(C.position.start.offset,C.position.end.offset).match(/^[^\n]*\n(.*)$/s)[1],v;if(C.indent===null){let b=E.match(/^(?<leadingSpace> *)[^\n\r ]/m);v=b?b.groups.leadingSpace.length:Number.POSITIVE_INFINITY;}else v=C.indent-1+g;let N=E.split(` -`).map(b=>b.slice(v));if(l.proseWrap==="preserve"||C.type==="blockLiteral")return x(N.map(b=>b.length===0?[]:[b]));return x(N.map(b=>b.length===0?[]:B(b)).reduce((b,L,M)=>M!==0&&N[M-1].length>0&&L.length>0&&!/^\s/.test(L[0])&&!/^\s|\s$/.test(t(b))?[...b.slice(0,-1),[...t(b),...L]]:[...b,L],[]).map(b=>b.reduce((L,M)=>L.length>0&&/\s$/.test(t(L))?[...L.slice(0,-1),t(L)+" "+M]:[...L,M],[])).map(b=>l.proseWrap==="never"?[b.join(" ")]:b));function x(b){if(C.chomping==="keep")return t(b).length===0?b.slice(0,-1):b;let L=0;for(let M=b.length-1;M>=0&&b[M].length===0;M--)L++;return L===0?b:L>=2&&!F?b.slice(0,-(L-1)):b.slice(0,-L)}}function P(C){if(!C)return !0;switch(C.type){case"plain":case"quoteDouble":case"quoteSingle":case"alias":case"flowMapping":case"flowSequence":return !0;default:return !1}}n.exports={getLast:t,getAncestorCount:a,isNode:r,isEmptyNode:p,isInlineNode:P,mapNode:u,defineShortcut:i,isNextLineEmpty:o,isLastDescendantNode:c,getBlockValueLineContents:k,getFlowScalarLineContents:I,getLastDescendantNode:y,hasPrettierIgnore:d,hasLeadingComments:h,hasMiddleComments:w,hasIndicatorComment:T,hasTrailingComment:A,hasEndComments:S};}}),lg=Z({"src/language-yaml/print-preprocess.js"(e,n){re();var{defineShortcut:t,mapNode:s}=Ot();function a(u){return s(u,r)}function r(u){switch(u.type){case"document":t(u,"head",()=>u.children[0]),t(u,"body",()=>u.children[1]);break;case"documentBody":case"sequenceItem":case"flowSequenceItem":case"mappingKey":case"mappingValue":t(u,"content",()=>u.children[0]);break;case"mappingItem":case"flowMappingItem":t(u,"key",()=>u.children[0]),t(u,"value",()=>u.children[1]);break}return u}n.exports=a;}}),Ir=Z({"src/language-yaml/print/misc.js"(e,n){re();var{builders:{softline:t,align:s}}=Oe(),{hasEndComments:a,isNextLineEmpty:r,isNode:u}=Ot(),i=new WeakMap;function o(m,d){let p=m.getValue(),f=m.stack[0],h;return i.has(f)?h=i.get(f):(h=new Set,i.set(f,h)),!h.has(p.position.end.line)&&(h.add(p.position.end.line),r(p,d)&&!c(m.getParentNode()))?t:""}function c(m){return a(m)&&!u(m,["documentHead","documentBody","flowMapping","flowSequence"])}function y(m,d){return s(" ".repeat(m),d)}n.exports={alignWithSpaces:y,shouldPrintEndComments:c,printNextEmptyLine:o};}}),cg=Z({"src/language-yaml/print/flow-mapping-sequence.js"(e,n){re();var{builders:{ifBreak:t,line:s,softline:a,hardline:r,join:u}}=Oe(),{isEmptyNode:i,getLast:o,hasEndComments:c}=Ot(),{printNextEmptyLine:y,alignWithSpaces:m}=Ir();function d(f,h,w){let T=f.getValue(),A=T.type==="flowMapping",S=A?"{":"[",B=A?"}":"]",I=a;A&&T.children.length>0&&w.bracketSpacing&&(I=s);let k=o(T.children),P=k&&k.type==="flowMappingItem"&&i(k.key)&&i(k.value);return [S,m(w.tabWidth,[I,p(f,h,w),w.trailingComma==="none"?"":t(","),c(T)?[r,u(r,f.map(h,"endComments"))]:""]),P?"":I,B]}function p(f,h,w){let T=f.getValue();return f.map((S,B)=>[h(),B===T.children.length-1?"":[",",s,T.children[B].position.start.line!==T.children[B+1].position.start.line?y(S,w.originalText):""]],"children")}n.exports={printFlowMapping:d,printFlowSequence:d};}}),pg=Z({"src/language-yaml/print/mapping-item.js"(e,n){re();var{builders:{conditionalGroup:t,group:s,hardline:a,ifBreak:r,join:u,line:i}}=Oe(),{hasLeadingComments:o,hasMiddleComments:c,hasTrailingComment:y,hasEndComments:m,isNode:d,isEmptyNode:p,isInlineNode:f}=Ot(),{alignWithSpaces:h}=Ir();function w(B,I,k,P,C){let{key:D,value:g}=B,F=p(D),l=p(g);if(F&&l)return ": ";let E=P("key"),v=A(B)?" ":"";if(l)return B.type==="flowMappingItem"&&I.type==="flowMapping"?E:B.type==="mappingItem"&&T(D.content,C)&&!y(D.content)&&(!I.tag||I.tag.value!=="tag:yaml.org,2002:set")?[E,v,":"]:["? ",h(2,E)];let N=P("value");if(F)return [": ",h(2,N)];if(o(g)||!f(D.content))return ["? ",h(2,E),a,u("",k.map(P,"value","leadingComments").map($=>[$,a])),": ",h(2,N)];if(S(D.content)&&!o(D.content)&&!c(D.content)&&!y(D.content)&&!m(D)&&!o(g.content)&&!c(g.content)&&!m(g)&&T(g.content,C))return [E,v,": ",N];let x=Symbol("mappingKey"),b=s([r("? "),s(h(2,E),{id:x})]),L=[a,": ",h(2,N)],M=[v,":"];o(g.content)||m(g)&&g.content&&!d(g.content,["mapping","sequence"])||I.type==="mapping"&&y(D.content)&&f(g.content)||d(g.content,["mapping","sequence"])&&g.content.tag===null&&g.content.anchor===null?M.push(a):g.content&&M.push(i),M.push(N);let j=h(C.tabWidth,M);return T(D.content,C)&&!o(D.content)&&!c(D.content)&&!m(D)?t([[E,j]]):t([[b,r(L,j,{groupId:x})]])}function T(B,I){if(!B)return !0;switch(B.type){case"plain":case"quoteSingle":case"quoteDouble":break;case"alias":return !0;default:return !1}if(I.proseWrap==="preserve")return B.position.start.line===B.position.end.line;if(/\\$/m.test(I.originalText.slice(B.position.start.offset,B.position.end.offset)))return !1;switch(I.proseWrap){case"never":return !B.value.includes(` -`);case"always":return !/[\n ]/.test(B.value);default:return !1}}function A(B){return B.key.content&&B.key.content.type==="alias"}function S(B){if(!B)return !0;switch(B.type){case"plain":case"quoteDouble":case"quoteSingle":return B.position.start.line===B.position.end.line;case"alias":return !0;default:return !1}}n.exports=w;}}),fg=Z({"src/language-yaml/print/block.js"(e,n){re();var{builders:{dedent:t,dedentToRoot:s,fill:a,hardline:r,join:u,line:i,literalline:o,markAsRoot:c},utils:{getDocParts:y}}=Oe(),{getAncestorCount:m,getBlockValueLineContents:d,hasIndicatorComment:p,isLastDescendantNode:f,isNode:h}=Ot(),{alignWithSpaces:w}=Ir();function T(A,S,B){let I=A.getValue(),k=m(A,F=>h(F,["sequence","mapping"])),P=f(A),C=[I.type==="blockFolded"?">":"|"];I.indent!==null&&C.push(I.indent.toString()),I.chomping!=="clip"&&C.push(I.chomping==="keep"?"+":"-"),p(I)&&C.push(" ",S("indicatorComment"));let D=d(I,{parentIndent:k,isLastDescendant:P,options:B}),g=[];for(let[F,l]of D.entries())F===0&&g.push(r),g.push(a(y(u(i,l)))),F!==D.length-1?g.push(l.length===0?r:c(o)):I.chomping==="keep"&&P&&g.push(s(l.length===0?r:o));return I.indent===null?C.push(t(w(B.tabWidth,g))):C.push(s(w(I.indent-1+k,g))),C}n.exports=T;}}),Dg=Z({"src/language-yaml/printer-yaml.js"(e,n){re();var{builders:{breakParent:t,fill:s,group:a,hardline:r,join:u,line:i,lineSuffix:o,literalline:c},utils:{getDocParts:y,replaceTextEndOfLine:m}}=Oe(),{isPreviousLineEmpty:d}=Ue(),{insertPragma:p,isPragma:f}=ig(),{locStart:h}=ag(),w=og(),{getFlowScalarLineContents:T,getLastDescendantNode:A,hasLeadingComments:S,hasMiddleComments:B,hasTrailingComment:I,hasEndComments:k,hasPrettierIgnore:P,isLastDescendantNode:C,isNode:D,isInlineNode:g}=Ot(),F=lg(),{alignWithSpaces:l,printNextEmptyLine:E,shouldPrintEndComments:v}=Ir(),{printFlowMapping:N,printFlowSequence:x}=cg(),b=pg(),L=fg();function M(R,Q,ee){let te=R.getValue(),oe=[];te.type!=="mappingValue"&&S(te)&&oe.push([u(r,R.map(ee,"leadingComments")),r]);let{tag:W,anchor:X}=te;W&&oe.push(ee("tag")),W&&X&&oe.push(" "),X&&oe.push(ee("anchor"));let ue="";D(te,["mapping","sequence","comment","directive","mappingItem","sequenceItem"])&&!C(R)&&(ue=E(R,Q.originalText)),(W||X)&&(D(te,["sequence","mapping"])&&!B(te)?oe.push(r):oe.push(" ")),B(te)&&oe.push([te.middleComments.length===1?"":r,u(r,R.map(ee,"middleComments")),r]);let De=R.getParentNode();return P(R)?oe.push(m(Q.originalText.slice(te.position.start.offset,te.position.end.offset).trimEnd(),c)):oe.push(a(j(te,De,R,Q,ee))),I(te)&&!D(te,["document","documentHead"])&&oe.push(o([te.type==="mappingValue"&&!te.content?"":" ",De.type==="mappingKey"&&R.getParentNode(2).type==="mapping"&&g(te)?"":t,ee("trailingComment")])),v(te)&&oe.push(l(te.type==="sequenceItem"?2:0,[r,u(r,R.map(ie=>[d(Q.originalText,ie.getValue(),h)?r:"",ee()],"endComments"))])),oe.push(ue),oe}function j(R,Q,ee,te,oe){switch(R.type){case"root":{let{children:W}=R,X=[];ee.each((De,ie)=>{let G=W[ie],z=W[ie+1];ie!==0&&X.push(r),X.push(oe()),V(G,z)?(X.push(r,"..."),I(G)&&X.push(" ",oe("trailingComment"))):z&&!I(z.head)&&X.push(r,"---");},"children");let ue=A(R);return (!D(ue,["blockLiteral","blockFolded"])||ue.chomping!=="keep")&&X.push(r),X}case"document":{let W=Q.children[ee.getName()+1],X=[];return q(R,W,Q,te)==="head"&&((R.head.children.length>0||R.head.endComments.length>0)&&X.push(oe("head")),I(R.head)?X.push(["---"," ",oe(["head","trailingComment"])]):X.push("---")),$(R)&&X.push(oe("body")),u(r,X)}case"documentHead":return u(r,[...ee.map(oe,"children"),...ee.map(oe,"endComments")]);case"documentBody":{let{children:W,endComments:X}=R,ue="";if(W.length>0&&X.length>0){let De=A(R);D(De,["blockFolded","blockLiteral"])?De.chomping!=="keep"&&(ue=[r,r]):ue=r;}return [u(r,ee.map(oe,"children")),ue,u(r,ee.map(oe,"endComments"))]}case"directive":return ["%",u(" ",[R.name,...R.parameters])];case"comment":return ["#",R.value];case"alias":return ["*",R.value];case"tag":return te.originalText.slice(R.position.start.offset,R.position.end.offset);case"anchor":return ["&",R.value];case"plain":return Y(R.type,te.originalText.slice(R.position.start.offset,R.position.end.offset),te);case"quoteDouble":case"quoteSingle":{let W="'",X='"',ue=te.originalText.slice(R.position.start.offset+1,R.position.end.offset-1);if(R.type==="quoteSingle"&&ue.includes("\\")||R.type==="quoteDouble"&&/\\[^"]/.test(ue)){let ie=R.type==="quoteDouble"?X:W;return [ie,Y(R.type,ue,te),ie]}if(ue.includes(X))return [W,Y(R.type,R.type==="quoteDouble"?ue.replace(/\\"/g,X).replace(/'/g,W.repeat(2)):ue,te),W];if(ue.includes(W))return [X,Y(R.type,R.type==="quoteSingle"?ue.replace(/''/g,W):ue,te),X];let De=te.singleQuote?W:X;return [De,Y(R.type,ue,te),De]}case"blockFolded":case"blockLiteral":return L(ee,oe,te);case"mapping":case"sequence":return u(r,ee.map(oe,"children"));case"sequenceItem":return ["- ",l(2,R.content?oe("content"):"")];case"mappingKey":case"mappingValue":return R.content?oe("content"):"";case"mappingItem":case"flowMappingItem":return b(R,Q,ee,oe,te);case"flowMapping":return N(ee,oe,te);case"flowSequence":return x(ee,oe,te);case"flowSequenceItem":return oe("content");default:throw new Error("Unexpected node type ".concat(R.type))}}function $(R){return R.body.children.length>0||k(R.body)}function V(R,Q){return I(R)||Q&&(Q.head.children.length>0||k(Q.head))}function q(R,Q,ee,te){return ee.children[0]===R&&/---(?:\s|$)/.test(te.originalText.slice(h(R),h(R)+4))||R.head.children.length>0||k(R.head)||I(R.head)?"head":V(R,Q)?!1:Q?"root":!1}function Y(R,Q,ee){let te=T(R,Q,ee);return u(r,te.map(oe=>s(y(u(i,oe)))))}function H(R,Q){if(D(Q))switch(delete Q.position,Q.type){case"comment":if(f(Q.value))return null;break;case"quoteDouble":case"quoteSingle":Q.type="quote";break}}n.exports={preprocess:F,embed:w,print:M,massageAstNode:H,insertPragma:p};}}),mg=Z({"src/language-yaml/options.js"(e,n){re();var t=Lt();n.exports={bracketSpacing:t.bracketSpacing,singleQuote:t.singleQuote,proseWrap:t.proseWrap};}}),dg=Z({"src/language-yaml/parsers.js"(){re();}}),gg=Z({"node_modules/linguist-languages/data/YAML.json"(e,n){n.exports={name:"YAML",type:"data",color:"#cb171e",tmScope:"source.yaml",aliases:["yml"],extensions:[".yml",".mir",".reek",".rviz",".sublime-syntax",".syntax",".yaml",".yaml-tmlanguage",".yaml.sed",".yml.mysql"],filenames:[".clang-format",".clang-tidy",".gemrc","CITATION.cff","glide.lock","yarn.lock"],aceMode:"yaml",codemirrorMode:"yaml",codemirrorMimeType:"text/x-yaml",languageId:407};}}),yg=Z({"src/language-yaml/index.js"(e,n){re();var t=Tt(),s=Dg(),a=mg(),r=dg(),u=[t(gg(),i=>({since:"1.14.0",parsers:["yaml"],vscodeLanguageIds:["yaml","ansible","home-assistant"],filenames:[...i.filenames.filter(o=>o!=="yarn.lock"),".prettierrc",".stylelintrc"]}))];n.exports={languages:u,printers:{yaml:s},options:a,parsers:r};}}),hg=Z({"src/languages.js"(e,n){re(),n.exports=[Qm(),gd(),Sd(),_d(),Md(),sg(),yg()];}}),vg=Z({"src/standalone.js"(e,n){re();var{version:t}=ca(),s=gm(),{getSupportInfo:a}=jn(),r=ym(),u=hg(),i=Oe();function o(y){let m=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;return function(){for(var d=arguments.length,p=new Array(d),f=0;f<d;f++)p[f]=arguments[f];let h=p[m]||{},w=h.plugins||[];return p[m]=Object.assign(Object.assign({},h),{},{plugins:[...u,...Array.isArray(w)?w:Object.values(w)]}),y(...p)}}var c=o(s.formatWithCursor);n.exports={formatWithCursor:c,format(y,m){return c(y,m).formatted},check(y,m){let{formatted:d}=c(y,m);return d===y},doc:i,getSupportInfo:o(a,0),version:t,util:r,__debug:{parse:o(s.parse),formatAST:o(s.formatAST),formatDoc:o(s.formatDoc),printToDoc:o(s.printToDoc),printDocToString:o(s.printDocToString)}};}}),Y0=vg(); - -export { Y0 as default }; +`}}function At(t,e){let r;switch(e){case` +`:r=/\n/g;break;case"\r":r=/\r/g;break;case`\r +`:r=/\r\n/g;break;default:throw new Error(`Unexpected "eol" ${JSON.stringify(e)}.`)}let n=t.match(r);return n?n.length:0}function gr(t){return ee(!1,t,/\r\n?/g,` +`)}var yr=()=>/[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26F9(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC3\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC08\uDC26](?:\u200D\u2B1B)?|[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC2\uDECE-\uDEDB\uDEE0-\uDEE8]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g;var xr={eastAsianWidth(t){var e=t.charCodeAt(0),r=t.length==2?t.charCodeAt(1):0,n=e;return 55296<=e&&e<=56319&&56320<=r&&r<=57343&&(e&=1023,r&=1023,n=e<<10|r,n+=65536),n==12288||65281<=n&&n<=65376||65504<=n&&n<=65510?"F":4352<=n&&n<=4447||4515<=n&&n<=4519||4602<=n&&n<=4607||9001<=n&&n<=9002||11904<=n&&n<=11929||11931<=n&&n<=12019||12032<=n&&n<=12245||12272<=n&&n<=12283||12289<=n&&n<=12350||12353<=n&&n<=12438||12441<=n&&n<=12543||12549<=n&&n<=12589||12593<=n&&n<=12686||12688<=n&&n<=12730||12736<=n&&n<=12771||12784<=n&&n<=12830||12832<=n&&n<=12871||12880<=n&&n<=13054||13056<=n&&n<=19903||19968<=n&&n<=42124||42128<=n&&n<=42182||43360<=n&&n<=43388||44032<=n&&n<=55203||55216<=n&&n<=55238||55243<=n&&n<=55291||63744<=n&&n<=64255||65040<=n&&n<=65049||65072<=n&&n<=65106||65108<=n&&n<=65126||65128<=n&&n<=65131||110592<=n&&n<=110593||127488<=n&&n<=127490||127504<=n&&n<=127546||127552<=n&&n<=127560||127568<=n&&n<=127569||131072<=n&&n<=194367||177984<=n&&n<=196605||196608<=n&&n<=262141?"W":"N"}};var bu=/[^\x20-\x7F]/;function wu(t){if(!t)return 0;if(!bu.test(t))return t.length;t=t.replace(yr()," ");let e=0;for(let r of t){let n=r.codePointAt(0);if(n<=31||n>=127&&n<=159||n>=768&&n<=879)continue;let o=xr.eastAsianWidth(r);e+=o==="F"||o==="W"?2:1;}return e}var we=wu;var Br=t=>{if(Array.isArray(t))return t;if(t.type!==k)throw new Error(`Expect doc to be 'array' or '${k}'.`);return t.parts};function Ne(t,e){if(typeof t=="string")return e(t);let r=new Map;return n(t);function n(u){if(r.has(u))return r.get(u);let i=o(u);return r.set(u,i),i}function o(u){switch(W(u)){case j:return e(u.map(n));case k:return e({...u,parts:u.parts.map(n)});case B:return e({...u,breakContents:n(u.breakContents),flatContents:n(u.flatContents)});case A:{let{expandedStates:i,contents:s}=u;return i?(i=i.map(n),s=i[0]):s=n(s),e({...u,contents:s,expandedStates:i})}case S:case T:case P:case O:case L:return e({...u,contents:n(u.contents)});case U:case M:case v:case I:case x:case b:return e(u);default:throw new q(u)}}}function Je(t,e,r){let n=r,o=!1;function u(i){if(o)return !1;let s=e(i);s!==void 0&&(o=!0,n=s);}return xe(t,u),n}function Ou(t){if(t.type===A&&t.break||t.type===x&&t.hard||t.type===b)return !0}function kr(t){return Je(t,Ou,!1)}function _r(t){if(t.length>0){let e=y(!1,t,-1);!e.expandedStates&&!e.break&&(e.break="propagated");}return null}function br(t){let e=new Set,r=[];function n(u){if(u.type===b&&_r(r),u.type===A){if(r.push(u),e.has(u))return !1;e.add(u);}}function o(u){u.type===A&&r.pop().break&&_r(r);}xe(t,n,o,!0);}function Nu(t){return t.type===x&&!t.hard?t.soft?"":" ":t.type===B?t.flatContents:t}function wr(t){return Ne(t,Nu)}function Ar(t){for(t=[...t];t.length>=2&&y(!1,t,-2).type===x&&y(!1,t,-1).type===b;)t.length-=2;if(t.length>0){let e=Oe(y(!1,t,-1));t[t.length-1]=e;}return t}function Oe(t){switch(W(t)){case S:case T:case P:case A:case L:case O:{let e=Oe(t.contents);return {...t,contents:e}}case B:return {...t,breakContents:Oe(t.breakContents),flatContents:Oe(t.flatContents)};case k:return {...t,parts:Ar(t.parts)};case j:return Ar(t);case U:return t.replace(/[\n\r]*$/,"");case M:case v:case I:case x:case b:break;default:throw new q(t)}return t}function Xe(t){return Oe(Su(t))}function Tu(t){switch(W(t)){case k:if(t.parts.every(e=>e===""))return "";break;case A:if(!t.contents&&!t.id&&!t.break&&!t.expandedStates)return "";if(t.contents.type===A&&t.contents.id===t.id&&t.contents.break===t.break&&t.contents.expandedStates===t.expandedStates)return t.contents;break;case S:case T:case P:case L:if(!t.contents)return "";break;case B:if(!t.flatContents&&!t.breakContents)return "";break;case j:{let e=[];for(let r of t){if(!r)continue;let[n,...o]=Array.isArray(r)?r:[r];typeof n=="string"&&typeof y(!1,e,-1)=="string"?e[e.length-1]+=n:e.push(n),e.push(...o);}return e.length===0?"":e.length===1?e[0]:e}case U:case M:case v:case I:case x:case O:case b:break;default:throw new q(t)}return t}function Su(t){return Ne(t,e=>Tu(e))}function Or(t,e=He){return Ne(t,r=>typeof r=="string"?ke(e,r.split(` +`)):r)}function vu(t){if(t.type===x)return !0}function Nr(t){return Je(t,vu,!1)}function Ze(t,e){return t.type===O?{...t,contents:e(t.contents)}:e(t)}var R=Symbol("MODE_BREAK"),K=Symbol("MODE_FLAT"),Te=Symbol("cursor");function Tr(){return {value:"",length:0,queue:[]}}function Pu(t,e){return Bt(t,{type:"indent"},e)}function Lu(t,e,r){return e===Number.NEGATIVE_INFINITY?t.root||Tr():e<0?Bt(t,{type:"dedent"},r):e?e.type==="root"?{...t,root:t}:Bt(t,{type:typeof e=="string"?"stringAlign":"numberAlign",n:e},r):t}function Bt(t,e,r){let n=e.type==="dedent"?t.queue.slice(0,-1):[...t.queue,e],o="",u=0,i=0,s=0;for(let l of n)switch(l.type){case"indent":c(),r.useTabs?a(1):D(r.tabWidth);break;case"stringAlign":c(),o+=l.n,u+=l.n.length;break;case"numberAlign":i+=1,s+=l.n;break;default:throw new Error(`Unexpected type '${l.type}'`)}return f(),{...t,value:o,length:u,queue:n};function a(l){o+=" ".repeat(l),u+=r.tabWidth*l;}function D(l){o+=" ".repeat(l),u+=l;}function c(){r.useTabs?F():f();}function F(){i>0&&a(i),d();}function f(){s>0&&D(s),d();}function d(){i=0,s=0;}}function kt(t){let e=0,r=0,n=t.length;e:for(;n--;){let o=t[n];if(o===Te){r++;continue}for(let u=o.length-1;u>=0;u--){let i=o[u];if(i===" "||i===" ")e++;else {t[n]=o.slice(0,u+1);break e}}}if(e>0||r>0)for(t.length=n+1;r-- >0;)t.push(Te);return e}function Qe(t,e,r,n,o,u){if(r===Number.POSITIVE_INFINITY)return !0;let i=e.length,s=[t],a=[];for(;r>=0;){if(s.length===0){if(i===0)return !0;s.push(e[--i]);continue}let{mode:D,doc:c}=s.pop();switch(W(c)){case U:a.push(c),r-=we(c);break;case j:case k:{let F=Br(c);for(let f=F.length-1;f>=0;f--)s.push({mode:D,doc:F[f]});break}case T:case S:case P:case O:s.push({mode:D,doc:c.contents});break;case v:r+=kt(a);break;case A:{if(u&&c.break)return !1;let F=c.break?R:D,f=c.expandedStates&&F===R?y(!1,c.expandedStates,-1):c.contents;s.push({mode:F,doc:f});break}case B:{let f=(c.groupId?o[c.groupId]||K:D)===R?c.breakContents:c.flatContents;f&&s.push({mode:D,doc:f});break}case x:if(D===R||c.hard)return !0;c.soft||(a.push(" "),r--);break;case L:n=!0;break;case I:if(n)return !1;break}}return !1}function fe(t,e){let r={},n=e.printWidth,o=be(e.endOfLine),u=0,i=[{ind:Tr(),mode:R,doc:t}],s=[],a=!1,D=[],c=0;for(br(t);i.length>0;){let{ind:f,mode:d,doc:l}=i.pop();switch(W(l)){case U:{let p=o!==` +`?ee(!1,l,` +`,o):l;s.push(p),i.length>0&&(u+=we(p));break}case j:for(let p=l.length-1;p>=0;p--)i.push({ind:f,mode:d,doc:l[p]});break;case M:if(c>=2)throw new Error("There are too many 'cursor' in doc.");s.push(Te),c++;break;case T:i.push({ind:Pu(f,e),mode:d,doc:l.contents});break;case S:i.push({ind:Lu(f,l.n,e),mode:d,doc:l.contents});break;case v:u-=kt(s);break;case A:switch(d){case K:if(!a){i.push({ind:f,mode:l.break?R:K,doc:l.contents});break}case R:{a=!1;let p={ind:f,mode:K,doc:l.contents},m=n-u,E=D.length>0;if(!l.break&&Qe(p,i,m,E,r))i.push(p);else if(l.expandedStates){let h=y(!1,l.expandedStates,-1);if(l.break){i.push({ind:f,mode:R,doc:h});break}else for(let g=1;g<l.expandedStates.length+1;g++)if(g>=l.expandedStates.length){i.push({ind:f,mode:R,doc:h});break}else {let C=l.expandedStates[g],_={ind:f,mode:K,doc:C};if(Qe(_,i,m,E,r)){i.push(_);break}}}else i.push({ind:f,mode:R,doc:l.contents});break}}l.id&&(r[l.id]=y(!1,i,-1).mode);break;case k:{let p=n-u,{parts:m}=l;if(m.length===0)break;let[E,h]=m,g={ind:f,mode:K,doc:E},C={ind:f,mode:R,doc:E},_=Qe(g,[],p,D.length>0,r,!0);if(m.length===1){_?i.push(g):i.push(C);break}let Z={ind:f,mode:K,doc:h},$={ind:f,mode:R,doc:h};if(m.length===2){_?i.push(Z,g):i.push($,C);break}m.splice(0,2);let Q={ind:f,mode:d,doc:Ge(m)},rr=m[0];Qe({ind:f,mode:K,doc:[E,h,rr]},[],p,D.length>0,r,!0)?i.push(Q,Z,g):_?i.push(Q,$,g):i.push(Q,$,C);break}case B:case P:{let p=l.groupId?r[l.groupId]:d;if(p===R){let m=l.type===B?l.breakContents:l.negate?l.contents:ie(l.contents);m&&i.push({ind:f,mode:d,doc:m});}if(p===K){let m=l.type===B?l.flatContents:l.negate?ie(l.contents):l.contents;m&&i.push({ind:f,mode:d,doc:m});}break}case L:D.push({ind:f,mode:d,doc:l.contents});break;case I:D.length>0&&i.push({ind:f,mode:d,doc:Ae});break;case x:switch(d){case K:if(l.hard)a=!0;else {l.soft||(s.push(" "),u+=1);break}case R:if(D.length>0){i.push({ind:f,mode:d,doc:l},...D.reverse()),D.length=0;break}l.literal?f.root?(s.push(o,f.root.value),u=f.root.length):(s.push(o),u=0):(u-=kt(s),s.push(o+f.value),u=f.length);break}break;case O:i.push({ind:f,mode:d,doc:l.contents});break;case b:break;default:throw new q(l)}i.length===0&&D.length>0&&(i.push(...D.reverse()),D.length=0);}let F=s.indexOf(Te);if(F!==-1){let f=s.indexOf(Te,F+1),d=s.slice(0,F).join(""),l=s.slice(F+1,f).join(""),p=s.slice(f+1).join("");return {formatted:d+l+p,cursorNodeStart:d.length,cursorNodeText:l}}return {formatted:s.join("")}}function J(t){var e;if(!t)return "";if(Array.isArray(t)){let r=[];for(let n of t)if(Array.isArray(n))r.push(...J(n));else {let o=J(n);o!==""&&r.push(o);}return r}return t.type===B?{...t,breakContents:J(t.breakContents),flatContents:J(t.flatContents)}:t.type===A?{...t,contents:J(t.contents),expandedStates:(e=t.expandedStates)==null?void 0:e.map(J)}:t.type===k?{type:"fill",parts:t.parts.map(J)}:t.contents?{...t,contents:J(t.contents)}:t}function Sr(t){let e=Object.create(null),r=new Set;return n(J(t));function n(u,i,s){var a,D;if(typeof u=="string")return JSON.stringify(u);if(Array.isArray(u)){let c=u.map(n).filter(Boolean);return c.length===1?c[0]:`[${c.join(", ")}]`}if(u.type===x){let c=((a=s==null?void 0:s[i+1])==null?void 0:a.type)===b;return u.literal?c?"literalline":"literallineWithoutBreakParent":u.hard?c?"hardline":"hardlineWithoutBreakParent":u.soft?"softline":"line"}if(u.type===b)return ((D=s==null?void 0:s[i-1])==null?void 0:D.type)===x&&s[i-1].hard?void 0:"breakParent";if(u.type===v)return "trim";if(u.type===T)return "indent("+n(u.contents)+")";if(u.type===S)return u.n===Number.NEGATIVE_INFINITY?"dedentToRoot("+n(u.contents)+")":u.n<0?"dedent("+n(u.contents)+")":u.n.type==="root"?"markAsRoot("+n(u.contents)+")":"align("+JSON.stringify(u.n)+", "+n(u.contents)+")";if(u.type===B)return "ifBreak("+n(u.breakContents)+(u.flatContents?", "+n(u.flatContents):"")+(u.groupId?(u.flatContents?"":', ""')+`, { groupId: ${o(u.groupId)} }`:"")+")";if(u.type===P){let c=[];u.negate&&c.push("negate: true"),u.groupId&&c.push(`groupId: ${o(u.groupId)}`);let F=c.length>0?`, { ${c.join(", ")} }`:"";return `indentIfBreak(${n(u.contents)}${F})`}if(u.type===A){let c=[];u.break&&u.break!=="propagated"&&c.push("shouldBreak: true"),u.id&&c.push(`id: ${o(u.id)}`);let F=c.length>0?`, { ${c.join(", ")} }`:"";return u.expandedStates?`conditionalGroup([${u.expandedStates.map(f=>n(f)).join(",")}]${F})`:`group(${n(u.contents)}${F})`}if(u.type===k)return `fill([${u.parts.map(c=>n(c)).join(", ")}])`;if(u.type===L)return "lineSuffix("+n(u.contents)+")";if(u.type===I)return "lineSuffixBoundary";if(u.type===O)return `label(${JSON.stringify(u.label)}, ${n(u.contents)})`;throw new Error("Unknown doc type "+u.type)}function o(u){if(typeof u!="symbol")return JSON.stringify(String(u));if(u in e)return e[u];let i=u.description||"symbol";for(let s=0;;s++){let a=i+(s>0?` #${s}`:"");if(!r.has(a))return r.add(a),e[u]=`Symbol.for(${JSON.stringify(a)})`}}}function Iu(t,e,r=0){let n=0;for(let o=r;o<t.length;++o)t[o]===" "?n=n+e-n%e:n++;return n}var pe=Iu;var Se=class extends Error{name="ConfigError"},ve=class extends Error{name="UndefinedParserError"};var vr={cursorOffset:{category:"Special",type:"int",default:-1,range:{start:-1,end:1/0,step:1},description:`Print (to stderr) where a cursor at the given position would move to after formatting. +This option cannot be used with --range-start and --range-end.`,cliCategory:"Editor"},endOfLine:{category:"Global",type:"choice",default:"lf",description:"Which end of line characters to apply.",choices:[{value:"lf",description:"Line Feed only (\\n), common on Linux and macOS as well as inside git repos"},{value:"crlf",description:"Carriage Return + Line Feed characters (\\r\\n), common on Windows"},{value:"cr",description:"Carriage Return character only (\\r), used very rarely"},{value:"auto",description:`Maintain existing +(mixed values within one file are normalised by looking at what's used after the first line)`}]},filepath:{category:"Special",type:"path",description:"Specify the input filepath. This will be used to do parser inference.",cliName:"stdin-filepath",cliCategory:"Other",cliDescription:"Path to the file to pretend that stdin comes from."},insertPragma:{category:"Special",type:"boolean",default:!1,description:"Insert @format pragma into file's first docblock comment.",cliCategory:"Other"},parser:{category:"Global",type:"choice",default:void 0,description:"Which parser to use.",exception:t=>typeof t=="string"||typeof t=="function",choices:[{value:"flow",description:"Flow"},{value:"babel",description:"JavaScript"},{value:"babel-flow",description:"Flow"},{value:"babel-ts",description:"TypeScript"},{value:"typescript",description:"TypeScript"},{value:"acorn",description:"JavaScript"},{value:"espree",description:"JavaScript"},{value:"meriyah",description:"JavaScript"},{value:"css",description:"CSS"},{value:"less",description:"Less"},{value:"scss",description:"SCSS"},{value:"json",description:"JSON"},{value:"json5",description:"JSON5"},{value:"json-stringify",description:"JSON.stringify"},{value:"graphql",description:"GraphQL"},{value:"markdown",description:"Markdown"},{value:"mdx",description:"MDX"},{value:"vue",description:"Vue"},{value:"yaml",description:"YAML"},{value:"glimmer",description:"Ember / Handlebars"},{value:"html",description:"HTML"},{value:"angular",description:"Angular"},{value:"lwc",description:"Lightning Web Components"}]},plugins:{type:"path",array:!0,default:[{value:[]}],category:"Global",description:"Add a plugin. Multiple plugins can be passed as separate `--plugin`s.",exception:t=>typeof t=="string"||typeof t=="object",cliName:"plugin",cliCategory:"Config"},printWidth:{category:"Global",type:"int",default:80,description:"The line length where Prettier will try wrap.",range:{start:0,end:1/0,step:1}},rangeEnd:{category:"Special",type:"int",default:1/0,range:{start:0,end:1/0,step:1},description:`Format code ending at a given character offset (exclusive). +The range will extend forwards to the end of the selected statement. +This option cannot be used with --cursor-offset.`,cliCategory:"Editor"},rangeStart:{category:"Special",type:"int",default:0,range:{start:0,end:1/0,step:1},description:`Format code starting at a given character offset. +The range will extend backwards to the start of the first line containing the selected statement. +This option cannot be used with --cursor-offset.`,cliCategory:"Editor"},requirePragma:{category:"Special",type:"boolean",default:!1,description:`Require either '@prettier' or '@format' to be present in the file's first docblock comment +in order for it to be formatted.`,cliCategory:"Other"},tabWidth:{type:"int",category:"Global",default:2,description:"Number of spaces per indentation level.",range:{start:0,end:1/0,step:1}},useTabs:{category:"Global",type:"boolean",default:!1,description:"Indent with tabs instead of spaces."},embeddedLanguageFormatting:{category:"Global",type:"choice",default:"auto",description:"Control how Prettier formats quoted code embedded in the file.",choices:[{value:"auto",description:"Format embedded code if Prettier can automatically identify it."},{value:"off",description:"Never automatically format embedded code."}]}};function et({plugins:t=[],showDeprecated:e=!1}={}){let r=t.flatMap(o=>o.languages??[]),n=[];for(let o of Yu(Object.assign({},...t.map(({options:u})=>u),vr)))!e&&o.deprecated||(Array.isArray(o.choices)&&(e||(o.choices=o.choices.filter(u=>!u.deprecated)),o.name==="parser"&&(o.choices=[...o.choices,...Ru(o.choices,r,t)])),o.pluginDefaults=Object.fromEntries(t.filter(u=>{var i;return ((i=u.defaultOptions)==null?void 0:i[o.name])!==void 0}).map(u=>[u.name,u.defaultOptions[o.name]])),n.push(o));return {languages:r,options:n}}function*Ru(t,e,r){let n=new Set(t.map(o=>o.value));for(let o of e)if(o.parsers){for(let u of o.parsers)if(!n.has(u)){n.add(u);let i=r.find(a=>a.parsers&&Object.prototype.hasOwnProperty.call(a.parsers,u)),s=o.name;i!=null&&i.name&&(s+=` (plugin: ${i.name})`),yield {value:u,description:s};}}}function Yu(t){let e=[];for(let[r,n]of Object.entries(t)){let o={name:r,...n};Array.isArray(o.default)&&(o.default=y(!1,o.default,-1).value),e.push(o);}return e}var ju=t=>t.split(/[/\\]/).pop();function Pr(t,e){if(!e)return;let r=ju(e).toLowerCase();return t.find(n=>{var o,u;return ((o=n.extensions)==null?void 0:o.some(i=>r.endsWith(i)))||((u=n.filenames)==null?void 0:u.some(i=>i.toLowerCase()===r))})}function Vu(t,e){if(e)return t.find(({name:r})=>r.toLowerCase()===e)??t.find(({aliases:r})=>r==null?void 0:r.includes(e))??t.find(({extensions:r})=>r==null?void 0:r.includes(`.${e}`))}function $u(t,e){let r=t.plugins.flatMap(o=>o.languages??[]),n=Vu(r,e.language)??Pr(r,e.physicalFile)??Pr(r,e.file)??(e.physicalFile,void 0);return n==null?void 0:n.parsers[0]}var Lr=$u;var te={key:t=>/^[$_a-zA-Z][$_a-zA-Z0-9]*$/.test(t)?t:JSON.stringify(t),value(t){if(t===null||typeof t!="object")return JSON.stringify(t);if(Array.isArray(t))return `[${t.map(r=>te.value(r)).join(", ")}]`;let e=Object.keys(t);return e.length===0?"{}":`{ ${e.map(r=>`${te.key(r)}: ${te.value(t[r])}`).join(", ")} }`},pair:({key:t,value:e})=>te.value({[t]:e})};var bt=Ce(Pe(),1),Yr=(t,e,{descriptor:r})=>{let n=[`${bt.default.yellow(typeof t=="string"?r.key(t):r.pair(t))} is deprecated`];return e&&n.push(`we now treat it as ${bt.default.blue(typeof e=="string"?r.key(e):r.pair(e))}`),n.join("; ")+"."};var se=Ce(Pe(),1);var tt=Symbol.for("vnopts.VALUE_NOT_EXIST"),de=Symbol.for("vnopts.VALUE_UNCHANGED");var jr=" ".repeat(2),$r=(t,e,r)=>{let{text:n,list:o}=r.normalizeExpectedResult(r.schemas[t].expected(r)),u=[];return n&&u.push(Vr(t,e,n,r.descriptor)),o&&u.push([Vr(t,e,o.title,r.descriptor)].concat(o.values.map(i=>Ur(i,r.loggerPrintWidth))).join(` +`)),Mr(u,r.loggerPrintWidth)};function Vr(t,e,r,n){return [`Invalid ${se.default.red(n.key(t))} value.`,`Expected ${se.default.blue(r)},`,`but received ${e===tt?se.default.gray("nothing"):se.default.red(n.value(e))}.`].join(" ")}function Ur({text:t,list:e},r){let n=[];return t&&n.push(`- ${se.default.blue(t)}`),e&&n.push([`- ${se.default.blue(e.title)}:`].concat(e.values.map(o=>Ur(o,r-jr.length).replace(/^|\n/g,`$&${jr}`))).join(` +`)),Mr(n,r)}function Mr(t,e){if(t.length===1)return t[0];let[r,n]=t,[o,u]=t.map(i=>i.split(` +`,1)[0].length);return o>e&&o>u?n:r}var Nt=Ce(Pe(),1);var wt=[],Wr=[];function Ot(t,e){if(t===e)return 0;let r=t;t.length>e.length&&(t=e,e=r);let n=t.length,o=e.length;for(;n>0&&t.charCodeAt(~-n)===e.charCodeAt(~-o);)n--,o--;let u=0;for(;u<n&&t.charCodeAt(u)===e.charCodeAt(u);)u++;if(n-=u,o-=u,n===0)return o;let i,s,a,D,c=0,F=0;for(;c<n;)Wr[c]=t.charCodeAt(u+c),wt[c]=++c;for(;F<o;)for(i=e.charCodeAt(u+F),a=F++,s=F,c=0;c<n;c++)D=i===Wr[c]?a:a+1,a=wt[c],s=wt[c]=a>s?D>s?s+1:D:D>a?a+1:D;return s}var rt=(t,e,{descriptor:r,logger:n,schemas:o})=>{let u=[`Ignored unknown option ${Nt.default.yellow(r.pair({key:t,value:e}))}.`],i=Object.keys(o).sort().find(s=>Ot(t,s)<3);i&&u.push(`Did you mean ${Nt.default.blue(r.key(i))}?`),n.warn(u.join(" "));};var Uu=["default","expected","validate","deprecated","forward","redirect","overlap","preprocess","postprocess"];function Mu(t,e){let r=new t(e),n=Object.create(r);for(let o of Uu)o in e&&(n[o]=Wu(e[o],r,w.prototype[o].length));return n}var w=class{static create(e){return Mu(this,e)}constructor(e){this.name=e.name;}default(e){}expected(e){return "nothing"}validate(e,r){return !1}deprecated(e,r){return !1}forward(e,r){}redirect(e,r){}overlap(e,r,n){return e}preprocess(e,r){return e}postprocess(e,r){return de}};function Wu(t,e,r){return typeof t=="function"?(...n)=>t(...n.slice(0,r-1),e,...n.slice(r-1)):()=>t}var nt=class extends w{constructor(e){super(e),this._sourceName=e.sourceName;}expected(e){return e.schemas[this._sourceName].expected(e)}validate(e,r){return r.schemas[this._sourceName].validate(e,r)}redirect(e,r){return this._sourceName}};var ut=class extends w{expected(){return "anything"}validate(){return !0}};var ot=class extends w{constructor({valueSchema:e,name:r=e.name,...n}){super({...n,name:r}),this._valueSchema=e;}expected(e){let{text:r,list:n}=e.normalizeExpectedResult(this._valueSchema.expected(e));return {text:r&&`an array of ${r}`,list:n&&{title:"an array of the following values",values:[{list:n}]}}}validate(e,r){if(!Array.isArray(e))return !1;let n=[];for(let o of e){let u=r.normalizeValidateResult(this._valueSchema.validate(o,r),o);u!==!0&&n.push(u.value);}return n.length===0?!0:{value:n}}deprecated(e,r){let n=[];for(let o of e){let u=r.normalizeDeprecatedResult(this._valueSchema.deprecated(o,r),o);u!==!1&&n.push(...u.map(({value:i})=>({value:[i]})));}return n}forward(e,r){let n=[];for(let o of e){let u=r.normalizeForwardResult(this._valueSchema.forward(o,r),o);n.push(...u.map(zr));}return n}redirect(e,r){let n=[],o=[];for(let u of e){let i=r.normalizeRedirectResult(this._valueSchema.redirect(u,r),u);"remain"in i&&n.push(i.remain),o.push(...i.redirect.map(zr));}return n.length===0?{redirect:o}:{redirect:o,remain:n}}overlap(e,r){return e.concat(r)}};function zr({from:t,to:e}){return {from:[t],to:e}}var it=class extends w{expected(){return "true or false"}validate(e){return typeof e=="boolean"}};function Kr(t,e){let r=Object.create(null);for(let n of t){let o=n[e];if(r[o])throw new Error(`Duplicate ${e} ${JSON.stringify(o)}`);r[o]=n;}return r}function Hr(t,e){let r=new Map;for(let n of t){let o=n[e];if(r.has(o))throw new Error(`Duplicate ${e} ${JSON.stringify(o)}`);r.set(o,n);}return r}function qr(){let t=Object.create(null);return e=>{let r=JSON.stringify(e);return t[r]?!0:(t[r]=!0,!1)}}function Jr(t,e){let r=[],n=[];for(let o of t)e(o)?r.push(o):n.push(o);return [r,n]}function Xr(t){return t===Math.floor(t)}function Zr(t,e){if(t===e)return 0;let r=typeof t,n=typeof e,o=["undefined","object","boolean","number","string"];return r!==n?o.indexOf(r)-o.indexOf(n):r!=="string"?Number(t)-Number(e):t.localeCompare(e)}function Qr(t){return (...e)=>{let r=t(...e);return typeof r=="string"?new Error(r):r}}function Tt(t){return t===void 0?{}:t}function St(t){if(typeof t=="string")return {text:t};let{text:e,list:r}=t;return zu((e||r)!==void 0,"Unexpected `expected` result, there should be at least one field."),r?{text:e,list:{title:r.title,values:r.values.map(St)}}:{text:e}}function vt(t,e){return t===!0?!0:t===!1?{value:e}:t}function Pt(t,e,r=!1){return t===!1?!1:t===!0?r?!0:[{value:e}]:"value"in t?[t]:t.length===0?!1:t}function Gr(t,e){return typeof t=="string"||"key"in t?{from:e,to:t}:"from"in t?{from:t.from,to:t.to}:{from:e,to:t.to}}function st(t,e){return t===void 0?[]:Array.isArray(t)?t.map(r=>Gr(r,e)):[Gr(t,e)]}function Lt(t,e){let r=st(typeof t=="object"&&"redirect"in t?t.redirect:t,e);return r.length===0?{remain:e,redirect:r}:typeof t=="object"&&"remain"in t?{remain:t.remain,redirect:r}:{redirect:r}}function zu(t,e){if(!t)throw new Error(e)}var at=class extends w{constructor(e){super(e),this._choices=Hr(e.choices.map(r=>r&&typeof r=="object"?r:{value:r}),"value");}expected({descriptor:e}){let r=Array.from(this._choices.keys()).map(i=>this._choices.get(i)).filter(({hidden:i})=>!i).map(i=>i.value).sort(Zr).map(e.value),n=r.slice(0,-2),o=r.slice(-2);return {text:n.concat(o.join(" or ")).join(", "),list:{title:"one of the following values",values:r}}}validate(e){return this._choices.has(e)}deprecated(e){let r=this._choices.get(e);return r&&r.deprecated?{value:e}:!1}forward(e){let r=this._choices.get(e);return r?r.forward:void 0}redirect(e){let r=this._choices.get(e);return r?r.redirect:void 0}};var Dt=class extends w{expected(){return "a number"}validate(e,r){return typeof e=="number"}};var ct=class extends Dt{expected(){return "an integer"}validate(e,r){return r.normalizeValidateResult(super.validate(e,r),e)===!0&&Xr(e)}};var Le=class extends w{expected(){return "a string"}validate(e){return typeof e=="string"}};var en=te,tn=rt,rn=$r,nn=Yr;var lt=class{constructor(e,r){let{logger:n=console,loggerPrintWidth:o=80,descriptor:u=en,unknown:i=tn,invalid:s=rn,deprecated:a=nn,missing:D=()=>!1,required:c=()=>!1,preprocess:F=d=>d,postprocess:f=()=>de}=r||{};this._utils={descriptor:u,logger:n||{warn:()=>{}},loggerPrintWidth:o,schemas:Kr(e,"name"),normalizeDefaultResult:Tt,normalizeExpectedResult:St,normalizeDeprecatedResult:Pt,normalizeForwardResult:st,normalizeRedirectResult:Lt,normalizeValidateResult:vt},this._unknownHandler=i,this._invalidHandler=Qr(s),this._deprecatedHandler=a,this._identifyMissing=(d,l)=>!(d in l)||D(d,l),this._identifyRequired=c,this._preprocess=F,this._postprocess=f,this.cleanHistory();}cleanHistory(){this._hasDeprecationWarned=qr();}normalize(e){let r={},o=[this._preprocess(e,this._utils)],u=()=>{for(;o.length!==0;){let i=o.shift(),s=this._applyNormalization(i,r);o.push(...s);}};u();for(let i of Object.keys(this._utils.schemas)){let s=this._utils.schemas[i];if(!(i in r)){let a=Tt(s.default(this._utils));"value"in a&&o.push({[i]:a.value});}}u();for(let i of Object.keys(this._utils.schemas)){if(!(i in r))continue;let s=this._utils.schemas[i],a=r[i],D=s.postprocess(a,this._utils);D!==de&&(this._applyValidation(D,i,s),r[i]=D);}return this._applyPostprocess(r),this._applyRequiredCheck(r),r}_applyNormalization(e,r){let n=[],{knownKeys:o,unknownKeys:u}=this._partitionOptionKeys(e);for(let i of o){let s=this._utils.schemas[i],a=s.preprocess(e[i],this._utils);this._applyValidation(a,i,s);let D=({from:d,to:l})=>{n.push(typeof l=="string"?{[l]:d}:{[l.key]:l.value});},c=({value:d,redirectTo:l})=>{let p=Pt(s.deprecated(d,this._utils),a,!0);if(p!==!1)if(p===!0)this._hasDeprecationWarned(i)||this._utils.logger.warn(this._deprecatedHandler(i,l,this._utils));else for(let{value:m}of p){let E={key:i,value:m};if(!this._hasDeprecationWarned(E)){let h=typeof l=="string"?{key:l,value:m}:l;this._utils.logger.warn(this._deprecatedHandler(E,h,this._utils));}}};st(s.forward(a,this._utils),a).forEach(D);let f=Lt(s.redirect(a,this._utils),a);if(f.redirect.forEach(D),"remain"in f){let d=f.remain;r[i]=i in r?s.overlap(r[i],d,this._utils):d,c({value:d});}for(let{from:d,to:l}of f.redirect)c({value:d,redirectTo:l});}for(let i of u){let s=e[i];this._applyUnknownHandler(i,s,r,(a,D)=>{n.push({[a]:D});});}return n}_applyRequiredCheck(e){for(let r of Object.keys(this._utils.schemas))if(this._identifyMissing(r,e)&&this._identifyRequired(r))throw this._invalidHandler(r,tt,this._utils)}_partitionOptionKeys(e){let[r,n]=Jr(Object.keys(e).filter(o=>!this._identifyMissing(o,e)),o=>o in this._utils.schemas);return {knownKeys:r,unknownKeys:n}}_applyValidation(e,r,n){let o=vt(n.validate(e,this._utils),e);if(o!==!0)throw this._invalidHandler(r,o.value,this._utils)}_applyUnknownHandler(e,r,n,o){let u=this._unknownHandler(e,r,this._utils);if(u)for(let i of Object.keys(u)){if(this._identifyMissing(i,u))continue;let s=u[i];i in this._utils.schemas?o(i,s):n[i]=s;}}_applyPostprocess(e){let r=this._postprocess(e,this._utils);if(r!==de){if(r.delete)for(let n of r.delete)delete e[n];if(r.override){let{knownKeys:n,unknownKeys:o}=this._partitionOptionKeys(r.override);for(let u of n){let i=r.override[u];this._applyValidation(i,u,this._utils.schemas[u]),e[u]=i;}for(let u of o){let i=r.override[u];this._applyUnknownHandler(u,i,e,(s,a)=>{let D=this._utils.schemas[s];this._applyValidation(a,s,D),e[s]=a;});}}}}};var It;function Ku(t,e,{logger:r=!1,isCLI:n=!1,passThrough:o=!1,FlagSchema:u,descriptor:i}={}){if(n){if(!u)throw new Error("'FlagSchema' option is required.");if(!i)throw new Error("'descriptor' option is required.")}else i=te;let s=o?Array.isArray(o)?(f,d)=>o.includes(f)?{[f]:d}:void 0:(f,d)=>({[f]:d}):(f,d,l)=>{let{_:p,...m}=l.schemas;return rt(f,d,{...l,schemas:m})},a=Hu(e,{isCLI:n,FlagSchema:u}),D=new lt(a,{logger:r,unknown:s,descriptor:i}),c=r!==!1;c&&It&&(D._hasDeprecationWarned=It);let F=D.normalize(t);return c&&(It=D._hasDeprecationWarned),F}function Hu(t,{isCLI:e,FlagSchema:r}){let n=[];e&&n.push(ut.create({name:"_"}));for(let o of t)n.push(qu(o,{isCLI:e,optionInfos:t,FlagSchema:r})),o.alias&&e&&n.push(nt.create({name:o.alias,sourceName:o.name}));return n}function qu(t,{isCLI:e,optionInfos:r,FlagSchema:n}){let{name:o}=t,u={name:o},i,s={};switch(t.type){case"int":i=ct,e&&(u.preprocess=Number);break;case"string":i=Le;break;case"choice":i=at,u.choices=t.choices.map(a=>a!=null&&a.redirect?{...a,redirect:{to:{key:t.name,value:a.redirect}}}:a);break;case"boolean":i=it;break;case"flag":i=n,u.flags=r.flatMap(a=>[a.alias,a.description&&a.name,a.oppositeDescription&&`no-${a.name}`].filter(Boolean));break;case"path":i=Le;break;default:throw new Error(`Unexpected type ${t.type}`)}if(t.exception?u.validate=(a,D,c)=>t.exception(a)||D.validate(a,c):u.validate=(a,D,c)=>a===void 0||D.validate(a,c),t.redirect&&(s.redirect=a=>a?{to:{key:t.redirect.option,value:t.redirect.value}}:void 0),t.deprecated&&(s.deprecated=!0),e&&!t.array){let a=u.preprocess||(D=>D);u.preprocess=(D,c,F)=>c.preprocess(a(Array.isArray(D)?y(!1,D,-1):D),F);}return t.array?ot.create({...e?{preprocess:a=>Array.isArray(a)?a:[a]}:{},...s,valueSchema:i.create(u)}):i.create({...u,...s})}var un=Ku;function Rt(t,e){if(!e)throw new Error("parserName is required.");for(let n=t.length-1;n>=0;n--){let o=t[n];if(o.parsers&&Object.prototype.hasOwnProperty.call(o.parsers,e))return o}let r=`Couldn't resolve parser "${e}".`;throw r+=" Plugins must be explicitly added to the standalone bundle.",new Se(r)}function on(t,e){if(!e)throw new Error("astFormat is required.");for(let n=t.length-1;n>=0;n--){let o=t[n];if(o.printers&&Object.prototype.hasOwnProperty.call(o.printers,e))return o}let r=`Couldn't find plugin for AST format "${e}".`;throw r+=" Plugins must be explicitly added to the standalone bundle.",new Se(r)}function ft({plugins:t,parser:e}){let r=Rt(t,e);return Yt(r,e)}function Yt(t,e){let r=t.parsers[e];return typeof r=="function"?r():r}function sn(t,e){let r=t.printers[e];return typeof r=="function"?r():r}var an={astFormat:"estree",printer:{},originalText:void 0,locStart:null,locEnd:null};async function Ju(t,e={}){var F;let r={...t};if(!r.parser)if(r.filepath){if(r.parser=Lr(r,{physicalFile:r.filepath}),!r.parser)throw new ve(`No parser could be inferred for file "${r.filepath}".`)}else throw new ve("No parser and no file path given, couldn't infer a parser.");let n=et({plugins:t.plugins,showDeprecated:!0}).options,o={...an,...Object.fromEntries(n.filter(f=>f.default!==void 0).map(f=>[f.name,f.default]))},u=Rt(r.plugins,r.parser),i=await Yt(u,r.parser);r.astFormat=i.astFormat,r.locEnd=i.locEnd,r.locStart=i.locStart;let s=(F=u.printers)!=null&&F[i.astFormat]?u:on(r.plugins,i.astFormat),a=await sn(s,i.astFormat);r.printer=a;let D=s.defaultOptions?Object.fromEntries(Object.entries(s.defaultOptions).filter(([,f])=>f!==void 0)):{},c={...o,...D};for(let[f,d]of Object.entries(c))(r[f]===null||r[f]===void 0)&&(r[f]=d);return r.parser==="json"&&(r.trailingComma="none"),un(r,n,{passThrough:Object.keys(an),...e})}var re=Ju;var Dn=new Set(["tokens","comments","parent","enclosingNode","precedingNode","followingNode"]),Xu=t=>Object.keys(t).filter(e=>!Dn.has(e));function Zu(t){return t?e=>t(e,Dn):Xu}var H=Zu;function Qu(t,e){let{printer:{massageAstNode:r,getVisitorKeys:n}}=e;if(!r)return t;let o=H(n),u=r.ignoredProperties??new Set;return i(t);function i(s,a){if(!(s!==null&&typeof s=="object"))return s;if(Array.isArray(s))return s.map(f=>i(f,a)).filter(Boolean);let D={},c=new Set(o(s));for(let f in s)!Object.prototype.hasOwnProperty.call(s,f)||u.has(f)||(c.has(f)?D[f]=i(s[f],s):D[f]=s[f]);let F=r(s,D,a);if(F!==null)return F??D}}var cn=Qu;var Cn=Ce(hn(),1);async function so(t,e){let r=await ft(e),n=r.preprocess?r.preprocess(t,e):t;e.originalText=n;let o;try{o=await r.parse(n,e,e);}catch(u){ao(u,t);}return {text:n,ast:o}}function ao(t,e){let{loc:r}=t;if(r){let n=(0, Cn.codeFrameColumns)(e,r,{highlightCode:!0});throw t.message+=` +`+n,t.codeFrame=n,t}throw t}var ae=so;var Ie,$t,Fe,dt,Vt=class{constructor(e){Ct(this,Ie);Ct(this,Fe);this.stack=[e];}get key(){let{stack:e,siblings:r}=this;return y(!1,e,r===null?-2:-4)??null}get index(){return this.siblings===null?null:y(!1,this.stack,-2)}get node(){return y(!1,this.stack,-1)}get parent(){return this.getNode(1)}get grandparent(){return this.getNode(2)}get isInArray(){return this.siblings!==null}get siblings(){let{stack:e}=this,r=y(!1,e,-3);return Array.isArray(r)?r:null}get next(){let{siblings:e}=this;return e===null?null:e[this.index+1]}get previous(){let{siblings:e}=this;return e===null?null:e[this.index-1]}get isFirst(){return this.index===0}get isLast(){let{siblings:e,index:r}=this;return e!==null&&r===e.length-1}get isRoot(){return this.stack.length===1}get root(){return this.stack[0]}get ancestors(){return [...ce(this,Fe,dt).call(this)]}getName(){let{stack:e}=this,{length:r}=e;return r>1?y(!1,e,-2):null}getValue(){return y(!1,this.stack,-1)}getNode(e=0){let r=ce(this,Ie,$t).call(this,e);return r===-1?null:this.stack[r]}getParentNode(e=0){return this.getNode(e+1)}call(e,...r){let{stack:n}=this,{length:o}=n,u=y(!1,n,-1);for(let i of r)u=u[i],n.push(i,u);try{return e(this)}finally{n.length=o;}}callParent(e,r=0){let n=ce(this,Ie,$t).call(this,r+1),o=this.stack.splice(n+1);try{return e(this)}finally{this.stack.push(...o);}}each(e,...r){let{stack:n}=this,{length:o}=n,u=y(!1,n,-1);for(let i of r)u=u[i],n.push(i,u);try{for(let i=0;i<u.length;++i)n.push(i,u[i]),e(this,i,u),n.length-=2;}finally{n.length=o;}}map(e,...r){let n=[];return this.each((o,u,i)=>{n[u]=e(o,u,i);},...r),n}match(...e){let r=this.stack.length-1,n=null,o=this.stack[r--];for(let u of e){if(o===void 0)return !1;let i=null;if(typeof n=="number"&&(i=n,n=this.stack[r--],o=this.stack[r--]),u&&!u(o,n,i))return !1;n=this.stack[r--],o=this.stack[r--];}return !0}findAncestor(e){for(let r of ce(this,Fe,dt).call(this))if(e(r))return r}hasAncestor(e){for(let r of ce(this,Fe,dt).call(this))if(e(r))return !0;return !1}};Ie=new WeakSet,$t=function(e){let{stack:r}=this;for(let n=r.length-1;n>=0;n-=2)if(!Array.isArray(r[n])&&--e<0)return n;return -1},Fe=new WeakSet,dt=function*(){let{stack:e}=this;for(let r=e.length-3;r>=0;r-=2){let n=e[r];Array.isArray(n)||(yield n);}};var gn=Vt;var yn=new Proxy(()=>{},{get:()=>yn}),Re=yn;function me(t){return (e,r,n)=>{let o=!!(n!=null&&n.backwards);if(r===!1)return !1;let{length:u}=e,i=r;for(;i>=0&&i<u;){let s=e.charAt(i);if(t instanceof RegExp){if(!t.test(s))return i}else if(!t.includes(s))return i;o?i--:i++;}return i===-1||i===u?i:!1}}var xn=me(/\s/),N=me(" "),Ft=me(",; "),mt=me(/[^\n\r]/);function Do(t,e,r){let n=!!(r!=null&&r.backwards);if(e===!1)return !1;let o=t.charAt(e);if(n){if(t.charAt(e-1)==="\r"&&o===` +`)return e-2;if(o===` +`||o==="\r"||o==="\u2028"||o==="\u2029")return e-1}else {if(o==="\r"&&t.charAt(e+1)===` +`)return e+2;if(o===` +`||o==="\r"||o==="\u2028"||o==="\u2029")return e+1}return e}var Y=Do;function co(t,e,r={}){let n=N(t,r.backwards?e-1:e,r),o=Y(t,n,r);return n!==o}var V=co;function lo(t){return Array.isArray(t)&&t.length>0}var Ut=lo;function fo(t){return t!==null&&typeof t=="object"}var _n=fo;function*Mt(t,e){let{getVisitorKeys:r,filter:n=()=>!0}=e,o=u=>_n(u)&&n(u);for(let u of r(t)){let i=t[u];if(Array.isArray(i))for(let s of i)o(s)&&(yield s);else o(i)&&(yield i);}}function*An(t,e){let r=[t];for(let n=0;n<r.length;n++){let o=r[n];for(let u of Mt(o,e))yield u,r.push(u);}}function po(t){let e=t.type||t.kind||"(unknown type)",r=String(t.name||t.id&&(typeof t.id=="object"?t.id.name:t.id)||t.key&&(typeof t.key=="object"?t.key.name:t.key)||t.value&&(typeof t.value=="object"?"":String(t.value))||t.operator||"");return r.length>20&&(r=r.slice(0,19)+"\u2026"),e+(r?" "+r:"")}function Wt(t,e){(t.comments??(t.comments=[])).push(e),e.printed=!1,e.nodeDescription=po(t);}function ne(t,e){e.leading=!0,e.trailing=!1,Wt(t,e);}function X(t,e,r){e.leading=!1,e.trailing=!1,r&&(e.marker=r),Wt(t,e);}function ue(t,e){e.leading=!1,e.trailing=!0,Wt(t,e);}var zt=new WeakMap;function Et(t,e){if(zt.has(t))return zt.get(t);let{printer:{getCommentChildNodes:r,canAttachComment:n,getVisitorKeys:o},locStart:u,locEnd:i}=e;if(!n)return [];let s=((r==null?void 0:r(t,e))??[...Mt(t,{getVisitorKeys:H(o)})]).flatMap(a=>n(a)?[a]:Et(a,e));return s.sort((a,D)=>u(a)-u(D)||i(a)-i(D)),zt.set(t,s),s}function kn(t,e,r,n){let{locStart:o,locEnd:u}=r,i=o(e),s=u(e),a=Et(t,r),D,c,F=0,f=a.length;for(;F<f;){let d=F+f>>1,l=a[d],p=o(l),m=u(l);if(p<=i&&s<=m)return kn(l,e,r,l);if(m<=i){D=l,F=d+1;continue}if(s<=p){c=l,f=d;continue}throw new Error("Comment location overlaps with node location")}if((n==null?void 0:n.type)==="TemplateLiteral"){let{quasis:d}=n,l=Kt(d,e,r);D&&Kt(d,D,r)!==l&&(D=null),c&&Kt(d,c,r)!==l&&(c=null);}return {enclosingNode:n,precedingNode:D,followingNode:c}}var Gt=()=>!1;function bn(t,e){let{comments:r}=t;if(delete t.comments,!Ut(r)||!e.printer.canAttachComment)return;let n=[],{locStart:o,locEnd:u,printer:{experimentalFeatures:{avoidAstMutation:i=!1}={},handleComments:s={}},originalText:a}=e,{ownLine:D=Gt,endOfLine:c=Gt,remaining:F=Gt}=s,f=r.map((d,l)=>({...kn(t,d,e),comment:d,text:a,options:e,ast:t,isLastComment:r.length-1===l}));for(let[d,l]of f.entries()){let{comment:p,precedingNode:m,enclosingNode:E,followingNode:h,text:g,options:C,ast:_,isLastComment:Z}=l;if(C.parser==="json"||C.parser==="json5"||C.parser==="__js_expression"||C.parser==="__ts_expression"||C.parser==="__vue_expression"||C.parser==="__vue_ts_expression"){if(o(p)-o(_)<=0){ne(_,p);continue}if(u(p)-u(_)>=0){ue(_,p);continue}}let $;if(i?$=[l]:(p.enclosingNode=E,p.precedingNode=m,p.followingNode=h,$=[p,g,C,_,Z]),Fo(g,C,f,d))p.placement="ownLine",D(...$)||(h?ne(h,p):m?ue(m,p):E?X(E,p):X(_,p));else if(mo(g,C,f,d))p.placement="endOfLine",c(...$)||(m?ue(m,p):h?ne(h,p):E?X(E,p):X(_,p));else if(p.placement="remaining",!F(...$))if(m&&h){let Q=n.length;Q>0&&n[Q-1].followingNode!==h&&Bn(n,C),n.push(l);}else m?ue(m,p):h?ne(h,p):E?X(E,p):X(_,p);}if(Bn(n,e),!i)for(let d of r)delete d.precedingNode,delete d.enclosingNode,delete d.followingNode;}var wn=t=>!/[\S\n\u2028\u2029]/.test(t);function Fo(t,e,r,n){let{comment:o,precedingNode:u}=r[n],{locStart:i,locEnd:s}=e,a=i(o);if(u)for(let D=n-1;D>=0;D--){let{comment:c,precedingNode:F}=r[D];if(F!==u||!wn(t.slice(s(c),a)))break;a=i(c);}return V(t,a,{backwards:!0})}function mo(t,e,r,n){let{comment:o,followingNode:u}=r[n],{locStart:i,locEnd:s}=e,a=s(o);if(u)for(let D=n+1;D<r.length;D++){let{comment:c,followingNode:F}=r[D];if(F!==u||!wn(t.slice(a,i(c))))break;a=s(c);}return V(t,a)}function Bn(t,e){var s,a;let r=t.length;if(r===0)return;let{precedingNode:n,followingNode:o}=t[0],u=e.locStart(o),i;for(i=r;i>0;--i){let{comment:D,precedingNode:c,followingNode:F}=t[i-1];Re.strictEqual(c,n),Re.strictEqual(F,o);let f=e.originalText.slice(e.locEnd(D),u);if(((a=(s=e.printer).isGap)==null?void 0:a.call(s,f,e))??/^[\s(]*$/.test(f))u=e.locStart(D);else break}for(let[D,{comment:c}]of t.entries())D<i?ue(n,c):ne(o,c);for(let D of [n,o])D.comments&&D.comments.length>1&&D.comments.sort((c,F)=>e.locStart(c)-e.locStart(F));t.length=0;}function Kt(t,e,r){let n=r.locStart(e)-1;for(let o=1;o<t.length;++o)if(n<r.locStart(t[o]))return o-1;return 0}function Eo(t,e){let r=e-1;r=N(t,r,{backwards:!0}),r=Y(t,r,{backwards:!0}),r=N(t,r,{backwards:!0});let n=Y(t,r,{backwards:!0});return r!==n}var Ye=Eo;function On(t,e){let r=t.node;return r.printed=!0,e.printer.printComment(t,e)}function ho(t,e){var c;let r=t.node,n=[On(t,e)],{printer:o,originalText:u,locStart:i,locEnd:s}=e;if((c=o.isBlockComment)==null?void 0:c.call(o,r)){let F=V(u,s(r))?V(u,i(r),{backwards:!0})?G:Ke:" ";n.push(F);}else n.push(G);let D=Y(u,N(u,s(r)));return D!==!1&&V(u,D)&&n.push(G),n}function Co(t,e,r){var D;let n=t.node,o=On(t,e),{printer:u,originalText:i,locStart:s}=e,a=(D=u.isBlockComment)==null?void 0:D.call(u,n);if(r!=null&&r.hasLineSuffix&&!(r!=null&&r.isBlock)||V(i,s(n),{backwards:!0})){let c=Ye(i,s(n));return {doc:_e([G,c?G:"",o]),isBlock:a,hasLineSuffix:!0}}return !a||r!=null&&r.hasLineSuffix?{doc:[_e([" ",o]),le],isBlock:a,hasLineSuffix:!0}:{doc:[" ",o],isBlock:a,hasLineSuffix:!1}}function go(t,e){let r=t.node;if(!r)return {};let n=e[Symbol.for("printedComments")];if((r.comments||[]).filter(a=>!n.has(a)).length===0)return {leading:"",trailing:""};let u=[],i=[],s;return t.each(()=>{let a=t.node;if(n!=null&&n.has(a))return;let{leading:D,trailing:c}=a;D?u.push(ho(t,e)):c&&(s=Co(t,e,s),i.push(s.doc));},"comments"),{leading:u,trailing:i}}function Nn(t,e,r){let{leading:n,trailing:o}=go(t,r);return !n&&!o?e:Ze(e,u=>[n,u,o])}function Tn(t){let{[Symbol.for("comments")]:e,[Symbol.for("printedComments")]:r}=t;for(let n of e){if(!n.printed&&!r.has(n))throw new Error('Comment "'+n.value.trim()+'" was not printed. Please report this error!');delete n.printed;}}async function Sn(t,e,r,n,o){let{embeddedLanguageFormatting:u,printer:{embed:i,hasPrettierIgnore:s=()=>!1,getVisitorKeys:a}}=r;if(!i||u!=="auto")return;if(i.length>2)throw new Error("printer.embed has too many parameters. The API changed in Prettier v3. Please update your plugin. See https://prettier.io/docs/en/plugins.html#optional-embed");let D=H(i.getVisitorKeys??a),c=[];d();let F=t.stack;for(let{print:l,node:p,pathStack:m}of c)try{t.stack=m;let E=await l(f,e,t,r);E&&o.set(p,E);}catch(E){if(globalThis.PRETTIER_DEBUG)throw E}t.stack=F;function f(l,p){return yo(l,p,r,n)}function d(){let{node:l}=t;if(l===null||typeof l!="object"||s(t))return;for(let m of D(l))Array.isArray(l[m])?t.each(d,m):t.call(d,m);let p=i(t,r);if(p){if(typeof p=="function"){c.push({print:p,node:l,pathStack:[...t.stack]});return}o.set(l,p);}}}async function yo(t,e,r,n){let o=await re({...r,...e,parentParser:r.parser,originalText:t},{passThrough:!0}),{ast:u}=await ae(t,o),i=await n(u,o);return Xe(i)}function _o(t,e){let{originalText:r,[Symbol.for("comments")]:n,locStart:o,locEnd:u,[Symbol.for("printedComments")]:i}=e,{node:s}=t,a=o(s),D=u(s);for(let c of n)o(c)>=a&&u(c)<=D&&i.add(c);return r.slice(a,D)}var Pn=_o;async function je(t,e){({ast:t}=await Ht(t,e));let r=new Map,n=new gn(t),u=new Map;await Sn(n,s,e,je,u);let i=await Ln(n,e,s,void 0,u);return Tn(e),i;function s(D,c){return D===void 0||D===n?a(c):Array.isArray(D)?n.call(()=>a(c),...D):n.call(()=>a(c),D)}function a(D){let c=n.node;if(c==null)return "";let F=c&&typeof c=="object"&&D===void 0;if(F&&r.has(c))return r.get(c);let f=Ln(n,e,s,D,u);return F&&r.set(c,f),f}}function Ln(t,e,r,n,o){var a;let{node:u}=t,{printer:i}=e,s;return (a=i.hasPrettierIgnore)!=null&&a.call(i,t)?s=Pn(t,e):o.has(u)?s=o.get(u):s=i.print(t,e,r,n),u===e.cursorNode&&(s=Ze(s,D=>[Be,D,Be])),i.printComment&&(!i.willPrintOwnComments||!i.willPrintOwnComments(t,e))&&(s=Nn(t,s,e)),s}async function Ht(t,e){let r=t.comments??[];e[Symbol.for("comments")]=r,e[Symbol.for("tokens")]=t.tokens??[],e[Symbol.for("printedComments")]=new Set,bn(t,e);let{printer:{preprocess:n}}=e;return t=n?await n(t,e):t,{ast:t,comments:r}}var Ao=({parser:t})=>t==="json"||t==="json5"||t==="json-stringify";function Bo(t,e){let r=[t.node,...t.parentNodes],n=new Set([e.node,...e.parentNodes]);return r.find(o=>Yn.has(o.type)&&n.has(o))}function In(t){let e=t.length-1;for(;;){let r=t[e];if((r==null?void 0:r.type)==="Program"||(r==null?void 0:r.type)==="File")e--;else break}return t.slice(0,e+1)}function ko(t,e,{locStart:r,locEnd:n}){let o=t.node,u=e.node;if(o===u)return {startNode:o,endNode:u};let i=r(t.node);for(let a of In(e.parentNodes))if(r(a)>=i)u=a;else break;let s=n(e.node);for(let a of In(t.parentNodes)){if(n(a)<=s)o=a;else break;if(o===u)break}return {startNode:o,endNode:u}}function qt(t,e,r,n,o=[],u){let{locStart:i,locEnd:s}=r,a=i(t),D=s(t);if(!(e>D||e<a||u==="rangeEnd"&&e===a||u==="rangeStart"&&e===D)){for(let c of Et(t,r)){let F=qt(c,e,r,n,[t,...o],u);if(F)return F}if(!n||n(t,o[0]))return {node:t,parentNodes:o}}}function bo(t,e){return e!=="DeclareExportDeclaration"&&t!=="TypeParameterDeclaration"&&(t==="Directive"||t==="TypeAlias"||t==="TSExportAssignment"||t.startsWith("Declare")||t.startsWith("TSDeclare")||t.endsWith("Statement")||t.endsWith("Declaration"))}var Yn=new Set(["JsonRoot","ObjectExpression","ArrayExpression","StringLiteral","NumericLiteral","BooleanLiteral","NullLiteral","UnaryExpression","TemplateLiteral"]),wo=new Set(["OperationDefinition","FragmentDefinition","VariableDefinition","TypeExtensionDefinition","ObjectTypeDefinition","FieldDefinition","DirectiveDefinition","EnumTypeDefinition","EnumValueDefinition","InputValueDefinition","InputObjectTypeDefinition","SchemaDefinition","OperationTypeDefinition","InterfaceTypeDefinition","UnionTypeDefinition","ScalarTypeDefinition"]);function Rn(t,e,r){if(!e)return !1;switch(t.parser){case"flow":case"babel":case"babel-flow":case"babel-ts":case"typescript":case"acorn":case"espree":case"meriyah":case"__babel_estree":return bo(e.type,r==null?void 0:r.type);case"json":case"json5":case"json-stringify":return Yn.has(e.type);case"graphql":return wo.has(e.kind);case"vue":return e.tag!=="root"}return !1}function jn(t,e,r){let{rangeStart:n,rangeEnd:o,locStart:u,locEnd:i}=e;Re.ok(o>n);let s=t.slice(n,o).search(/\S/),a=s===-1;if(!a)for(n+=s;o>n&&!/\S/.test(t[o-1]);--o);let D=qt(r,n,e,(d,l)=>Rn(e,d,l),[],"rangeStart"),c=a?D:qt(r,o,e,d=>Rn(e,d),[],"rangeEnd");if(!D||!c)return {rangeStart:0,rangeEnd:0};let F,f;if(Ao(e)){let d=Bo(D,c);F=d,f=d;}else ({startNode:F,endNode:f}=ko(D,c,e));return {rangeStart:Math.min(u(F),u(f)),rangeEnd:Math.max(i(F),i(f))}}function Oo(t,e){let{cursorOffset:r,locStart:n,locEnd:o}=e,u=H(e.printer.getVisitorKeys),i=a=>n(a)<=r&&o(a)>=r,s=t;for(let a of An(t,{getVisitorKeys:u,filter:i}))s=a;return s}var Vn=Oo;var zn="\uFEFF",$n=Symbol("cursor");async function Gn(t,e,r=0){if(!t||t.trim().length===0)return {formatted:"",cursorOffset:-1,comments:[]};let{ast:n,text:o}=await ae(t,e);e.cursorOffset>=0&&(e.cursorNode=Vn(n,e));let u=await je(n,e);r>0&&(u=qe([G,u],r,e.tabWidth));let i=fe(u,e);if(r>0){let a=i.formatted.trim();i.cursorNodeStart!==void 0&&(i.cursorNodeStart-=i.formatted.indexOf(a)),i.formatted=a+be(e.endOfLine);}let s=e[Symbol.for("comments")];if(e.cursorOffset>=0){let a,D,c,F,f;if(e.cursorNode&&i.cursorNodeText?(a=e.locStart(e.cursorNode),D=o.slice(a,e.locEnd(e.cursorNode)),c=e.cursorOffset-a,F=i.cursorNodeStart,f=i.cursorNodeText):(a=0,D=o,c=e.cursorOffset,F=0,f=i.formatted),D===f)return {formatted:i.formatted,cursorOffset:F+c,comments:s};let d=D.split("");d.splice(c,0,$n);let l=f.split(""),p=(0, Wn.diffArrays)(d,l),m=F;for(let E of p)if(E.removed){if(E.value.includes($n))break}else m+=E.count;return {formatted:i.formatted,cursorOffset:m,comments:s}}return {formatted:i.formatted,cursorOffset:-1,comments:s}}async function No(t,e){let{ast:r,text:n}=await ae(t,e),{rangeStart:o,rangeEnd:u}=jn(n,e,r),i=n.slice(o,u),s=Math.min(o,n.lastIndexOf(` +`,o)+1),a=n.slice(s,o).match(/^\s*/)[0],D=pe(a,e.tabWidth),c=await Gn(i,{...e,rangeStart:0,rangeEnd:Number.POSITIVE_INFINITY,cursorOffset:e.cursorOffset>o&&e.cursorOffset<=u?e.cursorOffset-o:-1,endOfLine:"lf"},D),F=c.formatted.trimEnd(),{cursorOffset:f}=e;f>u?f+=F.length-i.length:c.cursorOffset>=0&&(f=c.cursorOffset+o);let d=n.slice(0,o)+F+n.slice(u);if(e.endOfLine!=="lf"){let l=be(e.endOfLine);f>=0&&l===`\r +`&&(f+=At(d.slice(0,f),` +`)),d=ee(!1,d,` +`,l);}return {formatted:d,cursorOffset:f,comments:c.comments}}function Jt(t,e,r){return typeof e!="number"||Number.isNaN(e)||e<0||e>t.length?r:e}function Un(t,e){let{cursorOffset:r,rangeStart:n,rangeEnd:o}=e;return r=Jt(t,r,-1),n=Jt(t,n,0),o=Jt(t,o,t.length),{...e,cursorOffset:r,rangeStart:n,rangeEnd:o}}function Kn(t,e){let{cursorOffset:r,rangeStart:n,rangeEnd:o,endOfLine:u}=Un(t,e),i=t.charAt(0)===zn;if(i&&(t=t.slice(1),r--,n--,o--),u==="auto"&&(u=Cr(t)),t.includes("\r")){let s=a=>At(t.slice(0,Math.max(a,0)),`\r +`);r-=s(r),n-=s(n),o-=s(o),t=gr(t);}return {hasBOM:i,text:t,options:Un(t,{...e,cursorOffset:r,rangeStart:n,rangeEnd:o,endOfLine:u})}}async function Mn(t,e){let r=await ft(e);return !r.hasPragma||r.hasPragma(t)}async function Xt(t,e){let{hasBOM:r,text:n,options:o}=Kn(t,await re(e));if(o.rangeStart>=o.rangeEnd&&n!==""||o.requirePragma&&!await Mn(n,o))return {formatted:t,cursorOffset:e.cursorOffset,comments:[]};let u;return o.rangeStart>0||o.rangeEnd<n.length?u=await No(n,o):(!o.requirePragma&&o.insertPragma&&o.printer.insertPragma&&!await Mn(n,o)&&(n=o.printer.insertPragma(n)),u=await Gn(n,o)),r&&(u.formatted=zn+u.formatted,u.cursorOffset>=0&&u.cursorOffset++),u}async function Hn(t,e,r){let{text:n,options:o}=Kn(t,await re(e)),u=await ae(n,o);return r&&(r.preprocessForPrint&&(u.ast=await Ht(u.ast,o)),r.massage&&(u.ast=cn(u.ast,o))),u}async function qn(t,e){e=await re(e);let r=await je(t,e);return fe(r,e)}async function Jn(t,e){let r=Sr(t),{formatted:n}=await Xt(r,{...e,parser:"__js_expression"});return n}async function Xn(t,e){e=await re(e);let{ast:r}=await ae(t,e);return je(r,e)}async function Zn(t,e){return fe(t,await re(e))}var Qt={};Me(Qt,{addDanglingComment:()=>X,addLeadingComment:()=>ne,addTrailingComment:()=>ue,getAlignmentSize:()=>pe,getIndentSize:()=>eu,getMaxContinuousCount:()=>Qn,getNextNonSpaceNonCommentCharacter:()=>nu,getNextNonSpaceNonCommentCharacterIndex:()=>Mo,getStringWidth:()=>we,hasNewline:()=>V,hasNewlineInRange:()=>tu,hasSpaces:()=>ru,isNextLineEmpty:()=>Ko,isNextLineEmptyAfterIndex:()=>ht,isPreviousLineEmpty:()=>zo,makeString:()=>uu,skip:()=>me,skipEverythingButNewLine:()=>mt,skipInlineComment:()=>Ee,skipNewline:()=>Y,skipSpaces:()=>N,skipToLineEnd:()=>Ft,skipTrailingComment:()=>he,skipWhitespace:()=>xn});function So(t,e){if(e===!1)return !1;if(t.charAt(e)==="/"&&t.charAt(e+1)==="*"){for(let r=e+2;r<t.length;++r)if(t.charAt(r)==="*"&&t.charAt(r+1)==="/")return r+2}return e}var Ee=So;function vo(t,e){return e===!1?!1:t.charAt(e)==="/"&&t.charAt(e+1)==="/"?mt(t,e):e}var he=vo;function Po(t,e){let r=null,n=e;for(;n!==r;)r=n,n=N(t,n),n=Ee(t,n),n=he(t,n),n=Y(t,n);return n}var Ve=Po;function Lo(t,e){let r=null,n=e;for(;n!==r;)r=n,n=Ft(t,n),n=Ee(t,n),n=N(t,n);return n=he(t,n),n=Y(t,n),n!==!1&&V(t,n)}var ht=Lo;function Zt(t){if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function Io(t,e){let r=t.match(new RegExp(`(${Zt(e)})+`,"g"));return r===null?0:r.reduce((n,o)=>Math.max(n,o.length/e.length),0)}var Qn=Io;function Ro(t,e){let r=t.lastIndexOf(` +`);return r===-1?0:pe(t.slice(r+1).match(/^[\t ]*/)[0],e)}var eu=Ro;function Yo(t,e,r){for(let n=e;n<r;++n)if(t.charAt(n)===` +`)return !0;return !1}var tu=Yo;function jo(t,e,r={}){return N(t,r.backwards?e-1:e,r)!==e}var ru=jo;function Vo(t,e){let r=Ve(t,e);return r===!1?"":t.charAt(r)}var nu=Vo;function $o(t,e,r){let n=e==='"'?"'":'"',u=ee(!1,t,/\\(.)|(["'])/gs,(i,s,a)=>s===n?s:a===e?"\\"+a:a||(r&&/^[^\n\r"'0-7\\bfnrt-vx\u2028\u2029]$/.test(s)?s:"\\"+s));return e+u+e}var uu=$o;function Uo(t,e,r){return Ve(t,r(e))}function Mo(t,e){return arguments.length===2||typeof e=="number"?Ve(t,e):Uo(...arguments)}function Wo(t,e,r){return Ye(t,r(e))}function zo(t,e){return arguments.length===2||typeof e=="number"?Ye(t,e):Wo(...arguments)}function Go(t,e,r){return ht(t,r(e))}function Ko(t,e){return arguments.length===2||typeof e=="number"?ht(t,e):Go(...arguments)}var er={};Me(er,{builders:()=>Ho,printer:()=>qo,utils:()=>Jo});var Ho={join:ke,line:Ke,softline:Er,hardline:G,literalline:He,group:xt,conditionalGroup:fr,fill:Ge,lineSuffix:_e,lineSuffixBoundary:Fr,cursor:Be,breakParent:le,ifBreak:pr,trim:mr,indent:ie,indentIfBreak:dr,align:oe,addAlignmentToDoc:qe,markAsRoot:cr,dedentToRoot:Dr,dedent:lr,hardlineWithoutBreakParent:Ae,literallineWithoutBreakParent:_t,label:hr,concat:t=>t},qo={printDocToString:fe},Jo={willBreak:kr,traverseDoc:xe,findInDoc:Je,mapDoc:Ne,removeLines:wr,stripTrailingHardline:Xe,replaceEndOfLine:Or,canBreak:Nr};var ou="3.0.3";function De(t,e=1){return async(...r)=>{let n=r[e]??{},o=n.plugins??[];return r[e]={...n,plugins:Array.isArray(o)?o:Object.values(o)},t(...r)}}var iu=De(Xt);async function su(t,e){let{formatted:r}=await iu(t,{...e,cursorOffset:-1});return r}async function Xo(t,e){return await su(t,e)===t}var Zo=De(et,0),Qo={parse:De(Hn),formatAST:De(qn),formatDoc:De(Jn),printToDoc:De(Xn),printDocToString:De(Zn)};var Uc=tr; + +export { Qo as __debug, Xo as check, Uc as default, er as doc, su as format, iu as formatWithCursor, Zo as getSupportInfo, Qt as util, ou as version }; diff --git a/rollup.config.js b/src/lib/rollup.config.js similarity index 54% rename from rollup.config.js rename to src/lib/rollup.config.js index 22d636a1b..0cb724a0d 100644 --- a/rollup.config.js +++ b/src/lib/rollup.config.js @@ -5,38 +5,31 @@ import nodePolyfills from "rollup-plugin-node-polyfills"; export default [ { - input: "src/langs/xml/ltx.js", + input: "../langs/xml/ltx.js", output: { - file: "src/lib/ltx.js", + file: "ltx.js", }, plugins: [nodePolyfills(), commonjs(), nodeResolve()], }, { - input: "node_modules/prettier/esm/standalone.mjs", + input: "../../node_modules/prettier/standalone.mjs", output: { - file: "src/lib/prettier.js", + file: "prettier.js", }, }, { - input: "node_modules/prettier/esm/parser-babel.mjs", + input: "../../node_modules/prettier/plugins/postcss.mjs", output: { - file: "src/lib/prettier-babel.js", + file: "prettier-postcss.js", }, }, { - input: "node_modules/prettier/esm/parser-postcss.mjs", + input: "../../node_modules/postcss/lib/postcss.mjs", output: { - file: "src/lib/prettier-postcss.js", - }, - }, - - { - input: "node_modules/postcss/lib/postcss.mjs", - output: { - file: "src/lib/postcss.js", + file: "postcss.js", }, plugins: [ commonjs(), diff --git a/src/libworkbench/meson.build b/src/libworkbench/meson.build index 2764b3de4..e45a9a069 100644 --- a/src/libworkbench/meson.build +++ b/src/libworkbench/meson.build @@ -3,13 +3,13 @@ # SPDX-FileContributor: Andy Holmes <andyholmes@gnome.org> prefix = get_option('prefix') -datadir = join_paths(prefix, get_option('datadir')) -includedir = join_paths(prefix, get_option('includedir')) -libdir = join_paths(prefix, get_option('libdir')) +datadir = prefix / get_option('datadir') +includedir = prefix / get_option('includedir') +libdir = prefix / get_option('libdir') -girdir = join_paths(datadir, 'gir-1.0') -typelibdir = join_paths(libdir, 'girepository-1.0') -vapidir = join_paths(datadir, 'vala', 'vapi') +girdir = datadir / 'gir-1.0' +typelibdir = libdir / 'girepository-1.0' +vapidir = datadir / 'vala' / 'vapi' libworkbench_api_version = '0' libworkbench_api_name = 'libworkbench-@0@'.format(libworkbench_api_version) @@ -41,13 +41,13 @@ libworkbench_c_args = [ '-Wno-missing-declarations', '-DWORKBENCH_COMPILATION', - '-DWORKBENCH_EXPORT=__attribute__((visibility("default"))) extern', ] libworkbench_link_args = [] libworkbench_deps = [ dependency('gio-2.0', version: '>= 2.76.0'), dependency('gtk4', version: '>= 4.10.0'), dependency('gtksourceview-5', version: '>= 5.8.0'), + dependency('libadwaita-1', version: '>= 1.5') ] if get_option('profile') != 'development' @@ -61,22 +61,23 @@ libworkbench_headers = files([ 'workbench.h', 'workbench-completion-provider.h', 'workbench-completion-request.h', + 'workbench-preview-window.h' ]) libworkbench_sources = files([ 'workbench-completion-provider.c', 'workbench-completion-request.c', + 'workbench-preview-window.c' ]) install_headers(libworkbench_headers, - subdir: join_paths(includedir, 'libworkbench'), + subdir: includedir / 'libworkbench', ) libworkbench_enums = gnome.mkenums_simple('libworkbench-enums', sources: libworkbench_headers, - decorator: 'WORKBENCH_EXPORT', install_header: true, - install_dir: join_paths(includedir, 'libworkbench'), + install_dir: includedir / 'libworkbench', ) libworkbench = shared_library('workbench-@0@'.format(libworkbench_api_version), @@ -87,7 +88,6 @@ libworkbench = shared_library('workbench-@0@'.format(libworkbench_api_version), dependencies: libworkbench_deps, c_args: libworkbench_c_args, link_args: libworkbench_link_args, - gnu_symbol_visibility: 'hidden', soversion: meson.project_version(), version: libworkbench_api_version, install: true, @@ -114,3 +114,20 @@ libworkbench_vapi = gnome.generate_vapi(libworkbench_api_name, install: true, install_dir: vapidir, ) + +blueprints = custom_target('blueprints', + input: files( + 'workbench-preview-window.blp' + ), + output: '.', + command: [find_program('blueprint-compiler'), 'batch-compile', '@OUTPUT@', '@CURRENT_SOURCE_DIR@', '@INPUT@'], +) + +gnome.compile_resources( + 're.sonny.Workbench.libworkbench', + 're.sonny.Workbench.libworkbench.gresource.xml', + gresource_bundle: true, + install: true, + install_dir: pkgdatadir, + dependencies: blueprints, +) diff --git a/src/libworkbench/re.sonny.Workbench.libworkbench.gresource.xml b/src/libworkbench/re.sonny.Workbench.libworkbench.gresource.xml new file mode 100644 index 000000000..28aee43d1 --- /dev/null +++ b/src/libworkbench/re.sonny.Workbench.libworkbench.gresource.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<gresources> + <gresource prefix="/re/sonny/Workbench/libworkbench"> + <file>workbench-preview-window.ui</file> + </gresource> +</gresources> diff --git a/src/libworkbench/workbench-completion-provider.h b/src/libworkbench/workbench-completion-provider.h index c2c5992db..4e07449f0 100644 --- a/src/libworkbench/workbench-completion-provider.h +++ b/src/libworkbench/workbench-completion-provider.h @@ -17,7 +17,6 @@ G_BEGIN_DECLS #define WORKBENCH_TYPE_COMPLETION_PROVIDER (workbench_completion_provider_get_type()) -WORKBENCH_EXPORT G_DECLARE_DERIVABLE_TYPE (WorkbenchCompletionProvider, workbench_completion_provider, WORKBENCH, COMPLETION_PROVIDER, GObject) struct _WorkbenchCompletionProviderClass diff --git a/src/libworkbench/workbench-completion-request.c b/src/libworkbench/workbench-completion-request.c index 68029e463..7ed6fa0ea 100644 --- a/src/libworkbench/workbench-completion-request.c +++ b/src/libworkbench/workbench-completion-request.c @@ -295,6 +295,21 @@ workbench_completion_request_init (WorkbenchCompletionRequest *self) self->items = g_ptr_array_new_with_free_func (g_object_unref); } +/** + * workbench_completion_request_get_cancellable: (get-property cancellable) + * + * Get the cancellable for the request. + * + * Returns: (transfer none) (nullable): a `GCancellable` + */ +GCancellable * +workbench_completion_request_get_cancellable (WorkbenchCompletionRequest *request) +{ + g_return_val_if_fail (WORKBENCH_IS_COMPLETION_REQUEST (request), NULL); + + return request->cancellable; +} + /** * workbench_completion_request_get_context: (get-property context) * diff --git a/src/libworkbench/workbench-completion-request.h b/src/libworkbench/workbench-completion-request.h index ae26ca632..d4e6321b4 100644 --- a/src/libworkbench/workbench-completion-request.h +++ b/src/libworkbench/workbench-completion-request.h @@ -31,27 +31,19 @@ typedef enum #define WORKBENCH_TYPE_COMPLETION_REQUEST (workbench_completion_request_get_type()) -WORKBENCH_EXPORT G_DECLARE_FINAL_TYPE (WorkbenchCompletionRequest, workbench_completion_request, WORKBENCH, COMPLETION_REQUEST, GObject) -WORKBENCH_EXPORT GCancellable * workbench_completion_request_get_cancellable (WorkbenchCompletionRequest *request); -WORKBENCH_EXPORT GtkSourceCompletionContext * workbench_completion_request_get_context (WorkbenchCompletionRequest *request); -WORKBENCH_EXPORT GtkSourceCompletionProvider * workbench_completion_request_get_provider (WorkbenchCompletionRequest *request); -WORKBENCH_EXPORT WorkbenchRequestState workbench_completion_request_get_state (WorkbenchCompletionRequest *request); -WORKBENCH_EXPORT void workbench_completion_request_add (WorkbenchCompletionRequest *request, GtkSourceCompletionProposal *proposal); -WORKBENCH_EXPORT void workbench_completion_request_splice (WorkbenchCompletionRequest *request, unsigned int position, unsigned int n_removals, gpointer *additions, unsigned int n_additions); -WORKBENCH_EXPORT void workbench_completion_request_state_changed (WorkbenchCompletionRequest *request, WorkbenchRequestState state); diff --git a/src/libworkbench/workbench-preview-window.blp b/src/libworkbench/workbench-preview-window.blp new file mode 100644 index 000000000..9eec890da --- /dev/null +++ b/src/libworkbench/workbench-preview-window.blp @@ -0,0 +1,17 @@ +using Gtk 4.0; +using Adw 1; + +template $WorkbenchPreviewWindow: Adw.Window { + title: _("Preview"); + default-width: 600; + default-height: 800; + width-request: 360; + height-request: 360; + + content: Adw.ToolbarView toolbar_view { + top-bar-style: raised; + + [top] + Adw.HeaderBar {} + }; +} diff --git a/src/libworkbench/workbench-preview-window.c b/src/libworkbench/workbench-preview-window.c new file mode 100644 index 000000000..acd019cd0 --- /dev/null +++ b/src/libworkbench/workbench-preview-window.c @@ -0,0 +1,76 @@ +#include <adwaita.h> +#include <gtk/gtk.h> + +#include "workbench-preview-window.h" + +struct _WorkbenchPreviewWindow +{ + AdwWindow parent_instance; + + AdwToolbarView *toolbar_view; +}; + +G_DEFINE_FINAL_TYPE (WorkbenchPreviewWindow, workbench_preview_window, ADW_TYPE_WINDOW) + +static void +workbench_preview_window_init (WorkbenchPreviewWindow *self) +{ + gtk_widget_init_template (GTK_WIDGET (self)); +} + +static void +workbench_preview_window_dispose (GObject *object) +{ + gtk_widget_dispose_template (GTK_WIDGET (object), WORKBENCH_TYPE_PREVIEW_WINDOW); + + G_OBJECT_CLASS (workbench_preview_window_parent_class)->dispose (object); +} + +static void +workbench_preview_window_class_init (WorkbenchPreviewWindowClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + + object_class->dispose = workbench_preview_window_dispose; + + gtk_widget_class_set_template_from_resource (widget_class, "/re/sonny/Workbench/libworkbench/workbench-preview-window.ui"); + gtk_widget_class_bind_template_child (widget_class, WorkbenchPreviewWindow, toolbar_view); +} + +/** + * workbench_preview_window_new: (constructor) + * + * Returns: (transfer full): Returns a PreviewWindow + */ +WorkbenchPreviewWindow * +workbench_preview_window_new (void) +{ + return g_object_new (WORKBENCH_TYPE_PREVIEW_WINDOW, NULL); +} + +/** + * workbench_preview_window_get_content: + * + * Returns: (transfer none) + */ +GtkWidget * +workbench_preview_window_get_content (WorkbenchPreviewWindow *self) +{ + g_return_val_if_fail (WORKBENCH_IS_PREVIEW_WINDOW (self), NULL); + + return adw_toolbar_view_get_content (self->toolbar_view); +} + +/** + * workbench_preview_window_set_content: + * @content: (transfer full) + */ +void +workbench_preview_window_set_content (WorkbenchPreviewWindow *self, + GtkWidget *content) +{ + g_return_if_fail (WORKBENCH_IS_PREVIEW_WINDOW (self)); + + adw_toolbar_view_set_content (self->toolbar_view, content); +} diff --git a/src/libworkbench/workbench-preview-window.h b/src/libworkbench/workbench-preview-window.h new file mode 100644 index 000000000..038f6df75 --- /dev/null +++ b/src/libworkbench/workbench-preview-window.h @@ -0,0 +1,19 @@ +#pragma once + +#include <adwaita.h> + +#include <gtk/gtk.h> + +G_BEGIN_DECLS + +#define WORKBENCH_TYPE_PREVIEW_WINDOW (workbench_preview_window_get_type()) + +G_DECLARE_FINAL_TYPE (WorkbenchPreviewWindow, workbench_preview_window, WORKBENCH, PREVIEW_WINDOW, AdwWindow) + +WorkbenchPreviewWindow *workbench_preview_window_new (void) G_GNUC_WARN_UNUSED_RESULT; + +GtkWidget *workbench_preview_window_get_content (WorkbenchPreviewWindow *self); +void workbench_preview_window_set_content (WorkbenchPreviewWindow *self, + GtkWidget *content); + +G_END_DECLS diff --git a/src/libworkbench/workbench.h b/src/libworkbench/workbench.h index f0257ecfb..856c121d5 100644 --- a/src/libworkbench/workbench.h +++ b/src/libworkbench/workbench.h @@ -10,6 +10,7 @@ #include "workbench-completion-provider.h" #include "workbench-completion-request.h" +#include "workbench-preview-window.h" #undef WORKBENCH_INSIDE diff --git a/src/log_handler.js b/src/log_handler.js index 8b350c8ca..0e7ff8c50 100644 --- a/src/log_handler.js +++ b/src/log_handler.js @@ -115,5 +115,6 @@ function log_handler(domain, level, message) { str += "\n"; // console.terminal.fork_command(`echo ${str}`); + // eslint-disable-next-line no-restricted-globals print(str); } diff --git a/src/lsp/LSP.js b/src/lsp/LSP.js index 6973a7d93..32715c114 100644 --- a/src/lsp/LSP.js +++ b/src/lsp/LSP.js @@ -18,3 +18,37 @@ export class LSPError extends Error { export function rangeEquals(start, end) { return start.line === end.line && start.character === end.character; } + +export const CompletionItemKind = { + Text: 1, + Method: 2, + Function: 3, + Constructor: 4, + Field: 5, + Variable: 6, + Class: 7, + Interface: 8, + Module: 9, + Property: 10, + Unit: 11, + Value: 12, + Enum: 13, + Keyword: 14, + Snippet: 15, + Color: 16, + File: 17, + Reference: 18, + Folder: 19, + EnumMember: 20, + Constant: 21, + Struct: 22, + Event: 23, + Operator: 24, + TypeParameter: 25, +}; + +export const completion_item_kinds = Object.fromEntries( + Object.entries(CompletionItemKind).map(([key, value]) => { + return [value, key]; + }), +); diff --git a/src/lsp/LSPClient.js b/src/lsp/LSPClient.js index 40c98e67e..6545a3cb2 100644 --- a/src/lsp/LSPClient.js +++ b/src/lsp/LSPClient.js @@ -3,8 +3,10 @@ import Gio from "gi://Gio"; import { LSPError } from "./LSP.js"; -import { getPid, once } from "../../troll/src/util.js"; +import { getPid } from "../../troll/src/util.js"; +import { once } from "../../troll/src/async.js"; +// eslint-disable-next-line no-restricted-globals const { addSignalMethods } = imports.signals; const encoder_utf8 = new TextEncoder("utf8"); @@ -13,26 +15,33 @@ const decoder_ascii = new TextDecoder("ascii"); const processId = getPid(); const clientInfo = { - name: pkg.name, + name: "Workbench", version: pkg.version, }; export default class LSPClient { - constructor(argv, { rootUri, uri, languageId, buffer }) { - this.argv = argv; + constructor( + argv, + { rootUri, uri, languageId, buffer, env = {}, quiet = true }, + ) { + this.ready = false; this.started = false; this.proc = null; + this.version = 0; + + this.argv = argv; this.rootUri = rootUri; this.uri = uri; this.languageId = languageId; - this.version = 0; this.buffer = buffer; - this.ready = false; + this.env = env; + this.quiet = quiet; // https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#clientCapabilities this.capabilities = { textDocument: { publishDiagnostics: {}, + completion: {}, }, }; } @@ -46,7 +55,7 @@ export default class LSPClient { this.ready = true; this.emit("ready"); - // For testing blueprint language server restart + // For testing language server restart // setTimeout(() => { // this.stop() // }, 5000); @@ -68,6 +77,9 @@ export default class LSPClient { rootUri, locale: "en", }); + const { serverInfo, capabilities: serverCapabilities } = result; + this.serverInfo = serverInfo; + this.serverCapabilities = serverCapabilities; // https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#initialized await this._notify("initialized", {}); @@ -76,12 +88,10 @@ export default class LSPClient { } async stop() { - await Promise.all([ - this.stdin.close_async(null), - this.stdout.close_async(null), - ]); + await Promise.all([closeStream(this.stdin), closeStream(this.stdout)]); // this.proc?.force_exit(); this.proc.send_signal(15); + await this.proc.wait_async(null); } async send(...args) { @@ -130,31 +140,36 @@ export default class LSPClient { _start_process() { let flags = Gio.SubprocessFlags.STDIN_PIPE | Gio.SubprocessFlags.STDOUT_PIPE; - // vala-language-server and blueprint are pretty verbose - // https://github.com/vala-lang/vala-language-server/issues/274 - // comment this to debug LSP - flags = flags | Gio.SubprocessFlags.STDERR_SILENCE; + if (this.quiet) { + flags = flags | Gio.SubprocessFlags.STDERR_SILENCE; + } + + const subprocess_launcher = Gio.SubprocessLauncher.new(flags); + for (const [key, value] of Object.entries(this.env)) { + subprocess_launcher.setenv(key, value, true); + } - this.proc = Gio.Subprocess.new(this.argv, flags); + this.proc = subprocess_launcher.spawnv(this.argv); this.proc .wait_async(null) .then(() => { this.emit("exit"); // this._start_process(); }) - .catch(logError); + .catch(console.error); this.stdin = this.proc.get_stdin_pipe(); this.stdout = new Gio.DataInputStream({ base_stream: this.proc.get_stdout_pipe(), close_base_stream: true, }); - this._read().catch(logError); + this._read().catch(onReadError); } async _read_headers() { const headers = Object.create(null); + // eslint-disable-next-line no-constant-condition while (true) { const [bytes] = await this.stdout.read_line_async( GLib.PRIORITY_DEFAULT, @@ -175,7 +190,7 @@ export default class LSPClient { async _read_content(length) { // read_bytes is limited by some underlying max buffer size - // see https://github.com/sonnyp/Workbench/issues/240#issuecomment-1475387647 + // see https://github.com/workbenchdev/Workbench/issues/240#issuecomment-1475387647 // read_all is not supported in GJS so we do this instead // https://gitlab.gnome.org/GNOME/gjs/-/issues/501 const uint8 = new Uint8Array(length); @@ -191,20 +206,29 @@ export default class LSPClient { } const str = decoder_utf8.decode(uint8); - return JSON.parse(str); + try { + return JSON.parse(str); + } catch (err) { + await this.stop(); + } } // https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#baseProtocol async _read() { const headers = await this._read_headers(); - const length = headers["Content-Length"]; + const length = headers?.["Content-Length"]; + if (!length) { + return this.stop(); + } + const content = await this._read_content(length); - if (content) { - this._onmessage(content); + if (!content) { + return this.stop(); } - this._read().catch(logError); + this._onmessage(content); + this._read().catch(onReadError); } _onmessage(message) { @@ -226,14 +250,20 @@ export default class LSPClient { const message = { ...json, jsonrpc: "2.0" }; const str = JSON.stringify(message); - const length = encoder_utf8.encode(str).byteLength; - const bytes = new GLib.Bytes(`Content-Length: ${length}\r\n\r\n${str}`); + const body = encoder_utf8.encode(str); + const header = encoder_utf8.encode( + `Content-Length: ${body.byteLength}\r\n\r\n`, + ); + + const buffer = new Uint8Array(header.length + body.length); + buffer.set(header, 0); + buffer.set(body, header.length); if (this.stdin.clear_pending()) { this.stdin.flush(); } - await this.stdin.write_bytes_async(bytes, GLib.PRIORITY_DEFAULT, null); + await this.stdin.write_all_async(buffer, GLib.PRIORITY_DEFAULT, null); this.emit("output", message); } @@ -258,9 +288,67 @@ export default class LSPClient { params, }); } + + // https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_completion + async completion(iter_cursor) { + if (!this.serverCapabilities?.completionProvider) return []; + const { uri } = this; + const result = await this.request("textDocument/completion", { + textDocument: { + uri, + }, + position: { + line: iter_cursor.get_line(), + character: iter_cursor.get_line_offset(), + }, + }); + + // "If a CompletionItem[] is provided it is interpreted to be complete. So it is the same as { isIncomplete: false, items }" + if (Array.isArray(result)) return result; + + return result?.items || []; + } + + async hover(iter_cursor) { + if (!this.serverCapabilities?.hoverProvider) return null; + const { uri } = this; + return this.request("textDocument/hover", { + textDocument: { + uri, + }, + position: { + line: iter_cursor.get_line(), + character: iter_cursor.get_line_offset() - 1, + }, + }); + } } addSignalMethods(LSPClient.prototype); function rid() { return Math.random().toString().substring(2); } + +async function closeStream(stream) { + try { + if (stream.is_closed()) return; + await stream.close_async(GLib.PRIORITY_DEFAULT, null); + } catch (err) { + if (err.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.PENDING)) { + console.debug(err); + } else { + throw err; + } + } +} + +function onReadError(err) { + if ( + err.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CLOSED) || + err.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.PENDING) + ) { + console.debug(err); + } else { + console.error(err); + } +} diff --git a/src/lsp/sourceview.js b/src/lsp/sourceview.js new file mode 100644 index 000000000..c5559fba0 --- /dev/null +++ b/src/lsp/sourceview.js @@ -0,0 +1,84 @@ +import { rangeEquals } from "./LSP.js"; + +// Inspired by +// https://gitlab.gnome.org/GNOME/gnome-builder/-/blob/cbcf02bf9ac957a004fa32a17a7586f32e899a48/src/libide/code/ide-buffer-manager.c#L899 +export function applyTextEdits(text_edits, buffer) { + if (!text_edits) return; + + buffer.begin_user_action(); + + // Stage TextMarks + for (const text_edit of text_edits) { + prepareTextEdit(text_edit, buffer); + } + + // Perform the edits + for (const text_edit of text_edits) { + applyTextEdit(text_edit, buffer); + } + + buffer.end_user_action(); +} + +function prepareTextEdit(text_edit, buffer) { + const { + range: { start, end }, + } = text_edit; + const [, start_iter] = buffer.get_iter_at_line_offset( + start.line, + start.character, + ); + const [, end_iter] = buffer.get_iter_at_line_offset(end.line, end.character); + + const begin_mark = buffer.create_mark( + null, // name + start_iter, // where + true, // left gravity + ); + const end_mark = buffer.create_mark( + null, // name + end_iter, // where + false, // left gravity + ); + + text_edit.begin_mark = begin_mark; + text_edit.end_mark = end_mark; +} + +function applyTextEdit(text_edit, buffer) { + const { newText, begin_mark, end_mark } = text_edit; + + let start_iter = buffer.get_iter_at_mark(begin_mark); + const end_iter = buffer.get_iter_at_mark(end_mark); + + buffer.delete(start_iter, end_iter); + + start_iter = buffer.get_iter_at_mark(begin_mark); + buffer.insert(start_iter, newText, -1); + + buffer.delete_mark(begin_mark); + buffer.delete_mark(end_mark); +} + +export function getItersAtRange(buffer, { start, end }) { + let start_iter; + let end_iter; + + // Apply the tag on the whole line + // if diagnostic start and end are equals such as + // Blueprint-Error 13:12 to 13:12 Could not determine what kind of syntax is meant here + if (rangeEquals(start, end)) { + [, start_iter] = buffer.get_iter_at_line(start.line); + [, end_iter] = buffer.get_iter_at_line(end.line); + end_iter.forward_to_line_end(); + start_iter.forward_find_char((char) => char !== "", end_iter); + } else { + [, start_iter] = buffer.get_iter_at_line_offset( + start.line, + start.character, + ); + [, end_iter] = buffer.get_iter_at_line_offset(end.line, end.character); + } + + return [start_iter, end_iter]; +} diff --git a/src/main.js b/src/main.js index 53bd97214..af52f675d 100644 --- a/src/main.js +++ b/src/main.js @@ -6,6 +6,7 @@ pkg.initGettext(); import "./language-specs/blueprint.lang"; import "./style.css"; +import "./libworkbench/workbench-preview-window.blp"; export function main(argv) { return application.runAsync(argv); diff --git a/src/meson.build b/src/meson.build index 9e5fab5d9..4d4d64f9a 100644 --- a/src/meson.build +++ b/src/meson.build @@ -3,31 +3,17 @@ bin_conf.set('GJS', find_program('gjs').full_path()) bin_conf.set('version', meson.project_version() + version_suffix) bin_conf.set('app_id', app_id) bin_conf.set('prefix', prefix) -bin_conf.set('libdir', join_paths(get_option('prefix'), get_option('libdir'))) +bin_conf.set('libdir', get_option('prefix') / get_option('libdir')) bin_conf.set('datadir', datadir) bin_conf.set('pkgdatadir', pkgdatadir) -bin_conf.set('sourcedir', meson.source_root()) +bin_conf.set('sourcedir', meson.project_source_root()) +bin_conf.set('command', 'SHELL=/bin/sh script --flush --quiet --return $XDG_RUNTIME_DIR/$FLATPAK_ID/typescript --command "' + app_id + ' $@"') -blueprint_compiler = find_program( - '/app/bin/blueprint-compiler', -) - -install_subdir('Library/demos', install_dir : join_paths(pkgdatadir, 'Library')) +meson.add_install_script('../build-aux/library.js', pkgdatadir) -output = run_command('../build-aux/list-demo-blp-files.sh', check: true) -blueprint_files = output.stdout().strip().split('\n') -message('blueprint files: @0@'.format(blueprint_files)) - -custom_target('blueprints', - input: blueprint_files, - output: '.', - install: true, - install_dir: pkgdatadir, - command: [ - blueprint_compiler, - 'batch-compile', '@OUTPUT@', '@CURRENT_SOURCE_DIR@', '@INPUT@' - ], -) +subdir('langs/javascript') +subdir('langs/rust/template') +subdir('langs/typescript') configure_file( input: 'bin.js', @@ -45,23 +31,37 @@ configure_file( install_dir: get_option('bindir') ) +clibin_conf = configuration_data() +clibin_conf.merge_from(bin_conf) +clibin_conf.set('command', app_id + '.cli "$@"') +configure_file( + input: 'workbench', + output: 'workbench-cli', + configuration: clibin_conf, + install: true, + install_dir: get_option('bindir') +) + install_data('langs/vala/workbench.vala', install_dir: pkgdatadir) +install_data('langs/javascript/biome.json', install_dir: pkgdatadir) +install_data('project-readme.md', install_dir: pkgdatadir) +subdir('libworkbench') subdir('Previewer') +subdir('langs/python') +subdir('langs/css') gjspack = find_program('../troll/gjspack/bin/gjspack') -gresource = custom_target('gjspack', - input: ['main.js', '../po/POTFILES'], +custom_target('workbench', + input: ['main.js'], output: app_id + '.src.gresource', command: [ gjspack, '--appid=' + app_id, '--prefix', '/re/sonny/Workbench', - '--project-root', meson.source_root(), + '--project-root', meson.project_source_root(), '--resource-root', meson.project_source_root() / 'src', - '--blueprint-compiler', blueprint_compiler, '--no-executable', '@INPUT0@', - '--potfiles', '@INPUT1@', '@OUTDIR@', ], install: true, @@ -69,4 +69,4 @@ gresource = custom_target('gjspack', build_always_stale: true, ) -subdir('libworkbench') +subdir('cli') diff --git a/src/overrides.js b/src/overrides.js index 2f355f86b..2d157119b 100644 --- a/src/overrides.js +++ b/src/overrides.js @@ -24,19 +24,29 @@ export function overrides() { // GTypeName must be unique globally // there is no unregister equivalent to registerClass and // this is what GNOME Shell does too according to Verdre - // https://github.com/sonnyp/Workbench/issues/50 + // https://github.com/workbenchdev/Workbench/issues/50 // https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/1011#note_451228 // https://gitlab.gnome.org/GNOME/glib/-/issues/282#note_662735 // https://gitlab.gnome.org/GNOME/glib/-/issues/2336 // https://gitlab.gnome.org/GNOME/glib/-/issues/667 GObject.registerClass = function registerWorkbenchClass(...args) { - const klass = args[0]; - const GTypeName = klass.GTypeName || args[1]?.name; + let attrs; + let klass; + + if (args.length === 1) { + attrs = {}; + klass = args[0]; + } else { + attrs = args[0]; + klass = args[1]; + } + + const GTypeName = attrs.GTypeName || klass.name; if (GTypeName) { types[GTypeName] = increment(GTypeName); - klass.GTypeName = GTypeName + types[GTypeName]; + attrs.GTypeName = GTypeName + types[GTypeName]; } - return registerClass(...args); + return registerClass(attrs, klass); }; // This is used to tweak `workbench.template` in order to set the // <template class="?"/> to something that will work next time diff --git a/src/project-readme.md b/src/project-readme.md new file mode 100644 index 000000000..918f1a8dd --- /dev/null +++ b/src/project-readme.md @@ -0,0 +1,20 @@ +This is a Workbench project. + +To open and run this; [install Workbench from Flathub](https://flathub.org/apps/re.sonny.Workbench) and open this project folder with it. + +## Icons + +You can embed icons into your project by adding them to the [`./icons`](./icons/) subfolder. + +Then you can reference them by name in UI. For example + +``` +# Given a file icons/moon-symbolic.svg +Gtk.Image { + icon-name: "moon-symbolic"; +} +``` + +Press "Run" if your icon is not detected yet. + +Please refer to Workbench Library entry "Using Icons" for more information. diff --git a/src/sessions.js b/src/sessions.js index 22fd6c542..058316d17 100644 --- a/src/sessions.js +++ b/src/sessions.js @@ -1,69 +1,79 @@ import Gio from "gi://Gio"; import GLib from "gi://GLib"; +import Gtk from "gi://Gtk"; +import Gdk from "gi://Gdk"; +import { rmrf } from "../troll/src/util.js"; import { data_dir, ensureDir, getNowForFilename, demos_dir, settings as global_settings, - encode, + copyDirectory, + decode, } from "./util.js"; +import { languages } from "./common.js"; +import { createElement as xml } from "./langs/xml/xml.js"; export const sessions_dir = data_dir.get_child("sessions"); -export function getSessions() { - const sessions = []; +const icon_theme = Gtk.IconTheme.get_for_display(Gdk.Display.get_default()); +export async function getSessions() { + const files = new Map(); + + // Sessions ensureDir(sessions_dir); + const enumerator = await sessions_dir.enumerate_children_async( + `${Gio.FILE_ATTRIBUTE_STANDARD_NAME},${Gio.FILE_ATTRIBUTE_STANDARD_IS_HIDDEN}`, + Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, + GLib.PRIORITY_DEFAULT, + null, + ); + for await (const file_info of enumerator) { + if (file_info.get_is_hidden()) continue; + if (file_info.get_file_type() !== Gio.FileType.DIRECTORY) continue; + const file = enumerator.get_child(file_info); + files.set(file.get_path(), file); + } - const session = migrateStateToSession(); - if (session) { - sessions.push(session); - } else { - for (const file_info of sessions_dir.enumerate_children( - "", - Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, - null, - )) { - if (file_info.get_file_type() !== Gio.FileType.DIRECTORY) continue; - sessions.push(new Session(sessions_dir.get_child(file_info.get_name()))); + // Projects + const recent_projects = global_settings.get_strv("recent-projects"); + for (const path of recent_projects) { + const file = Gio.File.new_for_path(path); + if ( + file.query_file_type(Gio.FileQueryInfoFlags.NONE, null) !== + Gio.FileType.DIRECTORY + ) { + removeFromRecentProjects(path); + continue; } + files.set(file.get_path(), file); } - return sessions; + return [...files.values()].map((file) => new Session(file)); } -export function createSession(name = getNowForFilename()) { - const file = sessions_dir.get_child(name); +export function createSession() { + const id = getNowForFilename(); + const file = sessions_dir.get_child(id); ensureDir(file); const session = new Session(file); return session; } -export function createSessionFromDemo(demo) { - const session = createSession(); +export async function createSessionFromDemo(demo) { + const { name, panels } = demo; - const demo_dir = demos_dir.get_child(demo.name); - // There is no copy directory function - for (const file_info of demo_dir.enumerate_children( - "", - Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, - null, - )) { - if (file_info.get_file_type() === Gio.FileType.DIRECTORY) continue; + const session = createSession(); + const demo_dir = demos_dir.get_child(name); - const child = demo_dir.get_child(file_info.get_name()); - child.copy( - session.file.get_child(child.get_basename()), - Gio.FileCopyFlags.NONE, - null, - null, - ); - } + const { file, settings } = session; + await copyDirectory(demo_dir, file); - const { panels } = demo; - const { settings } = session; + settings.delay(); + settings.set_string("name", name); settings.set_boolean("show-code", panels.includes("code")); settings.set_boolean("show-style", panels.includes("style")); settings.set_boolean("show-ui", panels.includes("ui")); @@ -72,60 +82,33 @@ export function createSessionFromDemo(demo) { "code-language", global_settings.get_int("recent-code-language"), ); - settings.set_int( - "ui-language", - global_settings.get_int("recent-ui-language"), - ); + settings.apply(); + + await createSessionFiles(file); return session; } export async function deleteSession(session) { - // There is no method to recursively delete a folder so we trash instead - // https://github.com/flatpak/xdg-desktop-portal/issues/630 :/ - // portal.trash_file(file.get_path(), null).catch(logError); - session.file.trash(null); + return rmrf(session.file); } export async function saveSessionAsProject(session, destination) { - await destination.make_directory_async(GLib.PRIORITY_DEFAULT, null); + session.settings.set_string("name", destination.get_basename()); - for await (const file_info of session.file.enumerate_children( - "", - Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, - null, - )) { - await session.file.get_child(file_info.get_name()).move_async( - destination.get_child(file_info.get_name()), // destination - Gio.FileCopyFlags.BACKUP, // flags - GLib.PRIORITY_DEFAULT, // priority - null, // cancellable - null, // progress_callback - ); - } - - await session.file.delete_async(GLib.PRIORITY_DEFAULT, null); - - await destination.get_child("README.md").replace_contents_async( - encode( - _(`This is a Workbench project. - -To open and run this; [install Workbench from Flathub](https://flathub.org/apps/re.sonny.Workbench) and open this project folder with it.`), - ), - null, // etag - false, // make_backup - Gio.FileCreateFlags.NONE, //flags - null, // cancellable - ); + await copyDirectory(session.file, destination); + await createSessionFiles(destination); + await deleteSession(session).catch(console.error); } export class Session { - settings = null; file = null; - name = null; + settings = null; + id = Math.random().toString().substring(2); + resource_icons = null; + resource_icons_file = null; constructor(file) { - this.name = file.get_basename(); this.file = file; const backend = Gio.keyfile_settings_backend_new( this.file.get_child("settings").get_path(), @@ -139,47 +122,146 @@ export class Session { }); } - is_project() { + async load() { + await this.loadIcons(); + } + + async loadIcons() { + await this.unloadIcons(); + const resource_icons_file = await buildGResourceIcons(this.file); + if (!resource_icons_file) return; + this.resource_icons_file = resource_icons_file; + this.resource_icons = Gio.resource_load(resource_icons_file.get_path()); + this.resource_icons._register(); + + // Reload icons see https://github.com/sonnyp/gtk-resource-icons + const resource_paths = new Set(icon_theme.resource_path); + resource_paths.add("/re/sonny/Workbench/icons/"); + icon_theme.set_resource_path([...resource_paths]); + } + + async unloadIcons() { + this.resource_icons?._unregister(); + this.resource_icons = null; + } + + async unload() { + await this.unloadIcons(); + } + + get name() { + return this.settings.get_string("name") || this.file.get_basename(); + } + + isProject() { return !this.file.get_parent().equal(sessions_dir); } + + getCodeLanguage() { + const code_languge = this.settings.get_int("code-language"); + return languages.find((lang) => lang.index === code_languge); + } } -function migrateStateToSession() { - if (global_settings.get_boolean("migrated")) return; +export function addToRecentProjects(path) { + const recent_projects = new Set(global_settings.get_strv("recent-projects")); + recent_projects.add(path); + global_settings.set_strv("recent-projects", [...recent_projects]); +} - const state_files = [ - ["state.blp", "main.blp"], - ["state.css", "main.css"], - ["state.js", "main.js"], - ["state.vala", "main.vala"], - ["state.xml", "main.ui"], - ]; +export function removeFromRecentProjects(path) { + const recent_projects = new Set(global_settings.get_strv("recent-projects")); + recent_projects.delete(path); + global_settings.set_strv("recent-projects", [...recent_projects]); +} - const found = state_files.find(([file]) => - data_dir.get_child(file).query_exists(null), - ); - if (!found) { - global_settings.set_boolean("migrated", true); +async function buildGResourceIcons(file) { + const dir = file.get_child("icons"); + let enumerator; + + try { + enumerator = await dir.enumerate_children_async( + `${Gio.FILE_ATTRIBUTE_STANDARD_NAME},${Gio.FILE_ATTRIBUTE_STANDARD_IS_HIDDEN}`, + Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, + GLib.PRIORITY_DEFAULT, + null, + ); + } catch (err) { + if (!err.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND)) { + throw err; + } return; } - const session = createSession(`${getNowForFilename()} state`); - for (const state_file of state_files) { - try { - data_dir.get_child(state_file[0]).move( - session.file.get_child(state_file[1]), // destination - Gio.FileCopyFlags.BACKUP, // flags - null, // cancellable - null, // progress_callback - ); - } catch (err) { - if (err.code !== GLib.FileError.NOENT) { - throw err; - } + const files = []; + for await (const file_info of enumerator) { + if (file_info.get_file_type() === Gio.FileType.DIRECTORY) continue; + if (file_info.get_is_hidden()) return; + + const child = enumerator.get_child(file_info); + files.push(child); + } + + if (files.length < 1) return; + + const prefix = "/re/sonny/Workbench/icons/scalable/actions/"; + const root = xml( + "gresources", + {}, + xml( + "gresource", + { prefix }, + files.map((file) => xml("file", {}, file.get_basename())), + ), + ); + const gresource_xml = `<?xml version="1.0" encoding="UTF-8" ?>${root.toString()}`; + + const file_xml = file.get_child("icons.gresource.xml"); + const file_gresource = file.get_child("icons.gresource"); + + file_xml.replace_contents( + gresource_xml, // contents + null, // etag + false, // make_backup + Gio.FileCreateFlags.NONE, // flags + null, + ); + + const [, stdout, stderr, status] = GLib.spawn_command_line_sync( + `glib-compile-resources --target="${file_gresource.get_path()}" --sourcedir="${dir.get_path()}" "${file_xml.get_path()}"`, + ); + console.debug(stdout); + if (status !== 0) { + throw new Error(decode(stderr)); + } + + return file_gresource; +} + +async function createIconsDirectory(file) { + try { + await file + .get_child("icons") + .make_directory_async(GLib.PRIORITY_DEFAULT, null); + } catch (err) { + if (!err.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.EXISTS)) { + throw err; } } +} - global_settings.set_boolean("migrated", true); +async function createREADMEFile(file) { + await Gio.File.new_for_path(pkg.pkgdatadir) + .get_child("project-readme.md") + .copy_async( + file.get_child("README.md"), // destination + Gio.FileCopyFlags.OVERWRITE, // flags + GLib.PRIORITY_DEFAULT, // priority + null, // cancellable + null, // progress_callback + ); +} - return session; +async function createSessionFiles(file) { + return Promise.all([createIconsDirectory(file), createREADMEFile(file)]); } diff --git a/src/shortcutsWindow.blp b/src/shortcutsWindow.blp index 4f966ffb7..e8a09edd5 100644 --- a/src/shortcutsWindow.blp +++ b/src/shortcutsWindow.blp @@ -1,11 +1,12 @@ using Gtk 4.0; -ShortcutsWindow shortcuts_window { - modal: true; +ShortcutsWindow window { + hide-on-close: true; ShortcutsSection { - title: "Workbench"; ShortcutsGroup { + title: _("Application"); + ShortcutsShortcut { accelerator: "<Control>Return"; title: _("Run Code"); @@ -16,6 +17,11 @@ ShortcutsWindow shortcuts_window { title: _("Format"); } + ShortcutsShortcut { + accelerator: "<Control>N"; + title: _("New Project"); + } + ShortcutsShortcut { accelerator: "<Control>O"; title: _("Open Project"); @@ -27,19 +33,52 @@ ShortcutsWindow shortcuts_window { } ShortcutsShortcut { - accelerator: "<Control><Shift>K"; - title: _("Toggle Console"); + accelerator: "<Control><Shift>I"; + title: _("Inspector"); } ShortcutsShortcut { - accelerator: "<Control>K"; - title: _("Clear Console"); + accelerator: "<Control>W"; + title: _("Close Window"); + } + + ShortcutsShortcut { + accelerator: "<Control>M"; + title: _("Reveal in Files"); + } + + ShortcutsShortcut { + accelerator: "<Control>question"; + title: _("Keyboard Shortcuts"); + } + + ShortcutsShortcut { + accelerator: "<Control>Q"; + title: _("Quit"); } } + ShortcutsGroup { + title: _("Editor"); + ShortcutsShortcut { - accelerator: "<Control><Shift>I"; - title: _("Inspector"); + accelerator: "<Control>X"; + title: _("Cut"); + } + + ShortcutsShortcut { + accelerator: "<Control>C"; + title: _("Copy"); + } + + ShortcutsShortcut { + accelerator: "<Control>V"; + title: _("Paste"); + } + + ShortcutsShortcut { + accelerator: "<Control>F"; + title: _("Find"); } ShortcutsShortcut { @@ -47,19 +86,38 @@ ShortcutsWindow shortcuts_window { title: _("Undo"); } + ShortcutsShortcut { + accelerator: "<Control>space"; + title: _("Show code suggestions"); + } + ShortcutsShortcut { accelerator: "<Control><Shift>Z"; title: _("Redo"); } + } + + ShortcutsGroup { + title: _("Console"); ShortcutsShortcut { - accelerator: "<Control>question"; - title: _("Keyboard Shortcuts"); + accelerator: "<Control><Shift>K"; + title: _("Toggle Console"); } ShortcutsShortcut { - accelerator: "<Control>Q"; - title: _("Quit"); + accelerator: "<Control><Shift>C"; + title: _("Copy"); + } + + ShortcutsShortcut { + accelerator: "<Control><Shift>A"; + title: _("Select All"); + } + + ShortcutsShortcut { + accelerator: "<Control>K"; + title: _("Clear"); } } } diff --git a/src/shortcutsWindow.js b/src/shortcutsWindow.js index eb45fc3ca..f1fb12a94 100644 --- a/src/shortcutsWindow.js +++ b/src/shortcutsWindow.js @@ -1,13 +1,22 @@ -import Gtk from "gi://Gtk"; +import Gio from "gi://Gio"; -import resource from "./shortcutsWindow.blp"; +import resource from "./shortcutsWindow.blp" with { type: "uri" }; -export default function ShortcutsWindow({ application }) { - const builder = Gtk.Builder.new_from_resource(resource); +import { build } from "../troll/src/builder.js"; - const window = builder.get_object("shortcuts_window"); - window.set_transient_for(application.get_active_window()); - window.set_application(application); +export default function ShortcutsWindow({ application }) { + let window; - window.show(); + const action_shortcuts = new Gio.SimpleAction({ + name: "shortcuts", + }); + action_shortcuts.connect("activate", () => { + if (!window) { + ({ window } = build(resource)); + } + window.set_transient_for(application.active_window); + window.present(); + }); + application.add_action(action_shortcuts); + application.set_accels_for_action("app.shortcuts", ["<Control>question"]); } diff --git a/src/style.css b/src/style.css index d28e1bed8..3c02fc3ad 100644 --- a/src/style.css +++ b/src/style.css @@ -8,17 +8,59 @@ } .panel_header { - min-height: 46px; padding-left: 12px; padding-right: 12px; } -#toolbar_devtools { - border-bottom: solid 1px @borders; +.command_snippet { + color: var(--view-fg-color); + background: var(--view-bg-color); + font-family: monospace; + border-radius: 6px; + padding: 6px; + border: 1px solid var(--border-color); +} + +/* + * From Builder's stylesheet: + * https://gitlab.gnome.org/GNOME/gnome-builder/-/blob/45d4ec9b6f1aa2236c9bb7dfb846b35f9b959618/src/libide/gui/style.css#L33 + * Used to style the language tags for the demo entries in the Library + */ +button.pill.small { + font-size: 0.83333em; + border-radius: 99px; + margin: 0; + padding: 1px 12px; } #panel_code, #panel_style, #panel_ui { - border-right: solid 1px @borders; + border-right: solid 1px var(--border-color); + background-color: #fcfcfc; +} + +/* Prevent dev banner on second toolbar */ +#panel_code > revealer, +#panel_style > revealer, +#panel_ui > revealer, +#panel_preview > revealer, +#panel_devtools > revealer { + background-image: none; +} + +#toolbar_devtools { + background-color: #fcfcfc; +} + +@media (prefers-color-scheme: dark) { + #panel_code, + #panel_style, + #panel_ui { + background-color: #262626; + } + + #toolbar_devtools { + background-color: #262626; + } } diff --git a/src/util.js b/src/util.js index 250499ac2..bb378407a 100644 --- a/src/util.js +++ b/src/util.js @@ -2,6 +2,8 @@ import GLib from "gi://GLib"; import Gio from "gi://Gio"; import Xdp from "gi://Xdp"; import GObject from "gi://GObject"; +import { getLanguage } from "./common.js"; +import { getFlatpakId } from "./flatpak.js"; export const portal = new Xdp.Portal(); @@ -18,74 +20,13 @@ export function ensureDir(file) { try { file.make_directory_with_parents(null); } catch (err) { - if (err.code !== Gio.IOErrorEnum.EXISTS) { + if (!err.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.EXISTS)) { throw err; } } } -export function getFlatpakInfo() { - const keyFile = new GLib.KeyFile(); - try { - keyFile.load_from_file("/.flatpak-info", GLib.KeyFileFlags.NONE); - } catch (err) { - if (err.code !== GLib.FileError.NOENT) { - logError(err); - } - return null; - } - return keyFile; -} - -export const languages = [ - { - id: "blueprint", - name: "Blueprint", - panel: "ui", - extensions: [".blp"], - types: [], - document: null, - }, - { - id: "xml", - name: "GTK Builder", - panel: "ui", - extensions: [".ui"], - types: ["application/x-gtk-builder"], - document: null, - }, - { - id: "javascript", - name: "JavaScript", - panel: "code", - extensions: [".js", ".mjs"], - types: ["text/javascript", "application/javascript"], - document: null, - }, - { - id: "css", - name: "CSS", - panel: "style", - extensions: [".css"], - types: ["text/css"], - document: null, - }, - { - id: "vala", - name: "Vala", - panel: "code", - extensions: [".vala"], - types: ["text/x-vala"], - document: null, - placeholder: "// Sorry, this demo is not available in Vala yet.", - }, -]; - -export function getLanguage(id) { - return languages.find( - (language) => language.id.toLowerCase() === id.toLowerCase(), - ); -} +export { getLanguage }; export function listenProperty(object, property, fn, { initial = false } = {}) { if (initial) { @@ -135,8 +76,9 @@ export function unstack(fn, onError = console.error) { if (pending) return; - if (!latest_promise) + if (!latest_promise) { latest_promise = fn(...latest_arguments).catch(onError); + } pending = true; latest_promise.finally(() => { @@ -148,31 +90,97 @@ export function unstack(fn, onError = console.error) { export const demos_dir = Gio.File.new_for_path( pkg.pkgdatadir, -).resolve_relative_path("Library/demos"); - -export function readDemoFile(demo_name, file_name) { - const file = demos_dir.get_child(demo_name).get_child(file_name); - - let str; +).resolve_relative_path("demos"); +export async function copyDirectory(source, destination) { try { - str = decode(file.load_contents(null)[1]); + destination.make_directory_with_parents(null); } catch (err) { - if (err.code !== Gio.IOErrorEnum.NOT_FOUND) { + if (!err.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.EXISTS)) { throw err; } - str = ""; } - return str; -} + const enumerator = await source.enumerate_children_async( + Gio.FILE_ATTRIBUTE_STANDARD_TYPE, + Gio.FileQueryInfoFlags.NONE, + GLib.PRIORITY_DEFAULT, + null, + ); + + for await (const file_info of enumerator) { + const child = enumerator.get_child(file_info); + const child_dest = destination.get_child(child.get_basename()); -export function getDemo(name) { - const demo = JSON.parse(readDemoFile(name, "main.json")); - demo.name = name; - return demo; + if (file_info.get_file_type() === Gio.FileType.DIRECTORY) { + await copyDirectory(child, child_dest); + continue; + } + + try { + await child.copy_async( + child_dest, // destination + Gio.FileCopyFlags.OVERWRITE, // flags + GLib.PRIORITY_DEFAULT, // priority + null, // cancellable + null, // progress_callback + ); + } catch (err) { + if (!err.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.EXISTS)) { + throw err; + } + } + } } export function getNowForFilename() { return new GLib.DateTime().format("%Y-%m-%d %H-%M-%S"); } + +// https://gitlab.gnome.org/GNOME/libadwaita/-/issues/746 +export function makeDropdownFlat(dropdown) { + dropdown.get_first_child().add_css_class("flat"); +} + +export function buildRuntimePath(...args) { + return GLib.build_filenamev([ + GLib.get_user_runtime_dir(), + getFlatpakId(), + ...args, + ]); +} + +export function quitOnLastWindowClose(self) { + const { application } = self; + const application_windows = [...application.get_windows()]; + const is_last_window_open = application_windows + .filter((w) => w !== self) + .every((w) => !w.get_mapped()); + + if (is_last_window_open) { + application.quit(); + } + + return false; +} + +export async function copy(filename, source_dir, dest_dir, flags) { + const file = source_dir.get_child(filename); + const dest_file = dest_dir.get_child(file.get_basename()); + + try { + await file.copy_async( + dest_file, // destination + flags, // flags + GLib.PRIORITY_DEFAULT, // priority + null, // cancellable + null, // progress_callback + ); + } catch (err) { + if (!err.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.EXISTS)) { + throw err; + } + } + + return dest_file; +} diff --git a/src/widgets/CodeFind.blp b/src/widgets/CodeFind.blp new file mode 100644 index 000000000..a10d4dfeb --- /dev/null +++ b/src/widgets/CodeFind.blp @@ -0,0 +1,73 @@ +using Gtk 4.0; + +template $CodeFind: Revealer { + transition-type: slide_up; + reveal-child: false; + + Box { + orientation: vertical; + + Separator {} + + Box { + styles [ + "toolbar", + ] + + halign: center; + + Box { + valign: center; + width-request: 220; + css-name: "entry"; + + Image { + icon-name: 'edit-find-symbolic'; + } + + Text text_search_term { + hexpand: true; + vexpand: true; + width-chars: 10; + max-width-chars: 10; + } + + Label label_info { + label: ""; + xalign: 1; + opacity: 0.5; + } + } + + Box { + valign: center; + + Button button_previous { + icon-name: "re.sonny.Workbench-up-symbolic"; + tooltip-text: _("Move to previous match (Ctrl+Shift+G)"); + sensitive: false; + clicked => $onSearchPrevious(); + } + + Button button_next { + icon-name: "re.sonny.Workbench-down-symbolic"; + tooltip-text: _("Move to next match (Ctrl+G)"); + sensitive: false; + clicked => $onSearchNext(); + } + } + + Button { + tooltip-text: _("Close Search"); + icon-name: "window-close-symbolic"; + + styles [ + "circular", + "small", + ] + + clicked => $onClose(); + } + } + } +} diff --git a/src/widgets/CodeFind.js b/src/widgets/CodeFind.js new file mode 100644 index 000000000..18b6e263e --- /dev/null +++ b/src/widgets/CodeFind.js @@ -0,0 +1,211 @@ +import GObject from "gi://GObject"; +import Gdk from "gi://Gdk"; +import Gtk from "gi://Gtk"; +import GtkSource from "gi://GtkSource"; + +import Template from "./CodeFind.blp" with { type: "uri" }; + +class Search extends Gtk.Revealer { + #previous_search_term = ""; + #buffer; + #search_settings; + #search_context; + + constructor(params = {}) { + super(params); + + this.#buffer = this._source_view.buffer; + + this.#initSearch(); + this.#trackOccurrences(); + this.#addControllers(); + } + + set source_view(obj) { + this._source_view = obj; + } + + get source_view() { + return this._source_view; + } + + #initSearch() { + this.#search_settings = new GtkSource.SearchSettings({ + case_sensitive: false, + wrap_around: true, + }); + + this.#search_context = new GtkSource.SearchContext({ + buffer: this.#buffer, + settings: this.#search_settings, + highlight: true, + }); + + this._text_search_term.connect("notify", () => { + this.#search_settings.search_text = this._text_search_term.text; + const [, , iter] = this.#buffer.get_selection_bounds(); + const [found, ,] = this.#search_context.forward(iter); + this._button_previous.sensitive = found; + this._button_next.sensitive = found; + }); + } + + #trackOccurrences() { + this.#search_context.connect("notify::occurrences-count", () => { + this.#updateInfo(); + }); + + this.#buffer.connect("mark-set", (_buffer, _iter, mark) => { + const mark_name = mark.get_name(); + if (mark_name === "insert" || mark_name === "selection_bound") { + this.#updateInfo(); + } + }); + } + + onSearchPrevious() { + this.#search(false); + } + + onSearchNext() { + this.#search(true); + } + + onClose() { + this.#endSearch(true); + } + + #addControllers() { + const controller_key_source_view = new Gtk.EventControllerKey(); + this._source_view.add_controller(controller_key_source_view); + controller_key_source_view.connect( + "key-pressed", + (_controller, keyval, _keycode, state) => { + if ( + state & Gdk.ModifierType.CONTROL_MASK && + (keyval === Gdk.KEY_f || keyval === Gdk.KEY_F) + ) { + const selected_text = this.#getSelectedText(); + if (selected_text) { + this._text_search_term.text = selected_text; + } else { + this._text_search_term.text = this.#previous_search_term; + } + this.reveal_child = true; + this._text_search_term.grab_focus(); + } else if (this.reveal_child && keyval === Gdk.KEY_Escape) { + this.#endSearch(false); + } else if ( + this.reveal_child && + state & Gdk.ModifierType.CONTROL_MASK && + (keyval === Gdk.KEY_g || keyval === Gdk.KEY_G) + ) { + this.#search(!(state & Gdk.ModifierType.SHIFT_MASK)); + } + }, + ); + + const controller_key = new Gtk.EventControllerKey(); + this.add_controller(controller_key); + + controller_key.connect( + "key-pressed", + (_controller, keyval, _keycode, state) => { + if ( + state & Gdk.ModifierType.CONTROL_MASK && + (keyval === Gdk.KEY_g || keyval === Gdk.KEY_G) + ) { + this.#search(!(state & Gdk.ModifierType.SHIFT_MASK)); + } else if ( + state & Gdk.ModifierType.SHIFT_MASK && + keyval === Gdk.KEY_Return + ) { + this.#search(false); + } else if (keyval === Gdk.KEY_Escape) { + this.#endSearch(true); + } + }, + ); + + this._text_search_term.connect("activate", () => { + this.#search(true); + }); + } + + #endSearch(grabFocus) { + this.reveal_child = false; + this.#previous_search_term = this._text_search_term.text; + this._text_search_term.text = ""; + if (grabFocus) { + this._source_view.grab_focus(); + } + } + + #getSelectedText() { + const [, match_start, match_end] = this.#buffer.get_selection_bounds(); + return this.#buffer.get_text(match_start, match_end, true); + } + + #search(isForward) { + let found, match_start, match_end, iter; + if (isForward) { + [, , iter] = this.#buffer.get_selection_bounds(); + [found, match_start, match_end] = this.#search_context.forward(iter); + } else { + [, iter] = this.#buffer.get_selection_bounds(); + [found, match_start, match_end] = this.#search_context.backward(iter); + } + if (found) { + this.#selectOccurence(match_start, match_end); + } + } + + #selectOccurence(match_start, match_end) { + this.#buffer.select_range(match_start, match_end); + this._source_view.scroll_mark_onscreen(this.#buffer.get_insert()); + } + + #updateInfo() { + if (this._text_search_term.text) { + const [, match_start, match_end] = this.#buffer.get_selection_bounds(); + const count = this.#search_context.get_occurrences_count(); + const index = this.#search_context.get_occurrence_position( + match_start, + match_end, + ); + + if (count < 1) { + this._label_info.label = ""; + } else if (index === -1) { + this._label_info.label = `${count} occurences`; + } else { + this._label_info.label = `${index} of ${count}`; + } + } else { + this._label_info.label = ""; + } + } +} + +export default GObject.registerClass( + { + GTypeName: "CodeFind", + Template, + InternalChildren: [ + "text_search_term", + "label_info", + "button_previous", + "button_next", + ], + Properties: { + source_view: GObject.ParamSpec.object( + "source-view", + "SourceView", + "The SourceView that will be searched", + GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT_ONLY, + Gtk.Widget.$gtype, + ), + }, + }, + Search, +); diff --git a/src/widgets/CodeView.blp b/src/widgets/CodeView.blp index cd6fc9292..fbfbc0d0c 100644 --- a/src/widgets/CodeView.blp +++ b/src/widgets/CodeView.blp @@ -1,13 +1,26 @@ using Gtk 4.0; using GtkSource 5; -template $CodeView : Gtk.Widget { - layout-manager: BinLayout {}; +template $CodeView: Gtk.Widget { + layout-manager: BoxLayout { + orientation: vertical; + }; + vexpand: true; + ScrolledWindow scrolled_window { vexpand: true; + GtkSource.View source_view { - buffer: GtkSource.Buffer {}; + buffer: GtkSource.Buffer { + implicit-trailing-newline: false; + }; + + [internal-child completion] + GtkSource.Completion { + select-on-show: true; + } + monospace: true; auto-indent: true; highlight-current-line: true; @@ -20,4 +33,9 @@ template $CodeView : Gtk.Widget { tab-width: 2; } } + + $CodeFind code_find { + vexpand: false; + source-view: source_view; + } } diff --git a/src/widgets/CodeView.js b/src/widgets/CodeView.js index 6259c83b9..7d9f452b9 100644 --- a/src/widgets/CodeView.js +++ b/src/widgets/CodeView.js @@ -2,15 +2,26 @@ import GObject from "gi://GObject"; import Source from "gi://GtkSource"; import Gtk from "gi://Gtk"; import Pango from "gi://Pango"; -import { rangeEquals, diagnostic_severities } from "../lsp/LSP.js"; +import { + CompletionItemKind, + completion_item_kinds, + diagnostic_severities, +} from "../lsp/LSP.js"; import Gdk from "gi://Gdk"; import GLib from "gi://GLib"; import Adw from "gi://Adw"; +import Workbench from "gi://Workbench"; +import { gettext as _ } from "gettext"; import Template from "./CodeView.blp" with { type: "uri" }; import WorkbenchHoverProvider from "../WorkbenchHoverProvider.js"; import { registerClass } from "../overrides.js"; +import { getItersAtRange } from "../lsp/sourceview.js"; + +import "./CodeFind.js"; +import { once } from "../../troll/src/async.js"; +import { sortBlueprintProposals } from "../langs/blueprint/blueprint.js"; Source.init(); @@ -18,20 +29,34 @@ const scheme_manager = Source.StyleSchemeManager.get_default(); const style_manager = Adw.StyleManager.get_default(); class CodeView extends Gtk.Widget { + lspc = null; + constructor({ language_id, ...params } = {}) { super(params); this.source_view = this._source_view; this.buffer = this._source_view.buffer; + // TODO: Investigate why the Blueprint defintion does not behave as intended + // transition-type: slide_up; + // https://github.com/workbenchdev/Workbench/pull/853/files#r1443560736 + this._code_find.transition_type = Gtk.RevealerTransitionType.SLIDE_UP; + + this._code_find.connect("notify::reveal-child", () => { + if (this._code_find.reveal_child === false) { + this.source_view.grab_focus(); + } + }); try { this.language = language_manager.get_language(language_id); this.buffer.set_language(this.language); this.#prepareHoverProvider(); + // this.#prepareHover(); + this.#prepareCompletionProvider(); this.#prepareSignals(); this.#updateStyle(); } catch (err) { - logError(err); + console.error(err); throw err; } } @@ -48,7 +73,6 @@ class CodeView extends Gtk.Widget { } #onUpdate = () => { - this.clearDiagnostics(); this.emit("changed"); }; @@ -119,7 +143,39 @@ class CodeView extends Gtk.Widget { } } - replaceText(text, scroll_start = true) { + saveState() { + const { buffer, source_view } = this; + const { cursor_position } = buffer; + const iter_cursor = buffer.get_iter_at_offset(cursor_position); + const line_number = iter_cursor.get_line(); + const line_offset = iter_cursor.get_line_offset(); + const h_scroll_position = source_view.hadjustment.value; + const v_scroll_position = source_view.vadjustment.value; + + return { + line_number, + line_offset, + h_scroll_position, + v_scroll_position, + }; + } + + restoreState(state) { + const { line_number, line_offset, h_scroll_position, v_scroll_position } = + state; + + const { buffer, source_view } = this; + + // https://matrix.to/#/!aUhETchlgthwWVQzhi:matrix.org/$1701651785113NJUnw:gnome.org + GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE, () => { + source_view.hadjustment.value = h_scroll_position; + source_view.vadjustment.value = v_scroll_position; + const [, iter] = buffer.get_iter_at_line_offset(line_number, line_offset); + buffer.place_cursor(iter); + }); + } + + replaceText(text, restore_state = false) { // this is against GtkSourceView not accounting an empty-string to empty-string change as user-edit if (text === "") { text = " "; @@ -127,11 +183,18 @@ class CodeView extends Gtk.Widget { const { buffer } = this; + const state = restore_state && this.saveState(); + buffer.begin_user_action(); buffer.delete(buffer.get_start_iter(), buffer.get_end_iter()); buffer.insert(buffer.get_start_iter(), text, -1); buffer.end_user_action(); - scroll_start && buffer.place_cursor(buffer.get_start_iter()); + + if (state) { + this.restoreState(state); + } else { + buffer.place_cursor(buffer.get_start_iter()); + } } #updateStyle = () => { @@ -140,6 +203,83 @@ class CodeView extends Gtk.Widget { ); this.buffer.set_style_scheme(scheme); }; + + #onCompletionRequest = (provider, request) => { + if (!this.lspc) { + request.state_changed(Workbench.RequestState.CANCELLED); + return; + } + + const [success, , end] = request.context.get_bounds(); + if (!success) { + request.state_changed(Workbench.RequestState.CANCELLED); + return; + } + + this.lspc + .completion(end) + .then((result) => { + result + .map((item) => new Proposal(item)) + .sort( + this.language_id === "blueprint" + ? sortBlueprintProposals + : (a, b) => a.sortText.localeCompare(b.sortText), + ) + .forEach((proposal) => request.add(proposal)); + + const expression = Gtk.PropertyExpression.new(Proposal, null, "label"); + const filter = new Gtk.StringFilter({ + expression, + ignore_case: false, + match_mode: Gtk.StringFilterMatchMode.PREFIX, + search: request.context.get_word(), + }); + const filter_list_model = new Gtk.FilterListModel({ + model: request, + filter, + }); + request.context.filter = filter; + + request.state_changed(Workbench.RequestState.COMPLETE); + request.context.set_proposals_for_provider(provider, filter_list_model); + }) + .catch((err) => { + request.state_changed(Workbench.RequestState.CANCELLED); + console.error(err); + }); + }; + + #prepareCompletionProvider() { + const completion_provider = new CompletionProvider(); + + completion_provider.connect( + "completion-request", + this.#onCompletionRequest, + ); + + const completion = this.source_view.get_completion(); + completion.add_provider(completion_provider); + + // completion.connect("show", () => { + // console.log("completion show"); + // }); + + // completion.connect("hide", () => { + // console.log("completion hide"); + // }); + } + + #prepareHover() { + this.buffer.connect("notify::cursor-position", (self) => { + if (!this.lspc) return; + const iter_cursor = self.get_iter_at_offset(self.cursor_position); + this.lspc + .hover(iter_cursor) + .then((result) => console.log(result)) + .catch(console.error); + }); + } } export default registerClass( @@ -158,7 +298,7 @@ export default registerClass( Signals: { changed: {}, }, - InternalChildren: ["source_view"], + InternalChildren: ["source_view", "code_find"], }, CodeView, ); @@ -168,29 +308,6 @@ language_manager.append_search_path( "resource:///re/sonny/Workbench/language-specs", ); -function getItersAtRange(buffer, { start, end }) { - let start_iter; - let end_iter; - - // Apply the tag on the whole line - // if diagnostic start and end are equals such as - // Blueprint-Error 13:12 to 13:12 Could not determine what kind of syntax is meant here - if (rangeEquals(start, end)) { - [, start_iter] = buffer.get_iter_at_line(start.line); - [, end_iter] = buffer.get_iter_at_line(end.line); - end_iter.forward_to_line_end(); - start_iter.forward_find_char((char) => char !== "", end_iter); - } else { - [, start_iter] = buffer.get_iter_at_line_offset( - start.line, - start.character, - ); - [, end_iter] = buffer.get_iter_at_line_offset(end.line, end.character); - } - - return [start_iter, end_iter]; -} - function logLanguageServerDiagnostic(language, { range, message, severity }) { GLib.log_structured(language, GLib.LogLevelFlags.LEVEL_DEBUG, { MESSAGE: `${language}-${diagnostic_severities[severity]} ${ @@ -209,6 +326,149 @@ function connect_signals(target, signals) { }); } +// eslint-disable-next-line no-unused-vars function disconnect_signals(target, handler_ids) { handler_ids.forEach((handler_id) => target.disconnect(handler_id)); } + +const CompletionProvider = GObject.registerClass( + { + GTypeName: "CompletionProvider", + Implements: [Source.CompletionProvider], + }, + class CompletionProvider extends Workbench.CompletionProvider { + vfunc_activate(context, proposal) { + const { completion } = context; + const { view } = completion; + const buffer = completion.get_buffer(); + + const promise = showCompletionAfterActivation({ + completion, + proposal, + buffer, + }); + + buffer.begin_user_action(); + const [success, start, end] = context.get_bounds(); + if (success) buffer.delete(start, end); + view.push_snippet( + Source.Snippet.new_parsed(proposal.get_typed_text()), + null, + ); + buffer.end_user_action(); + + promise + ?.then(() => { + view.emit("show-completion"); + }) + .catch(console.error); + } + + vfunc_refilter(context, _model) { + const word = context.get_word(); + context.filter.search = word; + } + + vfunc_display(context, proposal, cell) { + switch (cell.get_column()) { + // case Source.CompletionColumn.ICON: + // cell.set_icon_name("lang-class-symbolic"); + // break; + case Source.CompletionColumn.BEFORE: + cell.set_text( + getProposalKindDisplay( + proposal, + context.completion.view.buffer.language.id, + ), + ); + break; + case Source.CompletionColumn.TYPED_TEXT: + if (proposal.deprecated) { + cell.set_markup( + `<span strikethrough="true">${proposal.label}</span>`, + ); + } else { + cell.set_text(proposal.label); + } + break; + case Source.CompletionColumn.AFTER: + cell.set_text(proposal.deprecated ? _("Deprecated") : null); + break; + case Source.CompletionColumn.COMMENT: + cell.set_text(proposal.detail); + break; + // case Source.CompletionColumn.DETAILS: + // cell.set_text(null); + // cell.set_text(proposal.documentation); + // break; + } + } + + vfunc_is_trigger(iter, ch) { + if (ch !== ".") return false; + const success = iter.backward_char(); + if (!success) return false; + return iter.ends_word(); + } + }, +); + +const Proposal = GObject.registerClass( + { + Implements: [Source.CompletionProposal], + Properties: { + label: GObject.ParamSpec.string( + "label", + "Label", + "The label of the proposal", + GObject.ParamFlags.READABLE, + null, + ), + }, + }, + class Proposal extends GObject.Object { + constructor(completion_proposal) { + super(); + this.completion = completion_proposal; + this.kind = completion_proposal.kind; + this.sortText = completion_proposal.sortText || completion_proposal.label; + this.deprecated = completion_proposal.deprecated === true; + this.documentation = completion_proposal.documentation?.value || null; + this.detail = completion_proposal.detail || null; + } + + get label() { + return this.completion.label; + } + + vfunc_get_typed_text() { + return this.completion.insertText || this.completion.label; + } + }, +); + +function getProposalKindDisplay(proposal, language_id) { + if ( + proposal.kind === CompletionItemKind.Event && + language_id === "blueprint" + ) { + return _("Signal"); + } + return completion_item_kinds[proposal.kind] || null; +} + +function showCompletionAfterActivation({ completion, proposal, buffer }) { + if (buffer.language.id !== "blueprint") return null; + + if ( + ![ + CompletionItemKind.Class, + CompletionItemKind.Module, + CompletionItemKind.Property, + ].includes(proposal.kind) + ) { + return null; + } + + return once(completion, "hide"); +} diff --git a/src/widgets/Modal.blp b/src/widgets/Modal.blp deleted file mode 100644 index ffa487d65..000000000 --- a/src/widgets/Modal.blp +++ /dev/null @@ -1,22 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -template $Modal : Adw.Window { - title: ""; - modal: true; - hide-on-close: true; - - content: Box { - vexpand: true; - orientation: vertical; - - Adw.HeaderBar { - styles ["flat"] - } - - Box container { - vexpand: true; - orientation: vertical; - } - }; -} diff --git a/src/widgets/Modal.js b/src/widgets/Modal.js deleted file mode 100644 index 66096b508..000000000 --- a/src/widgets/Modal.js +++ /dev/null @@ -1,57 +0,0 @@ -import GObject from "gi://GObject"; -import Gtk from "gi://Gtk"; -import Adw from "gi://Adw"; - -import Template from "./Modal.blp" with { type: "uri" }; -import { registerClass } from "../overrides.js"; - -const trigger = Gtk.ShortcutTrigger.parse_string("Escape"); - -class Modal extends Adw.Window { - #shortcut; - - constructor(params = {}) { - super(params); - - this._container.append(this.child); - - this.#shortcut = new Gtk.Shortcut({ - trigger, - action: Gtk.CallbackAction.new(this.#close_cb), - }); - - // Gtk.Widget.add_binding is missing in GJS - Gtk.Widget.add_shortcut.call(Modal, this.#shortcut); - } - - set child(obj) { - this._child = obj; - } - - get child() { - return this._child; - } - - #close_cb = () => { - this.close(); - return true; - }; -} - -export default registerClass( - { - GTypeName: "Modal", - Template, - InternalChildren: ["container"], - Properties: { - child: GObject.ParamSpec.object( - "child", - "", - "", - GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT_ONLY, - Gtk.Widget.$gtype, - ), - }, - }, - Modal, -); diff --git a/src/window.blp b/src/window.blp index 79abf8b48..2857a2826 100644 --- a/src/window.blp +++ b/src/window.blp @@ -1,432 +1,551 @@ using Gtk 4.0; using Adw 1; using Vte 3.91; -using GtkSource 5; - -Gtk.ApplicationWindow window { - default-width: 1024; - default-height: 768; - maximized: false; - titlebar: Gtk.HeaderBar { - [start] - Button button_library { - child: Adw.ButtonContent { - icon-name: "library-symbolic"; - label: _("_Library"); - use-underline: true; - }; - action-name: "app.library"; - tooltip-text: _("Open Library of Demos and Examples (Ctrl+Shift+O)"); - } - [title] - Box { - spacing: 6; - orientation: horizontal; - homogeneous: true; +Adw.ApplicationWindow window { + default-width: 1920; + default-height: 1200; - ToggleButton button_code { - child: Box { - halign: center; + Adw.ToolbarView { + top-bar-style: raised; - Image { - icon-name: "re.sonny.Workbench-code-symbolic"; - } - - Label { - label: _("_Code"); - use-underline: true; - } + [top] + Gtk.HeaderBar { + [start] + Button button_library { + child: Adw.ButtonContent { + icon-name: "re.sonny.Workbench-library-symbolic"; + label: _("_Library"); + use-underline: true; }; - styles ["flat", "view-toggler"] + action-name: "app.library"; + tooltip-text: _("Open Library of Demos and Examples (Ctrl+Shift+O)"); } - ToggleButton button_style { - child: Box { - halign: center; + [title] + Box { + spacing: 6; + orientation: horizontal; + homogeneous: true; - Image { - icon-name: "larger-brush-symbolic"; - } + ToggleButton button_code { + child: Box { + halign: center; - Label { - label: _("_Style"); - use-underline: true; - } - }; + Image { + icon-name: "re.sonny.Workbench-code-symbolic"; + } - styles ["flat", "view-toggler"] - } + Label { + label: _("_Code"); + use-underline: true; + } + }; - ToggleButton button_ui { - child: Box { - halign: center; + styles [ + "flat", + "view-toggler", + ] + } - Image { - icon-name: "re.sonny.Workbench-ui-symbolic"; - } + ToggleButton button_style { + child: Box { + halign: center; - Label { - label: _("_UI"); - use-underline: true; - } - }; + Image { + icon-name: "re.sonny.Workbench-larger-brush-symbolic"; + } - styles ["flat", "view-toggler"] - } + Label { + label: _("_Style"); + use-underline: true; + } + }; + + styles [ + "flat", + "view-toggler", + ] + } - ToggleButton button_preview { - child: Box { - halign: center; + ToggleButton button_ui { + child: Box { + halign: center; - Image { - icon-name: "re.sonny.Workbench-preview-symbolic"; - } + Image { + icon-name: "re.sonny.Workbench-ui-symbolic"; + } - Label { - label: _("_Preview"); - use-underline: true; - } + Label { + label: _("_UI"); + use-underline: true; + } + }; + + styles [ + "flat", + "view-toggler", + ] + } + + ToggleButton button_preview { + child: Box { + halign: center; + + Image { + icon-name: "re.sonny.Workbench-preview-symbolic"; + } + + Label { + label: _("_Preview"); + use-underline: true; + } + }; + + styles [ + "flat", + "view-toggler", + ] + } + } + + [end] + MenuButton button_menu { + menu-model: menu_app; + icon-name: "open-menu-symbolic"; + tooltip-text: _("Main Menu"); + primary: true; + } + + [end] + Button button_run { + child: Adw.ButtonContent { + icon-name: "media-playback-start-symbolic"; + label: _("_Run"); + use-underline: true; }; - styles ["flat", "view-toggler"] + action-name: "win.run"; + tooltip-text: _("Run (Ctrl+⏎)"); + + styles [ + "suggested-action", + ] } } - [end] - MenuButton button_menu { - menu-model: menu_app; - icon-name: "open-menu-symbolic"; - tooltip-text: _("Main Menu"); - primary: true; - } + // Not used currently but we keep it in case we need it + Adw.ToastOverlay toast_overlay { + Paned paned { + orientation: vertical; + shrink-start-child: false; + shrink-end-child: false; + resize-start-child: true; + resize-end-child: true; + + [start] + Box { + orientation: horizontal; + vexpand: true; + homogeneous: true; + + Adw.ToolbarView panel_code { + name: "panel_code"; + + [top] + CenterBox { + styles [ + "toolbar", + "panel_header", + ] + + height-request: 46; + + [start] + Box { + Label { + label: _("<b>Code</b>"); + use-markup: true; + + styles [ + "dim-label", + ] + } - [end] - Button button_run { - child: Adw.ButtonContent { - icon-name: "media-playback-start-symbolic"; - label: _("_Run"); - use-underline: true; - }; - action-name: "win.run"; - tooltip-text: _("Run (Ctrl+⏎)"); - styles ["suggested-action"] - } - }; + Separator { + styles [ + "spacer", + ] + } - [content] - // Not used currently but we keep it in case we need it - Adw.ToastOverlay toast_overlay { - Paned paned { - orientation: vertical; - shrink-start-child: false; - shrink-end-child: false; - resize-start-child: true; - resize-end-child: true; + DropDown dropdown_code_lang { + model: StringList {}; - [start] - Box { - orientation: horizontal; - vexpand: true; - homogeneous: true; + tooltip-text: _("Switch Document"); + } + } + } - Box panel_code { - name: "panel_code"; - orientation: vertical; + Separator {} - CenterBox { - styles ["toolbar", "panel_header"] + Stack stack_code { + hexpand: true; - [start] - Box { - Label { - label: _("<b>Code</b>"); - use-markup: true; - styles ["dim-label"] + StackPage { + name: 'JavaScript'; + + child: $CodeView code_view_javascript { + language_id: 'js'; + }; } - Separator { - styles ["spacer"] + StackPage { + name: 'Vala'; + + child: $CodeView code_view_vala { + language_id: 'vala'; + }; } - DropDown dropdown_code_lang { - model: StringList { - strings [ - "JavaScript", - "Vala", - ] + StackPage { + name: 'Rust'; + + child: $CodeView code_view_rust { + language_id: 'rust'; }; - tooltip-text: _("Switch Document"); } - } - } - Separator { - } + StackPage { + name: 'Python'; - Stack stack_code { - hexpand: true; - StackPage { - name: 'JavaScript'; - child: $CodeView code_view_javascript { - language_id: 'js'; - }; - } - StackPage { - name: 'Vala'; - child: $CodeView code_view_vala { - language_id: 'vala'; - }; + child: $CodeView code_view_python { + language_id: 'python3'; + }; + } + + StackPage { + name: 'TypeScript'; + + child: $CodeView code_view_typescript { + language_id: 'typescript'; + }; + } } } - } - Box panel_style { - name: "panel_style"; - orientation: vertical; + Adw.ToolbarView panel_style { + name: "panel_style"; - CenterBox { - styles ["toolbar", "panel_header"] + [top] + CenterBox { + styles [ + "toolbar", + "panel_header", + ] - [start] - Label { - label: _("<b>Style CSS</b>"); - use-markup: true; - styles ["dim-label"] + height-request: 46; + + [start] + Label { + label: _("<b>Style CSS</b>"); + use-markup: true; + + styles [ + "dim-label", + ] + } } - } - Separator { - } + Separator {} - $CodeView code_view_css { - language_id: 'css'; + $CodeView code_view_css { + language_id: 'css'; + } } - } - Box panel_ui { - name: "panel_ui"; - orientation: vertical; + Adw.ToolbarView panel_ui { + name: "panel_ui"; - CenterBox { - styles ["toolbar", "panel_header"] + [top] + CenterBox { + styles [ + "toolbar", + "panel_header", + ] - [start] - Box { - Label { - label: _("<b>UI</b>"); - use-markup: true; - styles ["dim-label"] - } + height-request: 46; - Separator { - styles ["spacer"] - } + [start] + Box { + Label { + label: _("<b>UI</b>"); + use-markup: true; - DropDown dropdown_ui_lang { - model: StringList { - strings [ - "XML", - "Blueprint", + styles [ + "dim-label", ] - }; - tooltip-text: _("Convert and Switch Syntax"); - } - Button button_ui_experimental_blueprint { - icon-name: "applications-science-symbolic"; - tooltip-text: _("Information About Blueprint"); + } + + Separator { + styles [ + "spacer", + ] + } + + DropDown dropdown_ui_lang { + model: StringList { + strings [ + "Blueprint", + "XML", + ] + }; + + tooltip-text: _("Convert and Switch Syntax"); + } + + Button button_ui_experimental_blueprint { + icon-name: "applications-science-symbolic"; + tooltip-text: _("Information About Blueprint"); + } } } - } - Separator { - } + Separator {} - Stack stack_ui { - hexpand: true; + Stack stack_ui { + hexpand: true; - StackPage { - name: 'blueprint'; - child: $CodeView code_view_blueprint { - language_id: 'blueprint'; - }; - } - StackPage { - name: 'xml'; - child: $CodeView code_view_xml { - language_id: 'xml'; - }; + StackPage { + name: 'blueprint'; + + child: $CodeView code_view_blueprint { + language_id: 'blueprint'; + }; + } + + StackPage { + name: 'xml'; + + child: $CodeView code_view_xml { + language_id: 'xml'; + }; + } } } - } - Box panel_preview { - orientation: vertical; + Adw.ToolbarView panel_preview { + name: "panel_preview"; - CenterBox { - styles ["toolbar", "panel_header"] + [top] + CenterBox { + styles [ + "toolbar", + "panel_header", + ] - [start] - MenuButton { - halign: center; - valign: center; - label: _("Preview"); - styles ["flat"] - menu-model: preview_menu; - } + height-request: 46; + + [start] + MenuButton { + halign: center; + valign: center; + label: _("Preview"); - [center] - DropDown dropdown_preview_align { - visible: false; - model: StringList { - strings [ - _("Fill"), - _("Center"), + styles [ + "flat", ] - }; - tooltip-text: _("Select Preview Mode"); - } - [end] - Button button_screenshot { - icon-name: "re.sonny.Workbench-screenshot-symbolic"; - tooltip-text: _("Screenshot Preview"); - accessibility { - label: _("Screenshot Preview"); + menu-model: preview_menu; } - } - } - Separator { - } + [center] + DropDown dropdown_preview_align { + visible: false; - Stack stack_preview { - StackPage { - name: "inline"; - child: Box { - ScrolledWindow { - name: "workbench_output"; - vexpand: true; - hexpand: true; - - child: Viewport output { - halign: fill; - valign: fill; - styles ["background"] - }; - } + model: StringList { + strings [ + _("Fill"), + _("Center"), + ] + }; - Separator { + tooltip-text: _("Select Preview Mode"); + } + + [end] + Button button_screenshot { + icon-name: "re.sonny.Workbench-screenshot-symbolic"; + tooltip-text: _("Screenshot Preview"); + + accessibility { + label: _("Screenshot Preview"); } - }; + } } - StackPage { - name: "open_window"; - child: Adw.StatusPage { - title: _("Windowed Preview"); - description: _("This interface can only be previewed as a separate window.\nWe recommend using “Always on Top”."); - icon-name: "multitasking-windows-symbolic"; + Separator {} + + Stack stack_preview { + StackPage { + name: "inline"; + + child: Box { + ScrolledWindow { + vexpand: true; + hexpand: true; - Box { - halign: center; + child: Viewport output { + halign: fill; + valign: fill; - Button button_open_preview_window { - label: _("Show Preview Window"); - styles ["pill", "suggested-action"] + styles [ + "background", + ] + }; } - } - }; - } - StackPage { - name: "close_window"; - child: Adw.StatusPage { - title: _("Windowed Preview"); - description: _("This interface can only be previewed as a separate window.\nWe recommend using “Always on Top”."); - icon-name: "multitasking-windows-symbolic"; + Separator {} + }; + } + + StackPage { + name: "open_window"; + + child: Adw.StatusPage { + title: _("Windowed Preview"); + description: _( + "This interface can only be previewed as a separate window.\nWe recommend using “Always on Top”." + ); + icon-name: "re.sonny.Workbench-multitasking-windows-symbolic"; - Box { - halign: center; + Box { + halign: center; - Button button_close_preview_window { - label: _("Close Preview Window"); - styles ["pill"] + Button button_open_preview_window { + label: _("Show Preview Window"); + + styles [ + "pill", + "suggested-action", + ] + } } - } - }; + }; + } + + StackPage { + name: "close_window"; + + child: Adw.StatusPage { + title: _("Windowed Preview"); + description: _( + "This interface can only be previewed as a separate window.\nWe recommend using “Always on Top”." + ); + icon-name: "re.sonny.Workbench-multitasking-windows-symbolic"; + + Box { + halign: center; + + Button button_close_preview_window { + label: _("Close Preview Window"); + + styles [ + "pill", + ] + } + } + }; + } } } - } - Box panel_placeholder { - visible: false; - name: "placeholder"; - halign: center; - valign: center; + Box panel_placeholder { + visible: false; + name: "placeholder"; + halign: center; + valign: center; - Image { - icon-name: "re.sonny.Workbench-placeholder-symbolic"; - pixel-size: 512; + Image { + icon-name: "re.sonny.Workbench-placeholder-symbolic"; + pixel-size: 512; + } } } - } - [end] - Box { - orientation: vertical; + [end] + Adw.ToolbarView { + name: "panel_devtools"; - CenterBox toolbar_devtools { - name: "toolbar_devtools"; - [start] - Box { - styles ["toolbar"] - - ToggleButton button_console { - child: Adw.ButtonContent { - icon-name: "terminal-symbolic"; - label: _("C_onsole"); - use-underline: true; - }; - action-name: "win.console"; - tooltip-text: _("Show Logs (Ctrl+Shift+K)"); + [top] + CenterBox toolbar_devtools { + name: "toolbar_devtools"; + + styles [ + "toolbar", + "panel_header", + ] + + [start] + Box { + spacing: 6; + + ToggleButton button_console { + child: Adw.ButtonContent { + icon-name: "re.sonny.Workbench-terminal-symbolic"; + label: _("C_onsole"); + use-underline: true; + }; + + action-name: "win.console"; + tooltip-text: _("Show Logs (Ctrl+Shift+K)"); + } + + Button button_inspector { + child: Adw.ButtonContent { + icon-name: "find-location-symbolic"; + label: _("_Inspector"); + use-underline: true; + }; + + tooltip-text: _("Open GTK Inspector (Ctrl+Shift+I)"); + } } - Button button_inspector { - child: Adw.ButtonContent { - icon-name: "find-location-symbolic"; - label: _("_Inspector"); - use-underline: true; - }; - tooltip-text: _("Open GTK Inspector (Ctrl+Shift+I)"); + [end] + Box { + Button button_clear { + child: Adw.ButtonContent { + icon-name: "re.sonny.Workbench-eraser4-symbolic"; + label: _("Cl_ear"); + use-underline: true; + }; + + action-name: "win.clear"; + tooltip-text: _("Clear Console (Ctrl+K)"); + } } } - [end] - Box { - styles ["toolbar"] - - Button button_clear { - child: Adw.ButtonContent { - icon-name: "eraser4-symbolic"; - label: _("Cl_ear"); - use-underline: true; - }; - action-name: "win.clear"; - tooltip-text: _("Clear Console (Ctrl+K)"); + Box devtools { + ScrolledWindow { + Vte.Terminal terminal { + scroll-unit-is-pixels: true; + enable-fallback-scrolling: false; + hexpand: true; + input-enabled: false; + scrollback-lines: 512; + } } - } - } - Box devtools { - ScrolledWindow { - Vte.Terminal terminal { - scroll-unit-is-pixels: true; - enable-fallback-scrolling: false; - hexpand: true; - input-enabled: false; - scrollback-lines: 512; + GestureClick gesture_console_click { + button: 3; + } + + PopoverMenu popover_menu_console { + menu-model: menu_console; + has-arrow: false; + halign: start; } } } @@ -435,21 +554,33 @@ Gtk.ApplicationWindow window { } } -$Modal modal_blueprint_experimental { - default-width: 368; - default-height: 480; - - child: Adw.StatusPage { - vexpand: true; - description: _("Future versions may have breaking syntax."); - title: _("Blueprint is\nExperimental"); - icon-name: "re.sonny.Workbench-beaker"; - Button button_blueprint_documentation { - halign: center; - label: _("Documentation"); - styles ["suggested-action", "pill"] - } - }; +Adw.Dialog dialog_blueprint_experimental { + content-width: 368; + content-height: 480; + + Adw.ToolbarView { + extend-content-to-top-edge: true; + + [top] + Adw.HeaderBar {} + + content: Adw.StatusPage { + vexpand: true; + description: _("Future versions may have breaking syntax"); + title: _("Blueprint is\nExperimental"); + icon-name: "re.sonny.Workbench-beaker"; + + Button button_blueprint_documentation { + halign: center; + label: _("Documentation"); + + styles [ + "suggested-action", + "pill", + ] + } + }; + } } menu menu_app { @@ -460,6 +591,11 @@ menu menu_app { } section { + item { + label: _("New Project"); + action: "app.new"; + } + item { label: _("Open Project…"); action: "app.open"; @@ -468,16 +604,22 @@ menu menu_app { submenu { label: _("Bookmarks"); + section { label: _("Learn"); + item { + label: _("API References"); + action: "app.open_uri"; + target: "https://apps.gnome.org/Biblioteca/"; + } + item { label: _("Developer Documentation"); action: "app.open_uri"; target: "https://developer.gnome.org/documentation/index.html"; } - item { label: _("Human Interface Guidelines"); action: "app.open_uri"; @@ -496,15 +638,27 @@ menu menu_app { target: "https://wiki.gnome.org/Projects/Vala"; } + item { + label: _("Rust"); + action: "app.open_uri"; + target: "https://gtk-rs.org"; + } + + item { + label: _("Python"); + action: "app.open_uri"; + target: "https://pygobject.readthedocs.io"; + } + item { label: _("Blueprint"); action: "app.open_uri"; - target: "https://gitlab.gnome.org/jwestman/blueprint-compiler"; + target: "https://gnome.pages.gitlab.gnome.org/blueprint-compiler"; } } section { - label: _("Get help"); + label: _("Get Help"); item { label: _("Discourse"); @@ -520,11 +674,6 @@ menu menu_app { } } - item { - label: _("Icon Library"); - action: "app.icon_library"; - } - submenu { label: _("Platform Tools"); @@ -549,8 +698,20 @@ menu menu_app { } item { - label: _("Documentation"); - action: "app.documentation"; + label: _("Extensions"); + action: "win.extensions"; + } + + item { + label: _("Permissions"); + action: "win.permissions"; + } + + section { + item { + label: _("Reveal in Files"); + action: "win.reveal"; + } } section { @@ -575,16 +736,17 @@ menu preview_menu { item (_("Safe Mode"), "win.safe-mode") } -Adw.MessageDialog message_dialog_save_project { +Adw.AlertDialog alert_dialog_save_project { responses [ cancel: _("Cancel"), discard: _("Discard") destructive, save: _("Save") suggested disabled, ] + close-response: "cancel"; - modal: true; heading: _("Save Project?"); body: _("This session has not been saved. Unsaved sessions will be permanently lost."); + extra-child: Box { margin-top: 12; orientation: vertical; @@ -592,7 +754,10 @@ Adw.MessageDialog message_dialog_save_project { ListBox { selection-mode: none; - styles ["boxed-list"] + + styles [ + "boxed-list", + ] Adw.EntryRow row_project_name { title: _("Project Name"); @@ -604,11 +769,14 @@ Adw.MessageDialog message_dialog_save_project { ListBox { selection-mode: none; - styles ["boxed-list"] + + styles [ + "boxed-list", + ] Adw.ActionRow row_project_location { title: _("Location"); - subtitle: "Select Location"; + subtitle: _("Select Location"); activatable-widget: button_location; } } @@ -617,8 +785,13 @@ Adw.MessageDialog message_dialog_save_project { margin-start: 12; margin-top: 12; halign: start; - label: _("The project will be created in a new subdirectory."); - styles ["dim-label", "caption"] + label: _("The project will be created in a new subdirectory"); + + styles [ + "dim-label", + "caption", + ] + justify: left; } } @@ -628,5 +801,27 @@ Adw.MessageDialog message_dialog_save_project { Button button_location { icon-name: "folder-symbolic"; valign: center; - styles ["flat"] + + styles [ + "flat", + ] +} + +menu menu_console { + section { + item { + label: _("Copy"); + action: "win.console_copy"; + } + + item { + label: _("Select All"); + action: "win.console_select_all"; + } + + item { + label: _("Clear"); + action: "win.clear"; + } + } } diff --git a/src/window.js b/src/window.js index 71a36b122..7c254814a 100644 --- a/src/window.js +++ b/src/window.js @@ -3,40 +3,52 @@ import GLib from "gi://GLib"; import GObject from "gi://GObject"; import Gio from "gi://Gio"; import Adw from "gi://Adw"; -import Vte from "gi://Vte"; -import { gettext as _ } from "gettext"; -import * as xml from "./langs/xml/xml.js"; -import { languages } from "./util.js"; -import Document from "./Document.js"; +import { quitOnLastWindowClose } from "./util.js"; +import { languages } from "./common.js"; import PanelUI from "./PanelUI.js"; import PanelCode from "./PanelCode.js"; import PanelStyle from "./PanelStyle.js"; import Devtools from "./Devtools.js"; -import prettier from "./lib/prettier.js"; -import prettier_babel from "./lib/prettier-babel.js"; -import prettier_postcss from "./lib/prettier-postcss.js"; import Previewer from "./Previewer/Previewer.js"; -import Compiler from "./langs/vala/Compiler.js"; +import JavascriptBuilder from "./langs/javascript/Builder.js"; +import ValaCompiler from "./langs/vala/Compiler.js"; +import RustCompiler from "./langs/rust/Compiler.js"; +import PythonBuilder from "./langs/python/Builder.js"; +import TypeScriptCompiler from "./langs/typescript/Compiler.js"; import ThemeSelector from "../troll/src/widgets/ThemeSelector.js"; +import { persistWindowState } from "../troll/src/util.js"; -import resource from "./window.blp"; - -import "./icons/re.sonny.Workbench-beaker.svg" with { type: "icon" }; -import "./icons/re.sonny.Workbench-code-symbolic.svg" with { type: "icon" }; -import "./icons/re.sonny.Workbench-placeholder-symbolic.svg" with { - type: "icon", -}; -import "./icons/re.sonny.Workbench-preview-symbolic.svg" with { type: "icon" }; -import "./icons/re.sonny.Workbench-ui-symbolic.svg" with { type: "icon" }; -import "./icons/re.sonny.Workbench-screenshot-symbolic.svg" with { - type: "icon", -}; - -import "./widgets/Modal.js"; import "./widgets/CodeView.js"; -import { deleteSession, saveSessionAsProject } from "./sessions.js"; +import { + deleteSession, + removeFromRecentProjects, + saveSessionAsProject, +} from "./sessions.js"; +import { + action_extensions, + Extensions, + isRustAvailable, + isTypeScriptAvailable, + isTypeScriptEnabled, + isValaAvailable, +} from "./Extensions/Extensions.js"; +import { + hasNetworkPermission, + Permissions, + showPermissionsDialog, +} from "./Permissions/Permissions.js"; +import { JavaScriptDocument } from "./langs/javascript/JavaScriptDocument.js"; +import { BlueprintDocument } from "./langs/blueprint/BlueprintDocument.js"; +import { CssDocument } from "./langs/css/CssDocument.js"; +import { RustDocument } from "./langs/rust/RustDocument.js"; +import { PythonDocument } from "./langs/python/PythonDocument.js"; +import { XmlDocument } from "./langs/xml/XmlDocument.js"; +import { ValaDocument } from "./langs/vala/ValaDocument.js"; +import { TypeScriptDocument } from "./langs/typescript/TypeScriptDocument.js"; + +import resource from "./window.blp"; const style_manager = Adw.StyleManager.get_default(); @@ -45,9 +57,7 @@ export default function Window({ application, session }) { languages.map((lang) => [lang.id, { ...lang }]), ); - const { file, settings } = session; - - Vte.Terminal.new(); + const { settings } = session; const builder = Gtk.Builder.new_from_resource(resource); @@ -55,7 +65,23 @@ export default function Window({ application, session }) { if (__DEV__) { window.add_css_class("devel"); } - window.set_application(application); + window.application = application; + window.title = `Workbench — ${session.name}`; + + persistWindowState({ window, settings }); + + Extensions({ + window, + }); + Permissions({ window }); + + const dropdown_code_lang = builder.get_object("dropdown_code_lang"); + for (const lang of ["JavaScript", "Vala", "Rust", "Python"]) { + dropdown_code_lang.model.append(lang); + } + if (isTypeScriptEnabled()) { + dropdown_code_lang.model.append("TypeScript"); + } // Popover menu theme switcher const button_menu = builder.get_object("button_menu"); @@ -69,47 +95,57 @@ export default function Window({ application, session }) { const { term_console } = Devtools({ application, window, builder, settings }); - let compiler = null; - - if (!file.get_child("main.xml").query_exists(null)) { - settings.set_int("ui-language", 1); - } - - const document_javascript = Document({ + const document_javascript = new JavaScriptDocument({ code_view: builder.get_object("code_view_javascript"), - file: file.get_child("main.js"), lang: langs.javascript, session, }); langs.javascript.document = document_javascript; - const document_vala = Document({ + const document_typescript = new TypeScriptDocument({ + code_view: builder.get_object("code_view_typescript"), + lang: langs.typescript, + session, + }); + langs.typescript.document = document_typescript; + + const document_vala = new ValaDocument({ code_view: builder.get_object("code_view_vala"), - file: file.get_child("main.vala"), lang: langs.vala, session, }); langs.vala.document = document_vala; - const document_blueprint = Document({ + const document_rust = new RustDocument({ + code_view: builder.get_object("code_view_rust"), + lang: langs.rust, + session, + }); + langs.rust.document = document_rust; + + const document_python = new PythonDocument({ + code_view: builder.get_object("code_view_python"), + lang: langs.python, + session, + }); + langs.python.document = document_python; + + const document_blueprint = new BlueprintDocument({ code_view: builder.get_object("code_view_blueprint"), - file: file.get_child("main.blp"), lang: langs.blueprint, session, }); langs.blueprint.document = document_blueprint; - const document_xml = Document({ + const document_xml = new XmlDocument({ code_view: builder.get_object("code_view_xml"), - file: file.get_child("main.ui"), lang: langs.xml, session, }); langs.xml.document = document_xml; - const document_css = Document({ + const document_css = new CssDocument({ code_view: builder.get_object("code_view_css"), - file: file.get_child("main.css"), lang: langs.css, session, }); @@ -125,7 +161,7 @@ export default function Window({ application, session }) { settings, }); - PanelStyle({ builder, document_css, settings }); + PanelStyle({ builder, settings }); const previewer = Previewer({ output, @@ -141,9 +177,8 @@ export default function Window({ application, session }) { const panel_code = PanelCode({ builder, previewer, - document_vala, - document_javascript, - settings, + session, + langs, }); previewer.setPanelCode(panel_code); @@ -154,7 +189,7 @@ export default function Window({ application, session }) { function updateStyle() { // For Platform Tools - setGtk4PreferDark(style_manager.dark).catch(logError); + setGtk4PreferDark(style_manager.dark).catch(console.error); } updateStyle(); style_manager.connect("notify::dark", updateStyle); @@ -184,114 +219,73 @@ export default function Window({ application, session }) { settings.connect("changed", updatePanel); button_inspector.connect("clicked", () => { - previewer.openInspector().catch(logError); + previewer.openInspector().catch(console.error); }); - function format(code_view, formatter) { - let code; - - const { buffer } = code_view; - - try { - code = formatter(buffer.text.trim()); - } catch (err) { - logError(err); - return; - } - - const { cursor_position } = buffer; - - code_view.replaceText(code, false); - buffer.place_cursor(buffer.get_iter_at_offset(cursor_position)); - - return code; - } - - function formatCode() { - if (panel_code.panel.visible && panel_code.language === "JavaScript") { - format(langs.javascript.document.code_view, (text) => { - return prettier.format(text, { - parser: "babel", - plugins: [prettier_babel], - trailingComma: "all", - }); - }); + async function formatCode() { + const documents = []; + + if (panel_code.panel.visible) { + if (panel_code.language === "JavaScript") { + documents.push(document_javascript); + } else if (panel_code.language === "TypeScript") { + documents.push(document_typescript); + } else if (panel_code.language === "Rust") { + documents.push(document_rust); + } else if (panel_code.language === "Python") { + documents.push(document_python); + } else if (panel_code.language === "Vala") { + documents.push(document_vala); + } } if (builder.get_object("panel_style").visible) { - format(langs.css.document.code_view, (text) => { - return prettier.format(text, { - parser: "css", - plugins: [prettier_postcss], - }); - }); + documents.push(document_css); } + // TODO: only format the selected one if (panel_ui.panel.visible) { - format(langs.xml.document.code_view, (text) => { - return xml.format(text, 2); - }); + documents.push(document_xml); + documents.push(document_blueprint); } + + return Promise.all(documents.map((document) => document.format())); } - async function runCode({ format }) { + let builder_javascript = null; + let compiler_vala = null; + let compiler_rust = null; + let builder_python = null; + let compiler_typescript = null; + + async function runCode() { + const { language } = panel_code; + if (language === "Vala" && !isValaAvailable()) { + action_extensions.activate(null); + return; + } else if (language === "Rust" && !isRustAvailable()) { + action_extensions.activate(null); + return; + } else if (language === "TypeScript" && !isTypeScriptAvailable()) { + action_extensions.activate(null); + return; + } + button_run.set_sensitive(false); term_console.clear(); previewer.stop(); panel_ui.stop(); - const { language } = panel_code; try { + await session.loadIcons(); await panel_ui.update(); - - if (format) { - formatCode(); - } - - if (language === "JavaScript") { - await previewer.update(true); - - // We have to create a new file each time - // because gjs doesn't appear to use etag for module caching - // ?foo=Date.now() also does not work as expected - // TODO: File a bug - const [file_javascript] = Gio.File.new_tmp("workbench-XXXXXX.js"); - await file_javascript.replace_contents_async( - new GLib.Bytes(document_javascript.code_view.buffer.text || " "), - null, - false, - Gio.FileCreateFlags.NONE, - null, - ); - let exports; - try { - exports = await import(`file://${file_javascript.get_path()}`); - } catch (err) { - await previewer.update(true); - throw err; - } finally { - file_javascript - .delete_async(GLib.PRIORITY_DEFAULT, null) - .catch(logError); - } - previewer.setSymbols(exports); - } else if (language === "Vala") { - compiler = compiler || Compiler({ session }); - const success = await compiler.compile(); - if (success) { - await previewer.useExternal(); - if (await compiler.run()) { - await previewer.open(); - } else { - await previewer.useInternal(); - } - } - } + await formatCode(); + await compile(); } catch (err) { // prettier xml errors are not instances of Error if (err instanceof Error || err instanceof GLib.Error) { - logError(err); + console.error(err); } else { console.error(err); } @@ -304,11 +298,83 @@ export default function Window({ application, session }) { term_console.scrollToEnd(); } + async function compile() { + const { language } = panel_code; + + const lang = langs[language.toLowerCase()]; + // Do nothing if there is no code to avoid compile errors + const text = lang.document.code_view.buffer.text.trim(); + if (text === "") { + return; + } + + if (language === "JavaScript") { + await previewer.update(true); + + builder_javascript = builder_javascript || JavascriptBuilder(); + + const symbols = await builder_javascript.run(text); + if (symbols) { + previewer.setSymbols(symbols); + } else { + await previewer.update(); + } + } else if (language === "Vala") { + compiler_vala = compiler_vala || ValaCompiler({ session }); + const success = await compiler_vala.compile(); + if (success) { + await previewer.useExternal("vala"); + if (await compiler_vala.run()) { + await previewer.open(); + } else { + await previewer.useInternal(); + } + } + } else if (language === "Rust") { + compiler_rust = compiler_rust || RustCompiler({ session }); + // Rust needs cargo to download dependencies + if (!hasNetworkPermission()) { + return showPermissionsDialog({ window }); + } + const success = await compiler_rust.compile(); + if (success) { + await previewer.useExternal("rust"); + if (await compiler_rust.run()) { + await previewer.open(); + } else { + await previewer.useInternal(); + } + } + } else if (language === "Python") { + builder_python = builder_python || PythonBuilder({ session }); + await previewer.useExternal("python"); + if (await builder_python.run()) { + await previewer.open(); + } else { + await previewer.useInternal(); + } + } else if (language === "TypeScript") { + await previewer.update(true); + + compiler_typescript = + compiler_typescript || TypeScriptCompiler({ session, previewer }); + const success = await compiler_typescript.compile(); + if (success) { + const symbols = await compiler_typescript.run(); + if (symbols) { + previewer.setSymbols(symbols); + } else { + await previewer.update(); + } + } + } + } + const action_run = new Gio.SimpleAction({ name: "run", }); action_run.connect("activate", () => { - runCode({ format: true }).catch(logError); + runCode().catch(console.error); }); window.add_action(action_run); application.set_accels_for_action("win.run", ["<Control>Return"]); @@ -331,8 +397,21 @@ export default function Window({ application, session }) { window.add_action(action_close); application.set_accels_for_action("win.close", ["<Control>W"]); + const action_reveal = new Gio.SimpleAction({ + name: "reveal", + }); + action_reveal.connect("activate", () => { + new Gtk.FileLauncher({ + file: session.file, + }) + .launch(window, null) + .catch(console.error); + }); + window.add_action(action_reveal); + application.set_accels_for_action("win.reveal", ["<Control>M"]); + window.connect("close-request", () => { - onCloseSession({ session, window }).catch(logError); + onCloseSession({ session, window }).catch(console.error); return true; }); @@ -342,14 +421,18 @@ export default function Window({ application, session }) { window.present(); const documents = Object.values(langs).map((lang) => lang.document); - async function load({ run }) { + async function load() { + await session.load(window); panel_ui.stop(); previewer.stop(); documents.forEach((document) => document.stop()); await Promise.all([ document_javascript.load(), + document_typescript.load(), + document_rust.load(), document_vala.load(), + document_python.load(), document_blueprint.load(), document_xml.load(), document_css.load(), @@ -357,15 +440,11 @@ export default function Window({ application, session }) { await previewer.useInternal(); - if (run) { - await runCode({ format: false }); - } else { - term_console.clear(); - panel_ui.start(); - await panel_ui.update(); - previewer.start(); - await previewer.update(true); - } + term_console.clear(); + panel_ui.start(); + await panel_ui.update(); + previewer.start(); + await previewer.update(true); documents.forEach((document) => { document.start(); @@ -374,7 +453,11 @@ export default function Window({ application, session }) { term_console.scrollToEnd(); } - return { load, window }; + // Hide Workbench own logs on start + // https://matrix.to/#/!pOGgkAueAsusiyFCTb:matrix.org/$17109266081ktyZv:gnome.org?via=gnome.org&via=matrix.org&via=matrix.cispa.de + term_console.clear(); + + return { load, window, runCode }; } async function setGtk4PreferDark(dark) { @@ -387,29 +470,47 @@ async function setGtk4PreferDark(dark) { try { settings.load_from_file(settings_path, GLib.KeyFileFlags.NONE); } catch (err) { - if (err.code !== GLib.FileError.NOENT) throw err; + if (!err.matches(GLib.FileError, GLib.FileError.NOENT)) { + throw err; + } } settings.set_boolean("Settings", "gtk-application-prefer-dark-theme", dark); settings.save_to_file(settings_path); } async function onCloseSession({ session, window }) { - if (session.is_project()) { + function close(window) { + quitOnLastWindowClose(window); window.destroy(); - return; + session.unload().catch(console.error); + } + + if (session.isProject()) { + removeFromRecentProjects(session.file.get_path()); + return close(window); } if (!session.settings.get_boolean("edited")) { - await deleteSession(session); - window.destroy(); - return; + await deleteSession(session).catch(console.error); + return close(window); } - const builder = Gtk.Builder.new_from_resource(resource); - const dialog = builder.get_object("message_dialog_save_project"); + const [response, location] = await promptSessionClose({ window }); + if (response === "cancel") return; - dialog.set_transient_for(window); - dialog.present(); + if (response === "discard") { + await deleteSession(session).catch(console.error); + } else if (response === "save") { + await saveSessionAsProject(session, location); + } + + close(window); +} + +async function promptSessionClose({ window }) { + const builder = Gtk.Builder.new_from_resource(resource); + const dialog = builder.get_object("alert_dialog_save_project"); + dialog.present(window); let location; @@ -417,7 +518,7 @@ async function onCloseSession({ session, window }) { const button_location = builder.get_object("button_location"); row_project_location.add_suffix(button_location); button_location.connect("clicked", () => { - selectLocation().catch(logError); + selectLocation().catch(console.error); }); const row_project_name = builder.get_object("row_project_name"); @@ -445,20 +546,9 @@ async function onCloseSession({ session, window }) { updateSaveButton(); } - const response = await new Promise((resolve) => { - dialog.connect("response", (self, response) => resolve(response)); - }); - - if (response === "cancel") return; - - if (response === "discard") { - await deleteSession(session); - } else if (response === "save") { - const destination = location.get_child_for_display_name( - row_project_name.text, - ); - await saveSessionAsProject(session, destination); - } - - window.destroy(); + const response = await dialog.choose(window, null); + return [ + response, + location?.get_child_for_display_name(row_project_name.text), + ]; } diff --git a/src/workbench b/src/workbench index 475a2c1c1..1123ec9ad 100755 --- a/src/workbench +++ b/src/workbench @@ -1,4 +1,26 @@ -#!/bin/sh +#!/bin/bash -SHELL=/bin/sh script --flush --quiet --return /var/tmp/workbench --command "@app_id@ $@" -# SHELL=/bin/sh script --flush --quiet --return /var/tmp/workbench --command "G_MESSAGES_DEBUG=\"@app_id@\" @app_id@ $@" +# export G_MESSAGES_DEBUG=@app_id@ + +# Required to allow pkgconfig to find pc files in /app/lib/pkgconfig +export PKG_CONFIG_PATH=/app/lib/pkgconfig/:$PKG_CONFIG_PATH + +source /usr/lib/sdk/rust-stable/enable.sh 2> /dev/null +source /usr/lib/sdk/vala/enable.sh 2> /dev/null +source /usr/lib/sdk/llvm21/enable.sh 2> /dev/null +source /usr/lib/sdk/node24/enable.sh 2> /dev/null + +## enabling the typescript extension +export PATH=$PATH:/usr/lib/sdk/typescript/bin + +# TODO: Figure out how to use gcc with mold so we can drop llvm +export CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER=clang +export CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS="-C link-arg=-fuse-ld=/usr/lib/sdk/rust-stable/bin/mold" +export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=clang +export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUSTFLAGS="-C link-arg=-fuse-ld=/usr/lib/sdk/rust-stable/bin/mold" + +# We do not support translations but the AboutWindow is translated by default +LANG=en_US.UTF-8 + +mkdir -p $XDG_RUNTIME_DIR/$FLATPAK_ID +@command@ diff --git a/test/isDeviceInputOverrideAvailable.test.js b/test/isDeviceInputOverrideAvailable.test.js new file mode 100644 index 000000000..f7db4ebe2 --- /dev/null +++ b/test/isDeviceInputOverrideAvailable.test.js @@ -0,0 +1,29 @@ +import "../src/init.js"; + +import tst, { assert } from "../troll/tst/tst.js"; + +import { isDeviceInputOverrideAvailable } from "../src/flatpak.js"; + +const test = tst("isDeviceInputOverrideAvailable"); + +test("returns a boolean", () => { + assert.equal(typeof isDeviceInputOverrideAvailable(), "boolean"); +}); + +test("returns true if Flatpak version is equal to 1.15.6", () => { + assert.equal(isDeviceInputOverrideAvailable("1.15.6"), true); +}); + +test("returns true if Flatpak version is higher than 1.15.6", () => { + assert.equal(isDeviceInputOverrideAvailable("1.15.7"), true); + assert.equal(isDeviceInputOverrideAvailable("1.16.5"), true); + assert.equal(isDeviceInputOverrideAvailable("2.15.4"), true); +}); + +test("returns false if Flatpak version is lower than 1.15.6", () => { + assert.equal(isDeviceInputOverrideAvailable("1.15.5"), false); + assert.equal(isDeviceInputOverrideAvailable("1.14.7"), false); + assert.equal(isDeviceInputOverrideAvailable("0.16.7"), false); +}); + +export default test; diff --git a/test/previewer.test.js b/test/previewer.test.js index 8ce061304..c6b89f786 100644 --- a/test/previewer.test.js +++ b/test/previewer.test.js @@ -1,15 +1,18 @@ import "../src/init.js"; +import WebKit from "gi://WebKit"; +import Source from "gi://GtkSource"; + import tst, { assert } from "../troll/tst/tst.js"; import { getObjectClass } from "../src/Previewer/utils.js"; const test = tst("previewer"); test("getObjectClass", () => { - assert.equal(getObjectClass("WebKitWebView"), imports.gi.WebKit.WebView); + assert.equal(getObjectClass("WebKitWebView"), WebKit.WebView); assert.equal( getObjectClass("GtkSourceCompletionProvider"), - imports.gi.GtkSource.CompletionProvider, + Source.CompletionProvider, ); }); diff --git a/test/xml.test.js b/test/xml.test.js index 5a9d13f3e..862ee54d7 100644 --- a/test/xml.test.js +++ b/test/xml.test.js @@ -147,7 +147,9 @@ test.skip("library examples", () => { throw new Error(decode(stderr)); } xml = decode(stdout); - } catch {} + } catch { + /* */ + } if (!xml) continue; count++; diff --git a/troll b/troll index 1ea345c8a..37b53b29d 160000 --- a/troll +++ b/troll @@ -1 +1 @@ -Subproject commit 1ea345c8a57b8f5c86064376678190cf44503f00 +Subproject commit 37b53b29db0b6496f31e13c7f843100db31c9eb1