From e5ed8252fefef78aad03b7ebef2445e64affaa3d Mon Sep 17 00:00:00 2001 From: Duc Trung Le Date: Tue, 12 Mar 2024 17:37:00 +0100 Subject: [PATCH] Add react-based frontend (#69) * Add React UI * Move frontend package to top level * Update releaser config * Update tljh_repo2docker/tests/test_images.py Co-authored-by: Jeremy Tuloup * Switch to NPM * Remove shell --------- Co-authored-by: Jeremy Tuloup --- .github/workflows/build.yml | 154 + .github/workflows/check-release.yml | 1 - .github/workflows/test.yml | 36 - .gitignore | 15 +- .prettierignore | 1 + CHANGELOG.md | 69 +- CONTRIBUTING.md | 3 +- README.md | 26 +- jupyterhub_config.py | 17 +- package-lock.json | 6533 +++++++++++++++++ package.json | 146 + pyproject.toml | 54 +- src/common/AxiosContext.tsx | 8 + src/common/ButtonWithConfirm.tsx | 70 + src/common/JupyterhubContext.ts | 20 + src/common/SmallTextField.tsx | 8 + src/common/axiosclient.ts | 53 + src/common/style.css | 3 + src/common/theme.ts | 16 + src/common/utils.ts | 35 + src/environments/App.tsx | 43 + src/environments/EnvironmentList.tsx | 150 + src/environments/LogDialog.tsx | 139 + src/environments/NewEnvironmentDialog.tsx | 295 + src/environments/RemoveEnvironmentButton.tsx | 49 + src/environments/main.tsx | 40 + src/environments/types.ts | 10 + src/servers/App.tsx | 50 + src/servers/NewServerDialog.tsx | 154 + src/servers/OpenServerButton.tsx | 107 + src/servers/RemoveServerButton.tsx | 62 + src/servers/ServersList.tsx | 127 + src/servers/main.tsx | 48 + src/servers/types.ts | 7 + tljh_repo2docker/__init__.py | 9 + tljh_repo2docker/__version__.py | 1 - tljh_repo2docker/builder.py | 1 - tljh_repo2docker/images.py | 1 + tljh_repo2docker/servers.py | 73 + tljh_repo2docker/static/css/style.css | 38 - tljh_repo2docker/static/js/images.js | 165 - .../static/vendor/xterm-addon-fit.js | 2 - tljh_repo2docker/static/vendor/xterm.css | 171 - tljh_repo2docker/static/vendor/xterm.js | 2 - tljh_repo2docker/templates/images.html | 174 +- tljh_repo2docker/templates/page.html | 2 +- tljh_repo2docker/templates/servers.html | 10 + tljh_repo2docker/tests/test_images.py | 2 +- tsconfig.json | 24 + ui-tests/package-lock.json | 177 + ui-tests/package.json | 16 + ui-tests/playwright.config.js | 21 + ui-tests/tests/ui.test.ts | 181 + .../ui.test.ts-snapshots/admin-linux.png | Bin 0 -> 21527 bytes .../environment-console-linux.png | Bin 0 -> 107994 bytes .../environment-dialog-linux.png | Bin 0 -> 51920 bytes .../environment-list-linux.png | Bin 0 -> 30917 bytes .../environment-remove-confirm-linux.png | Bin 0 -> 43839 bytes .../environment-removed-linux.png | Bin 0 -> 25899 bytes .../environments-page-linux.png | Bin 0 -> 25441 bytes .../ui.test.ts-snapshots/login-page-linux.png | Bin 0 -> 30095 bytes .../running-servers-linux.png | Bin 0 -> 27431 bytes .../server-remove-confirm-linux.png | Bin 0 -> 41771 bytes .../server-removed-linux.png | Bin 0 -> 23565 bytes .../servers-dialog-linux.png | Bin 0 -> 50322 bytes .../servers-page-linux.png | Bin 0 -> 23180 bytes .../tests/ui.test.ts-snapshots/user-linux.png | Bin 0 -> 19810 bytes webpack.config.js | 43 + 68 files changed, 9020 insertions(+), 642 deletions(-) create mode 100644 .github/workflows/build.yml delete mode 100644 .github/workflows/test.yml create mode 100644 .prettierignore create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/common/AxiosContext.tsx create mode 100644 src/common/ButtonWithConfirm.tsx create mode 100644 src/common/JupyterhubContext.ts create mode 100644 src/common/SmallTextField.tsx create mode 100644 src/common/axiosclient.ts create mode 100644 src/common/style.css create mode 100644 src/common/theme.ts create mode 100644 src/common/utils.ts create mode 100644 src/environments/App.tsx create mode 100644 src/environments/EnvironmentList.tsx create mode 100644 src/environments/LogDialog.tsx create mode 100644 src/environments/NewEnvironmentDialog.tsx create mode 100644 src/environments/RemoveEnvironmentButton.tsx create mode 100644 src/environments/main.tsx create mode 100644 src/environments/types.ts create mode 100644 src/servers/App.tsx create mode 100644 src/servers/NewServerDialog.tsx create mode 100644 src/servers/OpenServerButton.tsx create mode 100644 src/servers/RemoveServerButton.tsx create mode 100644 src/servers/ServersList.tsx create mode 100644 src/servers/main.tsx create mode 100644 src/servers/types.ts delete mode 100644 tljh_repo2docker/__version__.py create mode 100644 tljh_repo2docker/servers.py delete mode 100644 tljh_repo2docker/static/css/style.css delete mode 100644 tljh_repo2docker/static/js/images.js delete mode 100644 tljh_repo2docker/static/vendor/xterm-addon-fit.js delete mode 100644 tljh_repo2docker/static/vendor/xterm.css delete mode 100644 tljh_repo2docker/static/vendor/xterm.js create mode 100644 tljh_repo2docker/templates/servers.html create mode 100644 tsconfig.json create mode 100644 ui-tests/package-lock.json create mode 100644 ui-tests/package.json create mode 100644 ui-tests/playwright.config.js create mode 100644 ui-tests/tests/ui.test.ts create mode 100644 ui-tests/tests/ui.test.ts-snapshots/admin-linux.png create mode 100644 ui-tests/tests/ui.test.ts-snapshots/environment-console-linux.png create mode 100644 ui-tests/tests/ui.test.ts-snapshots/environment-dialog-linux.png create mode 100644 ui-tests/tests/ui.test.ts-snapshots/environment-list-linux.png create mode 100644 ui-tests/tests/ui.test.ts-snapshots/environment-remove-confirm-linux.png create mode 100644 ui-tests/tests/ui.test.ts-snapshots/environment-removed-linux.png create mode 100644 ui-tests/tests/ui.test.ts-snapshots/environments-page-linux.png create mode 100644 ui-tests/tests/ui.test.ts-snapshots/login-page-linux.png create mode 100644 ui-tests/tests/ui.test.ts-snapshots/running-servers-linux.png create mode 100644 ui-tests/tests/ui.test.ts-snapshots/server-remove-confirm-linux.png create mode 100644 ui-tests/tests/ui.test.ts-snapshots/server-removed-linux.png create mode 100644 ui-tests/tests/ui.test.ts-snapshots/servers-dialog-linux.png create mode 100644 ui-tests/tests/ui.test.ts-snapshots/servers-page-linux.png create mode 100644 ui-tests/tests/ui.test.ts-snapshots/user-linux.png create mode 100644 webpack.config.js diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..e9b1ef7 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,154 @@ +name: Build and Test + +on: + push: + branches: master + pull_request: + branches: "*" + +jobs: + build: + name: Build tljh_repo2docker + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Base Setup + uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + + - name: Lint the application + run: | + set -eux + npm install + npm run lint:check + + - name: Package the application + run: | + set -eux + python -m pip install build + python -m build . + + - name: Upload package + uses: actions/upload-artifact@v3 + with: + name: tljh_repo2docker-artifacts + path: | + dist/tljh_repo2docker*.whl + if-no-files-found: error + + isolated-tests: + name: Isolated tests + needs: build + runs-on: ubuntu-latest + + steps: + - name: Base Setup + uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + + - uses: actions/download-artifact@v3 + with: + name: tljh_repo2docker-artifacts + + - name: Install and Test + run: | + set -eux + # Remove NodeJS, twice to take care of system and locally installed node versions. + sudo rm -rf $(which node) + sudo rm -rf $(which node) + + python -m pip install git+https://github.com/jupyterhub/the-littlest-jupyterhub tljh_repo2docker*.whl + + - name: Test import + run: python -c "import tljh_repo2docker" + + unit-tests: + name: Unit tests + needs: build + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ["3.8", "3.9", "3.10"] + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Base Setup + uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + + - name: Download app package + uses: actions/download-artifact@v3 + with: + name: tljh_repo2docker-artifacts + + - name: Install package + run: | + set -eux + python -m pip install -r dev-requirements.txt + python -m pip install tljh_repo2docker*.whl + npm -g install configurable-http-proxy + + - name: Run Tests + run: | + python -m pytest --cov + + integration-tests: + name: Integration tests + needs: build + runs-on: ubuntu-latest + + env: + PLAYWRIGHT_BROWSERS_PATH: ${{ github.workspace }}/pw-browsers + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Base Setup + uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + + - name: Download app package + uses: actions/download-artifact@v3 + with: + name: tljh_repo2docker-artifacts + + - name: Install package + run: | + set -eux + python -m pip install -r dev-requirements.txt + python -m pip install tljh_repo2docker*.whl + npm -g install configurable-http-proxy + + - name: Install UI test dependencies + working-directory: ui-tests + env: + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 + run: npm install + + - name: Set up browser cache + uses: actions/cache@v3 + with: + path: | + ${{ github.workspace }}/pw-browsers + key: ${{ runner.os }}-${{ hashFiles('ui-tests/package-lock.json') }} + + - name: Install browser + run: npx playwright install chromium + working-directory: ui-tests + + - name: Execute integration tests + working-directory: ui-tests + run: | + npx playwright test + + - name: Upload Playwright Test report + if: always() + uses: actions/upload-artifact@v3 + with: + name: tljh-playwright-tests + path: | + ui-tests/test-results + ui-tests/playwright-report diff --git a/.github/workflows/check-release.yml b/.github/workflows/check-release.yml index 2682994..e9080c9 100644 --- a/.github/workflows/check-release.yml +++ b/.github/workflows/check-release.yml @@ -20,7 +20,6 @@ jobs: with: token: ${{ secrets.GITHUB_TOKEN }} version_spec: next - shell: bash -l {0} - name: Upload Distributions uses: actions/upload-artifact@v3 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index 6a44687..0000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: Tests - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - build: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - python-version: ["3.8", "3.9", "3.10"] - - steps: - - uses: actions/checkout@v2 - - name: Install node - uses: actions/setup-node@v2 - with: - node-version: '14.x' - - name: Install configurable-http-proxy - run: npm -g install configurable-http-proxy - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v1 - with: - python-version: ${{ matrix.python-version }} - - name: Install dependencies - run: | - python -m pip install --upgrade pip setuptools - python -m pip install -r dev-requirements.txt - python -m pip install -e . - - name: Run Tests - run: | - python -m pytest --cov diff --git a/.gitignore b/.gitignore index 9460288..7d1f19b 100644 --- a/.gitignore +++ b/.gitignore @@ -7,8 +7,8 @@ docs/_build docs/build .ipynb_checkpoints jupyterhub_cookie_secret -jupyterhub.sqlite -jupyterhub-proxy.pid +**/jupyterhub.sqlite +**/jupyterhub-proxy.pid *.egg-info MANIFEST .coverage @@ -19,3 +19,14 @@ MANIFEST # Local TLJH config file config.yaml + +# Frontend assets +node_modules +dist/ +ui-tests/playwright-report +ui-tests/test-results +**/js +lib/ + +# Hatch version +_version.py \ No newline at end of file diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..eab5057 --- /dev/null +++ b/.prettierignore @@ -0,0 +1 @@ +**/package-lock.json \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 27c4c5f..8734f23 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,42 +17,43 @@ You can find below the list of changes since the creation of the plugin. ## What's Changed -* Add installation instructions to the README by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/1 -* Fix manifest by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/2 -* Add optional name to the environment by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/7 -* Show more information on the spawner options page by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/10 -* Add minimal documentation to the README by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/11 -* Update README instructions to install the plugin by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/12 -* Expose list_images by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/13 -* Show human readable value for mem and cpu limits by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/16 -* Rename from PlasmaBio to Plasma by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/17 -* Add a simple CI workflow by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/18 -* Replace the service by extra hub handlers by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/19 -* Add tests by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/21 -* Show the build logs in a dialog by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/22 -* Lowercase the autogenerated name from the repo by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/23 -* Package the tests by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/25 -* Async start method in the default spawner by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/28 -* Hide 'Cancel' button from logs window by @pierrepo in https://github.com/plasmabio/tljh-repo2docker/pull/33 -* Update instead of overwrite extra_host_config by @TimoRoth in https://github.com/plasmabio/tljh-repo2docker/pull/34 -* Await rendered template if neccesary by @TimoRoth in https://github.com/plasmabio/tljh-repo2docker/pull/40 -* Pin dependencies by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/41 -* Add support for GIT_CREDENTIAL_ENV to build private repos by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/42 -* Update repo2docker image by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/49 -* Pin to `jupyterhub~=1.5` for development, update `dockerspawner`, default ref to `HEAD` by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/50 -* Update Python versions on CI by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/51 -* Use --label to set labels by @TimoRoth in https://github.com/plasmabio/tljh-repo2docker/pull/48 -* Expose custom build-args as advanced option in the UI by @TimoRoth in https://github.com/plasmabio/tljh-repo2docker/pull/52 -* Update test binder repo to the new URL by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/53 -* Rename test repo to `tljh-repo2docker-test-binder` by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/54 -* Pin `notebook<7` and `sqlalchemy<2` for now by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/62 -* Resolve 'Show Logs' issue by adding _xsrf token by @yamaton in https://github.com/plasmabio/tljh-repo2docker/pull/61 +- Add installation instructions to the README by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/1 +- Fix manifest by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/2 +- Add optional name to the environment by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/7 +- Show more information on the spawner options page by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/10 +- Add minimal documentation to the README by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/11 +- Update README instructions to install the plugin by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/12 +- Expose list_images by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/13 +- Show human readable value for mem and cpu limits by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/16 +- Rename from PlasmaBio to Plasma by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/17 +- Add a simple CI workflow by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/18 +- Replace the service by extra hub handlers by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/19 +- Add tests by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/21 +- Show the build logs in a dialog by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/22 +- Lowercase the autogenerated name from the repo by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/23 +- Package the tests by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/25 +- Async start method in the default spawner by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/28 +- Hide 'Cancel' button from logs window by @pierrepo in https://github.com/plasmabio/tljh-repo2docker/pull/33 +- Update instead of overwrite extra_host_config by @TimoRoth in https://github.com/plasmabio/tljh-repo2docker/pull/34 +- Await rendered template if neccesary by @TimoRoth in https://github.com/plasmabio/tljh-repo2docker/pull/40 +- Pin dependencies by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/41 +- Add support for GIT_CREDENTIAL_ENV to build private repos by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/42 +- Update repo2docker image by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/49 +- Pin to `jupyterhub~=1.5` for development, update `dockerspawner`, default ref to `HEAD` by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/50 +- Update Python versions on CI by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/51 +- Use --label to set labels by @TimoRoth in https://github.com/plasmabio/tljh-repo2docker/pull/48 +- Expose custom build-args as advanced option in the UI by @TimoRoth in https://github.com/plasmabio/tljh-repo2docker/pull/52 +- Update test binder repo to the new URL by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/53 +- Rename test repo to `tljh-repo2docker-test-binder` by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/54 +- Pin `notebook<7` and `sqlalchemy<2` for now by @jtpio in https://github.com/plasmabio/tljh-repo2docker/pull/62 +- Resolve 'Show Logs' issue by adding \_xsrf token by @yamaton in https://github.com/plasmabio/tljh-repo2docker/pull/61 ## New Contributors -* @jtpio made their first contribution in https://github.com/plasmabio/tljh-repo2docker/pull/1 -* @pierrepo made their first contribution in https://github.com/plasmabio/tljh-repo2docker/pull/33 -* @TimoRoth made their first contribution in https://github.com/plasmabio/tljh-repo2docker/pull/34 -* @yamaton made their first contribution in https://github.com/plasmabio/tljh-repo2docker/pull/61 + +- @jtpio made their first contribution in https://github.com/plasmabio/tljh-repo2docker/pull/1 +- @pierrepo made their first contribution in https://github.com/plasmabio/tljh-repo2docker/pull/33 +- @TimoRoth made their first contribution in https://github.com/plasmabio/tljh-repo2docker/pull/34 +- @yamaton made their first contribution in https://github.com/plasmabio/tljh-repo2docker/pull/61 **Full Changelog**: https://github.com/plasmabio/tljh-repo2docker/commits/v1 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 20a6176..459c00f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -26,7 +26,6 @@ source bin/activate ## Install the development requirements - ```bash python -m pip install -r dev-requirements.txt @@ -63,4 +62,4 @@ To run the tests: ```bash python -m pytest --cov -``` \ No newline at end of file +``` diff --git a/README.md b/README.md index 1c4cc94..4ca0874 100644 --- a/README.md +++ b/README.md @@ -39,19 +39,19 @@ for more info on installing TLJH plugins. ### List the environments -The *Environments* page shows the list of built environments, as well as the ones currently being built: +The _Environments_ page shows the list of built environments, as well as the ones currently being built: ![environments](https://user-images.githubusercontent.com/591645/80962805-056df500-8e0e-11ea-81ab-6efc1c97432d.png) ### Add a new environment -Just like on [Binder](https://mybinder.org), new environments can be added by clicking on the *Add New* button and providing a URL to the repository. Optional names, memory, and CPU limits can also be set for the environment: +Just like on [Binder](https://mybinder.org), new environments can be added by clicking on the _Add New_ button and providing a URL to the repository. Optional names, memory, and CPU limits can also be set for the environment: ![add-new](https://user-images.githubusercontent.com/591645/80963115-9fce3880-8e0e-11ea-890b-c9b928f7edb1.png) ### Follow the build logs -Clicking on the *Logs* button will open a new dialog with the build logs: +Clicking on the _Logs_ button will open a new dialog with the build logs: ![logs](https://user-images.githubusercontent.com/591645/82306574-86f18580-99bf-11ea-984b-4749ddde15e7.png) @@ -73,6 +73,24 @@ On GitHub and GitLab, a user might have to first create an access token with `re ![image](https://user-images.githubusercontent.com/591645/107350843-39c3bf80-6aca-11eb-8b82-6fa95ba4c7e4.png) +### Set CPU and Memory via machine profiles + +Instead of entering directly the CPU and Memory value, `tljh-repo2docker` can be configured with pre-defined machine profiles and users can only choose from the available options. The following snippet will add 3 machines with labels `Small`, `Medium` and `Large` to the profile list: + +```python +from tljh.configurer import apply_config, load_config + +tljh_config = load_config() +tljh_config["limits"]["machine_profiles"] = [ + {"label": "Small", "cpu": 2, "memory": 2}, + {"label": "Medium", "cpu": 4, "memory": 4}, + {"label": "Large", "cpu": 8, "memory": 8}, +] +apply_config(tljh_config, c) +``` + +![image](https://github.com/plasmabio/tljh-repo2docker/assets/4451292/c1f0231e-a02d-41dc-85e0-97a97ffa0311) + ### Extra documentation `tljh-repo2docker` is currently developed as part of the [Plasma project](https://github.com/plasmabio/plasma). @@ -85,4 +103,4 @@ See: https://repo2docker.readthedocs.io/en/latest/howto/jupyterhub_images.html ## Run Locally -Check out the instructions in [CONTRIBUTING.md](./CONTRIBUTING.md) to setup a local environment. +Check out the instructions in [CONTRIBUTING.md](./CONTRIBUTING.md) to set up a local environment. diff --git a/jupyterhub_config.py b/jupyterhub_config.py index b4aa3ab..8502436 100644 --- a/jupyterhub_config.py +++ b/jupyterhub_config.py @@ -11,10 +11,19 @@ c.JupyterHub.services = [] -# set default limits in the TLJH config in memory tljh_config = load_config() -tljh_config["limits"]["memory"] = "2G" -tljh_config["limits"]["cpu"] = 2 + +# set default limits in the TLJH config in memory +# tljh_config["limits"]["memory"] = "2G" +# tljh_config["limits"]["cpu"] = 2 + +# set CPU and memory based on machine profiles +tljh_config["limits"]["machine_profiles"] = [ + {"label": "Small", "cpu": 2, "memory": 2}, + {"label": "Medium", "cpu": 4, "memory": 4}, + {"label": "Large", "cpu": 8, "memory": 8}, +] + apply_config(tljh_config, c) tljh_custom_jupyterhub_config(c) @@ -23,3 +32,5 @@ user = getpass.getuser() c.Authenticator.admin_users = {user, "alice"} +c.JupyterHub.allow_named_servers = True +c.JupyterHub.ip = "0.0.0.0" diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..126f9bd --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6533 @@ +{ + "name": "tljh_repo2docker_ui", + "version": "1.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "tljh_repo2docker_ui", + "version": "1.0.1", + "license": "BSD-3-Clause", + "dependencies": { + "@emotion/react": "^11.11.3", + "@emotion/styled": "^11.11.0", + "@fontsource/roboto": "^5.0.8", + "@mui/icons-material": "^5.15.3", + "@mui/material": "^5.15.3", + "@mui/x-data-grid": "^6.18.7", + "axios": "^1.6.5", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "url-join": "^5.0.0", + "xterm": "^5.3.0", + "xterm-addon-fit": "^0.8.0" + }, + "devDependencies": { + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0", + "@typescript-eslint/eslint-plugin": "^5.41.0", + "@typescript-eslint/parser": "^5.41.0", + "cross-env": "^7.0.3", + "css-loader": "^6.7.1", + "eslint": "^8.26.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-prettier": "^5.0.0", + "eslint-plugin-react": "^7.31.10", + "eslint-plugin-react-hooks": "^4.6.0", + "less": "^4.1.3", + "less-loader": "11.1.0", + "prettier": "^3.0.0", + "rimraf": "^5.0.5", + "sass": "^1.55.0", + "sass-loader": "^13.1.0", + "style-loader": "^3.3.3", + "ts-loader": "^9.2.6", + "typescript": "^5", + "webpack": "^5.74.0", + "webpack-cli": "^5.1.4" + } + }, + "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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/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==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/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==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/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==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/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==" + }, + "node_modules/@babel/code-frame/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==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/code-frame/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==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/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==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "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==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/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==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/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==" + }, + "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==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/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==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/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==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/runtime": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.0.tgz", + "integrity": "sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", + "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/serialize": "^1.1.2", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", + "dependencies": { + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz", + "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==", + "dependencies": { + "@emotion/memoize": "^0.8.1" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + }, + "node_modules/@emotion/react": { + "version": "11.11.4", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.4.tgz", + "integrity": "sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/cache": "^11.11.0", + "@emotion/serialize": "^1.1.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.3.tgz", + "integrity": "sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA==", + "dependencies": { + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/unitless": "^0.8.1", + "@emotion/utils": "^1.2.1", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" + }, + "node_modules/@emotion/styled": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", + "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/is-prop-valid": "^1.2.1", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" + }, + "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": { + "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/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "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/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", + "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", + "dependencies": { + "@floating-ui/utils": "^0.2.1" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz", + "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==", + "dependencies": { + "@floating-ui/core": "^1.0.0", + "@floating-ui/utils": "^0.2.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz", + "integrity": "sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==", + "dependencies": { + "@floating-ui/dom": "^1.6.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", + "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" + }, + "node_modules/@fontsource/roboto": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/@fontsource/roboto/-/roboto-5.0.12.tgz", + "integrity": "sha512-x0o17jvgoSSbS9OZnUX2+xJmVRvVCfeaYJjkS7w62iN7CuJWtMf5vJj8LqgC7ibqIkitOHVW+XssRjgrcHn62g==" + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.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/@humanwhocodes/object-schema": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/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": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/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/@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": { + "@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.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "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/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "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": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mui/base": { + "version": "5.0.0-beta.38", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.38.tgz", + "integrity": "sha512-AsjD6Y1X5A1qndxz8xCcR8LDqv31aiwlgWMPxFAX/kCKiIGKlK65yMeVZ62iQr/6LBz+9hSKLiD1i4TZdAHKcQ==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@floating-ui/react-dom": "^2.0.8", + "@mui/types": "^7.2.13", + "@mui/utils": "^5.15.12", + "@popperjs/core": "^2.11.8", + "clsx": "^2.1.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/core-downloads-tracker": { + "version": "5.15.12", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.12.tgz", + "integrity": "sha512-brRO+tMFLpGyjEYHrX97bzqeF6jZmKpqqe1rY0LyIHAwP6xRVzh++zSecOQorDOCaZJg4XkGT9xfD+RWOWxZBA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + } + }, + "node_modules/@mui/icons-material": { + "version": "5.15.12", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.15.12.tgz", + "integrity": "sha512-3BXiDlOd3AexZoEXa/VqpIpVIvosCzjLHsdMWzKMXbZdnBiJjmb9ECdqfjn5SpTClO49qvkKLhkTqdBH3fSFGw==", + "dependencies": { + "@babel/runtime": "^7.23.9" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@mui/material": "^5.0.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material": { + "version": "5.15.12", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.15.12.tgz", + "integrity": "sha512-vXJGg6KNKucsvbW6l7w9zafnpOp0CWc0Wx4mDykuABTpQ5QQBnZxP7+oB4yAS1hDZQ1WobbeIl0CjxK4EEahkA==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/base": "5.0.0-beta.38", + "@mui/core-downloads-tracker": "^5.15.12", + "@mui/system": "^5.15.12", + "@mui/types": "^7.2.13", + "@mui/utils": "^5.15.12", + "@types/react-transition-group": "^4.4.10", + "clsx": "^2.1.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1", + "react-is": "^18.2.0", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/private-theming": { + "version": "5.15.12", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.12.tgz", + "integrity": "sha512-cqoSo9sgA5HE+8vZClbLrq9EkyOnYysooepi5eKaKvJ41lReT2c5wOZAeDDM1+xknrMDos+0mT2zr3sZmUiRRA==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/utils": "^5.15.12", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine": { + "version": "5.15.11", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.11.tgz", + "integrity": "sha512-So21AhAngqo07ces4S/JpX5UaMU2RHXpEA6hNzI6IQjd/1usMPxpgK8wkGgTe3JKmC2KDmH8cvoycq5H3Ii7/w==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@emotion/cache": "^11.11.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/system": { + "version": "5.15.12", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.12.tgz", + "integrity": "sha512-/pq+GO6yN3X7r3hAwFTrzkAh7K1bTF5r8IzS79B9eyKJg7v6B/t4/zZYMR6OT9qEPtwf6rYN2Utg1e6Z7F1OgQ==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/private-theming": "^5.15.12", + "@mui/styled-engine": "^5.15.11", + "@mui/types": "^7.2.13", + "@mui/utils": "^5.15.12", + "clsx": "^2.1.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/types": { + "version": "7.2.13", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.13.tgz", + "integrity": "sha512-qP9OgacN62s+l8rdDhSFRe05HWtLLJ5TGclC9I1+tQngbssu0m2dmFZs+Px53AcOs9fD7TbYd4gc9AXzVqO/+g==", + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "5.15.12", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.12.tgz", + "integrity": "sha512-8SDGCnO2DY9Yy+5bGzu00NZowSDtuyHP4H8gunhHGQoIlhlY2Z3w64wBzAOLpYw/ZhJNzksDTnS/i8qdJvxuow==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@types/prop-types": "^15.7.11", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/x-data-grid": { + "version": "6.19.6", + "resolved": "https://registry.npmjs.org/@mui/x-data-grid/-/x-data-grid-6.19.6.tgz", + "integrity": "sha512-jpZkX1Gnlo87gKcD10mKMY8YoAzUD8Cv3/IvedH3FINDKO3hnraMeOciKDeUk0tYSj8RUDB02kpTHCM8ojLVBA==", + "dependencies": { + "@babel/runtime": "^7.23.2", + "@mui/utils": "^5.14.16", + "clsx": "^2.0.0", + "prop-types": "^15.8.1", + "reselect": "^4.1.8" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@mui/material": "^5.4.1", + "@mui/system": "^5.4.1", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + } + }, + "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": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "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": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@types/eslint": { + "version": "8.56.5", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.5.tgz", + "integrity": "sha512-u5/YPJHo1tvkSF2CE0USEkxon82Z5DBy2xR+qfyYNszpX9qcs4sT6uq2kBbj4BXY1+DBGDPnrhMZV3pKWGNukw==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "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": "20.11.26", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.26.tgz", + "integrity": "sha512-YwOMmyhNnAWijOBQweOJnQPl068Oqd4K3OFbTc6AHJwzweUwwWG3GIFY74OKks2PJUDkQPeddOQES9mLn1CTEQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" + }, + "node_modules/@types/prop-types": { + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" + }, + "node_modules/@types/react": { + "version": "18.2.65", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.65.tgz", + "integrity": "sha512-98TsY0aW4jqx/3RqsUXwMDZSWR1Z4CUlJNue8ueS2/wcxZOsz4xmW1X8ieaWVRHcmmQM3R8xVA4XWB3dJnWwDQ==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.21", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.21.tgz", + "integrity": "sha512-gnvBA/21SA4xxqNXEwNiVcP0xSGHh/gi1VhWv9Bl46a0ItbTT5nFY+G9VSQpaG/8N/qdJpJ+vftQ4zflTtnjLw==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", + "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "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": { + "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/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "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/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/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "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/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.filter": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.3.tgz", + "integrity": "sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.4.tgz", + "integrity": "sha512-BMtLxpV+8BD+6ZPFIWmnUBpQoy+A+ujcg4rhp2iwCRJYA7PEh2MS4NL3lz8EiDlLrJPp2hg9qWihr5pd//jcGw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.4.tgz", + "integrity": "sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.toreversed": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", + "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", + "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.1.0", + "es-shim-unscopables": "^1.0.2" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asynciterator.prototype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", + "dependencies": { + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "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.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001597", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001597.tgz", + "integrity": "sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "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/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/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/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clsx": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", + "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", + "engines": { + "node": ">=6" + } + }, + "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/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/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/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "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/css-loader": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz", + "integrity": "sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.4", + "postcss-modules-scope": "^3.1.1", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "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/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "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.4.701", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.701.tgz", + "integrity": "sha512-K3WPQ36bUOtXg/1+69bFlFOvdSm0/0bGqmsfPDLRXLanoKXdA+pIWuf/VbA9b+2CwBFuONgl4NEz4OEm+OJOKA==", + "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/enhanced-resolve": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", + "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/envinfo": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.1.tgz", + "integrity": "sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.22.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.5.tgz", + "integrity": "sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.1", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.0", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.5", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.17.tgz", + "integrity": "sha512-lh7BsUqelv4KUbR5a/ZTaGGIMLCjPGPqJ6q+Oq24YP0RdyptX1uzm4vvaqzk7Zx3bpl/76YLTTDj9L7uYQ92oQ==", + "dev": true, + "dependencies": { + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.4", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.2", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", + "dev": true + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "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.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "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": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", + "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.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "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.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "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-import/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/eslint-plugin-prettier": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", + "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.6" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": "*", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.34.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.0.tgz", + "integrity": "sha512-MeVXdReleBTdkz/bvcQMSnCXGi+c9kvy51IpinjnJgutl3YTHWsDdke7Z1ufZpGfDG8xduBDKyjtB9JH1eBKIQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlast": "^1.2.4", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.toreversed": "^1.1.2", + "array.prototype.tosorted": "^1.1.3", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.17", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7", + "object.hasown": "^1.1.3", + "object.values": "^1.1.7", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.10" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/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-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "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/eslint-plugin-react/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/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-scope/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/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/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/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/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/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/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/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/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/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.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "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/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "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.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, + "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": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flat-cache/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flat-cache/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/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": 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/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "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/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "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-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": "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/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "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.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immutable": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", + "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==", + "dev": true + }, + "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==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "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": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "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.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "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-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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-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.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dependencies": { + "hasown": "^2.0.0" + }, + "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-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-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "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-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "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-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "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/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/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/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-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "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": "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/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/less": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", + "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", + "dev": true, + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/less-loader": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz", + "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==", + "dev": true, + "dependencies": { + "klona": "^2.0.4" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/less/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "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/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "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/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "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/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "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/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/needle": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", + "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "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.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.2.tgz", + "integrity": "sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==", + "dev": true, + "dependencies": { + "array.prototype.filter": "^1.0.3", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.0.0" + } + }, + "node_modules/object.hasown": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "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/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "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": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "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==" + }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "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.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz", + "integrity": "sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz", + "integrity": "sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "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.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "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/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "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/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.5.tgz", + "integrity": "sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.0.0", + "get-intrinsic": "^1.2.3", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/reselect": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz", + "integrity": "sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==" + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "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-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "engines": { + "node": ">=4" + } + }, + "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/rimraf": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", + "dev": true, + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "optional": true + }, + "node_modules/sass": { + "version": "1.71.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.71.1.tgz", + "integrity": "sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-loader": { + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.3.tgz", + "integrity": "sha512-mt5YN2F1MOZr3d/wBRcZxeFgwgkH44wVc2zohO2YF6JiOMkiXe4BYRZpSu2sO1g71mo/j16txzUhsKZlqjVGzA==", + "dev": true, + "dependencies": { + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", + "dev": true, + "optional": true + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "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.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width/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": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/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/string.prototype.matchall": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "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/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/strip-ansi-cjs": { + "name": "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/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-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/style-loader": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", + "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + }, + "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/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==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/synckit": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", + "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", + "dev": true, + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.29.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.29.1.tgz", + "integrity": "sha512-lZQ/fyaIGxsbGxApKmoPTODIzELy3++mXhS5hOqaAWZjQtpq/hFHAc+rm29NND1rYRxRWKcjuARNwULNXa5RtQ==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "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/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==", + "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/ts-loader": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", + "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-loader/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "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/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "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": "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/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.5.tgz", + "integrity": "sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.2.tgz", + "integrity": "sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "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/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "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.1.1", + "picocolors": "^1.0.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/url-join": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", + "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack": { + "version": "5.90.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz", + "integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.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-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, + "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/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/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": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/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": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/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/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/xterm": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/xterm/-/xterm-5.3.0.tgz", + "integrity": "sha512-8QqjlekLUFTrU6x7xck1MsPzPA571K5zNqWm0M0oroYEWVOptZ0+ubQSkQ3uxIEhcIHRujJy6emDWX4A7qyFzg==" + }, + "node_modules/xterm-addon-fit": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/xterm-addon-fit/-/xterm-addon-fit-0.8.0.tgz", + "integrity": "sha512-yj3Np7XlvxxhYF/EJ7p3KHaMt6OdwQ+HDu573Vx1lRXsVxOcnVJs51RgjZOouIZOczTsskaS+CpXspK81/DLqw==", + "peerDependencies": { + "xterm": "^5.0.0" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, + "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" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..78bea22 --- /dev/null +++ b/package.json @@ -0,0 +1,146 @@ +{ + "name": "tljh_repo2docker_ui", + "version": "1.0.1", + "description": "tljh_repo2docker frontend package", + "license": "BSD-3-Clause", + "homepage": "https://github.com/plasmabio/tljh-repo2docker", + "bugs": { + "url": "https://github.com/plasmabio/tljh-repo2docker/issues" + }, + "repository": { + "type": "git", + "url": "https://github.com/plasmabio/tljh-repo2docker.git" + }, + "scripts": { + "watch": "cross-env NODE_ENV=development webpack watch --config webpack.config.js", + "build": "cross-env NODE_ENV=development webpack --config webpack.config.js", + "build:prod": "cross-env NODE_ENV=production webpack --config webpack.config.js", + "eslint": "eslint --fix --ext .js,.jsx,.ts,.tsx src/", + "eslint:check": "eslint --ext .js,.jsx,.ts,.tsx src/", + "prettier:check": "prettier --list-different \"**/*{.ts,.tsx,.js,.jsx,.css,.json,.md}\"", + "prettier": "prettier --write \"**/*{.ts,.tsx,.js,.jsx,.css,.json,.md}\"", + "lint": "npm run prettier && npm run eslint", + "lint:check": "npm run prettier:check && npm run eslint:check", + "clean": "rimraf ./lib ./tljh_repo2docker/static/js" + }, + "devDependencies": { + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0", + "@typescript-eslint/eslint-plugin": "^5.41.0", + "@typescript-eslint/parser": "^5.41.0", + "cross-env": "^7.0.3", + "css-loader": "^6.7.1", + "eslint": "^8.26.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-prettier": "^5.0.0", + "eslint-plugin-react": "^7.31.10", + "eslint-plugin-react-hooks": "^4.6.0", + "less": "^4.1.3", + "less-loader": "11.1.0", + "prettier": "^3.0.0", + "rimraf": "^5.0.5", + "sass": "^1.55.0", + "sass-loader": "^13.1.0", + "style-loader": "^3.3.3", + "ts-loader": "^9.2.6", + "typescript": "^5", + "webpack": "^5.74.0", + "webpack-cli": "^5.1.4" + }, + "dependencies": { + "@emotion/react": "^11.11.3", + "@emotion/styled": "^11.11.0", + "@fontsource/roboto": "^5.0.8", + "@mui/icons-material": "^5.15.3", + "@mui/material": "^5.15.3", + "@mui/x-data-grid": "^6.18.7", + "axios": "^1.6.5", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "url-join": "^5.0.0", + "xterm": "^5.3.0", + "xterm-addon-fit": "^0.8.0" + }, + "eslintIgnore": [ + "node_modules", + "ui-tests/playwright-report", + "lib", + "dist", + "coverage", + "**/*.d.ts" + ], + "eslintConfig": { + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/eslint-recommended", + "plugin:@typescript-eslint/recommended", + "plugin:prettier/recommended", + "plugin:react-hooks/recommended" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "project": "tsconfig.json", + "sourceType": "module" + }, + "plugins": [ + "@typescript-eslint" + ], + "rules": { + "@typescript-eslint/naming-convention": [ + "error", + { + "selector": "interface", + "format": [ + "PascalCase" + ], + "custom": { + "regex": "^I[A-Z]", + "match": true + } + } + ], + "@typescript-eslint/no-unused-vars": [ + "warn", + { + "args": "none", + "argsIgnorePattern": "^_", + "varsIgnorePattern": "^_", + "caughtErrorsIgnorePattern": "^_" + } + ], + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-namespace": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/quotes": [ + "error", + "single", + { + "avoidEscape": true, + "allowTemplateLiterals": false + } + ], + "curly": [ + "error", + "all" + ], + "eqeqeq": "error", + "prefer-arrow-callback": "error", + "react-hooks/exhaustive-deps": "error" + } + }, + "prettier": { + "singleQuote": true, + "trailingComma": "none", + "arrowParens": "avoid", + "endOfLine": "auto", + "overrides": [ + { + "files": "package.json", + "options": { + "tabWidth": 4 + } + } + ] + } +} diff --git a/pyproject.toml b/pyproject.toml index 4436659..1c212f6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,31 +1,65 @@ [build-system] -requires = ["hatchling>=1.5.0,<2"] build-backend = "hatchling.build" +requires = ["hatchling>=1.5.0,<2", "hatch-nodejs-version>=0.3.2"] [project] -name = "tljh-repo2docker" -dynamic = ["version"] -readme = "README.md" -license = { file = "LICENSE" } dependencies = [ - "aiodocker~=0.19", - "dockerspawner~=12.1", - "jupyter_client>=6.1,<8" + "aiodocker~=0.19", + "dockerspawner~=12.1", + "jupyter_client>=6.1,<8", ] +dynamic = ["version"] +license = {file = "LICENSE"} +name = "tljh-repo2docker" +readme = "README.md" [project.entry-points.tljh] tljh_repo2docker = "tljh_repo2docker" [tool.hatch.version] -path = "tljh_repo2docker/__version__.py" +source = "nodejs" [tool.hatch.build.targets.sdist] -include = ["/tljh_repo2docker"] +artifacts = ["tljh_repo2docker/static"] +exclude = [".github"] + +[tool.hatch.build.targets.wheel] +artifacts = ["tljh_repo2docker/static"] + +[tool.hatch.build.hooks.version] +path = "tljh_repo2docker/_version.py" + +[tool.hatch.build.hooks.jupyter-builder] +build-function = "hatch_jupyter_builder.npm_builder" +dependencies = ["hatch-jupyter-builder>=0.5"] +ensured-targets = [ + "tljh_repo2docker/static/js/servers.js", + "tljh_repo2docker/static/js/environments.js", +] +skip-if-exists = [ + "tljh_repo2docker/static/js/servers.js", + "tljh_repo2docker/static/js/environments.js", +] + +[tool.hatch.build.hooks.jupyter-builder.build-kwargs] +build_cmd = "build:prod" +npm = ["npm"] + +[tool.hatch.build.hooks.jupyter-builder.editable-build-kwargs] +build_cmd = "build" +build_dir = "tljh_repo2docker/static/js" +npm = ["npm"] +source_dir = "src" [tool.jupyter-releaser.options] version_cmd = "hatch version" [tool.jupyter-releaser.hooks] +before-build-npm = [ + "npm install", + "npm run build:prod", +] +before-build-python = ["npm run clean"] before-bump-version = ["python -m pip install hatch"] [tool.check-wheel-contents] diff --git a/src/common/AxiosContext.tsx b/src/common/AxiosContext.tsx new file mode 100644 index 0000000..eeae042 --- /dev/null +++ b/src/common/AxiosContext.tsx @@ -0,0 +1,8 @@ +import { createContext, useContext } from 'react'; +import { AxiosClient } from './axiosclient'; + +export const AxiosContext = createContext(new AxiosClient({})); + +export const useAxios = () => { + return useContext(AxiosContext); +}; diff --git a/src/common/ButtonWithConfirm.tsx b/src/common/ButtonWithConfirm.tsx new file mode 100644 index 0000000..97557c8 --- /dev/null +++ b/src/common/ButtonWithConfirm.tsx @@ -0,0 +1,70 @@ +import { Button } from '@mui/material'; +import Dialog from '@mui/material/Dialog'; +import DialogActions from '@mui/material/DialogActions'; +import DialogContent from '@mui/material/DialogContent'; +import DialogTitle from '@mui/material/DialogTitle'; +import CircularProgress from '@mui/material/CircularProgress'; +import Box from '@mui/material/Box'; +import { Fragment, memo, useCallback, useState } from 'react'; + +interface IButtonWithConfirm { + buttonLabel: string; + dialogTitle: string; + dialogBody: JSX.Element; + action: (() => void) | (() => Promise); + okLabel?: string; + cancelLabel?: string; +} +const Loading = () => ( + + + +); +function _ButtonWithConfirm(props: IButtonWithConfirm) { + const [open, setOpen] = useState(false); + const [loading, setLoading] = useState(false); + const handleOpen = () => { + setOpen(true); + }; + const handleClose = ( + event?: any, + reason?: 'backdropClick' | 'escapeKeyDown' + ) => { + if (reason && reason === 'backdropClick') { + return; + } + setOpen(false); + }; + + const removeEnv = useCallback(async () => { + setLoading(true); + await props.action(); + handleClose(); + }, [props, setLoading]); + + return ( + + + + + {props.dialogTitle} + + {!loading && props.dialogBody} + {loading && } + + + + + + + + ); +} + +export const ButtonWithConfirm = memo(_ButtonWithConfirm); diff --git a/src/common/JupyterhubContext.ts b/src/common/JupyterhubContext.ts new file mode 100644 index 0000000..938df46 --- /dev/null +++ b/src/common/JupyterhubContext.ts @@ -0,0 +1,20 @@ +import { createContext, useContext } from 'react'; + +export interface IJupyterhubData { + baseUrl: string; + prefix: string; + user: string; + adminAccess: boolean; + xsrfToken: string; +} +export const JupyterhubContext = createContext({ + baseUrl: '', + prefix: '', + user: '', + adminAccess: false, + xsrfToken: '' +}); + +export const useJupyterhub = () => { + return useContext(JupyterhubContext); +}; diff --git a/src/common/SmallTextField.tsx b/src/common/SmallTextField.tsx new file mode 100644 index 0000000..d072075 --- /dev/null +++ b/src/common/SmallTextField.tsx @@ -0,0 +1,8 @@ +import { TextField, inputLabelClasses } from '@mui/material'; +import { styled } from '@mui/material/styles'; + +export const SmallTextField = styled(TextField)(` + .${inputLabelClasses.root} { + font-size: 1.4rem; + } +`); diff --git a/src/common/axiosclient.ts b/src/common/axiosclient.ts new file mode 100644 index 0000000..3be8759 --- /dev/null +++ b/src/common/axiosclient.ts @@ -0,0 +1,53 @@ +import urlJoin from 'url-join'; +import { encodeUriComponents } from './utils'; +import axios, { AxiosInstance } from 'axios'; + +export const API_PREFIX = 'api'; +export const SPAWN_PREFIX = 'spawn'; +export class AxiosClient { + constructor(options: AxiosClient.IOptions) { + this._baseUrl = options.baseUrl ?? ''; + this._xsrfToken = options.xsrfToken; + this._axios = axios.create({ + baseURL: this._baseUrl + }); + } + + async request(args: { + method: 'get' | 'post' | 'put' | 'option' | 'delete'; + prefix: 'api' | 'spawn'; + path: string; + query?: string; + data?: { [key: string]: any } | FormData; + }): Promise { + const { method, path } = args; + + const data = args.data ?? {}; + let url = urlJoin(args.prefix, encodeUriComponents(path)); + if (args.query) { + const sep = url.indexOf('?') === -1 ? '?' : '&'; + url = `${url}${sep}${args.query}`; + } + if (this._xsrfToken) { + const sep = url.indexOf('?') === -1 ? '?' : '&'; + url = `${url}${sep}_xsrf=${this._xsrfToken}`; + } + const response = await this._axios.request({ + method, + url, + data + }); + return response.data; + } + + private _baseUrl: string; + private _xsrfToken?: string; + private _axios: AxiosInstance; +} + +export namespace AxiosClient { + export interface IOptions { + baseUrl?: string; + xsrfToken?: string; + } +} diff --git a/src/common/style.css b/src/common/style.css new file mode 100644 index 0000000..0328a57 --- /dev/null +++ b/src/common/style.css @@ -0,0 +1,3 @@ +.MuiButton-root { + text-transform: capitalize !important; +} diff --git a/src/common/theme.ts b/src/common/theme.ts new file mode 100644 index 0000000..d95939b --- /dev/null +++ b/src/common/theme.ts @@ -0,0 +1,16 @@ +import { createTheme } from '@mui/material'; +import './style.css'; + +export const customTheme = createTheme({ + palette: { + primary: { + main: '#1976D2' // Change primary color + }, + secondary: { + main: '#FF4081' // Change secondary color + } + }, + typography: { + fontSize: 22 + } +}); diff --git a/src/common/utils.ts b/src/common/utils.ts new file mode 100644 index 0000000..5f588b3 --- /dev/null +++ b/src/common/utils.ts @@ -0,0 +1,35 @@ +/** + * Encode just the components of a multi-segment uri, + * leaving '/' separators + * + * @export + * @param {string} uri + * @return {string} + */ +export function encodeUriComponents(uri: string): string { + return uri.split('/').map(encodeURIComponent).join('/'); +} + +export function formatTime(time: string): string { + if (!time || time.length === 0) { + return 'unknown'; + } + const units: { [key: string]: number } = { + year: 24 * 60 * 60 * 1000 * 365, + month: (24 * 60 * 60 * 1000 * 365) / 12, + day: 24 * 60 * 60 * 1000, + hour: 60 * 60 * 1000, + minute: 60 * 1000, + second: 1000 + }; + const rtf = new Intl.RelativeTimeFormat('en', { numeric: 'auto' }); + const d1 = new Date(time); + const d2 = new Date(); + const elapsed = d1.getTime() - d2.getTime(); + for (const u in units) { + if (Math.abs(elapsed) > units[u] || u === 'second') { + return rtf.format(Math.round(elapsed / units[u]), u as any); + } + } + return 'unknown'; +} diff --git a/src/environments/App.tsx b/src/environments/App.tsx new file mode 100644 index 0000000..cb8f417 --- /dev/null +++ b/src/environments/App.tsx @@ -0,0 +1,43 @@ +import { Stack } from '@mui/material'; +import ScopedCssBaseline from '@mui/material/ScopedCssBaseline'; +import { ThemeProvider } from '@mui/material/styles'; + +import { customTheme } from '../common/theme'; +import { IEnvironmentData } from './types'; +import { EnvironmentList } from './EnvironmentList'; +import { IMachineProfile, NewEnvironmentDialog } from './NewEnvironmentDialog'; +import { AxiosContext } from '../common/AxiosContext'; +import { useMemo } from 'react'; +import { AxiosClient } from '../common/axiosclient'; +import { useJupyterhub } from '../common/JupyterhubContext'; + +export interface IAppProps { + images: IEnvironmentData[]; + default_cpu_limit: string; + default_mem_limit: string; + machine_profiles: IMachineProfile[]; +} +export default function App(props: IAppProps) { + const jhData = useJupyterhub(); + const axios = useMemo(() => { + const baseUrl = jhData.baseUrl; + const xsrfToken = jhData.xsrfToken; + return new AxiosClient({ baseUrl, xsrfToken }); + }, [jhData]); + return ( + + + + + + + + + + + ); +} diff --git a/src/environments/EnvironmentList.tsx b/src/environments/EnvironmentList.tsx new file mode 100644 index 0000000..7d2251f --- /dev/null +++ b/src/environments/EnvironmentList.tsx @@ -0,0 +1,150 @@ +import { IconButton } from '@mui/material'; +import { DataGrid, GridColDef, GridRowSelectionModel } from '@mui/x-data-grid'; +import { IEnvironmentData } from './types'; +import { memo, useMemo } from 'react'; +import CheckIcon from '@mui/icons-material/Check'; + +import { Box } from '@mui/system'; +import { RemoveEnvironmentButton } from './RemoveEnvironmentButton'; +import { EnvironmentLogButton } from './LogDialog'; + +const columns: GridColDef[] = [ + { + field: 'display_name', + headerName: 'Name', + flex: 1 + }, + { + field: 'repo', + headerName: 'Repository URL', + flex: 1, + renderCell: params => { + return ( + + {params.value} + + ); + } + }, + { + field: 'ref', + headerName: 'Reference', + maxWidth: 150, + renderCell: params => { + return ( + {params.value} + ); + } + }, + { + field: 'mem_limit', + headerName: 'Mem. Limit (GB)', + width: 150 + }, + { + field: 'cpu_limit', + headerName: 'CPU Limit', + width: 100 + }, + { + field: 'status', + headerName: 'Status', + width: 100, + hideSortIcons: true, + renderCell: params => { + return params.value === 'built' ? ( + + + + ) : params.value === 'building' ? ( + + ) : null; + } + }, + { + field: 'remove', + headerName: '', + width: 100, + filterable: false, + sortable: false, + hideable: false, + renderCell: params => { + return ( + + ); + } + } +]; + +export interface IEnvironmentListProps { + images: IEnvironmentData[]; + default_cpu_limit?: string; + default_mem_limit?: string; + hideRemoveButton?: boolean; + pageSize?: number; + selectable?: boolean; + rowSelectionModel?: GridRowSelectionModel; + setRowSelectionModel?: (selected: GridRowSelectionModel) => void; +} + +function _EnvironmentList(props: IEnvironmentListProps) { + const rows = useMemo(() => { + return props.images.map((it, id) => { + const newItem = { ...it, id }; + newItem.cpu_limit = + newItem.cpu_limit.length > 0 + ? newItem.cpu_limit + : props.default_cpu_limit ?? '2'; + newItem.mem_limit = + newItem.mem_limit.length > 0 + ? newItem.mem_limit + : props.default_mem_limit ?? '2'; + return newItem; + }); + }, [props]); + return ( + + 0 ? 'auto' : 'hidden' + } + }} + columnVisibilityModel={{ remove: !props.hideRemoveButton }} + checkboxSelection={Boolean(props.selectable)} + rowSelectionModel={props.rowSelectionModel} + onRowSelectionModelChange={props.setRowSelectionModel} + density="compact" + autoHeight + slots={{ + noRowsOverlay: () => { + return ( + + No environment available + + ); + } + }} + /> + + ); +} + +export const EnvironmentList = memo(_EnvironmentList); diff --git a/src/environments/LogDialog.tsx b/src/environments/LogDialog.tsx new file mode 100644 index 0000000..2489354 --- /dev/null +++ b/src/environments/LogDialog.tsx @@ -0,0 +1,139 @@ +import 'xterm/css/xterm.css'; + +import CheckIcon from '@mui/icons-material/Check'; +import SyncIcon from '@mui/icons-material/Sync'; +import { Button, IconButton } from '@mui/material'; +import Dialog from '@mui/material/Dialog'; +import DialogActions from '@mui/material/DialogActions'; +import DialogContent from '@mui/material/DialogContent'; +import DialogTitle from '@mui/material/DialogTitle'; +import { Fragment, memo, useCallback, useRef, useState } from 'react'; +import urlJoin from 'url-join'; +import { Terminal } from 'xterm'; +import { FitAddon } from 'xterm-addon-fit'; +import { useJupyterhub } from '../common/JupyterhubContext'; + +interface IEnvironmentLogButton { + name: string; + image: string; +} + +const terminalFactory = () => { + const terminal = new Terminal({ convertEol: true, disableStdin: true }); + const fitAddon = new FitAddon(); + terminal.loadAddon(fitAddon); + return { terminal, fitAddon }; +}; + +function _EnvironmentLogButton(props: IEnvironmentLogButton) { + const jhData = useJupyterhub(); + const [open, setOpen] = useState(false); + const [built, setBuilt] = useState(false); + const divRef = useRef(null); + const terminalRef = useRef<{ terminal: Terminal; fitAddon: FitAddon }>( + terminalFactory() + ); + const handleOpen = useCallback(() => { + setOpen(true); + if (divRef.current) { + const { terminal, fitAddon } = terminalFactory(); + terminalRef.current.terminal = terminal; + terminalRef.current.fitAddon = fitAddon; + + terminal.open(divRef.current); + fitAddon.fit(); + const { baseUrl, xsrfToken } = jhData; + + let logsUrl = urlJoin( + baseUrl, + 'api', + 'environments', + props.image, + 'logs' + ); + if (xsrfToken) { + // add xsrf token to url parameter + const sep = logsUrl.indexOf('?') === -1 ? '?' : '&'; + logsUrl = logsUrl + sep + '_xsrf=' + xsrfToken; + } + const eventSource = new EventSource(logsUrl); + eventSource.onerror = err => { + console.error('Failed to construct event stream', err); + eventSource.close(); + }; + + eventSource.onmessage = event => { + const data = JSON.parse(event.data); + + if (data.phase === 'built') { + eventSource.close(); + setBuilt(true); + return; + } + terminal.write(data.message); + fitAddon.fit(); + }; + } + }, [jhData, props.image]); + const handleClose = ( + event?: any, + reason?: 'backdropClick' | 'escapeKeyDown' + ) => { + if (reason && reason === 'backdropClick') { + return; + } + + terminalRef.current.terminal.dispose(); + if (divRef.current) { + divRef.current.innerHTML = ''; + } + setOpen(false); + }; + + return ( + + {!built && ( + + + + )} + {built && ( + + + + )} + + Creating environment {props.name} + +
+ + + + +
+
+ ); +} + +export const EnvironmentLogButton = memo(_EnvironmentLogButton); diff --git a/src/environments/NewEnvironmentDialog.tsx b/src/environments/NewEnvironmentDialog.tsx new file mode 100644 index 0000000..7876919 --- /dev/null +++ b/src/environments/NewEnvironmentDialog.tsx @@ -0,0 +1,295 @@ +import { + Box, + Button, + Dialog, + DialogActions, + DialogContent, + DialogTitle, + Divider, + FormControl, + InputLabel, + MenuItem, + OutlinedTextFieldProps, + Select, + Typography +} from '@mui/material'; +import { Fragment, memo, useCallback, useMemo, useState } from 'react'; + +import { API_PREFIX } from '../common/axiosclient'; +import { useAxios } from '../common/AxiosContext'; +import { SmallTextField } from '../common/SmallTextField'; +import { ENV_PREFIX } from './types'; + +export interface IMachineProfile { + label: string; + cpu: string; + memory: string; +} +export interface INewEnvironmentDialogProps { + default_cpu_limit: string; + default_mem_limit: string; + machine_profiles: IMachineProfile[]; +} + +interface IFormValues { + repo?: string; + ref?: string; + name?: string; + memory?: number; + cpu?: number; + buildargs?: string; + username?: string; + password?: string; +} +const commonInputProps: OutlinedTextFieldProps = { + autoFocus: true, + required: true, + margin: 'dense', + fullWidth: true, + variant: 'outlined' +}; + +function _NewEnvironmentDialog(props: INewEnvironmentDialogProps) { + const axios = useAxios(); + const [open, setOpen] = useState(false); + const handleOpen = () => { + setOpen(true); + }; + const handleClose = ( + event?: any, + reason?: 'backdropClick' | 'escapeKeyDown' + ) => { + if (reason && reason === 'backdropClick') { + return; + } + setOpen(false); + }; + + const [formValues, setFormValues] = useState({}); + const updateFormValue = useCallback( + (key: keyof IFormValues, value: string | number) => { + setFormValues(old => { + return { ...old, [key]: value }; + }); + }, + [setFormValues] + ); + const validated = useMemo(() => { + return Boolean(formValues.repo) && Boolean(formValues.ref); + }, [formValues]); + + const [selectedProfile, setSelectedProfile] = useState(0); + + const MemoryCpuSelector = useMemo(() => { + return ( + + updateFormValue('memory', e.target.value)} + /> + updateFormValue('cpu', e.target.value)} + /> + + ); + }, [updateFormValue]); + + const MachineProfileSelector = useMemo(() => { + return ( + + + Machine profile + + + + ); + }, [updateFormValue, props.machine_profiles, selectedProfile]); + return ( + + + + + ) => { + event.preventDefault(); + const data: any = { ...formValues }; + data.repo = data.repo.trim(); + data.name = + data.name ?? + (data.repo as string) + .replace('http://', '') + .replace('https://', '') + .replace(/\//g, '-') + .replace(/\./g, '-'); + data.cpu = data.cpu ?? '2'; + data.memory = data.memory ?? '2'; + data.username = data.username ?? ''; + data.password = data.password ?? ''; + const response = await axios.request({ + method: 'post', + prefix: API_PREFIX, + path: ENV_PREFIX, + data + }); + if (response?.status === 'ok') { + window.location.reload(); + } else { + handleClose(); + } + } + }} + > + Create a new environment + + updateFormValue('repo', e.target.value)} + value={formValues.repo ?? ''} + /> + updateFormValue('ref', e.target.value)} + value={formValues.ref ?? ''} + /> + updateFormValue('name', e.target.value)} + /> + {props.machine_profiles.length > 0 + ? MachineProfileSelector + : MemoryCpuSelector} + + + Advanced + + + updateFormValue('buildargs', e.target.value)} + /> + + + Credentials + + + updateFormValue('username', e.target.value)} + /> + + + + + + + + + ); +} + +export const NewEnvironmentDialog = memo(_NewEnvironmentDialog); diff --git a/src/environments/RemoveEnvironmentButton.tsx b/src/environments/RemoveEnvironmentButton.tsx new file mode 100644 index 0000000..aacb84f --- /dev/null +++ b/src/environments/RemoveEnvironmentButton.tsx @@ -0,0 +1,49 @@ +import { Typography } from '@mui/material'; +import Box from '@mui/material/Box'; +import { memo, useCallback } from 'react'; + +import { useAxios } from '../common/AxiosContext'; +import { ButtonWithConfirm } from '../common/ButtonWithConfirm'; +import { ENV_PREFIX } from './types'; +import { API_PREFIX } from '../common/axiosclient'; + +interface IRemoveEnvironmentButton { + name: string; + image: string; +} + +function _RemoveEnvironmentButton(props: IRemoveEnvironmentButton) { + const axios = useAxios(); + + const removeEnv = useCallback(async () => { + const response = await axios.request({ + method: 'delete', + prefix: API_PREFIX, + path: ENV_PREFIX, + data: { name: props.image } + }); + if (response?.status === 'ok') { + window.location.reload(); + } else { + /* */ + } + }, [props.image, axios]); + + return ( + + + Are you sure you want to remove the following environment? + +
{props.name}
+ + } + action={removeEnv} + /> + ); +} + +export const RemoveEnvironmentButton = memo(_RemoveEnvironmentButton); diff --git a/src/environments/main.tsx b/src/environments/main.tsx new file mode 100644 index 0000000..aae383a --- /dev/null +++ b/src/environments/main.tsx @@ -0,0 +1,40 @@ +import '@fontsource/roboto/300.css'; +import '@fontsource/roboto/400.css'; +import '@fontsource/roboto/500.css'; +import '@fontsource/roboto/700.css'; + +import { createRoot } from 'react-dom/client'; + +import { JupyterhubContext } from '../common/JupyterhubContext'; +import App, { IAppProps } from './App'; + +const rootElement = document.getElementById('environments-root'); +if (rootElement) { + const root = createRoot(rootElement); + const dataElement = document.getElementById('tljh-page-data'); + let configData: IAppProps = { + images: [], + default_cpu_limit: '2', + default_mem_limit: '2G', + machine_profiles: [] + }; + if (dataElement) { + configData = JSON.parse(dataElement.textContent || '') as IAppProps; + } + const jhData = (window as any).jhdata; + const { base_url, xsrf_token, user, prefix, admin_access } = jhData; + + root.render( + + + + ); +} diff --git a/src/environments/types.ts b/src/environments/types.ts new file mode 100644 index 0000000..5f23f3b --- /dev/null +++ b/src/environments/types.ts @@ -0,0 +1,10 @@ +export const ENV_PREFIX = 'environments'; +export interface IEnvironmentData { + image_name: string; + cpu_limit: string; + display_name: string; + mem_limit: string; + ref: string; + repo: string; + status: string; +} diff --git a/src/servers/App.tsx b/src/servers/App.tsx new file mode 100644 index 0000000..4dd62d6 --- /dev/null +++ b/src/servers/App.tsx @@ -0,0 +1,50 @@ +import { Stack } from '@mui/material'; +import ScopedCssBaseline from '@mui/material/ScopedCssBaseline'; +import { ThemeProvider } from '@mui/material/styles'; + +import { customTheme } from '../common/theme'; +import { IServerData } from './types'; +import { AxiosContext } from '../common/AxiosContext'; +import { useMemo } from 'react'; +import { AxiosClient } from '../common/axiosclient'; +import { ServerList } from './ServersList'; +import { NewServerDialog } from './NewServerDialog'; +import { IEnvironmentData } from '../environments/types'; +import { useJupyterhub } from '../common/JupyterhubContext'; + +export interface IAppProps { + images: IEnvironmentData[]; + server_data: IServerData[]; + default_server_data: IServerData; + allow_named_servers: boolean; + named_server_limit_per_user: number; +} +export default function App(props: IAppProps) { + const jhData = useJupyterhub(); + const axios = useMemo(() => { + const baseUrl = jhData.baseUrl; + const xsrfToken = jhData.xsrfToken; + return new AxiosClient({ baseUrl, xsrfToken }); + }, [jhData]); + + return ( + + + + + + + + + + + ); +} diff --git a/src/servers/NewServerDialog.tsx b/src/servers/NewServerDialog.tsx new file mode 100644 index 0000000..e1b0273 --- /dev/null +++ b/src/servers/NewServerDialog.tsx @@ -0,0 +1,154 @@ +import { + Box, + Button, + Dialog, + DialogActions, + DialogContent, + DialogContentText, + DialogTitle, + OutlinedTextFieldProps +} from '@mui/material'; +import { GridRowSelectionModel } from '@mui/x-data-grid'; +import { Fragment, memo, useCallback, useMemo, useState } from 'react'; + +import { EnvironmentList } from '../environments/EnvironmentList'; +import { IEnvironmentData } from '../environments/types'; +import { SmallTextField } from '../common/SmallTextField'; + +import { useAxios } from '../common/AxiosContext'; +import { SPAWN_PREFIX } from '../common/axiosclient'; +import { useJupyterhub } from '../common/JupyterhubContext'; +export interface INewServerDialogProps { + images: IEnvironmentData[]; + allowNamedServers: boolean; + defaultRunning: boolean; + serverLimit: number; +} + +const commonInputProps: OutlinedTextFieldProps = { + autoFocus: true, + required: true, + margin: 'dense', + fullWidth: true, + variant: 'outlined' +}; +function _NewServerDialog(props: INewServerDialogProps) { + const axios = useAxios(); + const jhData = useJupyterhub(); + const [open, setOpen] = useState(false); + const [serverName, setServerName] = useState(''); + const handleOpen = () => { + setOpen(true); + }; + const handleClose = ( + event?: any, + reason?: 'backdropClick' | 'escapeKeyDown' + ) => { + if (reason && reason === 'backdropClick') { + return; + } + setOpen(false); + }; + + const [rowSelectionModel, setRowSelectionModel] = + useState([]); + const updateSelectedRow = useCallback( + (selected: GridRowSelectionModel) => { + if (selected.length > 1) { + setRowSelectionModel([selected[selected.length - 1]]); + } else { + setRowSelectionModel(selected); + } + }, + [setRowSelectionModel] + ); + + const createServer = useCallback(async () => { + const imageName = props.images[rowSelectionModel[0] as number].image_name; + const data = new FormData(); + data.append('image', imageName); + let path = ''; + if (serverName.length > 0) { + path = `${jhData.user}/${serverName}`; + } else { + path = jhData.user; + } + try { + await axios.request({ + method: 'post', + prefix: SPAWN_PREFIX, + path, + data + }); + window.location.reload(); + } catch (e: any) { + console.error(e); + } + }, [serverName, rowSelectionModel, props.images, axios, jhData]); + const disabled = useMemo(() => { + if (rowSelectionModel.length === 0) { + return true; + } + if (serverName.length === 0) { + if (props.defaultRunning) { + return true; + } else { + return false; + } + } + }, [rowSelectionModel, serverName, props.defaultRunning]); + return ( + + + + + + Server Options + + {props.allowNamedServers && ( + + setServerName(e.target.value)} + value={serverName} + disabled={!props.allowNamedServers} + /> + + )} + Select an environment + + + + + + + + + ); +} + +export const NewServerDialog = memo(_NewServerDialog); diff --git a/src/servers/OpenServerButton.tsx b/src/servers/OpenServerButton.tsx new file mode 100644 index 0000000..a21f542 --- /dev/null +++ b/src/servers/OpenServerButton.tsx @@ -0,0 +1,107 @@ +import { Button, IconButton } from '@mui/material'; +import { Fragment, memo, useCallback, useEffect, useState } from 'react'; + +import { useAxios } from '../common/AxiosContext'; +import { useJupyterhub } from '../common/JupyterhubContext'; +import urlJoin from 'url-join'; +import SyncIcon from '@mui/icons-material/Sync'; +import { SPAWN_PREFIX } from '../common/axiosclient'; + +interface IOpenServerButton { + url: string; + serverName: string; + imageName: string; + active: boolean; +} + +function _OpenServerButton(props: IOpenServerButton) { + const axios = useAxios(); + const jhData = useJupyterhub(); + + const [progress, setProgress] = useState(0); + useEffect(() => { + const { user, baseUrl, xsrfToken } = jhData; + let progressUrl = urlJoin( + baseUrl, + 'api', + 'users', + user, + 'servers', + props.serverName, + 'progress' + ); + if (xsrfToken) { + // add xsrf token to url parameter + const sep = progressUrl.indexOf('?') === -1 ? '?' : '&'; + progressUrl = progressUrl + sep + '_xsrf=' + xsrfToken; + } + + const eventSource = new EventSource(progressUrl); + eventSource.onerror = err => { + setProgress(100); + eventSource.close(); + }; + + eventSource.onmessage = event => { + const data = JSON.parse(event.data); + + setProgress(data.progress ?? 0); + }; + }, [jhData, setProgress, props.serverName]); + + const createServer = useCallback(async () => { + const imageName = props.imageName; + const data = new FormData(); + data.append('image', imageName); + try { + await axios.request({ + method: 'post', + prefix: SPAWN_PREFIX, + path: `${jhData.user}/${props.serverName}`, + data + }); + window.open(props.url, '_blank')?.focus(); + window.location.reload(); + } catch (e: any) { + console.error(e); + } + }, [props, axios, jhData]); + + return ( + + {progress === 100 && ( + + {props.active && ( + + )} + + {!props.active && ( + + )} + + )} + {progress < 100 && ( + + + + )} + + ); +} + +export const OpenServerButton = memo(_OpenServerButton); diff --git a/src/servers/RemoveServerButton.tsx b/src/servers/RemoveServerButton.tsx new file mode 100644 index 0000000..8fbea96 --- /dev/null +++ b/src/servers/RemoveServerButton.tsx @@ -0,0 +1,62 @@ +import { Typography } from '@mui/material'; +import Box from '@mui/material/Box'; +import { memo, useCallback } from 'react'; + +import { useAxios } from '../common/AxiosContext'; +import { ButtonWithConfirm } from '../common/ButtonWithConfirm'; +import { useJupyterhub } from '../common/JupyterhubContext'; +import { API_PREFIX } from '../common/axiosclient'; + +interface IRemoveServerButton { + server: string; +} + +function _RemoveServerButton(props: IRemoveServerButton) { + const axios = useAxios(); + const jhData = useJupyterhub(); + const removeEnv = useCallback(async () => { + let path = ''; + if (props.server.length > 0) { + path = `users/${jhData.user}/servers/${props.server}`; + } else { + path = `users/${jhData.user}/server`; + } + try { + await axios.request({ + method: 'delete', + prefix: API_PREFIX, + path, + data: { remove: props.server.length > 0 } + }); + window.location.reload(); + } catch (e: any) { + console.error(e); + } + }, [props.server, axios, jhData]); + + return ( + 0 ? ( + + + Are you sure you want to stop the following server? + +
{props.server}
+
+ ) : ( + + + Are you sure you want to stop the default server? + + + ) + } + action={removeEnv} + /> + ); +} + +export const RemoveServerButton = memo(_RemoveServerButton); diff --git a/src/servers/ServersList.tsx b/src/servers/ServersList.tsx new file mode 100644 index 0000000..733ce86 --- /dev/null +++ b/src/servers/ServersList.tsx @@ -0,0 +1,127 @@ +import { DataGrid, GridColDef } from '@mui/x-data-grid'; +import { memo, useMemo } from 'react'; + +import { Box } from '@mui/system'; +import { IServerData } from './types'; +import { formatTime } from '../common/utils'; +import { RemoveServerButton } from './RemoveServerButton'; +import { OpenServerButton } from './OpenServerButton'; +import { IconButton } from '@mui/material'; +import CheckIcon from '@mui/icons-material/Check'; +import ClearIcon from '@mui/icons-material/Clear'; +const columns: GridColDef[] = [ + { + field: 'name', + headerName: 'Server name', + flex: 1 + }, + { + field: 'image', + headerName: 'Image', + flex: 1 + }, + { + field: 'last_activity', + headerName: 'Last activity', + width: 150 + }, + { + field: 'active', + headerName: 'Status', + width: 100, + hideSortIcons: true, + renderCell: params => { + return params.value ? ( + + + + ) : ( + + + + ); + } + }, + { + field: 'status', + headerName: '', + width: 125, + filterable: false, + sortable: false, + hideable: false, + renderCell: params => { + return ; + } + }, + { + field: 'action', + headerName: '', + width: 125, + filterable: false, + sortable: false, + hideable: false, + renderCell: params => { + return ( + + ); + } + } +]; + +export interface IServerListProps { + servers: IServerData[]; + defaultServer: IServerData; +} + +function _ServerList(props: IServerListProps) { + const rows = useMemo(() => { + let servers = [...props.servers]; + if (props.defaultServer.active) { + servers = [props.defaultServer, ...servers]; + } + const allServers = servers.map((it, id) => { + const newItem: any = { ...it, id }; + newItem.image = it.user_options.image ?? ''; + newItem.last_activity = formatTime(newItem.last_activity); + return newItem; + }); + + return allServers; + }, [props]); + + return ( + + { + return ( + + No servers are running + + ); + } + }} + /> + + ); +} + +export const ServerList = memo(_ServerList); diff --git a/src/servers/main.tsx b/src/servers/main.tsx new file mode 100644 index 0000000..1943b6d --- /dev/null +++ b/src/servers/main.tsx @@ -0,0 +1,48 @@ +import '@fontsource/roboto/300.css'; +import '@fontsource/roboto/400.css'; +import '@fontsource/roboto/500.css'; +import '@fontsource/roboto/700.css'; + +import { createRoot } from 'react-dom/client'; + +import { JupyterhubContext } from '../common/JupyterhubContext'; +import App, { IAppProps } from './App'; + +const rootElement = document.getElementById('servers-root'); + +if (rootElement) { + const root = createRoot(rootElement); + + const dataElement = document.getElementById('tljh-page-data'); + let configData: IAppProps = { + images: [], + server_data: [], + default_server_data: { + name: '', + url: '', + last_activity: '', + user_options: {}, + active: false + }, + allow_named_servers: false, + named_server_limit_per_user: 0 + }; + if (dataElement) { + configData = JSON.parse(dataElement.textContent || '') as IAppProps; + } + const jhData = (window as any).jhdata; + const { base_url, xsrf_token, user, prefix, admin_access } = jhData; + root.render( + + + + ); +} diff --git a/src/servers/types.ts b/src/servers/types.ts new file mode 100644 index 0000000..a1da1d9 --- /dev/null +++ b/src/servers/types.ts @@ -0,0 +1,7 @@ +export interface IServerData { + name: string; + url: string; + last_activity: string; + user_options: { image?: string }; + active: boolean; +} diff --git a/tljh_repo2docker/__init__.py b/tljh_repo2docker/__init__.py index 460c2a6..0d0e031 100644 --- a/tljh_repo2docker/__init__.py +++ b/tljh_repo2docker/__init__.py @@ -1,4 +1,5 @@ import os +from typing import Any, Coroutine, Optional from aiodocker import Docker from dockerspawner import DockerSpawner @@ -13,6 +14,7 @@ from .builder import BuildHandler from .docker import list_images +from .servers import ServersHandler from .images import ImagesHandler from .logs import LogsHandler @@ -193,9 +195,16 @@ def tljh_custom_jupyterhub_config(c): {"default_cpu_limit": cpu_limit, "default_mem_limit": mem_limit} ) + machine_profiles = limits.get("machine_profiles", []) + + c.JupyterHub.tornado_settings.update( + {"machine_profiles": machine_profiles} + ) + # register the handlers to manage the user images c.JupyterHub.extra_handlers.extend( [ + (r"servers", ServersHandler), (r"environments", ImagesHandler), (r"api/environments", BuildHandler), (r"api/environments/([^/]+)/logs", LogsHandler), diff --git a/tljh_repo2docker/__version__.py b/tljh_repo2docker/__version__.py deleted file mode 100644 index 0058b93..0000000 --- a/tljh_repo2docker/__version__.py +++ /dev/null @@ -1 +0,0 @@ -__version__ = "1.0.1" \ No newline at end of file diff --git a/tljh_repo2docker/builder.py b/tljh_repo2docker/builder.py index 083b799..9679346 100644 --- a/tljh_repo2docker/builder.py +++ b/tljh_repo2docker/builder.py @@ -73,7 +73,6 @@ async def post(self): "Invalid build argument format" ) extra_buildargs.append(barg) - await build_image(repo, ref, name, memory, cpu, username, password, extra_buildargs) self.set_status(200) diff --git a/tljh_repo2docker/images.py b/tljh_repo2docker/images.py index ddceeb3..58919d5 100644 --- a/tljh_repo2docker/images.py +++ b/tljh_repo2docker/images.py @@ -21,6 +21,7 @@ async def get(self): images=images + containers, default_mem_limit=self.settings.get("default_mem_limit"), default_cpu_limit=self.settings.get("default_cpu_limit"), + machine_profiles=self.settings.get("machine_profiles"), ) if isawaitable(result): self.write(await result) diff --git a/tljh_repo2docker/servers.py b/tljh_repo2docker/servers.py new file mode 100644 index 0000000..76095f3 --- /dev/null +++ b/tljh_repo2docker/servers.py @@ -0,0 +1,73 @@ +from inspect import isawaitable +from typing import Any, Dict +from jupyterhub.orm import Spawner +from jupyterhub.handlers.base import BaseHandler +from tornado import web + +from .docker import list_images + + +class ServersHandler(BaseHandler): + """ + Handler to show the list of servers available + """ + + @web.authenticated + async def get(self): + images = await list_images() + user = self.current_user + if user.running: + # trigger poll_and_notify event in case of a server that died + await user.spawner.poll_and_notify() + auth_state = await user.get_auth_state() + named_spawners = user.all_spawners(include_default=False) + server_data = [] + for sp in named_spawners: + server_data.append( + self._spawner_to_server_data(sp, user) + ) + try: + named_server_limit = await self.get_current_user_named_server_limit() + except Exception: + named_server_limit = 0 + result = self.render_template( + "servers.html", + images=images, + allow_named_servers=self.allow_named_servers, + named_server_limit_per_user=named_server_limit, + server_data=server_data, + default_server_data=self._spawner_to_server_data(user.spawner, user), + auth_state=auth_state, + ) + + if isawaitable(result): + self.write(await result) + else: + self.write(result) + + def _spawner_to_server_data(self, sp: Spawner, user: Any) -> Dict: + data = { + "name": sp.name, + } + try: + data["url"] = user.server_url(sp.name) + except Exception: + data["url"] = "" + try: + data["last_activity"] = sp.last_activity.isoformat() + "Z" + except Exception: + data["last_activity"] = "" + + try: + data["active"] = sp.active + except Exception: + data["active"] = False + + try: + if sp.user_options: + data["user_options"] = sp.user_options + else: + data["user_options"] = {} + except Exception: + data["user_options"] = {} + return data diff --git a/tljh_repo2docker/static/css/style.css b/tljh_repo2docker/static/css/style.css deleted file mode 100644 index c0f1a65..0000000 --- a/tljh_repo2docker/static/css/style.css +++ /dev/null @@ -1,38 +0,0 @@ -.images-container { - width: 100%; -} - -.table > tbody > tr > td { - vertical-align: middle; -} - -.table > thead > tr > th { - vertical-align: top; -} - -.table > tbody > tr > td > p { - margin: unset; -} - -#show-logs-dialog .btn-default { - display: none; -} - -details { - padding: 0.5em 0.5em 0; -} - -summary { - font-weight: bold; - margin: -0.5em -0.5em 0; - padding: 0.5em; - cursor: pointer; -} - -details[open] { - padding: 0.5em; -} - -details[open] summary { - margin-bottom: 0.5em; -} diff --git a/tljh_repo2docker/static/js/images.js b/tljh_repo2docker/static/js/images.js deleted file mode 100644 index ee186db..0000000 --- a/tljh_repo2docker/static/js/images.js +++ /dev/null @@ -1,165 +0,0 @@ -require([ - "jquery", "bootstrap", "moment", "jhapi", "utils", - "environments-static/vendor/xterm-addon-fit.js", - "environments-static/vendor/xterm.js" -], function( - $, - bs, - moment, - JHAPI, - utils, - fit, - xterm -) { - "use strict"; - - var base_url = window.jhdata.base_url; - var api = new JHAPI(base_url); - - - function getRow(element) { - var original = element; - while (!element.hasClass("image-row")) { - element = element.parent(); - if (element[0].tagName === "BODY") { - console.error("Couldn't find row for", original); - throw new Error("No image-row found"); - } - } - return element; - } - - $("#add-environment").click(function() { - var dialog = $("#create-environment-dialog"); - dialog.find(".repo-input").val(""); - dialog.find(".ref-input").val(""); - dialog.find(".name-input").val(""); - dialog.find(".memory-input").val(""); - dialog.find(".cpu-input").val(""); - dialog.find(".build-args-input").val(""); - dialog.find(".username-input").val(""); - dialog.find(".password-input").val(""); - dialog.modal(); - }); - - $("#create-environment-dialog") - .find(".save-button") - .click(function() { - var dialog = $("#create-environment-dialog"); - var repo = dialog.find(".repo-input").val().trim(); - var ref = dialog.find(".ref-input").val().trim(); - var name = dialog.find(".name-input").val().trim(); - var memory = dialog.find(".memory-input").val().trim(); - var cpu = dialog.find(".cpu-input").val().trim(); - var buildargs = dialog.find(".build-args-input").val().trim(); - var username = dialog.find(".username-input").val().trim(); - var password = dialog.find(".password-input").val().trim(); - var spinner = $("#adding-environment-dialog"); - spinner.find('.modal-footer').remove(); - spinner.modal(); - api.api_request("environments", { - type: "POST", - data: JSON.stringify({ - repo: repo, - ref: ref, - name: name, - memory: memory, - cpu: cpu, - buildargs: buildargs, - username: username, - password: password, - }), - success: function() { - window.location.reload(); - }, - }); - }); - - $(".remove-environment").click(function() { - var el = $(this); - var row = getRow(el); - var image = row.data("image"); - var name = row.data("display-name"); - var dialog = $("#remove-environment-dialog"); - dialog.find(".delete-environment").attr("data-image", image); - dialog.find(".delete-environment").text(name); - dialog.modal(); - }); - - $("#remove-environment-dialog") - .find(".remove-button") - .click(function() { - var dialog = $("#remove-environment-dialog"); - var image = dialog.find(".delete-environment").data("image"); - var spinner = $("#removing-environment-dialog"); - spinner.find('.modal-footer').remove(); - spinner.modal(); - api.api_request("environments", { - type: "DELETE", - data: JSON.stringify({ - name: image - }), - success: function() { - window.location.reload(); - }, - }) - }); - - $(".logs").click(function() { - var el = $(this); - var row = getRow(el); - var image = row.data("image"); - var dialog = $("#show-logs-dialog"); - - var log = new xterm.Terminal({ - convertEol: true, - disableStdin: true - }); - var fitAddon = new fit.FitAddon(); - log.loadAddon(fitAddon); - - var eventSource; - - function showTerminal() { - $(".build-logs").empty(); - log.clear(); - var container = dialog.find(".build-logs")[0]; - log.open(container); - fitAddon.fit(); - - var logsUrl = utils.url_path_join(base_url, "api", "environments", image, "logs"); - if (api.xsrf_token) { - // add xsrf token to url parameter - var sep = logsUrl.indexOf("?") === -1 ? "?" : "&"; - logsUrl = logsUrl + sep + "_xsrf=" + api.xsrf_token; - } - eventSource = new EventSource(logsUrl); - eventSource.onerror = function(err) { - console.error("Failed to construct event stream", err); - eventSource.close(); - }; - eventSource.onmessage = function(event) { - var data = JSON.parse(event.data); - if (data.phase === 'built') { - eventSource.close(); - return - } - log.write(data.message); - fitAddon.fit(); - }; - } - - dialog.on('shown.bs.modal', showTerminal); - dialog.on('hide.bs.modal', function () { - dialog.off('shown.bs.modal', showTerminal); - if (eventSource) { - eventSource.close(); - } - }); - dialog.modal(); - }); - - // initialize tooltips - $('[data-toggle="tooltip"]').tooltip(); - -}); diff --git a/tljh_repo2docker/static/vendor/xterm-addon-fit.js b/tljh_repo2docker/static/vendor/xterm-addon-fit.js deleted file mode 100644 index 709e60a..0000000 --- a/tljh_repo2docker/static/vendor/xterm-addon-fit.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.FitAddon=t():e.FitAddon=t()}(window,function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(){}return e.prototype.activate=function(e){this._terminal=e},e.prototype.dispose=function(){},e.prototype.fit=function(){var e=this.proposeDimensions();if(e&&this._terminal){var t=this._terminal._core;this._terminal.rows===e.rows&&this._terminal.cols===e.cols||(t._renderService.clear(),this._terminal.resize(e.cols,e.rows))}},e.prototype.proposeDimensions=function(){if(this._terminal&&this._terminal.element&&this._terminal.element.parentElement){var e=this._terminal._core,t=window.getComputedStyle(this._terminal.element.parentElement),r=parseInt(t.getPropertyValue("height")),n=Math.max(0,parseInt(t.getPropertyValue("width"))),o=window.getComputedStyle(this._terminal.element),i=r-(parseInt(o.getPropertyValue("padding-top"))+parseInt(o.getPropertyValue("padding-bottom"))),a=n-(parseInt(o.getPropertyValue("padding-right"))+parseInt(o.getPropertyValue("padding-left")))-e.viewport.scrollBarWidth;return{cols:Math.max(2,Math.floor(a/e._renderService.dimensions.actualCellWidth)),rows:Math.max(1,Math.floor(i/e._renderService.dimensions.actualCellHeight))}}},e}();t.FitAddon=n}])}); -//# sourceMappingURL=xterm-addon-fit.js.map \ No newline at end of file diff --git a/tljh_repo2docker/static/vendor/xterm.css b/tljh_repo2docker/static/vendor/xterm.css deleted file mode 100644 index b3d8d4f..0000000 --- a/tljh_repo2docker/static/vendor/xterm.css +++ /dev/null @@ -1,171 +0,0 @@ -/** - * Copyright (c) 2014 The xterm.js authors. All rights reserved. - * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License) - * https://github.com/chjj/term.js - * @license MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - * Originally forked from (with the author's permission): - * Fabrice Bellard's javascript vt100 for jslinux: - * http://bellard.org/jslinux/ - * Copyright (c) 2011 Fabrice Bellard - * The original design remains. The terminal itself - * has been extended to include xterm CSI codes, among - * other features. - */ - -/** - * Default styles for xterm.js - */ - -.xterm { - font-feature-settings: "liga" 0; - position: relative; - user-select: none; - -ms-user-select: none; - -webkit-user-select: none; -} - -.xterm.focus, -.xterm:focus { - outline: none; -} - -.xterm .xterm-helpers { - position: absolute; - top: 0; - /** - * The z-index of the helpers must be higher than the canvases in order for - * IMEs to appear on top. - */ - z-index: 5; -} - -.xterm .xterm-helper-textarea { - /* - * HACK: to fix IE's blinking cursor - * Move textarea out of the screen to the far left, so that the cursor is not visible. - */ - position: absolute; - opacity: 0; - left: -9999em; - top: 0; - width: 0; - height: 0; - z-index: -5; - /** Prevent wrapping so the IME appears against the textarea at the correct position */ - white-space: nowrap; - overflow: hidden; - resize: none; -} - -.xterm .composition-view { - /* TODO: Composition position got messed up somewhere */ - background: #000; - color: #FFF; - display: none; - position: absolute; - white-space: nowrap; - z-index: 1; -} - -.xterm .composition-view.active { - display: block; -} - -.xterm .xterm-viewport { - /* On OS X this is required in order for the scroll bar to appear fully opaque */ - background-color: #000; - overflow-y: scroll; - cursor: default; - position: absolute; - right: 0; - left: 0; - top: 0; - bottom: 0; -} - -.xterm .xterm-screen { - position: relative; -} - -.xterm .xterm-screen canvas { - position: absolute; - left: 0; - top: 0; -} - -.xterm .xterm-scroll-area { - visibility: hidden; -} - -.xterm-char-measure-element { - display: inline-block; - visibility: hidden; - position: absolute; - top: 0; - left: -9999em; - line-height: normal; -} - -.xterm { - cursor: text; -} - -.xterm.enable-mouse-events { - /* When mouse events are enabled (eg. tmux), revert to the standard pointer cursor */ - cursor: default; -} - -.xterm.xterm-cursor-pointer { - cursor: pointer; -} - -.xterm.column-select.focus { - /* Column selection mode */ - cursor: crosshair; -} - -.xterm .xterm-accessibility, -.xterm .xterm-message { - position: absolute; - left: 0; - top: 0; - bottom: 0; - right: 0; - z-index: 10; - color: transparent; -} - -.xterm .live-region { - position: absolute; - left: -9999px; - width: 1px; - height: 1px; - overflow: hidden; -} - -.xterm-dim { - opacity: 0.5; -} - -.xterm-underline { - text-decoration: underline; -} diff --git a/tljh_repo2docker/static/vendor/xterm.js b/tljh_repo2docker/static/vendor/xterm.js deleted file mode 100644 index 7ee6ebc..0000000 --- a/tljh_repo2docker/static/vendor/xterm.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var i=t();for(var r in i)("object"==typeof exports?exports:e)[r]=i[r]}}(window,function(){return function(e){var t={};function i(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,i),n.l=!0,n.exports}return i.m=e,i.c=t,i.d=function(e,t,r){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(i.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)i.d(r,n,function(t){return e[t]}.bind(null,n));return r},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=32)}([function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(13);t.IBufferService=r.createDecorator("BufferService"),t.ICoreMouseService=r.createDecorator("CoreMouseService"),t.ICoreService=r.createDecorator("CoreService"),t.IDirtyRowService=r.createDecorator("DirtyRowService"),t.IInstantiationService=r.createDecorator("InstantiationService"),t.ILogService=r.createDecorator("LogService"),t.IOptionsService=r.createDecorator("OptionsService")},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(){this._listeners=[]}return Object.defineProperty(e.prototype,"event",{get:function(){var e=this;return this._event||(this._event=function(t){return e._listeners.push(t),{dispose:function(){for(var i=0;i>22},t.prototype.getChars=function(){return 2097152&this.content?this.combinedData:2097151&this.content?s.stringFromCodePoint(2097151&this.content):""},t.prototype.getCode=function(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):2097151&this.content},t.prototype.setFromCharData=function(e){this.fg=e[o.CHAR_DATA_ATTR_INDEX],this.bg=0;var t=!1;if(e[o.CHAR_DATA_CHAR_INDEX].length>2)t=!0;else if(2===e[o.CHAR_DATA_CHAR_INDEX].length){var i=e[o.CHAR_DATA_CHAR_INDEX].charCodeAt(0);if(55296<=i&&i<=56319){var r=e[o.CHAR_DATA_CHAR_INDEX].charCodeAt(1);56320<=r&&r<=57343?this.content=1024*(i-55296)+r-56320+65536|e[o.CHAR_DATA_WIDTH_INDEX]<<22:t=!0}else t=!0}else this.content=e[o.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|e[o.CHAR_DATA_WIDTH_INDEX]<<22;t&&(this.combinedData=e[o.CHAR_DATA_CHAR_INDEX],this.content=2097152|e[o.CHAR_DATA_WIDTH_INDEX]<<22)},t.prototype.getAsCharData=function(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]},t}(i(6).AttributeData);t.CellData=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(13);t.ICharSizeService=r.createDecorator("CharSizeService"),t.IMouseService=r.createDecorator("MouseService"),t.IRenderService=r.createDecorator("RenderService"),t.ISelectionService=r.createDecorator("SelectionService"),t.ISoundService=r.createDecorator("SoundService")},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(){this.fg=0,this.bg=0}return e.toColorRGB=function(e){return[e>>>16&255,e>>>8&255,255&e]},e.fromColorRGB=function(e){return(255&e[0])<<16|(255&e[1])<<8|255&e[2]},e.prototype.clone=function(){var t=new e;return t.fg=this.fg,t.bg=this.bg,t},e.prototype.isInverse=function(){return 67108864&this.fg},e.prototype.isBold=function(){return 134217728&this.fg},e.prototype.isUnderline=function(){return 268435456&this.fg},e.prototype.isBlink=function(){return 536870912&this.fg},e.prototype.isInvisible=function(){return 1073741824&this.fg},e.prototype.isItalic=function(){return 67108864&this.bg},e.prototype.isDim=function(){return 134217728&this.bg},e.prototype.getFgColorMode=function(){return 50331648&this.fg},e.prototype.getBgColorMode=function(){return 50331648&this.bg},e.prototype.isFgRGB=function(){return 50331648==(50331648&this.fg)},e.prototype.isBgRGB=function(){return 50331648==(50331648&this.bg)},e.prototype.isFgPalette=function(){return 16777216==(50331648&this.fg)||33554432==(50331648&this.fg)},e.prototype.isBgPalette=function(){return 16777216==(50331648&this.bg)||33554432==(50331648&this.bg)},e.prototype.isFgDefault=function(){return 0==(50331648&this.fg)},e.prototype.isBgDefault=function(){return 0==(50331648&this.bg)},e.prototype.getFgColor=function(){switch(50331648&this.fg){case 16777216:case 33554432:return 255&this.fg;case 50331648:return 16777215&this.fg;default:return-1}},e.prototype.getBgColor=function(){switch(50331648&this.bg){case 16777216:case 33554432:return 255&this.bg;case 50331648:return 16777215&this.bg;default:return-1}},e}();t.AttributeData=r},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addDisposableDomListener=function(e,t,i,r){return e.addEventListener(t,i,r),{dispose:function(){i&&e.removeEventListener(t,i,r)}}}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.stringFromCodePoint=function(e){return e>65535?(e-=65536,String.fromCharCode(55296+(e>>10))+String.fromCharCode(e%1024+56320)):String.fromCharCode(e)},t.utf32ToString=function(e,t,i){void 0===t&&(t=0),void 0===i&&(i=e.length);for(var r="",n=t;n65535?(s-=65536,r+=String.fromCharCode(55296+(s>>10))+String.fromCharCode(s%1024+56320)):r+=String.fromCharCode(s)}return r};var r=function(){function e(){this._interim=0}return e.prototype.clear=function(){this._interim=0},e.prototype.decode=function(e,t){var i=e.length;if(!i)return 0;var r=0,n=0;this._interim&&(56320<=(a=e.charCodeAt(n++))&&a<=57343?t[r++]=1024*(this._interim-55296)+a-56320+65536:(t[r++]=this._interim,t[r++]=a),this._interim=0);for(var s=n;s=i)return this._interim=o,r;var a;56320<=(a=e.charCodeAt(s))&&a<=57343?t[r++]=1024*(o-55296)+a-56320+65536:(t[r++]=o,t[r++]=a)}else t[r++]=o}return r},e}();t.StringToUtf32=r;var n=function(){function e(){this.interim=new Uint8Array(3)}return e.prototype.clear=function(){this.interim.fill(0)},e.prototype.decode=function(e,t){var i=e.length;if(!i)return 0;var r,n,s,o,a=0,c=0,l=0;if(this.interim[0]){var h=!1,u=this.interim[0];u&=192==(224&u)?31:224==(240&u)?15:7;for(var f=0,_=void 0;(_=63&this.interim[++f])&&f<4;)u<<=6,u|=_;for(var d=192==(224&this.interim[0])?2:224==(240&this.interim[0])?3:4,p=d-f;l=i)return 0;if(128!=(192&(_=e[l++]))){l--,h=!0;break}this.interim[f++]=_,u<<=6,u|=63&_}h||(2===d?u<128?l--:t[a++]=u:3===d?u<2048||u>=55296&&u<=57343||(t[a++]=u):u<65536||u>1114111||(t[a++]=u)),this.interim.fill(0)}for(var v=i-4,g=l;g=i)return this.interim[0]=r,a;if(128!=(192&(n=e[g++]))){g--;continue}if((c=(31&r)<<6|63&n)<128){g--;continue}t[a++]=c}else if(224==(240&r)){if(g>=i)return this.interim[0]=r,a;if(128!=(192&(n=e[g++]))){g--;continue}if(g>=i)return this.interim[0]=r,this.interim[1]=n,a;if(128!=(192&(s=e[g++]))){g--;continue}if((c=(15&r)<<12|(63&n)<<6|63&s)<2048||c>=55296&&c<=57343)continue;t[a++]=c}else if(240==(248&r)){if(g>=i)return this.interim[0]=r,a;if(128!=(192&(n=e[g++]))){g--;continue}if(g>=i)return this.interim[0]=r,this.interim[1]=n,a;if(128!=(192&(s=e[g++]))){g--;continue}if(g>=i)return this.interim[0]=r,this.interim[1]=n,this.interim[2]=s,a;if(128!=(192&(o=e[g++]))){g--;continue}if((c=(7&r)<<18|(63&n)<<12|(63&s)<<6|63&o)<65536||c>1114111)continue;t[a++]=c}}return a},e}();t.Utf8ToUtf32=n},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.INVERTED_DEFAULT_COLOR=257,t.DIM_OPACITY=.5,t.CHAR_ATLAS_CELL_SPACING=1},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r="undefined"==typeof navigator,n=r?"node":navigator.userAgent,s=r?"node":navigator.platform;function o(e,t){return e.indexOf(t)>=0}t.isFirefox=!!~n.indexOf("Firefox"),t.isSafari=/^((?!chrome|android).)*safari/i.test(n),t.isMac=o(["Macintosh","MacIntel","MacPPC","Mac68K"],s),t.isIpad="iPad"===s,t.isIphone="iPhone"===s,t.isWindows=o(["Windows","Win16","Win32","WinCE"],s),t.isLinux=s.indexOf("Linux")>=0},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.NUL="\0",e.SOH="",e.STX="",e.ETX="",e.EOT="",e.ENQ="",e.ACK="",e.BEL="",e.BS="\b",e.HT="\t",e.LF="\n",e.VT="\v",e.FF="\f",e.CR="\r",e.SO="",e.SI="",e.DLE="",e.DC1="",e.DC2="",e.DC3="",e.DC4="",e.NAK="",e.SYN="",e.ETB="",e.CAN="",e.EM="",e.SUB="",e.ESC="",e.FS="",e.GS="",e.RS="",e.US="",e.SP=" ",e.DEL=""}(t.C0||(t.C0={})),function(e){e.PAD="€",e.HOP="",e.BPH="‚",e.NBH="ƒ",e.IND="„",e.NEL="…",e.SSA="†",e.ESA="‡",e.HTS="ˆ",e.HTJ="‰",e.VTS="Š",e.PLD="‹",e.PLU="Œ",e.RI="",e.SS2="Ž",e.SS3="",e.DCS="",e.PU1="‘",e.PU2="’",e.STS="“",e.CCH="”",e.MW="•",e.SPA="–",e.EPA="—",e.SOS="˜",e.SGCI="™",e.SCI="š",e.CSI="›",e.ST="œ",e.OSC="",e.PM="ž",e.APC="Ÿ"}(t.C1||(t.C1={}))},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(3),n=i(9),s=i(23),o=i(6),a=i(26),c=function(){function e(e,t,i,r,n,s,o,a){this._container=e,this._alpha=r,this._colors=n,this._rendererId=s,this._bufferService=o,this._optionsService=a,this._scaledCharWidth=0,this._scaledCharHeight=0,this._scaledCellWidth=0,this._scaledCellHeight=0,this._scaledCharLeft=0,this._scaledCharTop=0,this._currentGlyphIdentifier={chars:"",code:0,bg:0,fg:0,bold:!1,dim:!1,italic:!1},this._canvas=document.createElement("canvas"),this._canvas.classList.add("xterm-"+t+"-layer"),this._canvas.style.zIndex=i.toString(),this._initCanvas(),this._container.appendChild(this._canvas)}return e.prototype.dispose=function(){this._container.removeChild(this._canvas),this._charAtlas&&this._charAtlas.dispose()},e.prototype._initCanvas=function(){this._ctx=a.throwIfFalsy(this._canvas.getContext("2d",{alpha:this._alpha})),this._alpha||this._clearAll()},e.prototype.onOptionsChanged=function(){},e.prototype.onBlur=function(){},e.prototype.onFocus=function(){},e.prototype.onCursorMove=function(){},e.prototype.onGridChanged=function(e,t){},e.prototype.onSelectionChanged=function(e,t,i){void 0===i&&(i=!1)},e.prototype.setColors=function(e){this._refreshCharAtlas(e)},e.prototype._setTransparency=function(e){if(e!==this._alpha){var t=this._canvas;this._alpha=e,this._canvas=this._canvas.cloneNode(),this._initCanvas(),this._container.replaceChild(this._canvas,t),this._refreshCharAtlas(this._colors),this.onGridChanged(0,this._bufferService.rows-1)}},e.prototype._refreshCharAtlas=function(e){this._scaledCharWidth<=0&&this._scaledCharHeight<=0||(this._charAtlas=s.acquireCharAtlas(this._optionsService.options,this._rendererId,e,this._scaledCharWidth,this._scaledCharHeight),this._charAtlas.warmUp())},e.prototype.resize=function(e){this._scaledCellWidth=e.scaledCellWidth,this._scaledCellHeight=e.scaledCellHeight,this._scaledCharWidth=e.scaledCharWidth,this._scaledCharHeight=e.scaledCharHeight,this._scaledCharLeft=e.scaledCharLeft,this._scaledCharTop=e.scaledCharTop,this._canvas.width=e.scaledCanvasWidth,this._canvas.height=e.scaledCanvasHeight,this._canvas.style.width=e.canvasWidth+"px",this._canvas.style.height=e.canvasHeight+"px",this._alpha||this._clearAll(),this._refreshCharAtlas(this._colors)},e.prototype._fillCells=function(e,t,i,r){this._ctx.fillRect(e*this._scaledCellWidth,t*this._scaledCellHeight,i*this._scaledCellWidth,r*this._scaledCellHeight)},e.prototype._fillBottomLineAtCells=function(e,t,i){void 0===i&&(i=1),this._ctx.fillRect(e*this._scaledCellWidth,(t+1)*this._scaledCellHeight-window.devicePixelRatio-1,i*this._scaledCellWidth,window.devicePixelRatio)},e.prototype._fillLeftLineAtCell=function(e,t){this._ctx.fillRect(e*this._scaledCellWidth,t*this._scaledCellHeight,window.devicePixelRatio,this._scaledCellHeight)},e.prototype._strokeRectAtCell=function(e,t,i,r){this._ctx.lineWidth=window.devicePixelRatio,this._ctx.strokeRect(e*this._scaledCellWidth+window.devicePixelRatio/2,t*this._scaledCellHeight+window.devicePixelRatio/2,i*this._scaledCellWidth-window.devicePixelRatio,r*this._scaledCellHeight-window.devicePixelRatio)},e.prototype._clearAll=function(){this._alpha?this._ctx.clearRect(0,0,this._canvas.width,this._canvas.height):(this._ctx.fillStyle=this._colors.background.css,this._ctx.fillRect(0,0,this._canvas.width,this._canvas.height))},e.prototype._clearCells=function(e,t,i,r){this._alpha?this._ctx.clearRect(e*this._scaledCellWidth,t*this._scaledCellHeight,i*this._scaledCellWidth,r*this._scaledCellHeight):(this._ctx.fillStyle=this._colors.background.css,this._ctx.fillRect(e*this._scaledCellWidth,t*this._scaledCellHeight,i*this._scaledCellWidth,r*this._scaledCellHeight))},e.prototype._fillCharTrueColor=function(e,t,i){this._ctx.font=this._getFont(!1,!1),this._ctx.textBaseline="middle",this._clipRow(i),this._ctx.fillText(e.getChars(),t*this._scaledCellWidth+this._scaledCharLeft,i*this._scaledCellHeight+this._scaledCharTop+this._scaledCharHeight/2)},e.prototype._drawChars=function(e,t,i){var s,o;e.isFgRGB()||e.isBgRGB()?this._drawUncachedChars(e,t,i):(e.isInverse()?(s=e.isBgDefault()?n.INVERTED_DEFAULT_COLOR:e.getBgColor(),o=e.isFgDefault()?n.INVERTED_DEFAULT_COLOR:e.getFgColor()):(o=e.isBgDefault()?r.DEFAULT_COLOR:e.getBgColor(),s=e.isFgDefault()?r.DEFAULT_COLOR:e.getFgColor()),s+=this._optionsService.options.drawBoldTextInBrightColors&&e.isBold()&&s<8&&s!==n.INVERTED_DEFAULT_COLOR?8:0,this._currentGlyphIdentifier.chars=e.getChars()||r.WHITESPACE_CELL_CHAR,this._currentGlyphIdentifier.code=e.getCode()||r.WHITESPACE_CELL_CODE,this._currentGlyphIdentifier.bg=o,this._currentGlyphIdentifier.fg=s,this._currentGlyphIdentifier.bold=!!e.isBold(),this._currentGlyphIdentifier.dim=!!e.isDim(),this._currentGlyphIdentifier.italic=!!e.isItalic(),this._charAtlas&&this._charAtlas.draw(this._ctx,this._currentGlyphIdentifier,t*this._scaledCellWidth+this._scaledCharLeft,i*this._scaledCellHeight+this._scaledCharTop)||this._drawUncachedChars(e,t,i))},e.prototype._drawUncachedChars=function(e,t,i){if(this._ctx.save(),this._ctx.font=this._getFont(!!e.isBold(),!!e.isItalic()),this._ctx.textBaseline="middle",e.isInverse())e.isBgDefault()?this._ctx.fillStyle=this._colors.background.css:e.isBgRGB()?this._ctx.fillStyle="rgb("+o.AttributeData.toColorRGB(e.getBgColor()).join(",")+")":this._ctx.fillStyle=this._colors.ansi[e.getBgColor()].css;else if(e.isFgDefault())this._ctx.fillStyle=this._colors.foreground.css;else if(e.isFgRGB())this._ctx.fillStyle="rgb("+o.AttributeData.toColorRGB(e.getFgColor()).join(",")+")";else{var r=e.getFgColor();this._optionsService.options.drawBoldTextInBrightColors&&e.isBold()&&r<8&&(r+=8),this._ctx.fillStyle=this._colors.ansi[r].css}this._clipRow(i),e.isDim()&&(this._ctx.globalAlpha=n.DIM_OPACITY),this._ctx.fillText(e.getChars(),t*this._scaledCellWidth+this._scaledCharLeft,i*this._scaledCellHeight+this._scaledCharTop+this._scaledCharHeight/2),this._ctx.restore()},e.prototype._clipRow=function(e){this._ctx.beginPath(),this._ctx.rect(0,e*this._scaledCellHeight,this._bufferService.cols*this._scaledCellWidth,this._scaledCellHeight),this._ctx.clip()},e.prototype._getFont=function(e,t){return(t?"italic":"")+" "+(e?this._optionsService.options.fontWeightBold:this._optionsService.options.fontWeight)+" "+this._optionsService.options.fontSize*window.devicePixelRatio+"px "+this._optionsService.options.fontFamily},e}();t.BaseRenderLayer=c},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r="di$target",n="di$dependencies";function s(e,t,i){t[r]===t?t[n].push({id:e,index:i}):(t[n]=[{id:e,index:i}],t[r]=t)}t.serviceRegistry=new Map,t.getServiceDependencies=function(e){return e[n]||[]},t.createDecorator=function(e){if(t.serviceRegistry.has(e))return t.serviceRegistry.get(e);var i=function(e,t,r){if(3!==arguments.length)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");s(i,e,r)};return i.toString=function(){return e},t.serviceRegistry.set(e,i),i}},function(e,t,i){"use strict";function r(e,t,i,r){if(void 0===i&&(i=0),void 0===r&&(r=e.length),i>=e.length)return e;i=(e.length+i)%e.length,r=r>=e.length?e.length:(e.length+r)%e.length;for(var n=i;n>22,2097152&t?this._combined[e].charCodeAt(this._combined[e].length-1):i]},e.prototype.set=function(e,t){this._data[e*a+1]=t[n.CHAR_DATA_ATTR_INDEX],t[n.CHAR_DATA_CHAR_INDEX].length>1?(this._combined[e]=t[1],this._data[e*a+0]=2097152|e|t[n.CHAR_DATA_WIDTH_INDEX]<<22):this._data[e*a+0]=t[n.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|t[n.CHAR_DATA_WIDTH_INDEX]<<22},e.prototype.getWidth=function(e){return this._data[e*a+0]>>22},e.prototype.hasWidth=function(e){return 12582912&this._data[e*a+0]},e.prototype.getFg=function(e){return this._data[e*a+1]},e.prototype.getBg=function(e){return this._data[e*a+2]},e.prototype.hasContent=function(e){return 4194303&this._data[e*a+0]},e.prototype.getCodePoint=function(e){var t=this._data[e*a+0];return 2097152&t?this._combined[e].charCodeAt(this._combined[e].length-1):2097151&t},e.prototype.isCombined=function(e){return 2097152&this._data[e*a+0]},e.prototype.getString=function(e){var t=this._data[e*a+0];return 2097152&t?this._combined[e]:2097151&t?r.stringFromCodePoint(2097151&t):""},e.prototype.loadCell=function(e,t){var i=e*a;return t.content=this._data[i+0],t.fg=this._data[i+1],t.bg=this._data[i+2],2097152&t.content&&(t.combinedData=this._combined[e]),t},e.prototype.setCell=function(e,t){2097152&t.content&&(this._combined[e]=t.combinedData),this._data[e*a+0]=t.content,this._data[e*a+1]=t.fg,this._data[e*a+2]=t.bg},e.prototype.setCellFromCodePoint=function(e,t,i,r,n){this._data[e*a+0]=t|i<<22,this._data[e*a+1]=r,this._data[e*a+2]=n},e.prototype.addCodepointToCell=function(e,t){var i=this._data[e*a+0];2097152&i?this._combined[e]+=r.stringFromCodePoint(t):(2097151&i?(this._combined[e]=r.stringFromCodePoint(2097151&i)+r.stringFromCodePoint(t),i&=-2097152,i|=2097152):i=t|1<<22,this._data[e*a+0]=i)},e.prototype.insertCells=function(e,t,i){if(e%=this.length,t=0;--n)this.setCell(e+t+n,this.loadCell(e+n,r));for(n=0;nthis.length){var i=new Uint32Array(e*a);this.length&&(e*a=e&&delete this._combined[s]}}else this._data=new Uint32Array(0),this._combined={};this.length=e}},e.prototype.fill=function(e){this._combined={};for(var t=0;t=0;--e)if(4194303&this._data[e*a+0])return e+(this._data[e*a+0]>>22);return 0},e.prototype.copyCellsFrom=function(e,t,i,r,n){var s=e._data;if(n)for(var o=r-1;o>=0;o--)for(var c=0;c=t&&(this._combined[h-t+i]=e._combined[h])}},e.prototype.translateToString=function(e,t,i){void 0===e&&(e=!1),void 0===t&&(t=0),void 0===i&&(i=this.length),e&&(i=Math.min(i,this.getTrimmedLength()));for(var s="";t>22||1}return s},e}();t.BufferLine=c},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.promptLabel="Terminal input",t.tooMuchOutput="Too much output to announce, navigate to rows manually to read"},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CHARSETS={},t.DEFAULT_CHARSET=t.CHARSETS.B,t.CHARSETS[0]={"`":"◆",a:"▒",b:"\t",c:"\f",d:"\r",e:"\n",f:"°",g:"±",h:"␤",i:"\v",j:"┘",k:"┐",l:"┌",m:"└",n:"┼",o:"⎺",p:"⎻",q:"─",r:"⎼",s:"⎽",t:"├",u:"┤",v:"┴",w:"┬",x:"│",y:"≤",z:"≥","{":"π","|":"≠","}":"£","~":"·"},t.CHARSETS.A={"#":"£"},t.CHARSETS.B=null,t.CHARSETS[4]={"#":"£","@":"¾","[":"ij","\\":"½","]":"|","{":"¨","|":"f","}":"¼","~":"´"},t.CHARSETS.C=t.CHARSETS[5]={"[":"Ä","\\":"Ö","]":"Å","^":"Ü","`":"é","{":"ä","|":"ö","}":"å","~":"ü"},t.CHARSETS.R={"#":"£","@":"à","[":"°","\\":"ç","]":"§","{":"é","|":"ù","}":"è","~":"¨"},t.CHARSETS.Q={"@":"à","[":"â","\\":"ç","]":"ê","^":"î","`":"ô","{":"é","|":"ù","}":"è","~":"û"},t.CHARSETS.K={"@":"§","[":"Ä","\\":"Ö","]":"Ü","{":"ä","|":"ö","}":"ü","~":"ß"},t.CHARSETS.Y={"#":"£","@":"§","[":"°","\\":"ç","]":"é","`":"ù","{":"à","|":"ò","}":"è","~":"ì"},t.CHARSETS.E=t.CHARSETS[6]={"@":"Ä","[":"Æ","\\":"Ø","]":"Å","^":"Ü","`":"ä","{":"æ","|":"ø","}":"å","~":"ü"},t.CHARSETS.Z={"#":"£","@":"§","[":"¡","\\":"Ñ","]":"¿","{":"°","|":"ñ","}":"ç"},t.CHARSETS.H=t.CHARSETS[7]={"@":"É","[":"Ä","\\":"Ö","]":"Å","^":"Ü","`":"é","{":"ä","|":"ö","}":"å","~":"ü"},t.CHARSETS["="]={"#":"ù","@":"à","[":"é","\\":"ç","]":"ê","^":"î",_:"è","`":"ô","{":"ä","|":"ö","}":"ü","~":"û"}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(14);t.wcwidth=function(e){var t=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531]],i=[[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]];var n=0|e.control,s=new Uint8Array(65536);r.fill(s,1),s[0]=e.nul,r.fill(s,e.control,1,32),r.fill(s,e.control,127,160),r.fill(s,2,4352,4448),s[9001]=2,s[9002]=2,r.fill(s,2,11904,42192),s[12351]=1,r.fill(s,2,44032,55204),r.fill(s,2,63744,64256),r.fill(s,2,65040,65050),r.fill(s,2,65072,65136),r.fill(s,2,65280,65377),r.fill(s,2,65504,65511);for(var o=0;ot[n][1])return!1;for(;n>=r;)if(e>t[i=r+n>>1][1])r=i+1;else{if(!(e=131072&&t<=196605||t>=196608&&t<=262141?2:1;var t}}({nul:0,control:0}),t.getStringCellWidth=function(e){for(var i=0,r=e.length,n=0;n=r)return i+t.wcwidth(s);var o=e.charCodeAt(n);56320<=o&&o<=57343?s=1024*(s-55296)+o-56320+65536:i+=t.wcwidth(o)}i+=t.wcwidth(s)}return i}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=256,n=function(){function e(e,t){if(void 0===e&&(e=32),void 0===t&&(t=32),this.maxLength=e,this.maxSubParamsLength=t,t>r)throw new Error("maxSubParamsLength must not be greater than 256");this.params=new Int32Array(e),this.length=0,this._subParams=new Int32Array(t),this._subParamsLength=0,this._subParamsIdx=new Uint16Array(e),this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}return e.fromArray=function(t){var i=new e;if(!t.length)return i;for(var r=t[0]instanceof Array?1:0;r>8,r=255&this._subParamsIdx[t];r-i>0&&e.push(Array.prototype.slice.call(this._subParams,i,r))}return e},e.prototype.reset=function(){this.length=0,this._subParamsLength=0,this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1},e.prototype.addParam=function(e){if(this._digitIsSub=!1,this.length>=this.maxLength)this._rejectDigits=!0;else{if(e<-1)throw new Error("values lesser than -1 are not allowed");this._subParamsIdx[this.length]=this._subParamsLength<<8|this._subParamsLength,this.params[this.length++]=e>2147483647?2147483647:e}},e.prototype.addSubParam=function(e){if(this._digitIsSub=!0,this.length)if(this._rejectDigits||this._subParamsLength>=this.maxSubParamsLength)this._rejectSubDigits=!0;else{if(e<-1)throw new Error("values lesser than -1 are not allowed");this._subParams[this._subParamsLength++]=e>2147483647?2147483647:e,this._subParamsIdx[this.length-1]++}},e.prototype.hasSubParams=function(e){return(255&this._subParamsIdx[e])-(this._subParamsIdx[e]>>8)>0},e.prototype.getSubParams=function(e){var t=this._subParamsIdx[e]>>8,i=255&this._subParamsIdx[e];return i-t>0?this._subParams.subarray(t,i):null},e.prototype.getSubParamsAll=function(){for(var e={},t=0;t>8,r=255&this._subParamsIdx[t];r-i>0&&(e[t]=this._subParams.slice(i,r))}return e},e.prototype.addDigit=function(e){var t;if(!(this._rejectDigits||!(t=this._digitIsSub?this._subParamsLength:this.length)||this._digitIsSub&&this._rejectSubDigits)){var i=this._digitIsSub?this._subParams:this.params,r=i[t-1];i[t-1]=~r?Math.min(10*r+e,2147483647):e}},e}();t.Params=n},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(21),n=i(8),s=function(){function e(){this._state=0,this._id=-1,this._handlers=Object.create(null),this._handlerFb=function(){}}return e.prototype.addHandler=function(e,t){void 0===this._handlers[e]&&(this._handlers[e]=[]);var i=this._handlers[e];return i.push(t),{dispose:function(){var e=i.indexOf(t);-1!==e&&i.splice(e,1)}}},e.prototype.setHandler=function(e,t){this._handlers[e]=[t]},e.prototype.clearHandler=function(e){this._handlers[e]&&delete this._handlers[e]},e.prototype.setHandlerFallback=function(e){this._handlerFb=e},e.prototype.dispose=function(){this._handlers=Object.create(null),this._handlerFb=function(){}},e.prototype.reset=function(){2===this._state&&this.end(!1),this._id=-1,this._state=0},e.prototype._start=function(){var e=this._handlers[this._id];if(e)for(var t=e.length-1;t>=0;t--)e[t].start();else this._handlerFb(this._id,"START")},e.prototype._put=function(e,t,i){var r=this._handlers[this._id];if(r)for(var s=r.length-1;s>=0;s--)r[s].put(e,t,i);else this._handlerFb(this._id,"PUT",n.utf32ToString(e,t,i))},e.prototype._end=function(e){var t=this._handlers[this._id];if(t){for(var i=t.length-1;i>=0&&!1===t[i].end(e);i--);for(i--;i>=0;i--)t[i].end(!1)}else this._handlerFb(this._id,"END",e)},e.prototype.start=function(){this.reset(),this._id=-1,this._state=1},e.prototype.put=function(e,t,i){if(3!==this._state){if(1===this._state)for(;t0&&this._put(e,t,i)}},e.prototype.end=function(e){0!==this._state&&(3!==this._state&&(1===this._state&&this._start(),this._end(e)),this._id=-1,this._state=0)},e}();t.OscParser=s;var o=function(){function e(e){this._handler=e,this._data="",this._hitLimit=!1}return e.prototype.start=function(){this._data="",this._hitLimit=!1},e.prototype.put=function(e,t,i){this._hitLimit||(this._data+=n.utf32ToString(e,t,i),this._data.length>r.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))},e.prototype.end=function(e){var t;return this._hitLimit?t=!1:e&&(t=this._handler(this._data)),this._data="",this._hitLimit=!1,t},e}();t.OscHandler=o},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PAYLOAD_LIMIT=1e7},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(8),n=i(19),s=i(21),o=[],a=function(){function e(){this._handlers=Object.create(null),this._active=o,this._ident=0,this._handlerFb=function(){}}return e.prototype.dispose=function(){this._handlers=Object.create(null),this._handlerFb=function(){}},e.prototype.addHandler=function(e,t){void 0===this._handlers[e]&&(this._handlers[e]=[]);var i=this._handlers[e];return i.push(t),{dispose:function(){var e=i.indexOf(t);-1!==e&&i.splice(e,1)}}},e.prototype.setHandler=function(e,t){this._handlers[e]=[t]},e.prototype.clearHandler=function(e){this._handlers[e]&&delete this._handlers[e]},e.prototype.setHandlerFallback=function(e){this._handlerFb=e},e.prototype.reset=function(){this._active.length&&this.unhook(!1),this._active=o,this._ident=0},e.prototype.hook=function(e,t){if(this.reset(),this._ident=e,this._active=this._handlers[e]||o,this._active.length)for(var i=this._active.length-1;i>=0;i--)this._active[i].hook(t);else this._handlerFb(this._ident,"HOOK",t)},e.prototype.put=function(e,t,i){if(this._active.length)for(var n=this._active.length-1;n>=0;n--)this._active[n].put(e,t,i);else this._handlerFb(this._ident,"PUT",r.utf32ToString(e,t,i))},e.prototype.unhook=function(e){if(this._active.length){for(var t=this._active.length-1;t>=0&&!1===this._active[t].unhook(e);t--);for(t--;t>=0;t--)this._active[t].unhook(!1)}else this._handlerFb(this._ident,"UNHOOK",e);this._active=o,this._ident=0},e}();t.DcsParser=a;var c=function(){function e(e){this._handler=e,this._data="",this._hitLimit=!1}return e.prototype.hook=function(e){this._params=e.clone(),this._data="",this._hitLimit=!1},e.prototype.put=function(e,t,i){this._hitLimit||(this._data+=r.utf32ToString(e,t,i),this._data.length>s.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))},e.prototype.unhook=function(e){var t;return this._hitLimit?t=!1:e&&(t=this._handler(this._data,this._params?this._params:new n.Params)),this._params=void 0,this._data="",this._hitLimit=!1,t},e}();t.DcsHandler=c},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(24),n=i(42),s=[];t.acquireCharAtlas=function(e,t,i,o,a){for(var c=r.generateConfig(o,a,e,i),l=0;l=0){if(r.configEquals(u.config,c))return u.atlas;1===u.ownedBy.length?(u.atlas.dispose(),s.splice(l,1)):u.ownedBy.splice(h,1);break}}for(l=0;l>>0})}for(i=0;i<24;i++){var o=8+10*i,a=l(o);e.push({css:"#"+a+a+a,rgba:(o<<24|o<<16|o<<8|255)>>>0})}return e}();var h=function(){function e(e,i){this.allowTransparency=i;var c=e.createElement("canvas");c.width=1,c.height=1;var l=c.getContext("2d");if(!l)throw new Error("Could not get rendering context");this._ctx=l,this._ctx.globalCompositeOperation="copy",this._litmusColor=this._ctx.createLinearGradient(0,0,1,1),this.colors={foreground:r,background:n,cursor:s,cursorAccent:o,selection:a,ansi:t.DEFAULT_ANSI_COLORS.slice()}}return e.prototype.setTheme=function(e){void 0===e&&(e={}),this.colors.foreground=this._parseColor(e.foreground,r),this.colors.background=this._parseColor(e.background,n),this.colors.cursor=this._parseColor(e.cursor,s,!0),this.colors.cursorAccent=this._parseColor(e.cursorAccent,o,!0),this.colors.selection=this._parseColor(e.selection,a,!0),this.colors.ansi[0]=this._parseColor(e.black,t.DEFAULT_ANSI_COLORS[0]),this.colors.ansi[1]=this._parseColor(e.red,t.DEFAULT_ANSI_COLORS[1]),this.colors.ansi[2]=this._parseColor(e.green,t.DEFAULT_ANSI_COLORS[2]),this.colors.ansi[3]=this._parseColor(e.yellow,t.DEFAULT_ANSI_COLORS[3]),this.colors.ansi[4]=this._parseColor(e.blue,t.DEFAULT_ANSI_COLORS[4]),this.colors.ansi[5]=this._parseColor(e.magenta,t.DEFAULT_ANSI_COLORS[5]),this.colors.ansi[6]=this._parseColor(e.cyan,t.DEFAULT_ANSI_COLORS[6]),this.colors.ansi[7]=this._parseColor(e.white,t.DEFAULT_ANSI_COLORS[7]),this.colors.ansi[8]=this._parseColor(e.brightBlack,t.DEFAULT_ANSI_COLORS[8]),this.colors.ansi[9]=this._parseColor(e.brightRed,t.DEFAULT_ANSI_COLORS[9]),this.colors.ansi[10]=this._parseColor(e.brightGreen,t.DEFAULT_ANSI_COLORS[10]),this.colors.ansi[11]=this._parseColor(e.brightYellow,t.DEFAULT_ANSI_COLORS[11]),this.colors.ansi[12]=this._parseColor(e.brightBlue,t.DEFAULT_ANSI_COLORS[12]),this.colors.ansi[13]=this._parseColor(e.brightMagenta,t.DEFAULT_ANSI_COLORS[13]),this.colors.ansi[14]=this._parseColor(e.brightCyan,t.DEFAULT_ANSI_COLORS[14]),this.colors.ansi[15]=this._parseColor(e.brightWhite,t.DEFAULT_ANSI_COLORS[15])},e.prototype._parseColor=function(e,t,i){if(void 0===i&&(i=this.allowTransparency),void 0===e)return t;if(this._ctx.fillStyle=this._litmusColor,this._ctx.fillStyle=e,"string"!=typeof this._ctx.fillStyle)return console.warn("Color: "+e+" is invalid using fallback "+t.css),t;this._ctx.fillRect(0,0,1,1);var r=this._ctx.getImageData(0,0,1,1).data;return i||255===r[3]?{css:e,rgba:(r[0]<<24|r[1]<<16|r[2]<<8|r[3])>>>0}:(console.warn("Color: "+e+" is using transparency, but allowTransparency is false. Using fallback "+t.css+"."),t)},e}();t.ColorManager=h},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.throwIfFalsy=function(e){if(!e)throw new Error("value must not be falsy");return e}},function(e,t,i){"use strict";var r,n=this&&this.__extends||(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var s=i(6),o=i(3),a=i(4),c=function(e){function t(t,i,r){var n=e.call(this)||this;return n.content=0,n.combinedData="",n.fg=t.fg,n.bg=t.bg,n.combinedData=i,n._width=r,n}return n(t,e),t.prototype.isCombined=function(){return 2097152},t.prototype.getWidth=function(){return this._width},t.prototype.getChars=function(){return this.combinedData},t.prototype.getCode=function(){return 2097151},t.prototype.setFromCharData=function(e){throw new Error("not implemented")},t.prototype.getAsCharData=function(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]},t}(s.AttributeData);t.JoinedCellData=c;var l=function(){function e(e){this._bufferService=e,this._characterJoiners=[],this._nextCharacterJoinerId=0,this._workCell=new a.CellData}return e.prototype.registerCharacterJoiner=function(e){var t={id:this._nextCharacterJoinerId++,handler:e};return this._characterJoiners.push(t),t.id},e.prototype.deregisterCharacterJoiner=function(e){for(var t=0;t1)for(var u=this._getJoinedRanges(r,a,s,t,n),f=0;f1)for(u=this._getJoinedRanges(r,a,s,t,n),f=0;f=this._line.length))return new l(this._line,e)},e.prototype.translateToString=function(e,t,i){return this._line.translateToString(e,t,i)},e}(),l=function(){function e(e,t){this._line=e,this._x=t}return Object.defineProperty(e.prototype,"char",{get:function(){return this._line.getString(this._x)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"width",{get:function(){return this._line.getWidth(this._x)},enumerable:!0,configurable:!0}),e}(),h=function(){function e(e){this._core=e}return e.prototype.addCsiHandler=function(e,t){return this._core.addCsiHandler(e,function(e){return t(e.toArray())})},e.prototype.addDcsHandler=function(e,t){return this._core.addDcsHandler(e,function(e,i){return t(e,i.toArray())})},e.prototype.addEscHandler=function(e,t){return this._core.addEscHandler(e,t)},e.prototype.addOscHandler=function(e,t){return this._core.addOscHandler(e,t)},e}()},function(e,t,i){"use strict";var r,n=this&&this.__extends||(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var s=i(34),o=i(35),a=i(36),c=i(11),l=i(37),h=i(39),u=i(48),f=i(49),_=i(10),d=i(7),p=i(16),v=i(52),g=i(53),y=i(54),m=i(55),b=i(57),C=i(1),S=i(15),w=i(58),E=i(25),L=i(59),A=i(0),x=i(60),k=i(5),D=i(61),T=i(62),R=i(2),M=i(68),O=i(69),P=i(70),H=i(71),I=i(72),B=i(73),F=i(74),j="undefined"!=typeof window?window.document:null,W=function(e){function t(t){void 0===t&&(t={});var i=e.call(this)||this;return i.browser=_,i.mouseEvents=0,i._keyDownHandled=!1,i._blankLine=null,i._onCursorMove=new C.EventEmitter,i._onData=new C.EventEmitter,i._onKey=new C.EventEmitter,i._onLineFeed=new C.EventEmitter,i._onRender=new C.EventEmitter,i._onResize=new C.EventEmitter,i._onScroll=new C.EventEmitter,i._onSelectionChange=new C.EventEmitter,i._onTitleChange=new C.EventEmitter,i._onFocus=new C.EventEmitter,i._onBlur=new C.EventEmitter,i.onA11yCharEmitter=new C.EventEmitter,i.onA11yTabEmitter=new C.EventEmitter,i._instantiationService=new I.InstantiationService,i.optionsService=new x.OptionsService(t),i._instantiationService.setService(A.IOptionsService,i.optionsService),i._bufferService=i._instantiationService.createInstance(T.BufferService),i._instantiationService.setService(A.IBufferService,i._bufferService),i._logService=i._instantiationService.createInstance(P.LogService),i._instantiationService.setService(A.ILogService,i._logService),i._coreService=i._instantiationService.createInstance(O.CoreService,function(){return i.scrollToBottom()}),i._instantiationService.setService(A.ICoreService,i._coreService),i._coreService.onData(function(e){return i._onData.fire(e)}),i._coreMouseService=i._instantiationService.createInstance(B.CoreMouseService),i._instantiationService.setService(A.ICoreMouseService,i._coreMouseService),i._dirtyRowService=i._instantiationService.createInstance(H.DirtyRowService),i._instantiationService.setService(A.IDirtyRowService,i._dirtyRowService),i._setupOptionsListeners(),i._setup(),i._writeBuffer=new F.WriteBuffer(function(e){return i._inputHandler.parse(e)}),i}return n(t,e),Object.defineProperty(t.prototype,"options",{get:function(){return this.optionsService.options},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"cols",{get:function(){return this._bufferService.cols},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"rows",{get:function(){return this._bufferService.rows},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"onCursorMove",{get:function(){return this._onCursorMove.event},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"onData",{get:function(){return this._onData.event},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"onKey",{get:function(){return this._onKey.event},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"onLineFeed",{get:function(){return this._onLineFeed.event},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"onRender",{get:function(){return this._onRender.event},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"onResize",{get:function(){return this._onResize.event},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"onScroll",{get:function(){return this._onScroll.event},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"onSelectionChange",{get:function(){return this._onSelectionChange.event},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"onTitleChange",{get:function(){return this._onTitleChange.event},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"onFocus",{get:function(){return this._onFocus.event},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"onBlur",{get:function(){return this._onBlur.event},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"onA11yChar",{get:function(){return this.onA11yCharEmitter.event},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"onA11yTab",{get:function(){return this.onA11yTabEmitter.event},enumerable:!0,configurable:!0}),t.prototype.dispose=function(){this._isDisposed||(e.prototype.dispose.call(this),this._windowsMode&&(this._windowsMode.dispose(),this._windowsMode=void 0),this._renderService&&this._renderService.dispose(),this._customKeyEventHandler=null,this.write=function(){},this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element))},t.prototype._setup=function(){var e=this;this._parent=j?j.body:null,this.cursorState=0,this.cursorHidden=!1,this._customKeyEventHandler=null,this.applicationKeypad=!1,this.originMode=!1,this.insertMode=!1,this.wraparoundMode=!0,this.bracketedPasteMode=!1,this.charset=null,this.gcharset=null,this.glevel=0,this.charsets=[null],this.curAttrData=S.DEFAULT_ATTR_DATA.clone(),this._eraseAttrData=S.DEFAULT_ATTR_DATA.clone(),this.params=[],this.currentParam=0,this._userScrolling=!1,this._inputHandler=new l.InputHandler(this,this._bufferService,this._coreService,this._dirtyRowService,this._logService,this.optionsService,this._coreMouseService),this._inputHandler.onCursorMove(function(){return e._onCursorMove.fire()}),this._inputHandler.onLineFeed(function(){return e._onLineFeed.fire()}),this.register(this._inputHandler),this.linkifier=this.linkifier||new u.Linkifier(this._bufferService,this._logService),this.options.windowsMode&&(this._windowsMode=w.applyWindowsMode(this))},Object.defineProperty(t.prototype,"buffer",{get:function(){return this.buffers.active},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"buffers",{get:function(){return this._bufferService.buffers},enumerable:!0,configurable:!0}),t.prototype.eraseAttrData=function(){return this._eraseAttrData.bg&=-67108864,this._eraseAttrData.bg|=67108863&this.curAttrData.bg,this._eraseAttrData},t.prototype.focus=function(){this.textarea&&this.textarea.focus({preventScroll:!0})},Object.defineProperty(t.prototype,"isFocused",{get:function(){return j.activeElement===this.textarea&&j.hasFocus()},enumerable:!0,configurable:!0}),t.prototype._setupOptionsListeners=function(){var e=this;this.optionsService.onOptionChange(function(t){switch(t){case"fontFamily":case"fontSize":e._renderService&&e._renderService.clear(),e._charSizeService&&e._charSizeService.measure();break;case"drawBoldTextInBrightColors":case"letterSpacing":case"lineHeight":case"fontWeight":case"fontWeightBold":e._renderService&&(e._renderService.clear(),e._renderService.onResize(e.cols,e.rows),e.refresh(0,e.rows-1));break;case"rendererType":e._renderService&&(e._renderService.setRenderer(e._createRenderer()),e._renderService.onResize(e.cols,e.rows));break;case"scrollback":e.buffers.resize(e.cols,e.rows),e.viewport&&e.viewport.syncScrollArea();break;case"screenReaderMode":e.optionsService.options.screenReaderMode?!e._accessibilityManager&&e._renderService&&(e._accessibilityManager=new y.AccessibilityManager(e,e._renderService)):e._accessibilityManager&&(e._accessibilityManager.dispose(),e._accessibilityManager=null);break;case"tabStopWidth":e.buffers.setupTabStops();break;case"theme":e._setTheme(e.optionsService.options.theme);break;case"windowsMode":e.optionsService.options.windowsMode?e._windowsMode||(e._windowsMode=w.applyWindowsMode(e)):e._windowsMode&&(e._windowsMode.dispose(),e._windowsMode=void 0)}})},t.prototype._onTextAreaFocus=function(e){this.sendFocus&&this._coreService.triggerDataEvent(c.C0.ESC+"[I"),this.updateCursorStyle(e),this.element.classList.add("focus"),this.showCursor(),this._onFocus.fire()},t.prototype.blur=function(){return this.textarea.blur()},t.prototype._onTextAreaBlur=function(){this.textarea.value="",this.refresh(this.buffer.y,this.buffer.y),this.sendFocus&&this._coreService.triggerDataEvent(c.C0.ESC+"[O"),this.element.classList.remove("focus"),this._onBlur.fire()},t.prototype._initGlobal=function(){var e=this;this._bindKeys(),this.register(d.addDisposableDomListener(this.element,"copy",function(t){e.hasSelection()&&a.copyHandler(t,e._selectionService)}));var t=function(t){return a.handlePasteEvent(t,e.textarea,e.bracketedPasteMode,e._coreService)};this.register(d.addDisposableDomListener(this.textarea,"paste",t)),this.register(d.addDisposableDomListener(this.element,"paste",t)),_.isFirefox?this.register(d.addDisposableDomListener(this.element,"mousedown",function(t){2===t.button&&a.rightClickHandler(t,e.textarea,e.screenElement,e._selectionService,e.options.rightClickSelectsWord)})):this.register(d.addDisposableDomListener(this.element,"contextmenu",function(t){a.rightClickHandler(t,e.textarea,e.screenElement,e._selectionService,e.options.rightClickSelectsWord)})),_.isLinux&&this.register(d.addDisposableDomListener(this.element,"auxclick",function(t){1===t.button&&a.moveTextAreaUnderMouseCursor(t,e.textarea,e.screenElement)}))},t.prototype._bindKeys=function(){var e=this;this.register(d.addDisposableDomListener(this.textarea,"keyup",function(t){return e._keyUp(t)},!0)),this.register(d.addDisposableDomListener(this.textarea,"keydown",function(t){return e._keyDown(t)},!0)),this.register(d.addDisposableDomListener(this.textarea,"keypress",function(t){return e._keyPress(t)},!0)),this.register(d.addDisposableDomListener(this.textarea,"compositionstart",function(){return e._compositionHelper.compositionstart()})),this.register(d.addDisposableDomListener(this.textarea,"compositionupdate",function(t){return e._compositionHelper.compositionupdate(t)})),this.register(d.addDisposableDomListener(this.textarea,"compositionend",function(){return e._compositionHelper.compositionend()})),this.register(this.onRender(function(){return e._compositionHelper.updateCompositionElements()})),this.register(this.onRender(function(t){return e._queueLinkification(t.start,t.end)}))},t.prototype.open=function(e){var t=this;if(this._parent=e||this._parent,!this._parent)throw new Error("Terminal requires a parent element.");j.body.contains(e)||this._logService.warn("Terminal.open was called on an element that was not attached to the DOM"),this._document=this._parent.ownerDocument,this.element=this._document.createElement("div"),this.element.dir="ltr",this.element.classList.add("terminal"),this.element.classList.add("xterm"),this.element.setAttribute("tabindex","0"),this._parent.appendChild(this.element);var i=j.createDocumentFragment();this._viewportElement=j.createElement("div"),this._viewportElement.classList.add("xterm-viewport"),i.appendChild(this._viewportElement),this._viewportScrollArea=j.createElement("div"),this._viewportScrollArea.classList.add("xterm-scroll-area"),this._viewportElement.appendChild(this._viewportScrollArea),this.screenElement=j.createElement("div"),this.screenElement.classList.add("xterm-screen"),this._helperContainer=j.createElement("div"),this._helperContainer.classList.add("xterm-helpers"),this.screenElement.appendChild(this._helperContainer),i.appendChild(this.screenElement),this.textarea=j.createElement("textarea"),this.textarea.classList.add("xterm-helper-textarea"),this.textarea.setAttribute("aria-label",p.promptLabel),this.textarea.setAttribute("aria-multiline","false"),this.textarea.setAttribute("autocorrect","off"),this.textarea.setAttribute("autocapitalize","off"),this.textarea.setAttribute("spellcheck","false"),this.textarea.tabIndex=0,this.register(d.addDisposableDomListener(this.textarea,"focus",function(e){return t._onTextAreaFocus(e)})),this.register(d.addDisposableDomListener(this.textarea,"blur",function(){return t._onTextAreaBlur()})),this._helperContainer.appendChild(this.textarea),this._charSizeService=this._instantiationService.createInstance(D.CharSizeService,this._document,this._helperContainer),this._instantiationService.setService(k.ICharSizeService,this._charSizeService),this._compositionView=j.createElement("div"),this._compositionView.classList.add("composition-view"),this._compositionHelper=this._instantiationService.createInstance(s.CompositionHelper,this.textarea,this._compositionView),this._helperContainer.appendChild(this._compositionView),this.element.appendChild(i),this._theme=this.options.theme||this._theme,this.options.theme=void 0,this._colorManager=new E.ColorManager(j,this.options.allowTransparency),this._colorManager.setTheme(this._theme);var r=this._createRenderer();this._renderService=this._instantiationService.createInstance(L.RenderService,r,this.rows,this.screenElement),this._instantiationService.setService(k.IRenderService,this._renderService),this._renderService.onRender(function(e){return t._onRender.fire(e)}),this.onResize(function(e){return t._renderService.resize(e.cols,e.rows)}),this._soundService=this._instantiationService.createInstance(v.SoundService),this._instantiationService.setService(k.ISoundService,this._soundService),this._mouseService=this._instantiationService.createInstance(M.MouseService),this._instantiationService.setService(k.IMouseService,this._mouseService),this.viewport=this._instantiationService.createInstance(o.Viewport,function(e,i){return t.scrollLines(e,i)},this._viewportElement,this._viewportScrollArea),this.viewport.onThemeChange(this._colorManager.colors),this.register(this.viewport),this.register(this.onCursorMove(function(){return t._renderService.onCursorMove()})),this.register(this.onResize(function(){return t._renderService.onResize(t.cols,t.rows)})),this.register(this.onBlur(function(){return t._renderService.onBlur()})),this.register(this.onFocus(function(){return t._renderService.onFocus()})),this.register(this._renderService.onDimensionsChange(function(){return t.viewport.syncScrollArea()})),this._selectionService=this._instantiationService.createInstance(f.SelectionService,function(e,i){return t.scrollLines(e,i)},this.element,this.screenElement),this._instantiationService.setService(k.ISelectionService,this._selectionService),this.register(this._selectionService.onSelectionChange(function(){return t._onSelectionChange.fire()})),this.register(this._selectionService.onRedrawRequest(function(e){return t._renderService.onSelectionChanged(e.start,e.end,e.columnSelectMode)})),this.register(this._selectionService.onLinuxMouseSelection(function(e){t.textarea.value=e,t.textarea.focus(),t.textarea.select()})),this.register(this.onScroll(function(){t.viewport.syncScrollArea(),t._selectionService.refresh()})),this.register(d.addDisposableDomListener(this._viewportElement,"scroll",function(){return t._selectionService.refresh()})),this._mouseZoneManager=this._instantiationService.createInstance(g.MouseZoneManager,this.element,this.screenElement),this.register(this._mouseZoneManager),this.register(this.onScroll(function(){return t._mouseZoneManager.clearAll()})),this.linkifier.attachToDom(this.element,this._mouseZoneManager),this.register(d.addDisposableDomListener(this.element,"mousedown",function(e){return t._selectionService.onMouseDown(e)})),this.mouseEvents?(this._selectionService.disable(),this.element.classList.add("enable-mouse-events")):this._selectionService.enable(),this.options.screenReaderMode&&(this._accessibilityManager=new y.AccessibilityManager(this,this._renderService)),this._charSizeService.measure(),this.refresh(0,this.rows-1),this._initGlobal(),this.bindMouse()},t.prototype._createRenderer=function(){switch(this.options.rendererType){case"canvas":return new h.Renderer(this._colorManager.colors,this,this._bufferService,this._charSizeService,this.optionsService);case"dom":return new m.DomRenderer(this,this._colorManager.colors,this._charSizeService,this.optionsService);default:throw new Error('Unrecognized rendererType "'+this.options.rendererType+'"')}},t.prototype._setTheme=function(e){this._theme=e,this._colorManager&&this._colorManager.setTheme(e),this._renderService&&this._renderService.setColors(this._colorManager.colors),this.viewport&&this.viewport.onThemeChange(this._colorManager.colors)},t.prototype.bindMouse=function(){var e=this,t=this,i=this.element;function r(e){var i,r,n;if(!(i=t._mouseService.getRawByteCoords(e,t.screenElement,t.cols,t.rows)))return!1;switch(e.overrideType||e.type){case"mousemove":n=32,void 0===e.buttons?(r=3,void 0!==e.button&&(r=e.button<3?e.button:3)):r=1&e.buttons?0:4&e.buttons?1:2&e.buttons?2:3;break;case"mouseup":n=0,r=e.button<3?e.button:3;break;case"mousedown":n=1,r=e.button<3?e.button:3;break;case"wheel":0!==e.deltaY&&(n=e.deltaY<0?0:1),r=4;break;default:return!1}return!(void 0===n||void 0===r||r>4)&&t._coreMouseService.triggerMouseEvent({col:i.x-33,row:i.y-33,button:r,action:n,ctrl:e.ctrlKey,alt:e.altKey,shift:e.shiftKey})}var n={mouseup:null,wheel:null,mousedrag:null,mousemove:null},s=function(t){return r(t),t.buttons||(e._document.removeEventListener("mouseup",n.mouseup),n.mousedrag&&e._document.removeEventListener("mousemove",n.mousedrag)),e.cancel(t)},o=function(t){return r(t),t.preventDefault(),e.cancel(t)},a=function(e){e.buttons&&r(e)},l=function(e){e.buttons||r(e)};this._coreMouseService.onProtocolChange(function(t){e.mouseEvents=t,t?("debug"===e.optionsService.options.logLevel&&e._logService.debug("Binding to mouse events:",e._coreMouseService.explainEvents(t)),e.element.classList.add("enable-mouse-events"),e._selectionService.disable()):(e._logService.debug("Unbinding from mouse events."),e.element.classList.remove("enable-mouse-events"),e._selectionService.enable()),8&t?n.mousemove||(i.addEventListener("mousemove",l),n.mousemove=l):(i.removeEventListener("mousemove",n.mousemove),n.mousemove=null),16&t?n.wheel||(i.addEventListener("wheel",o),n.wheel=o):(i.removeEventListener("wheel",n.wheel),n.wheel=null),2&t?n.mouseup||(n.mouseup=s):(e._document.removeEventListener("mouseup",n.mouseup),n.mouseup=null),4&t?n.mousedrag||(n.mousedrag=a):(e._document.removeEventListener("mousemove",n.mousedrag),n.mousedrag=null)}),this._coreMouseService.activeProtocol=this._coreMouseService.activeProtocol,this.register(d.addDisposableDomListener(i,"mousedown",function(t){if(t.preventDefault(),e.focus(),e.mouseEvents&&!e._selectionService.shouldForceSelection(t))return r(t),n.mouseup&&e._document.addEventListener("mouseup",n.mouseup),n.mousedrag&&e._document.addEventListener("mousemove",n.mousedrag),e.cancel(t)})),this.register(d.addDisposableDomListener(i,"wheel",function(t){if(n.wheel);else if(!e.buffer.hasScrollback){var i=e.viewport.getLinesScrolled(t);if(0===i)return;for(var r=c.C0.ESC+(e._coreService.decPrivateModes.applicationCursorKeys?"O":"[")+(t.deltaY<0?"A":"B"),s="",o=0;o=this.buffer.ybase&&(this._userScrolling=!1);var i=this.buffer.ydisp;this.buffer.ydisp=Math.max(Math.min(this.buffer.ydisp+e,this.buffer.ybase),0),i!==this.buffer.ydisp&&(t||this._onScroll.fire(this.buffer.ydisp),this.refresh(0,this.rows-1))},t.prototype.scrollPages=function(e){this.scrollLines(e*(this.rows-1))},t.prototype.scrollToTop=function(){this.scrollLines(-this.buffer.ydisp)},t.prototype.scrollToBottom=function(){this.scrollLines(this.buffer.ybase-this.buffer.ydisp)},t.prototype.scrollToLine=function(e){var t=e-this.buffer.ydisp;0!==t&&this.scrollLines(t)},t.prototype.paste=function(e){a.paste(e,this.textarea,this.bracketedPasteMode,this._coreService)},t.prototype.attachCustomKeyEventHandler=function(e){this._customKeyEventHandler=e},t.prototype.addEscHandler=function(e,t){return this._inputHandler.addEscHandler(e,t)},t.prototype.addDcsHandler=function(e,t){return this._inputHandler.addDcsHandler(e,t)},t.prototype.addCsiHandler=function(e,t){return this._inputHandler.addCsiHandler(e,t)},t.prototype.addOscHandler=function(e,t){return this._inputHandler.addOscHandler(e,t)},t.prototype.registerLinkMatcher=function(e,t,i){var r=this.linkifier.registerLinkMatcher(e,t,i);return this.refresh(0,this.rows-1),r},t.prototype.deregisterLinkMatcher=function(e){this.linkifier.deregisterLinkMatcher(e)&&this.refresh(0,this.rows-1)},t.prototype.registerCharacterJoiner=function(e){var t=this._renderService.registerCharacterJoiner(e);return this.refresh(0,this.rows-1),t},t.prototype.deregisterCharacterJoiner=function(e){this._renderService.deregisterCharacterJoiner(e)&&this.refresh(0,this.rows-1)},Object.defineProperty(t.prototype,"markers",{get:function(){return this.buffer.markers},enumerable:!0,configurable:!0}),t.prototype.addMarker=function(e){if(this.buffer===this.buffers.normal)return this.buffer.addMarker(this.buffer.ybase+this.buffer.y+e)},t.prototype.hasSelection=function(){return!!this._selectionService&&this._selectionService.hasSelection},t.prototype.select=function(e,t,i){this._selectionService.setSelection(e,t,i)},t.prototype.getSelection=function(){return this._selectionService?this._selectionService.selectionText:""},t.prototype.getSelectionPosition=function(){if(this._selectionService.hasSelection)return{startColumn:this._selectionService.selectionStart[0],startRow:this._selectionService.selectionStart[1],endColumn:this._selectionService.selectionEnd[0],endRow:this._selectionService.selectionEnd[1]}},t.prototype.clearSelection=function(){this._selectionService&&this._selectionService.clearSelection()},t.prototype.selectAll=function(){this._selectionService&&this._selectionService.selectAll()},t.prototype.selectLines=function(e,t){this._selectionService&&this._selectionService.selectLines(e,t)},t.prototype._keyDown=function(e){if(this._keyDownHandled=!1,this._customKeyEventHandler&&!1===this._customKeyEventHandler(e))return!1;if(!this._compositionHelper.keydown(e))return this.buffer.ybase!==this.buffer.ydisp&&this.scrollToBottom(),!1;var t=b.evaluateKeyboardEvent(e,this._coreService.decPrivateModes.applicationCursorKeys,this.browser.isMac,this.options.macOptionIsMeta);if(this.updateCursorStyle(e),3===t.type||2===t.type){var i=this.rows-1;return this.scrollLines(2===t.type?-i:i),this.cancel(e,!0)}return 1===t.type&&this.selectAll(),!!this._isThirdLevelShift(this.browser,e)||(t.cancel&&this.cancel(e,!0),!t.key||(t.key!==c.C0.ETX&&t.key!==c.C0.CR||(this.textarea.value=""),this._onKey.fire({key:t.key,domEvent:e}),this.showCursor(),this._coreService.triggerDataEvent(t.key,!0),this.optionsService.options.screenReaderMode?void(this._keyDownHandled=!0):this.cancel(e,!0)))},t.prototype._isThirdLevelShift=function(e,t){var i=e.isMac&&!this.options.macOptionIsMeta&&t.altKey&&!t.ctrlKey&&!t.metaKey||e.isWindows&&t.altKey&&t.ctrlKey&&!t.metaKey;return"keypress"===t.type?i:i&&(!t.keyCode||t.keyCode>47)},t.prototype.setgLevel=function(e){this.glevel=e,this.charset=this.charsets[e]},t.prototype.setgCharset=function(e,t){this.charsets[e]=t,this.glevel===e&&(this.charset=t)},t.prototype._keyUp=function(e){this._customKeyEventHandler&&!1===this._customKeyEventHandler(e)||(function(e){return 16===e.keyCode||17===e.keyCode||18===e.keyCode}(e)||this.focus(),this.updateCursorStyle(e))},t.prototype._keyPress=function(e){var t;if(this._keyDownHandled)return!1;if(this._customKeyEventHandler&&!1===this._customKeyEventHandler(e))return!1;if(this.cancel(e),e.charCode)t=e.charCode;else if(null===e.which||void 0===e.which)t=e.keyCode;else{if(0===e.which||0===e.charCode)return!1;t=e.which}return!(!t||(e.altKey||e.ctrlKey||e.metaKey)&&!this._isThirdLevelShift(this.browser,e))&&(t=String.fromCharCode(t),this._onKey.fire({key:t,domEvent:e}),this.showCursor(),this._coreService.triggerDataEvent(t,!0),!0)},t.prototype.bell=function(){var e=this;this._soundBell()&&this._soundService.playBellSound(),this._visualBell()&&(this.element.classList.add("visual-bell-active"),clearTimeout(this._visualBellTimer),this._visualBellTimer=window.setTimeout(function(){e.element.classList.remove("visual-bell-active")},200))},t.prototype.resize=function(e,t){isNaN(e)||isNaN(t)||(e!==this.cols||t!==this.rows?(e=0;a--)(n=e[a])&&(o=(s<3?n(o):s>3?n(t,i,o):n(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},n=this&&this.__param||function(e,t){return function(i,r){t(i,r,e)}};Object.defineProperty(t,"__esModule",{value:!0});var s=i(5),o=i(0),a=function(){function e(e,t,i,r,n,s){this._textarea=e,this._compositionView=t,this._bufferService=i,this._optionsService=r,this._charSizeService=n,this._coreService=s,this._isComposing=!1,this._isSendingComposition=!1,this._compositionPosition={start:0,end:0}}return e.prototype.compositionstart=function(){this._isComposing=!0,this._compositionPosition.start=this._textarea.value.length,this._compositionView.textContent="",this._compositionView.classList.add("active")},e.prototype.compositionupdate=function(e){var t=this;this._compositionView.textContent=e.data,this.updateCompositionElements(),setTimeout(function(){t._compositionPosition.end=t._textarea.value.length},0)},e.prototype.compositionend=function(){this._finalizeComposition(!0)},e.prototype.keydown=function(e){if(this._isComposing||this._isSendingComposition){if(229===e.keyCode)return!1;if(16===e.keyCode||17===e.keyCode||18===e.keyCode)return!1;this._finalizeComposition(!1)}return 229!==e.keyCode||(this._handleAnyTextareaChanges(),!1)},e.prototype._finalizeComposition=function(e){var t=this;if(this._compositionView.classList.remove("active"),this._isComposing=!1,this._clearTextareaPosition(),e){var i={start:this._compositionPosition.start,end:this._compositionPosition.end};this._isSendingComposition=!0,setTimeout(function(){if(t._isSendingComposition){t._isSendingComposition=!1;var e=void 0;e=t._isComposing?t._textarea.value.substring(i.start,i.end):t._textarea.value.substring(i.start),t._coreService.triggerDataEvent(e,!0)}},0)}else{this._isSendingComposition=!1;var r=this._textarea.value.substring(this._compositionPosition.start,this._compositionPosition.end);this._coreService.triggerDataEvent(r,!0)}},e.prototype._handleAnyTextareaChanges=function(){var e=this,t=this._textarea.value;setTimeout(function(){if(!e._isComposing){var i=e._textarea.value.replace(t,"");i.length>0&&e._coreService.triggerDataEvent(i,!0)}},0)},e.prototype.updateCompositionElements=function(e){var t=this;if(this._isComposing){if(this._bufferService.buffer.isCursorInViewport){var i=Math.ceil(this._charSizeService.height*this._optionsService.options.lineHeight),r=this._bufferService.buffer.y*i,n=this._bufferService.buffer.x*this._charSizeService.width;this._compositionView.style.left=n+"px",this._compositionView.style.top=r+"px",this._compositionView.style.height=i+"px",this._compositionView.style.lineHeight=i+"px",this._compositionView.style.fontFamily=this._optionsService.options.fontFamily,this._compositionView.style.fontSize=this._optionsService.options.fontSize+"px";var s=this._compositionView.getBoundingClientRect();this._textarea.style.left=n+"px",this._textarea.style.top=r+"px",this._textarea.style.width=s.width+"px",this._textarea.style.height=s.height+"px",this._textarea.style.lineHeight=s.height+"px"}e||setTimeout(function(){return t.updateCompositionElements(!0)},0)}},e.prototype._clearTextareaPosition=function(){this._textarea.style.left="",this._textarea.style.top=""},e=r([n(2,o.IBufferService),n(3,o.IOptionsService),n(4,s.ICharSizeService),n(5,o.ICoreService)],e)}();t.CompositionHelper=a},function(e,t,i){"use strict";var r,n=this&&this.__extends||(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),s=this&&this.__decorate||function(e,t,i,r){var n,s=arguments.length,o=s<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,r);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(o=(s<3?n(o):s>3?n(t,i,o):n(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},o=this&&this.__param||function(e,t){return function(i,r){t(i,r,e)}};Object.defineProperty(t,"__esModule",{value:!0});var a=i(2),c=i(7),l=i(5),h=i(0),u=15,f=function(e){function t(t,i,r,n,s,o,a){var l=e.call(this)||this;return l._scrollLines=t,l._viewportElement=i,l._scrollArea=r,l._bufferService=n,l._optionsService=s,l._charSizeService=o,l._renderService=a,l.scrollBarWidth=0,l._currentRowHeight=0,l._lastRecordedBufferLength=0,l._lastRecordedViewportHeight=0,l._lastRecordedBufferHeight=0,l._lastTouchY=0,l._lastScrollTop=0,l._wheelPartialScroll=0,l._refreshAnimationFrame=null,l._ignoreNextScrollEvent=!1,l.scrollBarWidth=l._viewportElement.offsetWidth-l._scrollArea.offsetWidth||u,l.register(c.addDisposableDomListener(l._viewportElement,"scroll",l._onScroll.bind(l))),setTimeout(function(){return l.syncScrollArea()},0),l}return n(t,e),t.prototype.onThemeChange=function(e){this._viewportElement.style.backgroundColor=e.background.css},t.prototype._refresh=function(e){var t=this;if(e)return this._innerRefresh(),void(null!==this._refreshAnimationFrame&&cancelAnimationFrame(this._refreshAnimationFrame));null===this._refreshAnimationFrame&&(this._refreshAnimationFrame=requestAnimationFrame(function(){return t._innerRefresh()}))},t.prototype._innerRefresh=function(){if(this._charSizeService.height>0){this._currentRowHeight=this._renderService.dimensions.scaledCellHeight/window.devicePixelRatio,this._lastRecordedViewportHeight=this._viewportElement.offsetHeight;var e=Math.round(this._currentRowHeight*this._lastRecordedBufferLength)+(this._lastRecordedViewportHeight-this._renderService.dimensions.canvasHeight);this._lastRecordedBufferHeight!==e&&(this._lastRecordedBufferHeight=e,this._scrollArea.style.height=this._lastRecordedBufferHeight+"px")}var t=this._bufferService.buffer.ydisp*this._currentRowHeight;this._viewportElement.scrollTop!==t&&(this._ignoreNextScrollEvent=!0,this._viewportElement.scrollTop=t),this._refreshAnimationFrame=null},t.prototype.syncScrollArea=function(e){if(void 0===e&&(e=!1),this._lastRecordedBufferLength!==this._bufferService.buffer.lines.length)return this._lastRecordedBufferLength=this._bufferService.buffer.lines.length,void this._refresh(e);if(this._lastRecordedViewportHeight===this._renderService.dimensions.canvasHeight){var t=this._bufferService.buffer.ydisp*this._currentRowHeight;this._lastScrollTop===t&&this._lastScrollTop===this._viewportElement.scrollTop&&this._renderService.dimensions.scaledCellHeight/window.devicePixelRatio===this._currentRowHeight||this._refresh(e)}else this._refresh(e)},t.prototype._onScroll=function(e){if(this._lastScrollTop=this._viewportElement.scrollTop,this._viewportElement.offsetParent)if(this._ignoreNextScrollEvent)this._ignoreNextScrollEvent=!1;else{var t=Math.round(this._lastScrollTop/this._currentRowHeight)-this._bufferService.buffer.ydisp;this._scrollLines(t,!0)}},t.prototype._bubbleScroll=function(e,t){var i=this._viewportElement.scrollTop+this._lastRecordedViewportHeight;return!(t<0&&0!==this._viewportElement.scrollTop||t>0&&i0?1:-1),this._wheelPartialScroll%=1):e.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(t*=this._bufferService.rows),t},t.prototype._applyScrollModifier=function(e,t){var i=this._optionsService.options.fastScrollModifier;return"alt"===i&&t.altKey||"ctrl"===i&&t.ctrlKey||"shift"===i&&t.shiftKey?e*this._optionsService.options.fastScrollSensitivity*this._optionsService.options.scrollSensitivity:e*this._optionsService.options.scrollSensitivity},t.prototype.onTouchStart=function(e){this._lastTouchY=e.touches[0].pageY},t.prototype.onTouchMove=function(e){var t=this._lastTouchY-e.touches[0].pageY;return this._lastTouchY=e.touches[0].pageY,0!==t&&(this._viewportElement.scrollTop+=t,this._bubbleScroll(e,t))},t=s([o(3,h.IBufferService),o(4,h.IOptionsService),o(5,l.ICharSizeService),o(6,l.IRenderService)],t)}(a.Disposable);t.Viewport=f},function(e,t,i){"use strict";function r(e){return e.replace(/\r?\n/g,"\r")}function n(e,t){return t?"[200~"+e+"[201~":e}function s(e,t,i,s){e=n(e=r(e),i),s.triggerDataEvent(e,!0),t.value=""}function o(e,t,i){var r=i.getBoundingClientRect(),n=e.clientX-r.left-10,s=e.clientY-r.top-10;t.style.position="absolute",t.style.width="20px",t.style.height="20px",t.style.left=n+"px",t.style.top=s+"px",t.style.zIndex="1000",t.focus(),setTimeout(function(){t.style.position=null,t.style.width=null,t.style.height=null,t.style.left=null,t.style.top=null,t.style.zIndex=null},200)}Object.defineProperty(t,"__esModule",{value:!0}),t.prepareTextForTerminal=r,t.bracketTextForPaste=n,t.copyHandler=function(e,t){e.clipboardData&&e.clipboardData.setData("text/plain",t.selectionText),e.preventDefault()},t.handlePasteEvent=function(e,t,i,r){e.stopPropagation(),e.clipboardData&&s(e.clipboardData.getData("text/plain"),t,i,r)},t.paste=s,t.moveTextAreaUnderMouseCursor=o,t.rightClickHandler=function(e,t,i,r,n){o(e,t,i),n&&!r.isClickInSelection(e)&&r.selectWordAtCursor(e),t.value=r.selectionText,t.select()}},function(e,t,i){"use strict";var r,n=this&&this.__extends||(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var s=i(11),o=i(17),a=i(18),c=i(38),l=i(2),h=i(14),u=i(8),f=i(15),_=i(1),d=i(3),p=i(4),v=i(6),g=i(20),y=i(22),m={"(":0,")":1,"*":2,"+":3,"-":1,".":2},b=function(){function e(e,t,i,r){this._bufferService=e,this._coreService=t,this._logService=i,this._optionsService=r,this._data=new Uint32Array(0)}return e.prototype.hook=function(e){this._data=new Uint32Array(0)},e.prototype.put=function(e,t,i){this._data=h.concat(this._data,e.subarray(t,i))},e.prototype.unhook=function(e){if(e){var t=u.utf32ToString(this._data);switch(this._data=new Uint32Array(0),t){case'"q':return this._coreService.triggerDataEvent(s.C0.ESC+'P1$r0"q'+s.C0.ESC+"\\");case'"p':return this._coreService.triggerDataEvent(s.C0.ESC+'P1$r61"p'+s.C0.ESC+"\\");case"r":var i=this._bufferService.buffer.scrollTop+1+";"+(this._bufferService.buffer.scrollBottom+1)+"r";return this._coreService.triggerDataEvent(s.C0.ESC+"P1$r"+i+s.C0.ESC+"\\");case"m":return this._coreService.triggerDataEvent(s.C0.ESC+"P1$r0m"+s.C0.ESC+"\\");case" q":var r={block:2,underline:4,bar:6}[this._optionsService.options.cursorStyle];return r-=this._optionsService.options.cursorBlink?1:0,this._coreService.triggerDataEvent(s.C0.ESC+"P1$r"+r+" q"+s.C0.ESC+"\\");default:this._logService.debug("Unknown DCS $q %s",t),this._coreService.triggerDataEvent(s.C0.ESC+"P0$r"+s.C0.ESC+"\\")}}else this._data=new Uint32Array(0)},e}(),C=function(e){function t(t,i,r,n,a,l,h,f){void 0===f&&(f=new c.EscapeSequenceParser);var d=e.call(this)||this;d._terminal=t,d._bufferService=i,d._coreService=r,d._dirtyRowService=n,d._logService=a,d._optionsService=l,d._coreMouseService=h,d._parser=f,d._parseBuffer=new Uint32Array(4096),d._stringDecoder=new u.StringToUtf32,d._utf8Decoder=new u.Utf8ToUtf32,d._workCell=new p.CellData,d._onCursorMove=new _.EventEmitter,d._onLineFeed=new _.EventEmitter,d._onScroll=new _.EventEmitter,d.register(d._parser),d._parser.setCsiHandlerFallback(function(e,t){d._logService.debug("Unknown CSI code: ",{identifier:d._parser.identToString(e),params:t.toArray()})}),d._parser.setEscHandlerFallback(function(e){d._logService.debug("Unknown ESC code: ",{identifier:d._parser.identToString(e)})}),d._parser.setExecuteHandlerFallback(function(e){d._logService.debug("Unknown EXECUTE code: ",{code:e})}),d._parser.setOscHandlerFallback(function(e,t,i){d._logService.debug("Unknown OSC code: ",{identifier:e,action:t,data:i})}),d._parser.setDcsHandlerFallback(function(e,t,i){"HOOK"===t&&(i=i.toArray()),d._logService.debug("Unknown DCS code: ",{identifier:d._parser.identToString(e),action:t,payload:i})}),d._parser.setPrintHandler(function(e,t,i){return d.print(e,t,i)}),d._parser.setCsiHandler({final:"@"},function(e){return d.insertChars(e)}),d._parser.setCsiHandler({intermediates:" ",final:"@"},function(e){return d.scrollLeft(e)}),d._parser.setCsiHandler({final:"A"},function(e){return d.cursorUp(e)}),d._parser.setCsiHandler({intermediates:" ",final:"A"},function(e){return d.scrollRight(e)}),d._parser.setCsiHandler({final:"B"},function(e){return d.cursorDown(e)}),d._parser.setCsiHandler({final:"C"},function(e){return d.cursorForward(e)}),d._parser.setCsiHandler({final:"D"},function(e){return d.cursorBackward(e)}),d._parser.setCsiHandler({final:"E"},function(e){return d.cursorNextLine(e)}),d._parser.setCsiHandler({final:"F"},function(e){return d.cursorPrecedingLine(e)}),d._parser.setCsiHandler({final:"G"},function(e){return d.cursorCharAbsolute(e)}),d._parser.setCsiHandler({final:"H"},function(e){return d.cursorPosition(e)}),d._parser.setCsiHandler({final:"I"},function(e){return d.cursorForwardTab(e)}),d._parser.setCsiHandler({final:"J"},function(e){return d.eraseInDisplay(e)}),d._parser.setCsiHandler({prefix:"?",final:"J"},function(e){return d.eraseInDisplay(e)}),d._parser.setCsiHandler({final:"K"},function(e){return d.eraseInLine(e)}),d._parser.setCsiHandler({prefix:"?",final:"K"},function(e){return d.eraseInLine(e)}),d._parser.setCsiHandler({final:"L"},function(e){return d.insertLines(e)}),d._parser.setCsiHandler({final:"M"},function(e){return d.deleteLines(e)}),d._parser.setCsiHandler({final:"P"},function(e){return d.deleteChars(e)}),d._parser.setCsiHandler({final:"S"},function(e){return d.scrollUp(e)}),d._parser.setCsiHandler({final:"T"},function(e){return d.scrollDown(e)}),d._parser.setCsiHandler({final:"X"},function(e){return d.eraseChars(e)}),d._parser.setCsiHandler({final:"Z"},function(e){return d.cursorBackwardTab(e)}),d._parser.setCsiHandler({final:"`"},function(e){return d.charPosAbsolute(e)}),d._parser.setCsiHandler({final:"a"},function(e){return d.hPositionRelative(e)}),d._parser.setCsiHandler({final:"b"},function(e){return d.repeatPrecedingCharacter(e)}),d._parser.setCsiHandler({final:"c"},function(e){return d.sendDeviceAttributesPrimary(e)}),d._parser.setCsiHandler({prefix:">",final:"c"},function(e){return d.sendDeviceAttributesSecondary(e)}),d._parser.setCsiHandler({final:"d"},function(e){return d.linePosAbsolute(e)}),d._parser.setCsiHandler({final:"e"},function(e){return d.vPositionRelative(e)}),d._parser.setCsiHandler({final:"f"},function(e){return d.hVPosition(e)}),d._parser.setCsiHandler({final:"g"},function(e){return d.tabClear(e)}),d._parser.setCsiHandler({final:"h"},function(e){return d.setMode(e)}),d._parser.setCsiHandler({prefix:"?",final:"h"},function(e){return d.setModePrivate(e)}),d._parser.setCsiHandler({final:"l"},function(e){return d.resetMode(e)}),d._parser.setCsiHandler({prefix:"?",final:"l"},function(e){return d.resetModePrivate(e)}),d._parser.setCsiHandler({final:"m"},function(e){return d.charAttributes(e)}),d._parser.setCsiHandler({final:"n"},function(e){return d.deviceStatus(e)}),d._parser.setCsiHandler({prefix:"?",final:"n"},function(e){return d.deviceStatusPrivate(e)}),d._parser.setCsiHandler({intermediates:"!",final:"p"},function(e){return d.softReset(e)}),d._parser.setCsiHandler({intermediates:" ",final:"q"},function(e){return d.setCursorStyle(e)}),d._parser.setCsiHandler({final:"r"},function(e){return d.setScrollRegion(e)}),d._parser.setCsiHandler({final:"s"},function(e){return d.saveCursor(e)}),d._parser.setCsiHandler({final:"u"},function(e){return d.restoreCursor(e)}),d._parser.setCsiHandler({intermediates:"'",final:"}"},function(e){return d.insertColumns(e)}),d._parser.setCsiHandler({intermediates:"'",final:"~"},function(e){return d.deleteColumns(e)}),d._parser.setExecuteHandler(s.C0.BEL,function(){return d.bell()}),d._parser.setExecuteHandler(s.C0.LF,function(){return d.lineFeed()}),d._parser.setExecuteHandler(s.C0.VT,function(){return d.lineFeed()}),d._parser.setExecuteHandler(s.C0.FF,function(){return d.lineFeed()}),d._parser.setExecuteHandler(s.C0.CR,function(){return d.carriageReturn()}),d._parser.setExecuteHandler(s.C0.BS,function(){return d.backspace()}),d._parser.setExecuteHandler(s.C0.HT,function(){return d.tab()}),d._parser.setExecuteHandler(s.C0.SO,function(){return d.shiftOut()}),d._parser.setExecuteHandler(s.C0.SI,function(){return d.shiftIn()}),d._parser.setExecuteHandler(s.C1.IND,function(){return d.index()}),d._parser.setExecuteHandler(s.C1.NEL,function(){return d.nextLine()}),d._parser.setExecuteHandler(s.C1.HTS,function(){return d.tabSet()}),d._parser.setOscHandler(0,new g.OscHandler(function(e){return d.setTitle(e)})),d._parser.setOscHandler(2,new g.OscHandler(function(e){return d.setTitle(e)})),d._parser.setEscHandler({final:"7"},function(){return d.saveCursor()}),d._parser.setEscHandler({final:"8"},function(){return d.restoreCursor()}),d._parser.setEscHandler({final:"D"},function(){return d.index()}),d._parser.setEscHandler({final:"E"},function(){return d.nextLine()}),d._parser.setEscHandler({final:"H"},function(){return d.tabSet()}),d._parser.setEscHandler({final:"M"},function(){return d.reverseIndex()}),d._parser.setEscHandler({final:"="},function(){return d.keypadApplicationMode()}),d._parser.setEscHandler({final:">"},function(){return d.keypadNumericMode()}),d._parser.setEscHandler({final:"c"},function(){return d.reset()}),d._parser.setEscHandler({final:"n"},function(){return d.setgLevel(2)}),d._parser.setEscHandler({final:"o"},function(){return d.setgLevel(3)}),d._parser.setEscHandler({final:"|"},function(){return d.setgLevel(3)}),d._parser.setEscHandler({final:"}"},function(){return d.setgLevel(2)}),d._parser.setEscHandler({final:"~"},function(){return d.setgLevel(1)}),d._parser.setEscHandler({intermediates:"%",final:"@"},function(){return d.selectDefaultCharset()}),d._parser.setEscHandler({intermediates:"%",final:"G"},function(){return d.selectDefaultCharset()});var v=function(e){y._parser.setEscHandler({intermediates:"(",final:e},function(){return d.selectCharset("("+e)}),y._parser.setEscHandler({intermediates:")",final:e},function(){return d.selectCharset(")"+e)}),y._parser.setEscHandler({intermediates:"*",final:e},function(){return d.selectCharset("*"+e)}),y._parser.setEscHandler({intermediates:"+",final:e},function(){return d.selectCharset("+"+e)}),y._parser.setEscHandler({intermediates:"-",final:e},function(){return d.selectCharset("-"+e)}),y._parser.setEscHandler({intermediates:".",final:e},function(){return d.selectCharset("."+e)}),y._parser.setEscHandler({intermediates:"/",final:e},function(){return d.selectCharset("/"+e)})},y=this;for(var m in o.CHARSETS)v(m);return d._parser.setEscHandler({intermediates:"#",final:"8"},function(){return d.screenAlignmentPattern()}),d._parser.setErrorHandler(function(e){return d._logService.error("Parsing error: ",e),e}),d._parser.setDcsHandler({intermediates:"$",final:"q"},new b(d._bufferService,d._coreService,d._logService,d._optionsService)),d}return n(t,e),Object.defineProperty(t.prototype,"onCursorMove",{get:function(){return this._onCursorMove.event},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"onLineFeed",{get:function(){return this._onLineFeed.event},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"onScroll",{get:function(){return this._onScroll.event},enumerable:!0,configurable:!0}),t.prototype.dispose=function(){e.prototype.dispose.call(this)},t.prototype.parse=function(e){var t=this._bufferService.buffer,i=t.x,r=t.y;if(this._logService.debug("parsing data",e),this._parseBuffer.length131072)for(var n=0;n=l)if(h)s.x=0,s.y++,s.y===s.scrollBottom+1?(s.y--,this._terminal.scroll(!0)):(s.y>=this._bufferService.rows&&(s.y=this._bufferService.rows-1),s.lines.get(s.y).isWrapped=!0),p=s.lines.get(s.y+s.ybase);else if(s.x=l-1,2===n)continue;if(f&&(p.insertCells(s.x,n,s.getNullCell(_)),2===p.getWidth(l-1)&&p.setCellFromCodePoint(l-1,d.NULL_CELL_CODE,d.NULL_CELL_WIDTH,_.fg,_.bg)),p.setCellFromCodePoint(s.x++,r,n,_.fg,_.bg),n>0)for(;--n;)p.setCellFromCodePoint(s.x++,0,0,_.fg,_.bg)}else p.getWidth(s.x-1)?p.addCodepointToCell(s.x-1,r):p.addCodepointToCell(s.x-2,r)}i&&(p.loadCell(s.x-1,this._workCell),2===this._workCell.getWidth()||this._workCell.getCode()>65535?this._parser.precedingCodepoint=0:this._workCell.isCombined()?this._parser.precedingCodepoint=this._workCell.getChars().charCodeAt(0):this._parser.precedingCodepoint=this._workCell.content),this._dirtyRowService.markDirty(s.y)},t.prototype.addCsiHandler=function(e,t){return this._parser.addCsiHandler(e,t)},t.prototype.addDcsHandler=function(e,t){return this._parser.addDcsHandler(e,new y.DcsHandler(t))},t.prototype.addEscHandler=function(e,t){return this._parser.addEscHandler(e,t)},t.prototype.addOscHandler=function(e,t){return this._parser.addOscHandler(e,new g.OscHandler(t))},t.prototype.bell=function(){this._terminal.bell()},t.prototype.lineFeed=function(){var e=this._bufferService.buffer;this._optionsService.options.convertEol&&(e.x=0),e.y++,e.y===e.scrollBottom+1?(e.y--,this._terminal.scroll()):e.y>=this._bufferService.rows&&(e.y=this._bufferService.rows-1),e.x>=this._bufferService.cols&&e.x--,this._onLineFeed.fire()},t.prototype.carriageReturn=function(){this._bufferService.buffer.x=0},t.prototype.backspace=function(){this._restrictCursor(),this._bufferService.buffer.x>0&&this._bufferService.buffer.x--},t.prototype.tab=function(){if(!(this._bufferService.buffer.x>=this._bufferService.cols)){var e=this._bufferService.buffer.x;this._bufferService.buffer.x=this._bufferService.buffer.nextStop(),this._optionsService.options.screenReaderMode&&this._terminal.onA11yTabEmitter.fire(this._bufferService.buffer.x-e)}},t.prototype.shiftOut=function(){this._terminal.setgLevel(1)},t.prototype.shiftIn=function(){this._terminal.setgLevel(0)},t.prototype._restrictCursor=function(){this._bufferService.buffer.x=Math.min(this._bufferService.cols-1,Math.max(0,this._bufferService.buffer.x)),this._bufferService.buffer.y=this._terminal.originMode?Math.min(this._bufferService.buffer.scrollBottom,Math.max(this._bufferService.buffer.scrollTop,this._bufferService.buffer.y)):Math.min(this._bufferService.rows-1,Math.max(0,this._bufferService.buffer.y))},t.prototype._setCursor=function(e,t){this._terminal.originMode?(this._bufferService.buffer.x=e,this._bufferService.buffer.y=this._bufferService.buffer.scrollTop+t):(this._bufferService.buffer.x=e,this._bufferService.buffer.y=t),this._restrictCursor()},t.prototype._moveCursor=function(e,t){this._restrictCursor(),this._setCursor(this._bufferService.buffer.x+e,this._bufferService.buffer.y+t)},t.prototype.cursorUp=function(e){var t=this._bufferService.buffer.y-this._bufferService.buffer.scrollTop;t>=0?this._moveCursor(0,-Math.min(t,e.params[0]||1)):this._moveCursor(0,-(e.params[0]||1))},t.prototype.cursorDown=function(e){var t=this._bufferService.buffer.scrollBottom-this._bufferService.buffer.y;t>=0?this._moveCursor(0,Math.min(t,e.params[0]||1)):this._moveCursor(0,e.params[0]||1)},t.prototype.cursorForward=function(e){this._moveCursor(e.params[0]||1,0)},t.prototype.cursorBackward=function(e){this._moveCursor(-(e.params[0]||1),0)},t.prototype.cursorNextLine=function(e){this.cursorDown(e),this._bufferService.buffer.x=0},t.prototype.cursorPrecedingLine=function(e){this.cursorUp(e),this._bufferService.buffer.x=0},t.prototype.cursorCharAbsolute=function(e){this._setCursor((e.params[0]||1)-1,this._bufferService.buffer.y)},t.prototype.cursorPosition=function(e){this._setCursor(e.length>=2?(e.params[1]||1)-1:0,(e.params[0]||1)-1)},t.prototype.charPosAbsolute=function(e){this._setCursor((e.params[0]||1)-1,this._bufferService.buffer.y)},t.prototype.hPositionRelative=function(e){this._moveCursor(e.params[0]||1,0)},t.prototype.linePosAbsolute=function(e){this._setCursor(this._bufferService.buffer.x,(e.params[0]||1)-1)},t.prototype.vPositionRelative=function(e){this._moveCursor(0,e.params[0]||1)},t.prototype.hVPosition=function(e){this.cursorPosition(e)},t.prototype.tabClear=function(e){var t=e.params[0];0===t?delete this._bufferService.buffer.tabs[this._bufferService.buffer.x]:3===t&&(this._bufferService.buffer.tabs={})},t.prototype.cursorForwardTab=function(e){if(!(this._bufferService.buffer.x>=this._bufferService.cols))for(var t=e.params[0]||1;t--;)this._bufferService.buffer.x=this._bufferService.buffer.nextStop()},t.prototype.cursorBackwardTab=function(e){if(!(this._bufferService.buffer.x>=this._bufferService.cols))for(var t=e.params[0]||1,i=this._bufferService.buffer;t--;)i.x=i.prevStop()},t.prototype._eraseInBufferLine=function(e,t,i,r){void 0===r&&(r=!1);var n=this._bufferService.buffer.lines.get(this._bufferService.buffer.ybase+e);n.replaceCells(t,i,this._bufferService.buffer.getNullCell(this._terminal.eraseAttrData())),r&&(n.isWrapped=!1)},t.prototype._resetBufferLine=function(e){var t=this._bufferService.buffer.lines.get(this._bufferService.buffer.ybase+e);t.fill(this._bufferService.buffer.getNullCell(this._terminal.eraseAttrData())),t.isWrapped=!1},t.prototype.eraseInDisplay=function(e){var t;switch(this._restrictCursor(),e.params[0]){case 0:for(t=this._bufferService.buffer.y,this._dirtyRowService.markDirty(t),this._eraseInBufferLine(t++,this._bufferService.buffer.x,this._bufferService.cols,0===this._bufferService.buffer.x);t=this._bufferService.cols&&(this._bufferService.buffer.lines.get(t+1).isWrapped=!1);t--;)this._resetBufferLine(t);this._dirtyRowService.markDirty(0);break;case 2:for(t=this._bufferService.rows,this._dirtyRowService.markDirty(t-1);t--;)this._resetBufferLine(t);this._dirtyRowService.markDirty(0);break;case 3:var i=this._bufferService.buffer.lines.length-this._bufferService.rows;i>0&&(this._bufferService.buffer.lines.trimStart(i),this._bufferService.buffer.ybase=Math.max(this._bufferService.buffer.ybase-i,0),this._bufferService.buffer.ydisp=Math.max(this._bufferService.buffer.ydisp-i,0),this._onScroll.fire(0))}},t.prototype.eraseInLine=function(e){switch(this._restrictCursor(),e.params[0]){case 0:this._eraseInBufferLine(this._bufferService.buffer.y,this._bufferService.buffer.x,this._bufferService.cols);break;case 1:this._eraseInBufferLine(this._bufferService.buffer.y,0,this._bufferService.buffer.x+1);break;case 2:this._eraseInBufferLine(this._bufferService.buffer.y,0,this._bufferService.cols)}this._dirtyRowService.markDirty(this._bufferService.buffer.y)},t.prototype.insertLines=function(e){this._restrictCursor();var t=e.params[0]||1,i=this._bufferService.buffer;if(!(i.y>i.scrollBottom||i.yi.scrollBottom||i.yt.scrollBottom||t.yt.scrollBottom||t.yt.scrollBottom||t.yt.scrollBottom||t.y0||(this._terminal.is("xterm")||this._terminal.is("rxvt-unicode")||this._terminal.is("screen")?this._coreService.triggerDataEvent(s.C0.ESC+"[?1;2c"):this._terminal.is("linux")&&this._coreService.triggerDataEvent(s.C0.ESC+"[?6c"))},t.prototype.sendDeviceAttributesSecondary=function(e){e.params[0]>0||(this._terminal.is("xterm")?this._coreService.triggerDataEvent(s.C0.ESC+"[>0;276;0c"):this._terminal.is("rxvt-unicode")?this._coreService.triggerDataEvent(s.C0.ESC+"[>85;95;0c"):this._terminal.is("linux")?this._coreService.triggerDataEvent(e.params[0]+"c"):this._terminal.is("screen")&&this._coreService.triggerDataEvent(s.C0.ESC+"[>83;40003;0c"))},t.prototype.setMode=function(e){for(var t=0;t=2||2===r[1]&&s+n>=5)break;r[1]&&(n=1)}while(++s+t=30&&t<=37?(r.fg&=-50331904,r.fg|=16777216|t-30):t>=40&&t<=47?(r.bg&=-50331904,r.bg|=16777216|t-40):t>=90&&t<=97?(r.fg&=-50331904,r.fg|=16777224|t-90):t>=100&&t<=107?(r.bg&=-50331904,r.bg|=16777224|t-100):0===t?(r.fg=f.DEFAULT_ATTR_DATA.fg,r.bg=f.DEFAULT_ATTR_DATA.bg):1===t?r.fg|=134217728:3===t?r.bg|=67108864:4===t?r.fg|=268435456:5===t?r.fg|=536870912:7===t?r.fg|=67108864:8===t?r.fg|=1073741824:2===t?r.bg|=134217728:22===t?(r.fg&=-134217729,r.bg&=-134217729):23===t?r.bg&=-67108865:24===t?r.fg&=-268435457:25===t?r.fg&=-536870913:27===t?r.fg&=-67108865:28===t?r.fg&=-1073741825:39===t?(r.fg&=-67108864,r.fg|=16777215&f.DEFAULT_ATTR_DATA.fg):49===t?(r.bg&=-67108864,r.bg|=16777215&f.DEFAULT_ATTR_DATA.bg):38===t||48===t?n+=this._extractColor(e,n,r):100===t?(r.fg&=-67108864,r.fg|=16777215&f.DEFAULT_ATTR_DATA.fg,r.bg&=-67108864,r.bg|=16777215&f.DEFAULT_ATTR_DATA.bg):this._logService.debug("Unknown SGR attribute: %d.",t)},t.prototype.deviceStatus=function(e){switch(e.params[0]){case 5:this._coreService.triggerDataEvent(s.C0.ESC+"[0n");break;case 6:var t=this._bufferService.buffer.y+1,i=this._bufferService.buffer.x+1;this._coreService.triggerDataEvent(s.C0.ESC+"["+t+";"+i+"R")}},t.prototype.deviceStatusPrivate=function(e){switch(e.params[0]){case 6:var t=this._bufferService.buffer.y+1,i=this._bufferService.buffer.x+1;this._coreService.triggerDataEvent(s.C0.ESC+"[?"+t+";"+i+"R")}},t.prototype.softReset=function(e){this._terminal.cursorHidden=!1,this._terminal.insertMode=!1,this._terminal.originMode=!1,this._terminal.wraparoundMode=!0,this._terminal.applicationKeypad=!1,this._terminal.viewport&&this._terminal.viewport.syncScrollArea(),this._coreService.decPrivateModes.applicationCursorKeys=!1,this._bufferService.buffer.scrollTop=0,this._bufferService.buffer.scrollBottom=this._bufferService.rows-1,this._terminal.curAttrData=f.DEFAULT_ATTR_DATA.clone(),this._bufferService.buffer.x=this._bufferService.buffer.y=0,this._terminal.charset=null,this._terminal.glevel=0,this._terminal.charsets=[null]},t.prototype.setCursorStyle=function(e){var t=e.params[0]||1;switch(t){case 1:case 2:this._optionsService.options.cursorStyle="block";break;case 3:case 4:this._optionsService.options.cursorStyle="underline";break;case 5:case 6:this._optionsService.options.cursorStyle="bar"}var i=t%2==1;this._optionsService.options.cursorBlink=i},t.prototype.setScrollRegion=function(e){var t,i=e.params[0]||1;(e.length<2||(t=e.params[1])>this._bufferService.rows||0===t)&&(t=this._bufferService.rows),t>i&&(this._bufferService.buffer.scrollTop=i-1,this._bufferService.buffer.scrollBottom=t-1,this._setCursor(0,0))},t.prototype.saveCursor=function(e){this._bufferService.buffer.savedX=this._bufferService.buffer.x,this._bufferService.buffer.savedY=this._bufferService.buffer.ybase+this._bufferService.buffer.y,this._bufferService.buffer.savedCurAttrData.fg=this._terminal.curAttrData.fg,this._bufferService.buffer.savedCurAttrData.bg=this._terminal.curAttrData.bg,this._bufferService.buffer.savedCharset=this._terminal.charset},t.prototype.restoreCursor=function(e){this._bufferService.buffer.x=this._bufferService.buffer.savedX||0,this._bufferService.buffer.y=Math.max(this._bufferService.buffer.savedY-this._bufferService.buffer.ybase,0),this._terminal.curAttrData.fg=this._bufferService.buffer.savedCurAttrData.fg,this._terminal.curAttrData.bg=this._bufferService.buffer.savedCurAttrData.bg,this._terminal.charset=this._savedCharset,this._bufferService.buffer.savedCharset&&(this._terminal.charset=this._bufferService.buffer.savedCharset),this._restrictCursor()},t.prototype.setTitle=function(e){this._terminal.handleTitle(e)},t.prototype.nextLine=function(){this._bufferService.buffer.x=0,this.index()},t.prototype.keypadApplicationMode=function(){this._logService.debug("Serial port requested application keypad."),this._terminal.applicationKeypad=!0,this._terminal.viewport&&this._terminal.viewport.syncScrollArea()},t.prototype.keypadNumericMode=function(){this._logService.debug("Switching back to normal keypad."),this._terminal.applicationKeypad=!1,this._terminal.viewport&&this._terminal.viewport.syncScrollArea()},t.prototype.selectDefaultCharset=function(){this._terminal.setgLevel(0),this._terminal.setgCharset(0,o.DEFAULT_CHARSET)},t.prototype.selectCharset=function(e){2===e.length?"/"!==e[0]&&this._terminal.setgCharset(m[e[0]],o.CHARSETS[e[1]]||o.DEFAULT_CHARSET):this.selectDefaultCharset()},t.prototype.index=function(){this._restrictCursor();var e=this._bufferService.buffer;this._bufferService.buffer.y++,e.y===e.scrollBottom+1?(e.y--,this._terminal.scroll()):e.y>=this._bufferService.rows&&(e.y=this._bufferService.rows-1),this._restrictCursor()},t.prototype.tabSet=function(){this._bufferService.buffer.tabs[this._bufferService.buffer.x]=!0},t.prototype.reverseIndex=function(){this._restrictCursor();var e=this._bufferService.buffer;if(e.y===e.scrollTop){var t=e.scrollBottom-e.scrollTop;e.lines.shiftElements(e.y+e.ybase,t,1),e.lines.set(e.y+e.ybase,e.getBlankLine(this._terminal.eraseAttrData())),this._dirtyRowService.markRangeDirty(e.scrollTop,e.scrollBottom)}else e.y--,this._restrictCursor()},t.prototype.reset=function(){this._parser.reset(),this._terminal.reset()},t.prototype.setgLevel=function(e){this._terminal.setgLevel(e)},t.prototype.screenAlignmentPattern=function(){var e=new p.CellData;e.content=1<<22|"E".charCodeAt(0),e.fg=this._terminal.curAttrData.fg,e.bg=this._terminal.curAttrData.bg;var t=this._bufferService.buffer;this._setCursor(0,0);for(var i=0;i1)throw new Error("only one byte as prefix supported");if((i=e.prefix.charCodeAt(0))&&60>i||i>63)throw new Error("prefix must be in range 0x3c .. 0x3f")}if(e.intermediates){if(e.intermediates.length>2)throw new Error("only two bytes as intermediates are supported");for(var r=0;rn||n>47)throw new Error("intermediate must be in range 0x20 .. 0x2f");i<<=8,i|=n}}if(1!==e.final.length)throw new Error("final must be a single byte");var s=e.final.charCodeAt(0);if(t[0]>s||s>t[1])throw new Error("final must be in range "+t[0]+" .. "+t[1]);return i<<=8,i|=s},i.prototype.identToString=function(e){for(var t=[];e;)t.push(String.fromCharCode(255&e)),e>>=8;return t.reverse().join("")},i.prototype.dispose=function(){this._csiHandlers=Object.create(null),this._executeHandlers=Object.create(null),this._escHandlers=Object.create(null),this._oscParser.dispose(),this._dcsParser.dispose()},i.prototype.setPrintHandler=function(e){this._printHandler=e},i.prototype.clearPrintHandler=function(){this._printHandler=this._printHandlerFb},i.prototype.addEscHandler=function(e,t){var i=this._identifier(e,[48,126]);void 0===this._escHandlers[i]&&(this._escHandlers[i]=[]);var r=this._escHandlers[i];return r.push(t),{dispose:function(){var e=r.indexOf(t);-1!==e&&r.splice(e,1)}}},i.prototype.setEscHandler=function(e,t){this._escHandlers[this._identifier(e,[48,126])]=[t]},i.prototype.clearEscHandler=function(e){this._escHandlers[this._identifier(e,[48,126])]&&delete this._escHandlers[this._identifier(e,[48,126])]},i.prototype.setEscHandlerFallback=function(e){this._escHandlerFb=e},i.prototype.setExecuteHandler=function(e,t){this._executeHandlers[e.charCodeAt(0)]=t},i.prototype.clearExecuteHandler=function(e){this._executeHandlers[e.charCodeAt(0)]&&delete this._executeHandlers[e.charCodeAt(0)]},i.prototype.setExecuteHandlerFallback=function(e){this._executeHandlerFb=e},i.prototype.addCsiHandler=function(e,t){var i=this._identifier(e);void 0===this._csiHandlers[i]&&(this._csiHandlers[i]=[]);var r=this._csiHandlers[i];return r.push(t),{dispose:function(){var e=r.indexOf(t);-1!==e&&r.splice(e,1)}}},i.prototype.setCsiHandler=function(e,t){this._csiHandlers[this._identifier(e)]=[t]},i.prototype.clearCsiHandler=function(e){this._csiHandlers[this._identifier(e)]&&delete this._csiHandlers[this._identifier(e)]},i.prototype.setCsiHandlerFallback=function(e){this._csiHandlerFb=e},i.prototype.addDcsHandler=function(e,t){return this._dcsParser.addHandler(this._identifier(e),t)},i.prototype.setDcsHandler=function(e,t){this._dcsParser.setHandler(this._identifier(e),t)},i.prototype.clearDcsHandler=function(e){this._dcsParser.clearHandler(this._identifier(e))},i.prototype.setDcsHandlerFallback=function(e){this._dcsParser.setHandlerFallback(e)},i.prototype.addOscHandler=function(e,t){return this._oscParser.addHandler(e,t)},i.prototype.setOscHandler=function(e,t){this._oscParser.setHandler(e,t)},i.prototype.clearOscHandler=function(e){this._oscParser.clearHandler(e)},i.prototype.setOscHandlerFallback=function(e){this._oscParser.setHandlerFallback(e)},i.prototype.setErrorHandler=function(e){this._errorHandler=e},i.prototype.clearErrorHandler=function(){this._errorHandler=this._errorHandlerFb},i.prototype.reset=function(){this.currentState=this.initialState,this._oscParser.reset(),this._dcsParser.reset(),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingCodepoint=0},i.prototype.parse=function(e,t){for(var i=0,r=0,n=this.currentState,s=this._oscParser,o=this._dcsParser,a=this._collect,c=this._params,l=this.TRANSITIONS.table,h=0;h>4){case 2:for(var u=h+1;;++u){if(u>=t||(i=e[u])<32||i>126&&i<160){this._printHandler(e,h,u),h=u-1;break}if(++u>=t||(i=e[u])<32||i>126&&i<160){this._printHandler(e,h,u),h=u-1;break}if(++u>=t||(i=e[u])<32||i>126&&i<160){this._printHandler(e,h,u),h=u-1;break}if(++u>=t||(i=e[u])<32||i>126&&i<160){this._printHandler(e,h,u),h=u-1;break}}break;case 3:this._executeHandlers[i]?this._executeHandlers[i]():this._executeHandlerFb(i),this.precedingCodepoint=0;break;case 0:break;case 1:if(this._errorHandler({position:h,code:i,currentState:n,collect:a,params:c,abort:!1}).abort)return;break;case 7:for(var f=this._csiHandlers[a<<8|i],_=f?f.length-1:-1;_>=0&&!1===f[_](c);_--);_<0&&this._csiHandlerFb(a<<8|i,c),this.precedingCodepoint=0;break;case 8:do{switch(i){case 59:c.addParam(0);break;case 58:c.addSubParam(-1);break;default:c.addDigit(i-48)}}while(++h47&&i<60);h--;break;case 9:a<<=8,a|=i;break;case 10:for(var d=this._escHandlers[a<<8|i],p=d?d.length-1:-1;p>=0&&!1===d[p]();p--);p<0&&this._escHandlerFb(a<<8|i),this.precedingCodepoint=0;break;case 11:c.reset(),c.addParam(0),a=0;break;case 12:o.hook(a<<8|i,c);break;case 13:for(var v=h+1;;++v)if(v>=t||24===(i=e[v])||26===i||27===i||i>127&&i<160){o.put(e,h,v),h=v-1;break}break;case 14:o.unhook(24!==i&&26!==i),27===i&&(r|=1),c.reset(),c.addParam(0),a=0,this.precedingCodepoint=0;break;case 4:s.start();break;case 5:for(var g=h+1;;g++)if(g>=t||(i=e[g])<32||i>127&&i<=159){s.put(e,h,g),h=g-1;break}break;case 6:s.end(24!==i&&26!==i),27===i&&(r|=1),c.reset(),c.addParam(0),a=0,this.precedingCodepoint=0}n=15&r}this._collect=a,this.currentState=n},i}(s.Disposable);t.EscapeSequenceParser=u},function(e,t,i){"use strict";var r,n=this&&this.__extends||(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var s=i(40),o=i(45),a=i(46),c=i(47),l=i(27),h=i(2),u=i(23),f=1,_=function(e){function t(t,i,r,n,h){var u=e.call(this)||this;u._colors=t,u._terminal=i,u.bufferService=r,u._charSizeService=n,u.optionsService=h,u._id=f++;var _=u._terminal.options.allowTransparency;return u._characterJoinerRegistry=new l.CharacterJoinerRegistry(r),u._renderLayers=[new s.TextRenderLayer(u._terminal.screenElement,0,u._colors,u._characterJoinerRegistry,_,u._id,r,h),new o.SelectionRenderLayer(u._terminal.screenElement,1,u._colors,u._id,r,h),new c.LinkRenderLayer(u._terminal.screenElement,2,u._colors,u._id,u._terminal.linkifier,r,h),new a.CursorRenderLayer(u._terminal.screenElement,3,u._colors,u._terminal,u._id,r,h)],u.dimensions={scaledCharWidth:null,scaledCharHeight:null,scaledCellWidth:null,scaledCellHeight:null,scaledCharLeft:null,scaledCharTop:null,scaledCanvasWidth:null,scaledCanvasHeight:null,canvasWidth:null,canvasHeight:null,actualCellWidth:null,actualCellHeight:null},u._devicePixelRatio=window.devicePixelRatio,u._updateDimensions(),u.onOptionsChanged(),u}return n(t,e),t.prototype.dispose=function(){e.prototype.dispose.call(this),this._renderLayers.forEach(function(e){return e.dispose()}),u.removeTerminalFromCache(this._id)},t.prototype.onDevicePixelRatioChange=function(){this._devicePixelRatio!==window.devicePixelRatio&&(this._devicePixelRatio=window.devicePixelRatio,this.onResize(this._terminal.cols,this._terminal.rows))},t.prototype.setColors=function(e){var t=this;this._colors=e,this._renderLayers.forEach(function(e){e.setColors(t._colors),e.reset()})},t.prototype.onResize=function(e,t){var i=this;this._updateDimensions(),this._renderLayers.forEach(function(e){return e.resize(i.dimensions)}),this._terminal.screenElement.style.width=this.dimensions.canvasWidth+"px",this._terminal.screenElement.style.height=this.dimensions.canvasHeight+"px"},t.prototype.onCharSizeChanged=function(){this.onResize(this._terminal.cols,this._terminal.rows)},t.prototype.onBlur=function(){this._runOperation(function(e){return e.onBlur()})},t.prototype.onFocus=function(){this._runOperation(function(e){return e.onFocus()})},t.prototype.onSelectionChanged=function(e,t,i){void 0===i&&(i=!1),this._runOperation(function(r){return r.onSelectionChanged(e,t,i)})},t.prototype.onCursorMove=function(){this._runOperation(function(e){return e.onCursorMove()})},t.prototype.onOptionsChanged=function(){this._runOperation(function(e){return e.onOptionsChanged()})},t.prototype.clear=function(){this._runOperation(function(e){return e.reset()})},t.prototype._runOperation=function(e){this._renderLayers.forEach(function(t){return e(t)})},t.prototype.renderRows=function(e,t){this._renderLayers.forEach(function(i){return i.onGridChanged(e,t)})},t.prototype._updateDimensions=function(){this._charSizeService.hasValidSize&&(this.dimensions.scaledCharWidth=Math.floor(this._charSizeService.width*window.devicePixelRatio),this.dimensions.scaledCharHeight=Math.ceil(this._charSizeService.height*window.devicePixelRatio),this.dimensions.scaledCellHeight=Math.floor(this.dimensions.scaledCharHeight*this._terminal.options.lineHeight),this.dimensions.scaledCharTop=1===this._terminal.options.lineHeight?0:Math.round((this.dimensions.scaledCellHeight-this.dimensions.scaledCharHeight)/2),this.dimensions.scaledCellWidth=this.dimensions.scaledCharWidth+Math.round(this._terminal.options.letterSpacing),this.dimensions.scaledCharLeft=Math.floor(this._terminal.options.letterSpacing/2),this.dimensions.scaledCanvasHeight=this._terminal.rows*this.dimensions.scaledCellHeight,this.dimensions.scaledCanvasWidth=this._terminal.cols*this.dimensions.scaledCellWidth,this.dimensions.canvasHeight=Math.round(this.dimensions.scaledCanvasHeight/window.devicePixelRatio),this.dimensions.canvasWidth=Math.round(this.dimensions.scaledCanvasWidth/window.devicePixelRatio),this.dimensions.actualCellHeight=this.dimensions.canvasHeight/this._terminal.rows,this.dimensions.actualCellWidth=this.dimensions.canvasWidth/this._terminal.cols)},t.prototype.registerCharacterJoiner=function(e){return this._characterJoinerRegistry.registerCharacterJoiner(e)},t.prototype.deregisterCharacterJoiner=function(e){return this._characterJoinerRegistry.deregisterCharacterJoiner(e)},t}(h.Disposable);t.Renderer=_},function(e,t,i){"use strict";var r,n=this&&this.__extends||(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var s=i(41),o=i(12),a=i(6),c=i(3),l=i(27),h=i(4),u=function(e){function t(t,i,r,n,o,a,c,l){var u=e.call(this,t,"text",i,o,r,a,c,l)||this;return u.bufferService=c,u.optionsService=l,u._characterWidth=0,u._characterFont="",u._characterOverlapCache={},u._workCell=new h.CellData,u._state=new s.GridCache,u._characterJoinerRegistry=n,u}return n(t,e),t.prototype.resize=function(t){e.prototype.resize.call(this,t);var i=this._getFont(!1,!1);this._characterWidth===t.scaledCharWidth&&this._characterFont===i||(this._characterWidth=t.scaledCharWidth,this._characterFont=i,this._characterOverlapCache={}),this._state.clear(),this._state.resize(this._bufferService.cols,this._bufferService.rows)},t.prototype.reset=function(){this._state.clear(),this._clearAll()},t.prototype._forEachCell=function(e,t,i,r){for(var n=e;n<=t;n++)for(var s=n+this._bufferService.buffer.ydisp,o=this._bufferService.buffer.lines.get(s),a=i?i.getJoinedCharacters(s):[],h=0;h0&&h===a[0][0]){f=!0;var d=a.shift();u=new l.JoinedCellData(this._workCell,o.translateToString(!0,d[0],d[1]),d[1]-d[0]),_=d[1]-1}!f&&this._isOverlapping(u)&&_this._characterWidth;return this._ctx.restore(),this._characterOverlapCache[t]=i,i},t}(o.BaseRenderLayer);t.TextRenderLayer=u},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(){this.cache=[]}return e.prototype.resize=function(e,t){for(var i=0;i>>24,n=t.rgba>>>16&255,s=t.rgba>>>8&255,o=0;o=this.capacity)i=this._head,this._unlinkNode(i),delete this._map[i.key],i.key=e,i.value=t,this._map[e]=i;else{var r=this._nodePool;r.length>0?((i=r.pop()).key=e,i.value=t):i={prev:null,next:null,key:e,value:t},this._map[e]=i,this.size++}this._appendNode(i)},e}();t.LRUMap=r},function(e,t,i){"use strict";var r,n=this&&this.__extends||(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var s=function(e){function t(t,i,r,n,s,o){var a=e.call(this,t,"selection",i,!0,r,n,s,o)||this;return a.bufferService=s,a.optionsService=o,a._clearState(),a}return n(t,e),t.prototype._clearState=function(){this._state={start:void 0,end:void 0,columnSelectMode:void 0,ydisp:void 0}},t.prototype.resize=function(t){e.prototype.resize.call(this,t),this._clearState()},t.prototype.reset=function(){this._state.start&&this._state.end&&(this._clearState(),this._clearAll())},t.prototype.onSelectionChanged=function(e,t,i){if(this._didStateChange(e,t,i,this._bufferService.buffer.ydisp))if(this._clearAll(),e&&t){var r=e[1]-this._bufferService.buffer.ydisp,n=t[1]-this._bufferService.buffer.ydisp,s=Math.max(r,0),o=Math.min(n,this._bufferService.rows-1);if(!(s>=this._bufferService.rows||o<0)){if(this._ctx.fillStyle=this._colors.selection.css,i){var a=e[0],c=t[0]-a,l=o-s+1;this._fillCells(a,s,c,l)}else{a=r===s?e[0]:0;var h=s===o?t[0]:this._bufferService.cols;this._fillCells(a,s,h-a,1);var u=Math.max(o-s-1,0);if(this._fillCells(0,s+1,this._bufferService.cols,u),s!==o){var f=n===o?t[0]:this._bufferService.cols;this._fillCells(0,o,f,1)}}this._state.start=[e[0],e[1]],this._state.end=[t[0],t[1]],this._state.columnSelectMode=i,this._state.ydisp=this._bufferService.buffer.ydisp}}else this._clearState()},t.prototype._didStateChange=function(e,t,i,r){return!this._areCoordinatesEqual(e,this._state.start)||!this._areCoordinatesEqual(t,this._state.end)||i!==this._state.columnSelectMode||r!==this._state.ydisp},t.prototype._areCoordinatesEqual=function(e,t){return!(!e||!t)&&(e[0]===t[0]&&e[1]===t[1])},t}(i(12).BaseRenderLayer);t.SelectionRenderLayer=s},function(e,t,i){"use strict";var r,n=this&&this.__extends||(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var s=i(12),o=i(4),a=function(e){function t(t,i,r,n,s,a,c){var l=e.call(this,t,"cursor",i,!0,r,s,a,c)||this;return l._terminal=n,l.bufferService=a,l.optionsService=c,l._cell=new o.CellData,l._state={x:null,y:null,isFocused:null,style:null,width:null},l._cursorRenderers={bar:l._renderBarCursor.bind(l),block:l._renderBlockCursor.bind(l),underline:l._renderUnderlineCursor.bind(l)},l}return n(t,e),t.prototype.resize=function(t){e.prototype.resize.call(this,t),this._state={x:null,y:null,isFocused:null,style:null,width:null}},t.prototype.reset=function(){this._clearCursor(),this._cursorBlinkStateManager&&(this._cursorBlinkStateManager.dispose(),this._cursorBlinkStateManager=null,this.onOptionsChanged())},t.prototype.onBlur=function(){this._cursorBlinkStateManager&&this._cursorBlinkStateManager.pause(),this._terminal.refresh(this._bufferService.buffer.y,this._bufferService.buffer.y)},t.prototype.onFocus=function(){this._cursorBlinkStateManager?this._cursorBlinkStateManager.resume():this._terminal.refresh(this._bufferService.buffer.y,this._bufferService.buffer.y)},t.prototype.onOptionsChanged=function(){var e=this;this._optionsService.options.cursorBlink?this._cursorBlinkStateManager||(this._cursorBlinkStateManager=new c(this._terminal.isFocused,function(){e._render(!0)})):this._cursorBlinkStateManager&&(this._cursorBlinkStateManager.dispose(),this._cursorBlinkStateManager=null),this._terminal.refresh(this._bufferService.buffer.y,this._bufferService.buffer.y)},t.prototype.onCursorMove=function(){this._cursorBlinkStateManager&&this._cursorBlinkStateManager.restartBlinkAnimation()},t.prototype.onGridChanged=function(e,t){!this._cursorBlinkStateManager||this._cursorBlinkStateManager.isPaused?this._render(!1):this._cursorBlinkStateManager.restartBlinkAnimation()},t.prototype._render=function(e){if(this._terminal.cursorState&&!this._terminal.cursorHidden){var t=this._bufferService.buffer.ybase+this._bufferService.buffer.y,i=t-this._bufferService.buffer.ydisp;if(i<0||i>=this._bufferService.rows)this._clearCursor();else if(this._bufferService.buffer.lines.get(t).loadCell(this._bufferService.buffer.x,this._cell),void 0!==this._cell.content){if(!this._terminal.isFocused){this._clearCursor(),this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css;var r=this._optionsService.options.cursorStyle;return r&&"block"!==r?this._cursorRenderers[r](this._bufferService.buffer.x,i,this._cell):this._renderBlurCursor(this._bufferService.buffer.x,i,this._cell),this._ctx.restore(),this._state.x=this._bufferService.buffer.x,this._state.y=i,this._state.isFocused=!1,this._state.style=r,void(this._state.width=this._cell.getWidth())}if(!this._cursorBlinkStateManager||this._cursorBlinkStateManager.isCursorVisible){if(this._state){if(this._state.x===this._bufferService.buffer.x&&this._state.y===i&&this._state.isFocused===this._terminal.isFocused&&this._state.style===this._optionsService.options.cursorStyle&&this._state.width===this._cell.getWidth())return;this._clearCursor()}this._ctx.save(),this._cursorRenderers[this._optionsService.options.cursorStyle||"block"](this._bufferService.buffer.x,i,this._cell),this._ctx.restore(),this._state.x=this._bufferService.buffer.x,this._state.y=i,this._state.isFocused=!1,this._state.style=this._optionsService.options.cursorStyle,this._state.width=this._cell.getWidth()}else this._clearCursor()}}else this._clearCursor()},t.prototype._clearCursor=function(){this._state&&(this._clearCells(this._state.x,this._state.y,this._state.width,1),this._state={x:null,y:null,isFocused:null,style:null,width:null})},t.prototype._renderBarCursor=function(e,t,i){this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css,this._fillLeftLineAtCell(e,t),this._ctx.restore()},t.prototype._renderBlockCursor=function(e,t,i){this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css,this._fillCells(e,t,i.getWidth(),1),this._ctx.fillStyle=this._colors.cursorAccent.css,this._fillCharTrueColor(i,e,t),this._ctx.restore()},t.prototype._renderUnderlineCursor=function(e,t,i){this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css,this._fillBottomLineAtCells(e,t),this._ctx.restore()},t.prototype._renderBlurCursor=function(e,t,i){this._ctx.save(),this._ctx.strokeStyle=this._colors.cursor.css,this._strokeRectAtCell(e,t,i.getWidth(),1),this._ctx.restore()},t}(s.BaseRenderLayer);t.CursorRenderLayer=a;var c=function(){function e(e,t){this._renderCallback=t,this.isCursorVisible=!0,e&&this._restartInterval()}return Object.defineProperty(e.prototype,"isPaused",{get:function(){return!(this._blinkStartTimeout||this._blinkInterval)},enumerable:!0,configurable:!0}),e.prototype.dispose=function(){this._blinkInterval&&(window.clearInterval(this._blinkInterval),this._blinkInterval=null),this._blinkStartTimeout&&(window.clearTimeout(this._blinkStartTimeout),this._blinkStartTimeout=null),this._animationFrame&&(window.cancelAnimationFrame(this._animationFrame),this._animationFrame=null)},e.prototype.restartBlinkAnimation=function(){var e=this;this.isPaused||(this._animationTimeRestarted=Date.now(),this.isCursorVisible=!0,this._animationFrame||(this._animationFrame=window.requestAnimationFrame(function(){e._renderCallback(),e._animationFrame=null})))},e.prototype._restartInterval=function(e){var t=this;void 0===e&&(e=600),this._blinkInterval&&window.clearInterval(this._blinkInterval),this._blinkStartTimeout=setTimeout(function(){if(t._animationTimeRestarted){var e=600-(Date.now()-t._animationTimeRestarted);if(t._animationTimeRestarted=null,e>0)return void t._restartInterval(e)}t.isCursorVisible=!1,t._animationFrame=window.requestAnimationFrame(function(){t._renderCallback(),t._animationFrame=null}),t._blinkInterval=setInterval(function(){if(t._animationTimeRestarted){var e=600-(Date.now()-t._animationTimeRestarted);return t._animationTimeRestarted=null,void t._restartInterval(e)}t.isCursorVisible=!t.isCursorVisible,t._animationFrame=window.requestAnimationFrame(function(){t._renderCallback(),t._animationFrame=null})},600)},e)},e.prototype.pause=function(){this.isCursorVisible=!0,this._blinkInterval&&(window.clearInterval(this._blinkInterval),this._blinkInterval=null),this._blinkStartTimeout&&(window.clearTimeout(this._blinkStartTimeout),this._blinkStartTimeout=null),this._animationFrame&&(window.cancelAnimationFrame(this._animationFrame),this._animationFrame=null)},e.prototype.resume=function(){this._animationTimeRestarted=null,this._restartInterval(),this.restartBlinkAnimation()},e}()},function(e,t,i){"use strict";var r,n=this&&this.__extends||(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var s=i(12),o=i(9),a=i(24),c=function(e){function t(t,i,r,n,s,o,a){var c=e.call(this,t,"link",i,!0,r,n,o,a)||this;return c.bufferService=o,c.optionsService=a,s.onLinkHover(function(e){return c._onLinkHover(e)}),s.onLinkLeave(function(e){return c._onLinkLeave(e)}),c}return n(t,e),t.prototype.resize=function(t){e.prototype.resize.call(this,t),this._state=void 0},t.prototype.reset=function(){this._clearCurrentLink()},t.prototype._clearCurrentLink=function(){if(this._state){this._clearCells(this._state.x1,this._state.y1,this._state.cols-this._state.x1,1);var e=this._state.y2-this._state.y1-1;e>0&&this._clearCells(0,this._state.y1+1,this._state.cols,e),this._clearCells(0,this._state.y2,this._state.x2,1),this._state=void 0}},t.prototype._onLinkHover=function(e){if(e.fg===o.INVERTED_DEFAULT_COLOR?this._ctx.fillStyle=this._colors.background.css:e.fg&&a.is256Color(e.fg)?this._ctx.fillStyle=this._colors.ansi[e.fg].css:this._ctx.fillStyle=this._colors.foreground.css,e.y1===e.y2)this._fillBottomLineAtCells(e.x1,e.y1,e.x2-e.x1);else{this._fillBottomLineAtCells(e.x1,e.y1,e.cols-e.x1);for(var t=e.y1+1;t=e.lines.length)){for(var i=e.ydisp+Math.min(this._rowsToLinkify.end,this._bufferService.rows)+1,r=Math.ceil(2e3/this._bufferService.cols),n=this._bufferService.buffer.iterator(!1,t,i,r,r);n.hasNext();)for(var s=n.next(),o=0;o=0;t--)if(e.priority<=this._linkMatchers[t].priority)return void this._linkMatchers.splice(t+1,0,e);this._linkMatchers.splice(0,0,e)}else this._linkMatchers.push(e)},e.prototype.deregisterLinkMatcher=function(e){for(var t=0;t>9&511:void 0;i.validationCallback?i.validationCallback(a,function(e){n._rowsTimeoutId||e&&n._addLink(l[1],l[0]-n._bufferService.buffer.ydisp,a,i,f)}):c._addLink(l[1],l[0]-c._bufferService.buffer.ydisp,a,i,f)},c=this;null!==(r=s.exec(t));){if("break"===a())break}},e.prototype._addLink=function(e,t,i,n,s){var a=this;if(this._mouseZoneManager&&this._element){var c=r.getStringCellWidth(i),l=e%this._bufferService.cols,h=t+Math.floor(e/this._bufferService.cols),u=(l+c)%this._bufferService.cols,f=h+Math.floor((l+c)/this._bufferService.cols);0===u&&(u=this._bufferService.cols,f--),this._mouseZoneManager.add(new o(l+1,h+1,u+1,f+1,function(e){if(n.handler)return n.handler(e,i);window.open(i,"_blank")},function(){a._onLinkHover.fire(a._createLinkHoverEvent(l,h,u,f,s)),a._element.classList.add("xterm-cursor-pointer")},function(e){a._onLinkTooltip.fire(a._createLinkHoverEvent(l,h,u,f,s)),n.hoverTooltipCallback&&n.hoverTooltipCallback(e,i,{start:{x:l,y:h},end:{x:u,y:f}})},function(){a._onLinkLeave.fire(a._createLinkHoverEvent(l,h,u,f,s)),a._element.classList.remove("xterm-cursor-pointer"),n.hoverLeaveCallback&&n.hoverLeaveCallback()},function(e){return!n.willLinkActivate||n.willLinkActivate(e,i)}))}},e.prototype._createLinkHoverEvent=function(e,t,i,r,n){return{x1:e,y1:t,x2:i,y2:r,cols:this._bufferService.cols,fg:n}},e._timeBeforeLatency=200,e}();t.Linkifier=s;var o=function(e,t,i,r,n,s,o,a,c){this.x1=e,this.y1=t,this.x2=i,this.y2=r,this.clickCallback=n,this.hoverCallback=s,this.tooltipCallback=o,this.leaveCallback=a,this.willLinkActivate=c};t.MouseZone=o},function(e,t,i){"use strict";var r=this&&this.__decorate||function(e,t,i,r){var n,s=arguments.length,o=s<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,r);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(o=(s<3?n(o):s>3?n(t,i,o):n(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},n=this&&this.__param||function(e,t){return function(i,r){t(i,r,e)}};Object.defineProperty(t,"__esModule",{value:!0});var s=i(10),o=i(50),a=i(4),c=i(1),l=i(5),h=i(0),u=i(28),f=i(51),_=String.fromCharCode(160),d=new RegExp(_,"g"),p=function(){function e(e,t,i,r,n,s,l,h){var u=this;this._scrollLines=e,this._element=t,this._screenElement=i,this._charSizeService=r,this._bufferService=n,this._coreService=s,this._mouseService=l,this._optionsService=h,this._dragScrollAmount=0,this._enabled=!0,this._workCell=new a.CellData,this._mouseDownTimeStamp=0,this._onLinuxMouseSelection=new c.EventEmitter,this._onRedrawRequest=new c.EventEmitter,this._onSelectionChange=new c.EventEmitter,this._mouseMoveListener=function(e){return u._onMouseMove(e)},this._mouseUpListener=function(e){return u._onMouseUp(e)},this._coreService.onUserInput(function(){u.hasSelection&&u.clearSelection()}),this._trimListener=this._bufferService.buffer.lines.onTrim(function(e){return u._onTrim(e)}),this._bufferService.buffers.onBufferActivate(function(e){return u._onBufferActivate(e)}),this.enable(),this._model=new o.SelectionModel(this._bufferService),this._activeSelectionMode=0}return Object.defineProperty(e.prototype,"onLinuxMouseSelection",{get:function(){return this._onLinuxMouseSelection.event},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onRedrawRequest",{get:function(){return this._onRedrawRequest.event},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onSelectionChange",{get:function(){return this._onSelectionChange.event},enumerable:!0,configurable:!0}),e.prototype.dispose=function(){this._removeMouseDownListeners()},e.prototype.reset=function(){this.clearSelection()},e.prototype.disable=function(){this.clearSelection(),this._enabled=!1},e.prototype.enable=function(){this._enabled=!0},Object.defineProperty(e.prototype,"selectionStart",{get:function(){return this._model.finalSelectionStart},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"selectionEnd",{get:function(){return this._model.finalSelectionEnd},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hasSelection",{get:function(){var e=this._model.finalSelectionStart,t=this._model.finalSelectionEnd;return!(!e||!t)&&(e[0]!==t[0]||e[1]!==t[1])},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"selectionText",{get:function(){var e=this._model.finalSelectionStart,t=this._model.finalSelectionEnd;if(!e||!t)return"";var i=this._bufferService.buffer,r=[];if(3===this._activeSelectionMode){if(e[0]===t[0])return"";for(var n=e[1];n<=t[1];n++){var o=i.translateBufferLineToString(n,!0,e[0],t[0]);r.push(o)}}else{var a=e[1]===t[1]?t[0]:void 0;r.push(i.translateBufferLineToString(e[1],!0,e[0],a));for(n=e[1]+1;n<=t[1]-1;n++){var c=i.lines.get(n);o=i.translateBufferLineToString(n,!0);c&&c.isWrapped?r[r.length-1]+=o:r.push(o)}if(e[1]!==t[1]){c=i.lines.get(t[1]),o=i.translateBufferLineToString(t[1],!0,0,t[0]);c&&c.isWrapped?r[r.length-1]+=o:r.push(o)}}return r.map(function(e){return e.replace(d," ")}).join(s.isWindows?"\r\n":"\n")},enumerable:!0,configurable:!0}),e.prototype.clearSelection=function(){this._model.clearSelection(),this._removeMouseDownListeners(),this.refresh(),this._onSelectionChange.fire()},e.prototype.refresh=function(e){var t=this;(this._refreshAnimationFrame||(this._refreshAnimationFrame=window.requestAnimationFrame(function(){return t._refresh()})),s.isLinux&&e)&&(this.selectionText.length&&this._onLinuxMouseSelection.fire(this.selectionText))},e.prototype._refresh=function(){this._refreshAnimationFrame=void 0,this._onRedrawRequest.fire({start:this._model.finalSelectionStart,end:this._model.finalSelectionEnd,columnSelectMode:3===this._activeSelectionMode})},e.prototype.isClickInSelection=function(e){var t=this._getMouseBufferCoords(e),i=this._model.finalSelectionStart,r=this._model.finalSelectionEnd;return!!(i&&r&&t)&&this._areCoordsInSelection(t,i,r)},e.prototype._areCoordsInSelection=function(e,t,i){return e[1]>t[1]&&e[1]=t[0]&&e[0]=t[0]},e.prototype.selectWordAtCursor=function(e){var t=this._getMouseBufferCoords(e);t&&(this._selectWordAt(t,!1),this._model.selectionEnd=void 0,this.refresh(!0))},e.prototype.selectAll=function(){this._model.isSelectAllActive=!0,this.refresh(),this._onSelectionChange.fire()},e.prototype.selectLines=function(e,t){this._model.clearSelection(),e=Math.max(e,0),t=Math.min(t,this._bufferService.buffer.lines.length-1),this._model.selectionStart=[0,e],this._model.selectionEnd=[this._bufferService.cols,t],this.refresh(),this._onSelectionChange.fire()},e.prototype._onTrim=function(e){this._model.onTrim(e)&&this.refresh()},e.prototype._getMouseBufferCoords=function(e){var t=this._mouseService.getCoords(e,this._screenElement,this._bufferService.cols,this._bufferService.rows,!0);if(t)return t[0]--,t[1]--,t[1]+=this._bufferService.buffer.ydisp,t},e.prototype._getMouseEventScrollAmount=function(e){var t=u.getCoordsRelativeToElement(e,this._screenElement)[1],i=this._bufferService.rows*Math.ceil(this._charSizeService.height*this._optionsService.options.lineHeight);return t>=0&&t<=i?0:(t>i&&(t-=i),t=Math.min(Math.max(t,-50),50),(t/=50)/Math.abs(t)+Math.round(14*t))},e.prototype.shouldForceSelection=function(e){return s.isMac?e.altKey&&this._optionsService.options.macOptionClickForcesSelection:e.shiftKey},e.prototype.onMouseDown=function(e){if(this._mouseDownTimeStamp=e.timeStamp,(2!==e.button||!this.hasSelection)&&0===e.button){if(!this._enabled){if(!this.shouldForceSelection(e))return;e.stopPropagation()}e.preventDefault(),this._dragScrollAmount=0,this._enabled&&e.shiftKey?this._onIncrementalClick(e):1===e.detail?this._onSingleClick(e):2===e.detail?this._onDoubleClick(e):3===e.detail&&this._onTripleClick(e),this._addMouseDownListeners(),this.refresh(!0)}},e.prototype._addMouseDownListeners=function(){var e=this;this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.addEventListener("mousemove",this._mouseMoveListener),this._screenElement.ownerDocument.addEventListener("mouseup",this._mouseUpListener)),this._dragScrollIntervalTimer=window.setInterval(function(){return e._dragScroll()},50)},e.prototype._removeMouseDownListeners=function(){this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.removeEventListener("mousemove",this._mouseMoveListener),this._screenElement.ownerDocument.removeEventListener("mouseup",this._mouseUpListener)),clearInterval(this._dragScrollIntervalTimer),this._dragScrollIntervalTimer=void 0},e.prototype._onIncrementalClick=function(e){this._model.selectionStart&&(this._model.selectionEnd=this._getMouseBufferCoords(e))},e.prototype._onSingleClick=function(e){if(this._model.selectionStartLength=0,this._model.isSelectAllActive=!1,this._activeSelectionMode=this.shouldColumnSelect(e)?3:0,this._model.selectionStart=this._getMouseBufferCoords(e),this._model.selectionStart){this._model.selectionEnd=void 0;var t=this._bufferService.buffer.lines.get(this._model.selectionStart[1]);t&&t.length!==this._model.selectionStart[0]&&0===t.hasWidth(this._model.selectionStart[0])&&this._model.selectionStart[0]++}},e.prototype._onDoubleClick=function(e){var t=this._getMouseBufferCoords(e);t&&(this._activeSelectionMode=1,this._selectWordAt(t,!0))},e.prototype._onTripleClick=function(e){var t=this._getMouseBufferCoords(e);t&&(this._activeSelectionMode=2,this._selectLineAt(t[1]))},e.prototype.shouldColumnSelect=function(e){return e.altKey&&!(s.isMac&&this._optionsService.options.macOptionClickForcesSelection)},e.prototype._onMouseMove=function(e){if(e.stopImmediatePropagation(),this._model.selectionStart){var t=this._model.selectionEnd?[this._model.selectionEnd[0],this._model.selectionEnd[1]]:null;if(this._model.selectionEnd=this._getMouseBufferCoords(e),this._model.selectionEnd){2===this._activeSelectionMode?this._model.selectionEnd[1]0?this._model.selectionEnd[0]=this._bufferService.cols:this._dragScrollAmount<0&&(this._model.selectionEnd[0]=0));var i=this._bufferService.buffer;if(this._model.selectionEnd[1]0?(3!==this._activeSelectionMode&&(this._model.selectionEnd[0]=this._bufferService.cols),this._model.selectionEnd[1]=Math.min(e.ydisp+this._bufferService.rows,e.lines.length-1)):(3!==this._activeSelectionMode&&(this._model.selectionEnd[0]=0),this._model.selectionEnd[1]=e.ydisp),this.refresh()}},e.prototype._onMouseUp=function(e){var t=e.timeStamp-this._mouseDownTimeStamp;if(this._removeMouseDownListeners(),this.selectionText.length<=1&&t<500){if(e.altKey&&this._bufferService.buffer.ybase===this._bufferService.buffer.ydisp){var i=this._mouseService.getCoords(e,this._element,this._bufferService.cols,this._bufferService.rows,!1);if(i&&void 0!==i[0]&&void 0!==i[1]){var r=f.moveToCellSequence(i[0]-1,i[1]-1,this._bufferService,this._coreService.decPrivateModes.applicationCursorKeys);this._coreService.triggerDataEvent(r,!0)}}}else this.hasSelection&&this._onSelectionChange.fire()},e.prototype._onBufferActivate=function(e){var t=this;this.clearSelection(),this._trimListener&&this._trimListener.dispose(),this._trimListener=e.activeBuffer.lines.onTrim(function(e){return t._onTrim(e)})},e.prototype._convertViewportColToCharacterIndex=function(e,t){for(var i=t[0],r=0;t[0]>=r;r++){var n=e.loadCell(r,this._workCell).getChars().length;0===this._workCell.getWidth()?i--:n>1&&t[0]!==r&&(i+=n-1)}return i},e.prototype.setSelection=function(e,t,i){this._model.clearSelection(),this._removeMouseDownListeners(),this._model.selectionStart=[e,t],this._model.selectionStartLength=i,this.refresh()},e.prototype._getWordAt=function(e,t,i,r){if(void 0===i&&(i=!0),void 0===r&&(r=!0),!(e[0]>=this._bufferService.cols)){var n=this._bufferService.buffer,s=n.lines.get(e[1]);if(s){var o=n.translateBufferLineToString(e[1],!1),a=this._convertViewportColToCharacterIndex(s,e),c=a,l=e[0]-a,h=0,u=0,f=0,_=0;if(" "===o.charAt(a)){for(;a>0&&" "===o.charAt(a-1);)a--;for(;c1&&(_+=v-1,c+=v-1);d>0&&a>0&&!this._isCharWordSeparator(s.loadCell(d-1,this._workCell));){s.loadCell(d-1,this._workCell);var g=this._workCell.getChars().length;0===this._workCell.getWidth()?(h++,d--):g>1&&(f+=g-1,a-=g-1),a--,d--}for(;p1&&(_+=y-1,c+=y-1),c++,p++}}c++;var m=a+l-h+f,b=Math.min(this._bufferService.cols,c-a+h+u-f-_);if(t||""!==o.slice(a,c).trim()){if(i&&0===m&&32!==s.getCodePoint(0)){var C=n.lines.get(e[1]-1);if(C&&s.isWrapped&&32!==C.getCodePoint(this._bufferService.cols-1)){var S=this._getWordAt([this._bufferService.cols-1,e[1]-1],!1,!0,!1);if(S){var w=this._bufferService.cols-S.start;m-=w,b+=w}}}if(r&&m+b===this._bufferService.cols&&32!==s.getCodePoint(this._bufferService.cols-1)){var E=n.lines.get(e[1]+1);if(E&&E.isWrapped&&32!==E.getCodePoint(0)){var L=this._getWordAt([0,e[1]+1],!1,!1,!0);L&&(b+=L.length)}}return{start:m,length:b}}}}},e.prototype._selectWordAt=function(e,t){var i=this._getWordAt(e,t);if(i){for(;i.start<0;)i.start+=this._bufferService.cols,e[1]--;this._model.selectionStart=[i.start,e[1]],this._model.selectionStartLength=i.length}},e.prototype._selectToWordAt=function(e){var t=this._getWordAt(e,!0);if(t){for(var i=e[1];t.start<0;)t.start+=this._bufferService.cols,i--;if(!this._model.areSelectionValuesReversed())for(;t.start+t.length>this._bufferService.cols;)t.length-=this._bufferService.cols,i++;this._model.selectionEnd=[this._model.areSelectionValuesReversed()?t.start:t.start+t.length,i]}},e.prototype._isCharWordSeparator=function(e){return 0!==e.getWidth()&&this._optionsService.options.wordSeparator.indexOf(e.getChars())>=0},e.prototype._selectLineAt=function(e){var t=this._bufferService.buffer.getWrappedRangeForLine(e);this._model.selectionStart=[0,t.first],this._model.selectionEnd=[this._bufferService.cols,t.last],this._model.selectionStartLength=0},e=r([n(3,l.ICharSizeService),n(4,h.IBufferService),n(5,h.ICoreService),n(6,l.IMouseService),n(7,h.IOptionsService)],e)}();t.SelectionService=p},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e){this._bufferService=e,this.isSelectAllActive=!1,this.selectionStartLength=0}return e.prototype.clearSelection=function(){this.selectionStart=void 0,this.selectionEnd=void 0,this.isSelectAllActive=!1,this.selectionStartLength=0},Object.defineProperty(e.prototype,"finalSelectionStart",{get:function(){return this.isSelectAllActive?[0,0]:this.selectionEnd&&this.selectionStart&&this.areSelectionValuesReversed()?this.selectionEnd:this.selectionStart},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"finalSelectionEnd",{get:function(){if(this.isSelectAllActive)return[this._bufferService.cols,this._bufferService.buffer.ybase+this._bufferService.rows-1];if(this.selectionStart){if(!this.selectionEnd||this.areSelectionValuesReversed()){var e=this.selectionStart[0]+this.selectionStartLength;return e>this._bufferService.cols?[e%this._bufferService.cols,this.selectionStart[1]+Math.floor(e/this._bufferService.cols)]:[e,this.selectionStart[1]]}return this.selectionStartLength&&this.selectionEnd[1]===this.selectionStart[1]?[Math.max(this.selectionStart[0]+this.selectionStartLength,this.selectionEnd[0]),this.selectionEnd[1]]:this.selectionEnd}},enumerable:!0,configurable:!0}),e.prototype.areSelectionValuesReversed=function(){var e=this.selectionStart,t=this.selectionEnd;return!(!e||!t)&&(e[1]>t[1]||e[1]===t[1]&&e[0]>t[0])},e.prototype.onTrim=function(e){return this.selectionStart&&(this.selectionStart[1]-=e),this.selectionEnd&&(this.selectionEnd[1]-=e),this.selectionEnd&&this.selectionEnd[1]<0?(this.clearSelection(),!0):(this.selectionStart&&this.selectionStart[1]<0&&(this.selectionStart[1]=0),!1)},e}();t.SelectionModel=r},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(11);function n(e,t,i,r){var n=e-s(i,e),o=t-s(i,t);return h(Math.abs(n-o)-function(e,t,i){for(var r=0,n=e-s(i,e),o=t-s(i,t),c=0;c=0&&t0?r-s(o,r):t,e=i&&ct?"A":"B"}function c(e,t,i,r,n,s){for(var o=e,a=t,c="";o!==i||a!==r;)o+=n?1:-1,n&&o>s.cols-1?(c+=s.buffer.translateBufferLineToString(a,!1,e,o),o=0,e=0,a++):!n&&o<0&&(c+=s.buffer.translateBufferLineToString(a,!1,0,e+1),e=o=s.cols-1,a--);return c+s.buffer.translateBufferLineToString(a,!1,e,o)}function l(e,t){var i=t?"O":"[";return r.C0.ESC+i+e}function h(e,t){e=Math.floor(e);for(var i="",r=0;r0?r-s(a,r):t;var _=r,d=o(e,t,i,r,a,u);return h(c(e,f,i,_,"C"===d,a).length,l(d,u))}(a,u,e,t,i,r)}},function(e,t,i){"use strict";var r=this&&this.__decorate||function(e,t,i,r){var n,s=arguments.length,o=s<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,r);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(o=(s<3?n(o):s>3?n(t,i,o):n(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},n=this&&this.__param||function(e,t){return function(i,r){t(i,r,e)}};Object.defineProperty(t,"__esModule",{value:!0});var s=i(0),o=function(){function e(e){this._optionsService=e}return Object.defineProperty(e,"audioContext",{get:function(){if(!e._audioContext){var t=window.AudioContext||window.webkitAudioContext;if(!t)return console.warn("Web Audio API is not supported by this browser. Consider upgrading to the latest version"),null;e._audioContext=new t}return e._audioContext},enumerable:!0,configurable:!0}),e.prototype.playBellSound=function(){var t=e.audioContext;if(t){var i=t.createBufferSource();t.decodeAudioData(this._base64ToArrayBuffer(this._removeMimeType(this._optionsService.options.bellSound)),function(e){i.buffer=e,i.connect(t.destination),i.start(0)})}},e.prototype._base64ToArrayBuffer=function(e){for(var t=window.atob(e),i=t.length,r=new Uint8Array(i),n=0;n=0;a--)(n=e[a])&&(o=(s<3?n(o):s>3?n(t,i,o):n(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},o=this&&this.__param||function(e,t){return function(i,r){t(i,r,e)}};Object.defineProperty(t,"__esModule",{value:!0});var a=i(2),c=i(7),l=i(5),h=i(0),u=function(e){function t(t,i,r,n,s){var o=e.call(this)||this;return o._element=t,o._screenElement=i,o._bufferService=r,o._mouseService=n,o._selectionService=s,o._zones=[],o._areZonesActive=!1,o._lastHoverCoords=[void 0,void 0],o._initialSelectionLength=0,o.register(c.addDisposableDomListener(o._element,"mousedown",function(e){return o._onMouseDown(e)})),o._mouseMoveListener=function(e){return o._onMouseMove(e)},o._mouseLeaveListener=function(e){return o._onMouseLeave(e)},o._clickListener=function(e){return o._onClick(e)},o}return n(t,e),t.prototype.dispose=function(){e.prototype.dispose.call(this),this._deactivate()},t.prototype.add=function(e){this._zones.push(e),1===this._zones.length&&this._activate()},t.prototype.clearAll=function(e,t){if(0!==this._zones.length){e&&t||(e=0,t=this._bufferService.rows-1);for(var i=0;ie&&r.y1<=t+1||r.y2>e&&r.y2<=t+1||r.y1t+1)&&(this._currentZone&&this._currentZone===r&&(this._currentZone.leaveCallback(),this._currentZone=void 0),this._zones.splice(i--,1))}0===this._zones.length&&this._deactivate()}},t.prototype._activate=function(){this._areZonesActive||(this._areZonesActive=!0,this._element.addEventListener("mousemove",this._mouseMoveListener),this._element.addEventListener("mouseleave",this._mouseLeaveListener),this._element.addEventListener("click",this._clickListener))},t.prototype._deactivate=function(){this._areZonesActive&&(this._areZonesActive=!1,this._element.removeEventListener("mousemove",this._mouseMoveListener),this._element.removeEventListener("mouseleave",this._mouseLeaveListener),this._element.removeEventListener("click",this._clickListener))},t.prototype._onMouseMove=function(e){this._lastHoverCoords[0]===e.pageX&&this._lastHoverCoords[1]===e.pageY||(this._onHover(e),this._lastHoverCoords=[e.pageX,e.pageY])},t.prototype._onHover=function(e){var t=this,i=this._findZoneEventAt(e);i!==this._currentZone&&(this._currentZone&&(this._currentZone.leaveCallback(),this._currentZone=void 0,this._tooltipTimeout&&clearTimeout(this._tooltipTimeout)),i&&(this._currentZone=i,i.hoverCallback&&i.hoverCallback(e),this._tooltipTimeout=setTimeout(function(){return t._onTooltip(e)},500)))},t.prototype._onTooltip=function(e){this._tooltipTimeout=void 0;var t=this._findZoneEventAt(e);t&&t.tooltipCallback&&t.tooltipCallback(e)},t.prototype._onMouseDown=function(e){if(this._initialSelectionLength=this._getSelectionLength(),this._areZonesActive){var t=this._findZoneEventAt(e);t&&t.willLinkActivate(e)&&(e.preventDefault(),e.stopImmediatePropagation())}},t.prototype._onMouseLeave=function(e){this._currentZone&&(this._currentZone.leaveCallback(),this._currentZone=void 0,this._tooltipTimeout&&clearTimeout(this._tooltipTimeout))},t.prototype._onClick=function(e){var t=this._findZoneEventAt(e),i=this._getSelectionLength();t&&i===this._initialSelectionLength&&(t.clickCallback(e),e.preventDefault(),e.stopImmediatePropagation())},t.prototype._getSelectionLength=function(){var e=this._selectionService.selectionText;return e?e.length:0},t.prototype._findZoneEventAt=function(e){var t=this._mouseService.getCoords(e,this._screenElement,this._bufferService.cols,this._bufferService.rows);if(t)for(var i=t[0],r=t[1],n=0;n=s.x1&&i=s.x1||r===s.y2&&is.y1&&re;)this._rowContainer.removeChild(this._rowElements.pop());this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._refreshRowsDimensions()},t.prototype._createAccessibilityTreeNode=function(){var e=document.createElement("div");return e.setAttribute("role","listitem"),e.tabIndex=-1,this._refreshRowDimensions(e),e},t.prototype._onTab=function(e){for(var t=0;t0)this._charsToConsume.shift()!==e&&(this._charsToAnnounce+=e);else this._charsToAnnounce+=e;"\n"===e&&(this._liveRegionLineCount++,21===this._liveRegionLineCount&&(this._liveRegion.textContent+=s.tooMuchOutput)),o.isMac&&this._liveRegion.textContent&&this._liveRegion.textContent.length>0&&!this._liveRegion.parentNode&&setTimeout(function(){t._accessibilityTreeRoot.appendChild(t._liveRegion)},0)}},t.prototype._clearLiveRegion=function(){this._liveRegion.textContent="",this._liveRegionLineCount=0,o.isMac&&this._liveRegion.parentNode&&this._accessibilityTreeRoot.removeChild(this._liveRegion)},t.prototype._onKey=function(e){this._clearLiveRegion(),this._charsToConsume.push(e)},t.prototype._refreshRows=function(e,t){this._renderRowsDebouncer.refresh(e,t,this._terminal.rows)},t.prototype._renderRows=function(e,t){for(var i=this._terminal.buffer,r=i.lines.length.toString(),n=e;n<=t;n++){var s=i.translateBufferLineToString(i.ydisp+n,!0),o=(i.ydisp+n+1).toString(),a=this._rowElements[n];a&&(0===s.length?a.innerHTML=" ":a.textContent=s,a.setAttribute("aria-posinset",o),a.setAttribute("aria-setsize",r))}this._announceCharacters()},t.prototype._refreshRowsDimensions=function(){if(this._renderService.dimensions.actualCellHeight){this._rowElements.length!==this._terminal.rows&&this._onResize(this._terminal.rows);for(var e=0;et;)this._rowContainer.removeChild(this._rowElements.pop())},t.prototype.onResize=function(e,t){this._refreshRowElements(e,t),this._updateDimensions()},t.prototype.onCharSizeChanged=function(){this._updateDimensions()},t.prototype.onBlur=function(){this._rowContainer.classList.remove("xterm-focus")},t.prototype.onFocus=function(){this._rowContainer.classList.add("xterm-focus")},t.prototype.onSelectionChanged=function(e,t,i){for(;this._selectionContainer.children.length;)this._selectionContainer.removeChild(this._selectionContainer.children[0]);if(e&&t){var r=e[1]-this._terminal.buffer.ydisp,n=t[1]-this._terminal.buffer.ydisp,s=Math.max(r,0),o=Math.min(n,this._terminal.rows-1);if(!(s>=this._terminal.rows||o<0)){var a=document.createDocumentFragment();if(i)a.appendChild(this._createSelectionElement(s,e[0],t[0],o-s+1));else{var c=r===s?e[0]:0,l=s===o?t[0]:this._terminal.cols;a.appendChild(this._createSelectionElement(s,c,l));var h=o-s-1;if(a.appendChild(this._createSelectionElement(s+1,0,this._terminal.cols,h)),s!==o){var u=n===o?t[0]:this._terminal.cols;a.appendChild(this._createSelectionElement(o,0,u))}}this._selectionContainer.appendChild(a)}}},t.prototype._createSelectionElement=function(e,t,i,r){void 0===r&&(r=1);var n=document.createElement("div");return n.style.height=r*this.dimensions.actualCellHeight+"px",n.style.top=e*this.dimensions.actualCellHeight+"px",n.style.left=t*this.dimensions.actualCellWidth+"px",n.style.width=this.dimensions.actualCellWidth*(i-t)+"px",n},t.prototype.onCursorMove=function(){},t.prototype.onOptionsChanged=function(){this._updateDimensions(),this._injectCss(),this._terminal.refresh(0,this._terminal.rows-1)},t.prototype.clear=function(){this._rowElements.forEach(function(e){return e.innerHTML=""})},t.prototype.renderRows=function(e,t){for(var i=this._terminal,r=i.buffer.ybase+i.buffer.y,n=this._terminal.buffer.x,s=this._terminal.options.cursorBlink,o=e;o<=t;o++){var a=this._rowElements[o];a.innerHTML="";var c=o+i.buffer.ydisp,l=i.buffer.lines.get(c),h=i.options.cursorStyle;a.appendChild(this._rowFactory.createRow(l,c===r,h,n,s,this.dimensions.actualCellWidth,i.cols))}},Object.defineProperty(t.prototype,"_terminalSelector",{get:function(){return"."+c+this._terminalClass},enumerable:!0,configurable:!0}),t.prototype.registerCharacterJoiner=function(e){return-1},t.prototype.deregisterCharacterJoiner=function(e){return!1},t.prototype._onLinkHover=function(e){this._setCellUnderline(e.x1,e.x2,e.y1,e.y2,e.cols,!0)},t.prototype._onLinkLeave=function(e){this._setCellUnderline(e.x1,e.x2,e.y1,e.y2,e.cols,!1)},t.prototype._setCellUnderline=function(e,t,i,r,n,s){for(;e!==t||i!==r;){var o=this._rowElements[i];if(!o)return;var a=o.children[e];a&&(a.style.textDecoration=s?"underline":"none"),++e>=n&&(e=0,i++)}},t}(a.Disposable);t.DomRenderer=f},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(9),n=i(6),s=i(3),o=i(4);t.BOLD_CLASS="xterm-bold",t.DIM_CLASS="xterm-dim",t.ITALIC_CLASS="xterm-italic",t.UNDERLINE_CLASS="xterm-underline",t.CURSOR_CLASS="xterm-cursor",t.CURSOR_BLINK_CLASS="xterm-cursor-blink",t.CURSOR_STYLE_BLOCK_CLASS="xterm-cursor-block",t.CURSOR_STYLE_BAR_CLASS="xterm-cursor-bar",t.CURSOR_STYLE_UNDERLINE_CLASS="xterm-cursor-underline";var a=function(){function e(e,t){this._document=e,this._optionsService=t,this._workCell=new o.CellData}return e.prototype.createRow=function(e,i,o,a,c,l,h){for(var u=this._document.createDocumentFragment(),f=0,_=Math.min(e.length,h)-1;_>=0;_--)if(e.loadCell(_,this._workCell).getCode()!==s.NULL_CELL_CODE||i&&_===a){f=_+1;break}for(_=0;_1&&(p.style.width=l*d+"px"),i&&_===a)switch(p.classList.add(t.CURSOR_CLASS),c&&p.classList.add(t.CURSOR_BLINK_CLASS),o){case"bar":p.classList.add(t.CURSOR_STYLE_BAR_CLASS);break;case"underline":p.classList.add(t.CURSOR_STYLE_UNDERLINE_CLASS);break;default:p.classList.add(t.CURSOR_STYLE_BLOCK_CLASS)}this._workCell.isBold()&&p.classList.add(t.BOLD_CLASS),this._workCell.isItalic()&&p.classList.add(t.ITALIC_CLASS),this._workCell.isDim()&&p.classList.add(t.DIM_CLASS),this._workCell.isUnderline()&&p.classList.add(t.UNDERLINE_CLASS),p.textContent=this._workCell.getChars()||s.WHITESPACE_CELL_CHAR;var v=this._workCell.isInverse();if(this._workCell.isFgRGB()){var g=p.getAttribute("style")||"";g+=(v?"background-":"")+"color:rgb("+n.AttributeData.toColorRGB(this._workCell.getFgColor()).join(",")+");",p.setAttribute("style",g)}else if(this._workCell.isFgPalette()){var y=this._workCell.getFgColor();this._workCell.isBold()&&y<8&&!v&&this._optionsService.options.drawBoldTextInBrightColors&&(y+=8),p.classList.add("xterm-"+(v?"b":"f")+"g-"+y)}else v&&p.classList.add("xterm-bg-"+r.INVERTED_DEFAULT_COLOR);if(this._workCell.isBgRGB()){g=p.getAttribute("style")||"";g+=(v?"":"background-")+"color:rgb("+n.AttributeData.toColorRGB(this._workCell.getBgColor()).join(",")+");",p.setAttribute("style",g)}else this._workCell.isBgPalette()?p.classList.add("xterm-"+(v?"f":"b")+"g-"+this._workCell.getBgColor()):v&&p.classList.add("xterm-fg-"+r.INVERTED_DEFAULT_COLOR);u.appendChild(p)}}return u},e}();t.DomRendererRowFactory=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(11),n={48:["0",")"],49:["1","!"],50:["2","@"],51:["3","#"],52:["4","$"],53:["5","%"],54:["6","^"],55:["7","&"],56:["8","*"],57:["9","("],186:[";",":"],187:["=","+"],188:[",","<"],189:["-","_"],190:[".",">"],191:["/","?"],192:["`","~"],219:["[","{"],220:["\\","|"],221:["]","}"],222:["'",'"']};t.evaluateKeyboardEvent=function(e,t,i,s){var o={type:0,cancel:!1,key:void 0},a=(e.shiftKey?1:0)|(e.altKey?2:0)|(e.ctrlKey?4:0)|(e.metaKey?8:0);switch(e.keyCode){case 0:"UIKeyInputUpArrow"===e.key?o.key=t?r.C0.ESC+"OA":r.C0.ESC+"[A":"UIKeyInputLeftArrow"===e.key?o.key=t?r.C0.ESC+"OD":r.C0.ESC+"[D":"UIKeyInputRightArrow"===e.key?o.key=t?r.C0.ESC+"OC":r.C0.ESC+"[C":"UIKeyInputDownArrow"===e.key&&(o.key=t?r.C0.ESC+"OB":r.C0.ESC+"[B");break;case 8:if(e.shiftKey){o.key=r.C0.BS;break}if(e.altKey){o.key=r.C0.ESC+r.C0.DEL;break}o.key=r.C0.DEL;break;case 9:if(e.shiftKey){o.key=r.C0.ESC+"[Z";break}o.key=r.C0.HT,o.cancel=!0;break;case 13:o.key=r.C0.CR,o.cancel=!0;break;case 27:o.key=r.C0.ESC,o.cancel=!0;break;case 37:if(e.metaKey)break;a?(o.key=r.C0.ESC+"[1;"+(a+1)+"D",o.key===r.C0.ESC+"[1;3D"&&(o.key=r.C0.ESC+(i?"b":"[1;5D"))):o.key=t?r.C0.ESC+"OD":r.C0.ESC+"[D";break;case 39:if(e.metaKey)break;a?(o.key=r.C0.ESC+"[1;"+(a+1)+"C",o.key===r.C0.ESC+"[1;3C"&&(o.key=r.C0.ESC+(i?"f":"[1;5C"))):o.key=t?r.C0.ESC+"OC":r.C0.ESC+"[C";break;case 38:if(e.metaKey)break;a?(o.key=r.C0.ESC+"[1;"+(a+1)+"A",i||o.key!==r.C0.ESC+"[1;3A"||(o.key=r.C0.ESC+"[1;5A")):o.key=t?r.C0.ESC+"OA":r.C0.ESC+"[A";break;case 40:if(e.metaKey)break;a?(o.key=r.C0.ESC+"[1;"+(a+1)+"B",i||o.key!==r.C0.ESC+"[1;3B"||(o.key=r.C0.ESC+"[1;5B")):o.key=t?r.C0.ESC+"OB":r.C0.ESC+"[B";break;case 45:e.shiftKey||e.ctrlKey||(o.key=r.C0.ESC+"[2~");break;case 46:o.key=a?r.C0.ESC+"[3;"+(a+1)+"~":r.C0.ESC+"[3~";break;case 36:o.key=a?r.C0.ESC+"[1;"+(a+1)+"H":t?r.C0.ESC+"OH":r.C0.ESC+"[H";break;case 35:o.key=a?r.C0.ESC+"[1;"+(a+1)+"F":t?r.C0.ESC+"OF":r.C0.ESC+"[F";break;case 33:e.shiftKey?o.type=2:o.key=r.C0.ESC+"[5~";break;case 34:e.shiftKey?o.type=3:o.key=r.C0.ESC+"[6~";break;case 112:o.key=a?r.C0.ESC+"[1;"+(a+1)+"P":r.C0.ESC+"OP";break;case 113:o.key=a?r.C0.ESC+"[1;"+(a+1)+"Q":r.C0.ESC+"OQ";break;case 114:o.key=a?r.C0.ESC+"[1;"+(a+1)+"R":r.C0.ESC+"OR";break;case 115:o.key=a?r.C0.ESC+"[1;"+(a+1)+"S":r.C0.ESC+"OS";break;case 116:o.key=a?r.C0.ESC+"[15;"+(a+1)+"~":r.C0.ESC+"[15~";break;case 117:o.key=a?r.C0.ESC+"[17;"+(a+1)+"~":r.C0.ESC+"[17~";break;case 118:o.key=a?r.C0.ESC+"[18;"+(a+1)+"~":r.C0.ESC+"[18~";break;case 119:o.key=a?r.C0.ESC+"[19;"+(a+1)+"~":r.C0.ESC+"[19~";break;case 120:o.key=a?r.C0.ESC+"[20;"+(a+1)+"~":r.C0.ESC+"[20~";break;case 121:o.key=a?r.C0.ESC+"[21;"+(a+1)+"~":r.C0.ESC+"[21~";break;case 122:o.key=a?r.C0.ESC+"[23;"+(a+1)+"~":r.C0.ESC+"[23~";break;case 123:o.key=a?r.C0.ESC+"[24;"+(a+1)+"~":r.C0.ESC+"[24~";break;default:if(!e.ctrlKey||e.shiftKey||e.altKey||e.metaKey)if(i&&!s||!e.altKey||e.metaKey)i&&!e.altKey&&!e.ctrlKey&&e.metaKey?65===e.keyCode&&(o.type=1):e.key&&!e.ctrlKey&&!e.altKey&&!e.metaKey&&e.keyCode>=48&&1===e.key.length?o.key=e.key:e.key&&e.ctrlKey&&"_"===e.key&&(o.key=r.C0.US);else{var c=n[e.keyCode],l=c&&c[e.shiftKey?1:0];if(l)o.key=r.C0.ESC+l;else if(e.keyCode>=65&&e.keyCode<=90){var h=e.ctrlKey?e.keyCode-64:e.keyCode+32;o.key=r.C0.ESC+String.fromCharCode(h)}}else e.keyCode>=65&&e.keyCode<=90?o.key=String.fromCharCode(e.keyCode-64):32===e.keyCode?o.key=r.C0.NUL:e.keyCode>=51&&e.keyCode<=55?o.key=String.fromCharCode(e.keyCode-51+27):56===e.keyCode?o.key=r.C0.DEL:219===e.keyCode?o.key=r.C0.ESC:220===e.keyCode?o.key=r.C0.FS:221===e.keyCode&&(o.key=r.C0.GS)}return o}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(3);t.applyWindowsMode=function(e){return e.onLineFeed(function(){var t=e.buffer.lines.get(e.buffer.ybase+e.buffer.y-1).get(e.cols-1);e.buffer.lines.get(e.buffer.ybase+e.buffer.y).isWrapped=t[r.CHAR_DATA_CODE_INDEX]!==r.NULL_CELL_CODE&&t[r.CHAR_DATA_CODE_INDEX]!==r.WHITESPACE_CELL_CODE})}},function(e,t,i){"use strict";var r,n=this&&this.__extends||(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),s=this&&this.__decorate||function(e,t,i,r){var n,s=arguments.length,o=s<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,r);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(o=(s<3?n(o):s>3?n(t,i,o):n(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},o=this&&this.__param||function(e,t){return function(i,r){t(i,r,e)}};Object.defineProperty(t,"__esModule",{value:!0});var a=i(29),c=i(1),l=i(2),h=i(30),u=i(7),f=i(0),_=i(5),d=function(e){function t(t,i,r,n,s){var o=e.call(this)||this;if(o._renderer=t,o._rowCount=i,o.screenElement=r,o.optionsService=n,o.charSizeService=s,o._isPaused=!1,o._needsFullRefresh=!1,o._canvasWidth=0,o._canvasHeight=0,o._onDimensionsChange=new c.EventEmitter,o._onRender=new c.EventEmitter,o._onRefreshRequest=new c.EventEmitter,o._renderDebouncer=new a.RenderDebouncer(function(e,t){return o._renderRows(e,t)}),o.register(o._renderDebouncer),o._screenDprMonitor=new h.ScreenDprMonitor,o._screenDprMonitor.setListener(function(){return o.onDevicePixelRatioChange()}),o.register(o._screenDprMonitor),o.register(n.onOptionChange(function(){return o._renderer.onOptionsChanged()})),o.register(s.onCharSizeChange(function(){return o.onCharSizeChanged()})),o.register(u.addDisposableDomListener(window,"resize",function(){return o.onDevicePixelRatioChange()})),"IntersectionObserver"in window){var l=new IntersectionObserver(function(e){return o._onIntersectionChange(e[e.length-1])},{threshold:0});l.observe(r),o.register({dispose:function(){return l.disconnect()}})}return o}return n(t,e),Object.defineProperty(t.prototype,"onDimensionsChange",{get:function(){return this._onDimensionsChange.event},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"onRender",{get:function(){return this._onRender.event},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"onRefreshRequest",{get:function(){return this._onRefreshRequest.event},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"dimensions",{get:function(){return this._renderer.dimensions},enumerable:!0,configurable:!0}),t.prototype._onIntersectionChange=function(e){this._isPaused=0===e.intersectionRatio,!this._isPaused&&this._needsFullRefresh&&(this.refreshRows(0,this._rowCount-1),this._needsFullRefresh=!1)},t.prototype.refreshRows=function(e,t){this._isPaused?this._needsFullRefresh=!0:this._renderDebouncer.refresh(e,t,this._rowCount)},t.prototype._renderRows=function(e,t){this._renderer.renderRows(e,t),this._onRender.fire({start:e,end:t})},t.prototype.resize=function(e,t){this._rowCount=t,this._fireOnCanvasResize()},t.prototype.changeOptions=function(){this._renderer.onOptionsChanged(),this._fireOnCanvasResize()},t.prototype._fireOnCanvasResize=function(){this._renderer.dimensions.canvasWidth===this._canvasWidth&&this._renderer.dimensions.canvasHeight===this._canvasHeight||this._onDimensionsChange.fire(this._renderer.dimensions)},t.prototype.dispose=function(){this._renderer.dispose()},t.prototype.setRenderer=function(e){this._renderer.dispose(),this._renderer=e,this.refreshRows(0,this._rowCount-1)},t.prototype._fullRefresh=function(){this._isPaused?this._needsFullRefresh=!0:this.refreshRows(0,this._rowCount-1)},t.prototype.setColors=function(e){this._renderer.setColors(e),this._fullRefresh()},t.prototype.onDevicePixelRatioChange=function(){this._renderer.onDevicePixelRatioChange(),this.refreshRows(0,this._rowCount-1)},t.prototype.onResize=function(e,t){this._renderer.onResize(e,t),this._fullRefresh()},t.prototype.onCharSizeChanged=function(){this._renderer.onCharSizeChanged()},t.prototype.onBlur=function(){this._renderer.onBlur()},t.prototype.onFocus=function(){this._renderer.onFocus()},t.prototype.onSelectionChanged=function(e,t,i){this._renderer.onSelectionChanged(e,t,i)},t.prototype.onCursorMove=function(){this._renderer.onCursorMove()},t.prototype.clear=function(){this._renderer.clear()},t.prototype.registerCharacterJoiner=function(e){return this._renderer.registerCharacterJoiner(e)},t.prototype.deregisterCharacterJoiner=function(e){return this._renderer.deregisterCharacterJoiner(e)},t=s([o(3,f.IOptionsService),o(4,_.ICharSizeService)],t)}(l.Disposable);t.RenderService=d},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(1),n=i(10),s=i(31);t.DEFAULT_BELL_SOUND="data:audio/mp3;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjMyLjEwNAAAAAAAAAAAAAAA//tQxAADB8AhSmxhIIEVCSiJrDCQBTcu3UrAIwUdkRgQbFAZC1CQEwTJ9mjRvBA4UOLD8nKVOWfh+UlK3z/177OXrfOdKl7pyn3Xf//WreyTRUoAWgBgkOAGbZHBgG1OF6zM82DWbZaUmMBptgQhGjsyYqc9ae9XFz280948NMBWInljyzsNRFLPWdnZGWrddDsjK1unuSrVN9jJsK8KuQtQCtMBjCEtImISdNKJOopIpBFpNSMbIHCSRpRR5iakjTiyzLhchUUBwCgyKiweBv/7UsQbg8isVNoMPMjAAAA0gAAABEVFGmgqK////9bP/6XCykxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq",t.DEFAULT_OPTIONS=Object.freeze({cols:80,rows:24,cursorBlink:!1,cursorStyle:"block",bellSound:t.DEFAULT_BELL_SOUND,bellStyle:"none",drawBoldTextInBrightColors:!0,fastScrollModifier:"alt",fastScrollSensitivity:5,fontFamily:"courier-new, courier, monospace",fontSize:15,fontWeight:"normal",fontWeightBold:"bold",lineHeight:1,letterSpacing:0,logLevel:"info",scrollback:1e3,scrollSensitivity:1,screenReaderMode:!1,macOptionIsMeta:!1,macOptionClickForcesSelection:!1,disableStdin:!1,allowTransparency:!1,tabStopWidth:8,theme:{},rightClickSelectsWord:n.isMac,rendererType:"canvas",windowsMode:!1,convertEol:!1,termName:"xterm",screenKeys:!1,cancelEvents:!1,useFlowControl:!1,wordSeparator:" ()[]{}',:;\""});var o=["cols","rows"],a=function(){function e(e){var i=this;this._onOptionChange=new r.EventEmitter,this.options=s.clone(t.DEFAULT_OPTIONS),Object.keys(e).forEach(function(t){if(t in i.options){var r=e[t];i.options[t]=r}})}return Object.defineProperty(e.prototype,"onOptionChange",{get:function(){return this._onOptionChange.event},enumerable:!0,configurable:!0}),e.prototype.setOption=function(e,i){if(!(e in t.DEFAULT_OPTIONS))throw new Error('No option with key "'+e+'"');if(-1!==o.indexOf(e))throw new Error('Option "'+e+'" can only be set in the constructor');this.options[e]!==i&&(i=this._sanitizeAndValidateOption(e,i),this.options[e]!==i&&(this.options[e]=i,this._onOptionChange.fire(e)))},e.prototype._sanitizeAndValidateOption=function(e,i){switch(e){case"bellStyle":case"cursorStyle":case"fontWeight":case"fontWeightBold":case"rendererType":case"wordSeparator":i||(i=t.DEFAULT_OPTIONS[e]);break;case"lineHeight":case"tabStopWidth":if(i<1)throw new Error(e+" cannot be less than 1, value: "+i);break;case"scrollback":if((i=Math.min(i,4294967295))<0)throw new Error(e+" cannot be less than 0, value: "+i);break;case"fastScrollSensitivity":case"scrollSensitivity":if(i<=0)throw new Error(e+" cannot be less than or equal to 0, value: "+i)}return i},e.prototype.getOption=function(e){if(!(e in t.DEFAULT_OPTIONS))throw new Error('No option with key "'+e+'"');return this.options[e]},e}();t.OptionsService=a},function(e,t,i){"use strict";var r=this&&this.__decorate||function(e,t,i,r){var n,s=arguments.length,o=s<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,r);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(o=(s<3?n(o):s>3?n(t,i,o):n(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},n=this&&this.__param||function(e,t){return function(i,r){t(i,r,e)}};Object.defineProperty(t,"__esModule",{value:!0});var s=i(0),o=i(1),a=function(){function e(e,t,i){this.document=e,this.parentElement=t,this._optionsService=i,this.width=0,this.height=0,this._onCharSizeChange=new o.EventEmitter,this._measureStrategy=new c(e,t,this._optionsService)}return Object.defineProperty(e.prototype,"hasValidSize",{get:function(){return this.width>0&&this.height>0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onCharSizeChange",{get:function(){return this._onCharSizeChange.event},enumerable:!0,configurable:!0}),e.prototype.measure=function(){var e=this._measureStrategy.measure();e.width===this.width&&e.height===this.height||(this.width=e.width,this.height=e.height,this._onCharSizeChange.fire())},e=r([n(2,s.IOptionsService)],e)}();t.CharSizeService=a;var c=function(){function e(e,t,i){this._document=e,this._parentElement=t,this._optionsService=i,this._result={width:0,height:0},this._measureElement=this._document.createElement("span"),this._measureElement.classList.add("xterm-char-measure-element"),this._measureElement.textContent="W",this._measureElement.setAttribute("aria-hidden","true"),this._parentElement.appendChild(this._measureElement)}return e.prototype.measure=function(){this._measureElement.style.fontFamily=this._optionsService.options.fontFamily,this._measureElement.style.fontSize=this._optionsService.options.fontSize+"px";var e=this._measureElement.getBoundingClientRect();return 0!==e.width&&0!==e.height&&(this._result.width=e.width,this._result.height=Math.ceil(e.height)),this._result},e}()},function(e,t,i){"use strict";var r=this&&this.__decorate||function(e,t,i,r){var n,s=arguments.length,o=s<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,r);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(o=(s<3?n(o):s>3?n(t,i,o):n(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},n=this&&this.__param||function(e,t){return function(i,r){t(i,r,e)}};Object.defineProperty(t,"__esModule",{value:!0});var s=i(0),o=i(63);t.MINIMUM_COLS=2,t.MINIMUM_ROWS=1;var a=function(){function e(e){this._optionsService=e,this.cols=Math.max(e.options.cols,t.MINIMUM_COLS),this.rows=Math.max(e.options.rows,t.MINIMUM_ROWS),this.buffers=new o.BufferSet(e,this)}return Object.defineProperty(e.prototype,"buffer",{get:function(){return this.buffers.active},enumerable:!0,configurable:!0}),e.prototype.resize=function(e,t){this.cols=e,this.rows=t},e.prototype.reset=function(){this.buffers=new o.BufferSet(this._optionsService,this)},e=r([n(0,s.IOptionsService)],e)}();t.BufferService=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(64),n=i(1),s=function(){function e(e,t){this.optionsService=e,this.bufferService=t,this._onBufferActivate=new n.EventEmitter,this._normal=new r.Buffer(!0,e,t),this._normal.fillViewportRows(),this._alt=new r.Buffer(!1,e,t),this._activeBuffer=this._normal,this.setupTabStops()}return Object.defineProperty(e.prototype,"onBufferActivate",{get:function(){return this._onBufferActivate.event},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"alt",{get:function(){return this._alt},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"active",{get:function(){return this._activeBuffer},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"normal",{get:function(){return this._normal},enumerable:!0,configurable:!0}),e.prototype.activateNormalBuffer=function(){this._activeBuffer!==this._normal&&(this._normal.x=this._alt.x,this._normal.y=this._alt.y,this._alt.clear(),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}))},e.prototype.activateAltBuffer=function(e){this._activeBuffer!==this._alt&&(this._alt.fillViewportRows(e),this._alt.x=this._normal.x,this._alt.y=this._normal.y,this._activeBuffer=this._alt,this._onBufferActivate.fire({activeBuffer:this._alt,inactiveBuffer:this._normal}))},e.prototype.resize=function(e,t){this._normal.resize(e,t),this._alt.resize(e,t)},e.prototype.setupTabStops=function(e){this._normal.setupTabStops(e),this._alt.setupTabStops(e)},e}();t.BufferSet=s},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(65),n=i(15),s=i(4),o=i(3),a=i(66),c=i(67),l=i(17);t.MAX_BUFFER_SIZE=4294967295;var h=function(){function e(e,t,i){this._hasScrollback=e,this._optionsService=t,this._bufferService=i,this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.savedY=0,this.savedX=0,this.savedCurAttrData=n.DEFAULT_ATTR_DATA.clone(),this.savedCharset=l.DEFAULT_CHARSET,this.markers=[],this._nullCell=s.CellData.fromCharData([0,o.NULL_CELL_CHAR,o.NULL_CELL_WIDTH,o.NULL_CELL_CODE]),this._whitespaceCell=s.CellData.fromCharData([0,o.WHITESPACE_CELL_CHAR,o.WHITESPACE_CELL_WIDTH,o.WHITESPACE_CELL_CODE]),this._cols=this._bufferService.cols,this._rows=this._bufferService.rows,this.lines=new r.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}return e.prototype.getNullCell=function(e){return e?(this._nullCell.fg=e.fg,this._nullCell.bg=e.bg):(this._nullCell.fg=0,this._nullCell.bg=0),this._nullCell},e.prototype.getWhitespaceCell=function(e){return e?(this._whitespaceCell.fg=e.fg,this._whitespaceCell.bg=e.bg):(this._whitespaceCell.fg=0,this._whitespaceCell.bg=0),this._whitespaceCell},e.prototype.getBlankLine=function(e,t){return new n.BufferLine(this._bufferService.cols,this.getNullCell(e),t)},Object.defineProperty(e.prototype,"hasScrollback",{get:function(){return this._hasScrollback&&this.lines.maxLength>this._rows},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isCursorInViewport",{get:function(){var e=this.ybase+this.y-this.ydisp;return e>=0&&et.MAX_BUFFER_SIZE?t.MAX_BUFFER_SIZE:i},e.prototype.fillViewportRows=function(e){if(0===this.lines.length){void 0===e&&(e=n.DEFAULT_ATTR_DATA);for(var t=this._rows;t--;)this.lines.push(this.getBlankLine(e))}},e.prototype.clear=function(){this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.lines=new r.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()},e.prototype.resize=function(e,t){var i=this.getNullCell(n.DEFAULT_ATTR_DATA),r=this._getCorrectBufferLength(t);if(r>this.lines.maxLength&&(this.lines.maxLength=r),this.lines.length>0){if(this._cols0&&this.lines.length<=this.ybase+this.y+o+1?(this.ybase--,o++,this.ydisp>0&&this.ydisp--):this.lines.push(new n.BufferLine(e,i)));else for(a=this._rows;a>t;a--)this.lines.length>t+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++));if(r0&&(this.lines.trimStart(c),this.ybase=Math.max(this.ybase-c,0),this.ydisp=Math.max(this.ydisp-c,0),this.savedY=Math.max(this.savedY-c,0)),this.lines.maxLength=r}this.x=Math.min(this.x,e-1),this.y=Math.min(this.y,t-1),o&&(this.y+=o),this.savedX=Math.min(this.savedX,e-1),this.scrollTop=0}if(this.scrollBottom=t-1,this._isReflowEnabled&&(this._reflow(e,t),this._cols>e))for(s=0;sthis._cols?this._reflowLarger(e,t):this._reflowSmaller(e,t))},e.prototype._reflowLarger=function(e,t){var i=a.reflowLargerGetLinesToRemove(this.lines,this._cols,e,this.ybase+this.y,this.getNullCell(n.DEFAULT_ATTR_DATA));if(i.length>0){var r=a.reflowLargerCreateNewLayout(this.lines,i);a.reflowLargerApplyNewLayout(this.lines,r.layout),this._reflowLargerAdjustViewport(e,t,r.countRemoved)}},e.prototype._reflowLargerAdjustViewport=function(e,t,i){for(var r=this.getNullCell(n.DEFAULT_ATTR_DATA),s=i;s-- >0;)0===this.ybase?(this.y>0&&this.y--,this.lines.length=0;o--){var c=this.lines.get(o);if(!(!c||!c.isWrapped&&c.getTrimmedLength()<=e)){for(var l=[c];c.isWrapped&&o>0;)c=this.lines.get(--o),l.unshift(c);var h=this.ybase+this.y;if(!(h>=o&&h0&&(r.push({start:o+l.length+s,newLines:p}),s+=p.length),l.push.apply(l,p);var y=f.length-1,m=f[y];0===m&&(m=f[--y]);for(var b=l.length-_-1,C=u;b>=0;){var S=Math.min(C,m);if(l[y].copyCellsFrom(l[b],C-S,m-S,S,!0),0===(m-=S)&&(m=f[--y]),0===(C-=S)){b--;var w=Math.max(b,0);C=a.getWrappedLineTrimmedLength(l,w,this._cols)}}for(v=0;v0;)0===this.ybase?this.y0){var L=[],A=[];for(v=0;v=0;v--)if(T&&T.start>k+R){for(var M=T.newLines.length-1;M>=0;M--)this.lines.set(v--,T.newLines[M]);v++,L.push({index:k+1,amount:T.newLines.length}),R+=T.newLines.length,T=r[++D]}else this.lines.set(v,A[k--]);var O=0;for(v=L.length-1;v>=0;v--)L[v].index+=O,this.lines.onInsertEmitter.fire(L[v]),O+=L[v].amount;var P=Math.max(0,x+s-this.lines.maxLength);P>0&&this.lines.onTrimEmitter.fire(P)}},e.prototype.stringIndexToBufferIndex=function(e,t,i){for(void 0===i&&(i=!1);t;){var r=this.lines.get(e);if(!r)return[-1,-1];for(var n=i?r.getTrimmedLength():r.length,s=0;s0&&this.lines.get(t).isWrapped;)t--;for(;i+10;);return e>=this._cols?this._cols-1:e<0?0:e},e.prototype.nextStop=function(e){for(null==e&&(e=this.x);!this.tabs[++e]&&e=this._cols?this._cols-1:e<0?0:e},e.prototype.addMarker=function(e){var t=this,i=new c.Marker(e);return this.markers.push(i),i.register(this.lines.onTrim(function(e){i.line-=e,i.line<0&&i.dispose()})),i.register(this.lines.onInsert(function(e){i.line>=e.index&&(i.line+=e.amount)})),i.register(this.lines.onDelete(function(e){i.line>=e.index&&i.linee.index&&(i.line-=e.amount)})),i.register(i.onDispose(function(){return t._removeMarker(i)})),i},e.prototype._removeMarker=function(e){this.markers.splice(this.markers.indexOf(e),1)},e.prototype.iterator=function(e,t,i,r,n){return new u(this,e,t,i,r,n)},e}();t.Buffer=h;var u=function(){function e(e,t,i,r,n,s){void 0===i&&(i=0),void 0===r&&(r=e.lines.length),void 0===n&&(n=0),void 0===s&&(s=0),this._buffer=e,this._trimRight=t,this._startIndex=i,this._endIndex=r,this._startOverscan=n,this._endOverscan=s,this._startIndex<0&&(this._startIndex=0),this._endIndex>this._buffer.lines.length&&(this._endIndex=this._buffer.lines.length),this._current=this._startIndex}return e.prototype.hasNext=function(){return this._currentthis._endIndex+this._endOverscan&&(e.last=this._endIndex+this._endOverscan),e.first=Math.max(e.first,0),e.last=Math.min(e.last,this._buffer.lines.length);for(var t="",i=e.first;i<=e.last;++i)t+=this._buffer.translateBufferLineToString(i,this._trimRight);return this._current=e.last+1,{range:e,content:t}},e}();t.BufferStringIterator=u},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(1),n=function(){function e(e){this._maxLength=e,this.onDeleteEmitter=new r.EventEmitter,this.onInsertEmitter=new r.EventEmitter,this.onTrimEmitter=new r.EventEmitter,this._array=new Array(this._maxLength),this._startIndex=0,this._length=0}return Object.defineProperty(e.prototype,"onDelete",{get:function(){return this.onDeleteEmitter.event},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onInsert",{get:function(){return this.onInsertEmitter.event},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onTrim",{get:function(){return this.onTrimEmitter.event},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"maxLength",{get:function(){return this._maxLength},set:function(e){if(this._maxLength!==e){for(var t=new Array(e),i=0;ithis._length)for(var t=this._length;t=e;n--)this._array[this._getCyclicIndex(n+i.length)]=this._array[this._getCyclicIndex(n)];for(n=0;nthis._maxLength){var s=this._length+i.length-this._maxLength;this._startIndex+=s,this._length=this._maxLength,this.onTrimEmitter.fire(s)}else this._length+=i.length},e.prototype.trimStart=function(e){e>this._length&&(e=this._length),this._startIndex+=e,this._length-=e,this.onTrimEmitter.fire(e)},e.prototype.shiftElements=function(e,t,i){if(!(t<=0)){if(e<0||e>=this._length)throw new Error("start argument out of range");if(e+i<0)throw new Error("Cannot shift elements in list beyond index 0");if(i>0){for(var r=t-1;r>=0;r--)this.set(e+r+i,this.get(e+r));var n=e+t+i-this._length;if(n>0)for(this._length+=n;this._length>this._maxLength;)this._length--,this._startIndex++,this.onTrimEmitter.fire(1)}else for(r=0;r=a&&n0&&(b>u||0===h[b].getTrimmedLength());b--)m++;m>0&&(o.push(a+h.length-m),o.push(m)),a+=h.length-1}}}return o},t.reflowLargerCreateNewLayout=function(e,t){for(var i=[],r=0,n=t[r],s=0,o=0;ol&&(o-=l,a++);var h=2===e[a].getWidth(o-1);h&&o--;var u=h?i-1:i;n.push(u),c+=u}return n},t.getWrappedLineTrimmedLength=r},function(e,t,i){"use strict";var r,n=this&&this.__extends||(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var s=i(1),o=function(e){function t(i){var r=e.call(this)||this;return r.line=i,r._id=t._nextId++,r.isDisposed=!1,r._onDispose=new s.EventEmitter,r}return n(t,e),Object.defineProperty(t.prototype,"id",{get:function(){return this._id},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"onDispose",{get:function(){return this._onDispose.event},enumerable:!0,configurable:!0}),t.prototype.dispose=function(){this.isDisposed||(this.isDisposed=!0,this.line=-1,this._onDispose.fire())},t._nextId=1,t}(i(2).Disposable);t.Marker=o},function(e,t,i){"use strict";var r=this&&this.__decorate||function(e,t,i,r){var n,s=arguments.length,o=s<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,r);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(o=(s<3?n(o):s>3?n(t,i,o):n(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},n=this&&this.__param||function(e,t){return function(i,r){t(i,r,e)}};Object.defineProperty(t,"__esModule",{value:!0});var s=i(5),o=i(28),a=function(){function e(e,t){this._renderService=e,this._charSizeService=t}return e.prototype.getCoords=function(e,t,i,r,n){return o.getCoords(e,t,i,r,this._charSizeService.hasValidSize,this._renderService.dimensions.actualCellWidth,this._renderService.dimensions.actualCellHeight,n)},e.prototype.getRawByteCoords=function(e,t,i,r){var n=this.getCoords(e,t,i,r);return o.getRawByteCoords(n)},e=r([n(0,s.IRenderService),n(1,s.ICharSizeService)],e)}();t.MouseService=a},function(e,t,i){"use strict";var r=this&&this.__decorate||function(e,t,i,r){var n,s=arguments.length,o=s<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,r);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(o=(s<3?n(o):s>3?n(t,i,o):n(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},n=this&&this.__param||function(e,t){return function(i,r){t(i,r,e)}};Object.defineProperty(t,"__esModule",{value:!0});var s=i(0),o=i(1),a=i(31),c=Object.freeze({applicationCursorKeys:!1}),l=function(){function e(e,t,i,r){this._scrollToBottom=e,this._bufferService=t,this._logService=i,this._optionsService=r,this._onData=new o.EventEmitter,this._onUserInput=new o.EventEmitter,this.decPrivateModes=a.clone(c)}return Object.defineProperty(e.prototype,"onData",{get:function(){return this._onData.event},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onUserInput",{get:function(){return this._onUserInput.event},enumerable:!0,configurable:!0}),e.prototype.reset=function(){this.decPrivateModes=a.clone(c)},e.prototype.triggerDataEvent=function(e,t){if(void 0===t&&(t=!1),!this._optionsService.options.disableStdin){var i=this._bufferService.buffer;i.ybase!==i.ydisp&&this._scrollToBottom(),t&&this._onUserInput.fire(),this._logService.debug('sending data "'+e+'"',function(){return e.split("").map(function(e){return e.charCodeAt(0)})}),this._onData.fire(e)}},e=r([n(1,s.IBufferService),n(2,s.ILogService),n(3,s.IOptionsService)],e)}();t.CoreService=l},function(e,t,i){"use strict";var r=this&&this.__decorate||function(e,t,i,r){var n,s=arguments.length,o=s<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,r);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(o=(s<3?n(o):s>3?n(t,i,o):n(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},n=this&&this.__param||function(e,t){return function(i,r){t(i,r,e)}},s=this&&this.__spreadArrays||function(){for(var e=0,t=0,i=arguments.length;t=0;a--)(n=e[a])&&(o=(s<3?n(o):s>3?n(t,i,o):n(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},n=this&&this.__param||function(e,t){return function(i,r){t(i,r,e)}};Object.defineProperty(t,"__esModule",{value:!0});var s=i(0),o=function(){function e(e){this._bufferService=e,this.clearRange()}return Object.defineProperty(e.prototype,"start",{get:function(){return this._start},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"end",{get:function(){return this._end},enumerable:!0,configurable:!0}),e.prototype.clearRange=function(){this._start=this._bufferService.buffer.y,this._end=this._bufferService.buffer.y},e.prototype.markDirty=function(e){ethis._end&&(this._end=e)},e.prototype.markRangeDirty=function(e,t){if(e>t){var i=e;e=t,t=i}ethis._end&&(this._end=t)},e.prototype.markAllDirty=function(){this.markRangeDirty(0,this._bufferService.rows-1)},e=r([n(0,s.IBufferService)],e)}();t.DirtyRowService=o},function(e,t,i){"use strict";var r=this&&this.__spreadArrays||function(){for(var e=0,t=0,i=arguments.length;t0?n[0].index:t.length;if(t.length!==u)throw new Error("[createInstance] First service dependency of "+e.name+" at position "+(u+1)+" conflicts with "+t.length+" static arguments");return new(e.bind.apply(e,r([void 0],r(t,o))))},e}();t.InstantiationService=a},function(e,t,i){"use strict";var r=this&&this.__decorate||function(e,t,i,r){var n,s=arguments.length,o=s<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,r);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(o=(s<3?n(o):s>3?n(t,i,o):n(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},n=this&&this.__param||function(e,t){return function(i,r){t(i,r,e)}};Object.defineProperty(t,"__esModule",{value:!0});var s=i(0),o=i(1),a={NONE:{events:0,restrict:function(){return!1}},X10:{events:1,restrict:function(e){return 4!==e.button&&1===e.action&&(e.ctrl=!1,e.alt=!1,e.shift=!1,!0)}},VT200:{events:19,restrict:function(e){return 32!==e.action}},DRAG:{events:23,restrict:function(e){return 32!==e.action||3!==e.button}},ANY:{events:31,restrict:function(e){return!0}}};function c(e,t){var i=(e.ctrl?16:0)|(e.shift?4:0)|(e.alt?8:0);return 4===e.button?(i|=64,i|=e.action):(i|=3&e.button,4&e.button&&(i|=64),8&e.button&&(i|=128),32===e.action?i|=32:0!==e.action||t||(i|=3)),i}var l=String.fromCharCode,h={DEFAULT:function(e){var t=[c(e,!1)+32,e.col+32,e.row+32];return t=t.map(function(e){return e>127?127:e}),""+l(t[0])+l(t[1])+l(t[2])},SGR:function(e){var t=0===e.action&&4!==e.button?"m":"M";return"[<"+c(e,!0)+";"+e.col+";"+e.row+t}},u=function(){function e(e,t){var i=this;this._bufferService=e,this._coreService=t,this._protocols={},this._encodings={},this._activeProtocol="",this._activeEncoding="",this._onProtocolChange=new o.EventEmitter,this._lastEvent=null,Object.keys(a).forEach(function(e){return i.addProtocol(e,a[e])}),Object.keys(h).forEach(function(e){return i.addEncoding(e,h[e])}),this.reset()}return e.prototype.addProtocol=function(e,t){this._protocols[e]=t},e.prototype.addEncoding=function(e,t){this._encodings[e]=t},Object.defineProperty(e.prototype,"activeProtocol",{get:function(){return this._activeProtocol},set:function(e){if(!this._protocols[e])throw new Error('unknown protocol "'+e+'"');this._activeProtocol=e,this._onProtocolChange.fire(this._protocols[e].events)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"activeEncoding",{get:function(){return this._activeEncoding},set:function(e){if(!this._encodings[e])throw new Error('unknown encoding "'+e+'"');this._activeEncoding=e},enumerable:!0,configurable:!0}),e.prototype.reset=function(){this.activeProtocol="NONE",this.activeEncoding="DEFAULT",this._lastEvent=null},Object.defineProperty(e.prototype,"onProtocolChange",{get:function(){return this._onProtocolChange.event},enumerable:!0,configurable:!0}),e.prototype.triggerMouseEvent=function(e){if(e.col<0||e.col>=this._bufferService.cols||e.row<0||e.row>=this._bufferService.rows)return!1;if(4===e.button&&32===e.action)return!1;if(3===e.button&&32!==e.action)return!1;if(4!==e.button&&(2===e.action||3===e.action))return!1;if(e.col++,e.row++,32===e.action&&this._lastEvent&&this._compareEvents(this._lastEvent,e))return!1;if(!this._protocols[this._activeProtocol].restrict(e))return!1;var t=this._encodings[this._activeEncoding](e);return this._coreService.triggerDataEvent(t,!0),this._lastEvent=e,!0},e.prototype.explainEvents=function(e){return{DOWN:!!(1&e),UP:!!(2&e),DRAG:!!(4&e),MOVE:!!(8&e),WHEEL:!!(16&e)}},e.prototype._compareEvents=function(e,t){return e.col===t.col&&(e.row===t.row&&(e.button===t.button&&(e.action===t.action&&(e.ctrl===t.ctrl&&(e.alt===t.alt&&e.shift===t.shift)))))},e=r([n(0,s.IBufferService),n(1,s.ICoreService)],e)}();t.CoreMouseService=u},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e){this._action=e,this._writeBuffer=[],this._callbacks=[],this._pendingData=0,this._bufferOffset=0}return e.prototype.writeSync=function(e){if(this._writeBuffer.length){for(var t=this._bufferOffset;t5e7)throw new Error("write data discarded, use flow control to avoid losing data");this._writeBuffer.length||(this._bufferOffset=0,setTimeout(function(){return i._innerWrite()})),this._pendingData+=e.length,this._writeBuffer.push(e),this._callbacks.push(t)},e.prototype._innerWrite=function(){for(var e=this,t=Date.now();this._writeBuffer.length>this._bufferOffset;){var i=this._writeBuffer[this._bufferOffset],r=this._callbacks[this._bufferOffset];if(this._bufferOffset++,this._action(i),this._pendingData-=i.length,r&&r(),Date.now()-t>=12)break}this._writeBuffer.length>this._bufferOffset?(this._bufferOffset>50&&(this._writeBuffer=this._writeBuffer.slice(this._bufferOffset),this._callbacks=this._callbacks.slice(this._bufferOffset),this._bufferOffset=0),setTimeout(function(){return e._innerWrite()},0)):(this._writeBuffer=[],this._callbacks=[],this._pendingData=0,this._bufferOffset=0)},e}();t.WriteBuffer=r},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(){this._addons=[]}return e.prototype.dispose=function(){for(var e=this._addons.length-1;e>=0;e--)this._addons[e].instance.dispose()},e.prototype.loadAddon=function(e,t){var i=this,r={instance:t,dispose:t.dispose,isDisposed:!1};this._addons.push(r),t.dispose=function(){return i._wrappedAddonDispose(r)},t.activate(e)},e.prototype._wrappedAddonDispose=function(e){if(!e.isDisposed){for(var t=-1,i=0;i - -{% endblock %} - -{% block main %} - -
- - - - - - - - - - - - - - {% for image in images %} - - - - - - - - - - {% endfor %} - -
NameRepository URLReferenceMem. Limit (GB)CPU LimitStatusAdd New
- {{ image.display_name }} - - {{ image.repo }} - - {{ image.ref }} - - {% if image.mem_limit | length %} - {{ image.mem_limit | replace("G", "") }} - {% else %} - {{ default_mem_limit | replace("G", "") }} - {%- endif %} - - {% if image.cpu_limit | length %} - {{ image.cpu_limit | replace("G", "") }} - {% else %} - {{ default_cpu_limit | replace("G", "") }} - {%- endif %} - - {% if image.status == 'building' %} - - Logs - {%- elif image.status == 'built' %} - - {%- endif %} - - {% if image.status == 'built' %} - - Remove - - {% else %} -

- The environment is under construction. This can take several minutes to complete.
- Click here to refresh. -

- {%- endif %} -
+{% extends "page.html" %} {% block main %} +
+ +
- -{% call modal('Adding Environment', btn_label='OK', btn_class='btn-primary adding-button') %} -
-

-
-{% endcall %} - -{% call modal('Removing Environment', btn_label='OK', btn_class='btn-primary removing-button') %} -
-

-
-{% endcall %} - -{% call modal('Remove Environment', btn_label='Remove', btn_class='btn-danger remove-button') %} - Are you sure you want to remove the following environment? -
ENV
-{% endcall %} - -{% call modal('Show Logs', btn_label='Close', btn_class='btn-primary') %} -
-{% endcall %} - -{% macro environment_modal(name, multi=False) %} -{% call modal(name, btn_class='btn-primary save-button') %} -
-
- -
- -
-
-
- -
- -
-
-
- -
- -

Example: course-python-101-B37

-

If empty, a name will be generated from the repo URL

-
-
-
- -
- -
-
-
- -
- -
-
-
- > Advanced -
- -
- -
-
-
-
- > Credentials (optional) -
- -
- -
-
-
- -
- -
-
-
-
-{% endcall %} -{% endmacro %} - -{{ environment_modal('Create Environment') }} - -{% endblock %} - -{% block script %} -{{ super() }} - {% endblock %} diff --git a/tljh_repo2docker/templates/page.html b/tljh_repo2docker/templates/page.html index 756daad..7553763 100644 --- a/tljh_repo2docker/templates/page.html +++ b/tljh_repo2docker/templates/page.html @@ -1,7 +1,7 @@ {% extends "templates/page.html" %} {% block nav_bar_left_items %} -
  • Home
  • +
  • Servers
  • Token
  • {% if user.admin %}
  • Admin
  • diff --git a/tljh_repo2docker/templates/servers.html b/tljh_repo2docker/templates/servers.html new file mode 100644 index 0000000..2ab380b --- /dev/null +++ b/tljh_repo2docker/templates/servers.html @@ -0,0 +1,10 @@ +{% extends "page.html" %} {% block main %} +
    + + +
    +{% endblock %} diff --git a/tljh_repo2docker/tests/test_images.py b/tljh_repo2docker/tests/test_images.py index b005049..ddf38d8 100644 --- a/tljh_repo2docker/tests/test_images.py +++ b/tljh_repo2docker/tests/test_images.py @@ -10,7 +10,7 @@ async def test_images_list_admin(app): cookies = await app.login_user('admin') r = await get_page('environments', app, cookies=cookies, allow_redirects=False) r.raise_for_status() - assert 'Repository' in r.text + assert '{"images": [], "default_mem_limit": "None", "default_cpu_limit":"None", "machine_profiles": []}' in r.text @pytest.mark.asyncio diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..0a01450 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "allowSyntheticDefaultImports": true, + "composite": true, + "declaration": true, + "esModuleInterop": true, + "incremental": true, + "jsx": "react-jsx", + "module": "esnext", + "moduleResolution": "node", + "noEmitOnError": true, + "noImplicitAny": true, + "noUnusedLocals": true, + "preserveWatchOutput": true, + "resolveJsonModule": true, + "outDir": "lib", + "rootDir": "src", + "strict": true, + "strictNullChecks": true, + "skipLibCheck": true, + "target": "ES2018" + }, + "include": ["src/**/*"] +} diff --git a/ui-tests/package-lock.json b/ui-tests/package-lock.json new file mode 100644 index 0000000..9ebd74f --- /dev/null +++ b/ui-tests/package-lock.json @@ -0,0 +1,177 @@ +{ + "name": "tljh_repo2docker-ui-tests", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "tljh_repo2docker-ui-tests", + "version": "1.0.0", + "license": "BSD-3-Clause", + "dependencies": { + "@playwright/test": "^1.31.0", + "rimraf": "^4.1.2" + } + }, + "node_modules/@playwright/test": { + "version": "1.42.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.42.1.tgz", + "integrity": "sha512-Gq9rmS54mjBL/7/MvBaNOBwbfnh7beHvS6oS4srqXFcQHpQCV1+c8JXWE8VLPyRDhgS3H8x8A7hztqI9VnwrAQ==", + "dependencies": { + "playwright": "1.42.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/glob": { + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "minimatch": "^8.0.2", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/minimatch": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", + "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/playwright": { + "version": "1.42.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.42.1.tgz", + "integrity": "sha512-PgwB03s2DZBcNRoW+1w9E+VkLBxweib6KTXM0M3tkiT4jVxKSi6PmVJ591J+0u10LUrgxB7dLRbiJqO5s2QPMg==", + "dependencies": { + "playwright-core": "1.42.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.42.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.42.1.tgz", + "integrity": "sha512-mxz6zclokgrke9p1vtdy/COWBH+eOZgYUVVU34C73M+4j4HLlQJHtfcqiqqxpP0o8HhMkflvfbquLX5dg6wlfA==", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/rimraf": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", + "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", + "dependencies": { + "glob": "^9.2.0" + }, + "bin": { + "rimraf": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + } + } +} diff --git a/ui-tests/package.json b/ui-tests/package.json new file mode 100644 index 0000000..ed8db4c --- /dev/null +++ b/ui-tests/package.json @@ -0,0 +1,16 @@ +{ + "name": "tljh_repo2docker-ui-tests", + "version": "1.0.0", + "description": "tljh_repo2docker UI Tests", + "private": true, + "scripts": { + "test": "npx playwright test --workers 1", + "test:update": "npx playwright test --update-snapshots", + "test:debug": "PWDEBUG=1 npx playwright test --workers 1" + }, + "license": "BSD-3-Clause", + "dependencies": { + "@playwright/test": "^1.31.0", + "rimraf": "^4.1.2" + } +} diff --git a/ui-tests/playwright.config.js b/ui-tests/playwright.config.js new file mode 100644 index 0000000..074ebce --- /dev/null +++ b/ui-tests/playwright.config.js @@ -0,0 +1,21 @@ +module.exports = { + timeout: 600000, + reporter: [[process.env.CI ? 'dot' : 'list'], ['html']], + use: { + baseURL: 'http://localhost:8000', + video: 'retain-on-failure', + trace: 'on-first-retry' + }, + retries: 1, + expect: { + toMatchSnapshot: { + maxDiffPixelRatio: 0.01 + } + }, + webServer: { + command: 'python -m jupyterhub -f ../jupyterhub_config.py', + url: 'http://localhost:8000', + timeout: 120 * 1000, + reuseExistingServer: true + } +}; diff --git a/ui-tests/tests/ui.test.ts b/ui-tests/tests/ui.test.ts new file mode 100644 index 0000000..15702e5 --- /dev/null +++ b/ui-tests/tests/ui.test.ts @@ -0,0 +1,181 @@ +import { expect, test, Page } from '@playwright/test'; + +async function login(page: Page, user: string) { + await page.goto('hub/login'); + await page.getByText('Sign in'); + await page.getByLabel('Username:').fill(user); + await page.getByLabel('Password:').fill('123'); + await page.getByRole('button', { name: 'Sign in' }).click(); + await page.getByRole('link', { name: 'JupyterHub logo' }); +} +test.describe('tljh_repo2docker UI Tests', () => { + test.beforeEach(({ page }) => { + page.setDefaultTimeout(60000); + }); + + test.afterEach(async ({ page }) => { + await page.close({ runBeforeUnload: true }); + }); + + test('Render Login', async ({ page }) => { + await page.goto('hub/login'); + await page.getByText('Sign in'); + expect(await page.screenshot()).toMatchSnapshot('login-page.png'); + }); + + test('Log in with admin account', async ({ page }) => { + await login(page, 'alice'); + expect(await page.screenshot()).toMatchSnapshot('admin.png'); + }); + + test('Log in with user account', async ({ page }) => { + await login(page, 'user'); + expect(await page.screenshot()).toMatchSnapshot('user.png'); + }); + + test('Render servers page', async ({ page }) => { + await login(page, 'alice'); + await page.getByRole('link', { name: 'Servers' }).click(); + await page.waitForURL('**/servers'); + await page.waitForTimeout(500); + await page.waitForSelector('div:has-text("No servers are running")', { + timeout: 1000 + }); + expect(await page.screenshot()).toMatchSnapshot('servers-page.png'); + }); + + test('Render environments page', async ({ page }) => { + await login(page, 'alice'); + await page.getByRole('link', { name: 'Environments' }).click(); + await page.waitForURL('**/environments'); + await page.waitForTimeout(500); + await page.waitForSelector('div:has-text("No environment available")', { + timeout: 1000 + }); + expect(await page.screenshot()).toMatchSnapshot('environments-page.png'); + }); + + test('Render environments dialog', async ({ page }) => { + await login(page, 'alice'); + await page.getByRole('link', { name: 'Environments' }).click(); + await page.waitForURL('**/environments'); + await page.waitForTimeout(1000); + await page.getByRole('button', { name: 'Create new environment' }).click(); + await page.waitForTimeout(1000); + await page.getByRole('button', { name: 'Create Environment' }); + expect(await page.screenshot()).toMatchSnapshot('environment-dialog.png'); + }); + + test('Create new environments', async ({ page }) => { + await login(page, 'alice'); + await page.getByRole('link', { name: 'Environments' }).click(); + await page.waitForURL('**/environments'); + await page.waitForTimeout(1000); + await page.getByRole('button', { name: 'Create new environment' }).click(); + await page + .getByLabel('Repository URL *') + .fill('https://github.com/plasmabio/template-python'); + await page.getByPlaceholder('HEAD').fill('HEAD'); + await page + .getByPlaceholder('Example: course-python-101-B37') + .fill('python-env'); + await page.getByRole('button', { name: 'Create Environment' }).click(); + + await page.waitForTimeout(1000); + await page.waitForURL('**/environments'); + await page + .getByRole('row', { name: 'python-env https://github.com' }) + .getByRole('button') + .first() + .click(); + await page.waitForSelector( + 'span:has-text("Successfully tagged python-env:HEAD")', + { timeout: 600000 } + ); + expect(await page.screenshot()).toMatchSnapshot('environment-console.png', { + maxDiffPixelRatio: 0.05 + }); + await page.getByRole('button', { name: 'Close' }).click(); + await page.waitForTimeout(500); + expect(await page.screenshot()).toMatchSnapshot('environment-list.png'); + }); + + test('Render servers dialog', async ({ page }) => { + await login(page, 'alice'); + await page.getByRole('link', { name: 'Servers' }).click(); + await page.waitForURL('**/servers'); + await page.waitForTimeout(500); + await page.waitForSelector('div:has-text("No servers are running")', { + timeout: 1000 + }); + await page.getByRole('button', { name: 'Create new Server' }).click(); + await page.waitForTimeout(1000); + await page.getByText('Server Options').click(); + expect(await page.screenshot()).toMatchSnapshot('servers-dialog.png'); + }); + + test('Start server', async ({ page }) => { + await login(page, 'alice'); + await page.getByRole('link', { name: 'Servers' }).click(); + await page.waitForURL('**/servers'); + await page.waitForTimeout(500); + await page.waitForSelector('div:has-text("No servers are running")', { + timeout: 1000 + }); + await page.getByRole('button', { name: 'Create new Server' }).click(); + + await page + .getByRole('textbox', { name: 'Server name' }) + .fill('test-server'); + await page.getByLabel('Select row').check(); + await page.waitForSelector('div:has-text("1 row selected")', { + timeout: 1000 + }); + const createServer = await page.getByRole('button', { + name: 'Create Server' + }); + await createServer.click(); + await expect(createServer).toHaveCount(0); + await page.waitForURL('**/servers'); + await page.waitForTimeout(1000); + + expect(await page.screenshot()).toMatchSnapshot('running-servers.png'); + }); + + test('Remove server', async ({ page }) => { + await login(page, 'alice'); + await page.getByRole('link', { name: 'Servers' }).click(); + await page.waitForURL('**/servers'); + await page.waitForTimeout(1000); + + await page.getByRole('button', { name: 'Stop Server' }).click(); + await page.waitForTimeout(500); + expect(await page.screenshot()).toMatchSnapshot( + 'server-remove-confirm.png' + ); + const accept = await page.getByRole('button', { name: 'Accept' }); + await accept.click(); + await expect(accept).toHaveCount(0); + await page.waitForTimeout(1000); + await page.waitForURL('**/servers'); + expect(await page.screenshot()).toMatchSnapshot('server-removed.png'); + }); + + test('Remove environment', async ({ page }) => { + await login(page, 'alice'); + await page.getByRole('link', { name: 'Environments' }).click(); + await page.waitForURL('**/environments'); + await page.waitForTimeout(1000); + await page.getByRole('button', { name: 'Remove' }).click(); + await page.waitForTimeout(500); + expect(await page.screenshot()).toMatchSnapshot( + 'environment-remove-confirm.png' + ); + const accept = await page.getByRole('button', { name: 'Accept' }); + await accept.click(); + await expect(accept).toHaveCount(0); + await page.waitForTimeout(1000); + await page.waitForURL('**/environments'); + expect(await page.screenshot()).toMatchSnapshot('environment-removed.png'); + }); +}); diff --git a/ui-tests/tests/ui.test.ts-snapshots/admin-linux.png b/ui-tests/tests/ui.test.ts-snapshots/admin-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..0a5ec2d2a474dcd53dad69e1bc68b0de6ee6d288 GIT binary patch literal 21527 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

    >&v%H^B3FK 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 Z=pO$NfBc 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∓MwXH`5@-sz^ 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 O05RXhA8o@^%Ks1c!F;X& literal 0 HcmV?d00001 diff --git a/ui-tests/tests/ui.test.ts-snapshots/environment-dialog-linux.png b/ui-tests/tests/ui.test.ts-snapshots/environment-dialog-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..a4344db2f701525380e20cc42504fbb6aae77644 GIT binary patch literal 51920 zcmbUJbyQVd_XZ3fy1S)IkVYx#MnsVik&qNb8tLv9P((sNN>W-H2|+*wK?DTpP*S?3 z-no6A=QqB8zA@hMp24`im2>u9d#xGQyskMfs8q=fXHi+bg99e3H?fsZqi6(Ug5un zGtQc{qLg0t^OeZSs*K0`n>%bq%^NKP%yo{OM%D0Re|#ocSXfo=wyCc_x})agPctVq za~!|A?Uh}^6ZO9rw^URv?z^9anWJmrCKZv~F=>tzWc;iOq*tdf+5Yn~eA6hoex~jfD%~Mr&TU*=g(Y0$+9RFPhn<2WTrRArA zfymDfzqsipGiD7$R#gd)+1IJ8KQbUh+t}QU?3|Mi43tw+CwmtS1rlwqft!qC#w`&3P+p2&i$xTngAiRrJ^gN*>7x2jSy^R_gI8 z|9j$Xeo2(QlardMDf8-&ik@*%y8_3(+wzR>(Vp%pX1bwny6F_hu$f&6F*Cx+$tBa% z(-TU&^^AkD^xm39dJP+Q40_f8PHb1=N&)HrZK#nOio5r!Vl^S>B%@0y^Oyb5pg?l1 zkuee-O0(~1BkN(3&O}XrTet-)Ozm~=Jslj>&XD!L6doQv*68}EAYJKyYcsGPL^D%T z!rsL43|1+gtcw|Zy7oJo4waD=RhG$l|`TO!KKDY&b@{cgx zbX`x;c(O}Kf3c9_%kRfy#5)$n3ve^`u;K=34Q9N0l*|^BD^HoyWq9R(%T!i}2gXHh z-BD~gpbqP>#dU8+)18)96Gc~*|8xaC#*X#KQ*m9AXwMV_p9iI3t{Bu0e z*P4=&5`|LCA?<%H6RX7?mYhue>$ggM*Sg2T>G3XX^;nf zo|qf&`uhu2>Q`$KF|pkGdYaJ+Q?-Bq*^T$R{bO8$v%!*HjJ6k|EVIGS^wG_yh}#YE zqBb|_6_|$)EakazbGFNiO){UWIw`C-75XK1C; z`s=0peAIh~hYPT;%bS~{Ou9Ncxme+{Sx!Hy7>IFve0}FUnrnZTo(0IE2cv`-caHsJ zkNjGTmRNePmOp5Yu{M>ISkjPVUPmwk+>FZ!- z+Yp5X`EK7f4B8T!+1_@!rKxGLIo-m|%ZpKfQFrZ8|Ll)4BMHw9hA+Lntm@=DySv&t zIw5m&=5C&z1FKkLqoX)_dR2~7l4U*9=VvE_GcySbJqdYl-eCG3Ze)&7H&4aa)ro;w z&-P1ghMCB@JEo_nZ~riInj5dRD=IJl;Ug21i>p8?BrJ@U&=U$~o!i)Wy(GnqV`LET z!#xc1UZtQnk=bF{by-2{XY8hXZ0{eR$4;rq~zq>y1Hbgh6M?qJ#NJu+8hCt0%>L7#W|R+1B0~xMmtWc{E^@6?CcWWI~>LWG^p&Rrc2C6?KsZ6i?_jPU&n8XCQm1J~LZI=Y*uNv4z;!)lFkh>g*t z7v$SBt5KwhOctFud54cGSRbz)Yj9!bP!E|{ z?}lZN5n@{s4_ux-m~a|BpBfxQGe{o%_U+lA7(Y&DXD7tn@PVaHI2n8biu6PlgAkT> z+u8!Fnc_OIpSySO_BA~yG@8tM_R@`bap6hhx0#s%)H5Us+{<`*FNIm!i_~+3 zJn^52`a4oRbFahQsNGWc((dD>f}$c^)VJyBcrzhf@B-L3%ut1-l$5;ka!2*ohkk!gPPFgc!>$;O z4Gs=2LTPDJ*3{QqdU?_2a;rXYjq;l6>F%EOXod&@xdkyw2qmAYpCaxISB7x3`F@w! zV`CEU#pkd*wFHaZ#jg!;gr@;*)JIFd9&Ttn7s}KWU#bs&)SsaMISdlk?7k0p7_u?& zxbF|AeYtsf6dfGOJTChCHNg!mdXxFz^(%mFk55c!8yUrdM_jMyJTA|FXhL$U;v3U3 z6B4S3=*8p{IV2c}YietA>gw*Dv<&q2D#52NU%u?TJr7VYhFvY*tS6rF83$fjSs5)e zGY;z4(vsyucigxe>A$SLLXC_0ZG1cia2t0_2)t57AOCvvVsg?Lo)N+uTpe6BF_CLb)O|^?Lq9a2nL z9i8X2Hy0SqLxb+Q&PZVqk+ApgrQr-LpFANyIo#~|^a(efNd_MPmU?2P>yl=vQ9UuZ zm4w?eDU(E^8<<->?%|a!2cXyp0W_tS2k`h`*#;(nP!)AjCDisA5 z(jX4?cj)phCM0=-5^KWmqR2_vKa$;Q)WTo_$fYB;Jea|J;-P^4Bo?iWzQoBwyQlZ_ zX9XczWdOH4JUlf)Jc5FPwq&UgI&v#3Nz=s~zAqZsJ2i5xlb0eIL3@7>FF_CG^l>%r$|zvpWJNaX6XzNW1G5i-4) z<75>43NpH-pC5yi=SG-GMbGRkOSwr)jEwKW8;7VB3vedm_g-Z5V)pXh-q#@{2pBh@ zLO%$-Ra^V^jT8*McFW1ehI@5VB2&}2$qf&JXvk0d2o_w(=QfUxs{Z~mlaAs@JpKOt zduq<1&XeY;)YMdY4Gn_R0673|Z?SHr65}uupocSsS2F6&m6#<8O2LQFfk&$o+|AI%yMJ2D=TNY>3 zj@lX_oLRti015(LL882tvGLRSc?*aKs^R&tLq#Pe-w)^lC}4G&}9x-fwxWIxl&Sk1Svw=zUaODpg0E^2FM2lo1AzqIAaZ+wWo z2Y-HI=;;kYJgKXzQ)zh(UZi1u{YQavjS$2<2)tu0zT%h)?T|AD!LRs@>iSM35_a-+!3%%H>psA*a+v7&1hNNveiNG?nmI(v7dzVEK2t8V8Z3e6>IPfwRnaP zc?q)MnCQlhPp~4189RDp4}^`|0vKPscyTmbD2oMgYv%l*{{A~_qPu!s%oj&$$j*QX zw1ZQb_^ylkEndrt_RZM3s|%R6CzM3CVR>Z*|IAvf>ZJJscCc6bJE0ES=xBiWV>w z#1`C;Y@+?%-ri8K#Gm$1duqoj0Iq@*s#rM0N{O#Psj}=Q32`VUCdP{X+*~rO3KBwT zX&845WL^~&6|6r8%PK~Y03mUH`~E%Gf8m;t5WE|IeUg%frqj08!r58NH{+-MkJhTs zpFanGFbkTrSocIXaSfZz2eL4oQ{} z8w0UBX=y^0G{e~&dV2g`gaa7#n@vR6p|E#}914X)=HOw37g13*D))(Nameyj;S9u_ zrU@a2Wokx3V!3teR^KtLinb7hTlcjeAMC|C?Zxt{s>trWrHaY5G2Nh#Q;o`v8Xq^r zL`QS@)vFU*d&FCycKH76U;=M*2|z|sQPDTa08ufq4##>sg3mujM&KlV{rY8-m)@}^ z6t+ac2YE|ddoYAL+8Ezp6hlZlAuE@AJhJY_?wPrcp6KF&kUv^+34UxBIn`v+%a=LX z*(eBk@N$-bYV`UlhD&b8q4=dZ2tJytRgYP34ea86H2&>5Ew}gNkEyDB_$pnxWSGl# zODj~y+S=N|kb9rT#eJA_&VKifqPDj7ezOO^pKO+xv{S(rejjA){cJvd{;pcP(V7tJ zhYyw0O@*c9CLz@19ass`)�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 CzffHO literal 0 HcmV?d00001 diff --git a/ui-tests/tests/ui.test.ts-snapshots/environment-list-linux.png b/ui-tests/tests/ui.test.ts-snapshots/environment-list-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..e600099c23bdb982e2f5425ab8a0e8e1d4bc4e63 GIT binary patch literal 30917 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

    >z>gDoK^m(E zL<%r`fW{tTcQ>gH?Ta#B(o?b5p=m0Z9b5 zMzQciNCb2qH}r8Td1iJt0D<`$x`~}lu+0Dv(i+O3Mo#m_<2ILu;(&o4inEv%!InWl zUI(6mA3z&mIP;@&K&4&Dq7XAg7yExh8G<{o5lCzpi*%RU{)!|H^Ulk#QTL(hDptD> zX9o0MxK!>kF_-!^bZ|MSN92AQph|_iA@1DEi%|BV+~uI0MtwWL&fg*j3mR z_UN+_#Nm7Q?>j<}uiaml$J^^eoYSrINd|X1wmM{2=Kw4dz7~oSm-yQ_+cxMr=opJ7 zN%|?z+-aH7v}I~C5#1)ckN%Y~uw&5LPz@VZ>@=$gm0|}(RY>{}JyS-iTve-Fo6%5x(EUMb8ep%|%nte*Ct++r&wrh3;)Hk2p9v zO#yZSR^=tHNmGW_3~bDYNAHgT*lFT9+gG3$3<NFV@4W+41zz-Ayw!mjQh zwkKPOA5zoBAux^0xxH;p81ZIG1Fz?Gbw^JPva1b&yE<{|RMs!)Dx(H}4!z1~=n?!# zmmx#K7J&FW04n1J?dWH_lG`2aV;C~}ejy24Yd-52WK>AaGWPa7;o>;WSQO{Nk8~o0 zlmx193gFKaaJ@*;`D~%DbM#40d@2CBr(-Mz?R>b{M@5FObqq&LU3vbw#ElpeY@9!LmY z>rs+~cQjp;x{;X)oXyVyy+nX(d{#eM_YV$)J#icn5fOm#M25g;+7OmW$o^f8g9bP} zm9Qfd?B>jf>sY2`PZo77LL4wFCOtW-f}$pbMlcNOJzhAKwDfeihgxsiJAh7r^K7qh zn0g%&k^!N72ag{LxaF}_+8;0Cd;@7*5Oaex z)V%W9+*e?ip8#^`Ocb>E>UT!ir?We9iQv1v;};L;^wE* zj&C26_R0gU1xxY4B>YO>qXvx|!gU>otGu3S**n5~S~{LIzB&=Y_) zM+3=(l;BW_e*+2#P%PALdFt%QNij1wNua;dnNh{R5c$$;n5R?wt@4O+;D{tXnfI30 z<#cTwp;8i#zyTX|PYrz?-J4XW?x#z{6JPwY4kVvlXJ_9F^^k5dW3fY2e31DOi8Zik znx6~_A;K`sW4~+q?RO5bGL-iF1);a+x6P{gs`Fqq3a!{=CAY^QQapp6ElF=90)k7e) zY(VZeMUz5cz``oc=6~jZo1B9v_^a$`JJ1~^y6WoG{$Dy0_!D?dPOVgLgn7#b0RJiC zx|}rUh!j)^1qMfo0q=2#l>=XM7OI+Cz@}V-=n7D76}iM-LkdE`4dYYXXQ;y%Bo(2k zgf_{0s5Ouz2h^~c6{>+J9<~rcB%y+%R{$~sfy566-|~FryKts*`u!Y%Z@=NWES!>^ z%P0`8-Q{*;YW<~8hhoc~4t?!hv}|N*eBAU$3lMY(Xe?S=m*e!%y?Bd-2rtojMgnOx zK>Fr?yq#nYe9UOY9_1s<~uNq*dHlW~{ zoSSPMC^BKwt>BRfr@s!B76StV(C^X4=RE`D-@K`>cHhv100WFmhSO{p^(kSf;gdw1 zi76>5A!5Mi?1P>HYWxZ{3~-T6fU6)%s{mUb5X%F!o?k#fLuc&k*5f~z$`<0TNL&{4 z;t^9(R5U(E_C+=%;FvUzie-#N)iYY?8}cYHpRLoTdeuJccD69(IP|hy&+v>;MRm9= zO@?ySO1Hf*`g+-izU$!JnIbBQ%=ZfC@ErA!Mvxyz)D8g2Vlnfv5nM9^>QSM-IFto| zNU0I-1=uijpCQtDYf~`^nl8|$@o~rCat(fG_ZRUkeI>7`L;4xp{J4gAm)KZ7R2EC+Vf}=PY$p?x|lwtL)G47Smi}K6k{mlVuEYu)*B5hV8MO-kk`& zspaJqY~U>}y~=w~=m9v-fRMfI74_)P1zQb@#m~qZ8#4}-Kb?hJ2Nnquyn9CPHQbdB z3d)ljFN+%Q4Zl7bu6g%}I%Ft`b7yg|1djSqhHS)8fs=M#AI(*4KDmwQH26*hl$5ix zaZ~@?POH-LE4kb2Z^d}e$a?9Dy?_7S-pQ*LyypTnbzoe7sFvwD4JB6Pgd{6USC*G$ zc_&bEH`MdoWaj^C%J6q2d2x!{^{K^4g)c8oE}`%{JEmxwd?Z5s=VzFD(3bEwB%~1! zXExmo9)e448ZEtA?tj!cOm>dW&ez4nXn_(LE@%_K3jd^}jI)W0TH^gzvcrc2K!|1+ z;9WzH(JXKuD&WaBuY861PQCkcEm`x5iVC2^-VF6tteAS9z5QnoFSJ(uuf;%7gEq_% zD9RVE{&P>ltXHoR0&#LSxX~D#r@^>r+9mnFCI){q1wh#zbdl|aQOTeUT95jltDyOB z{*T2-WDz|2^BE=vRRY#OUmqFHMt~Fp|M_Wc{$H=`r0<`PFz&`5`{!;Vyc7ukz32ab zUIyd>xBuRpX&0z>h6`S_=$TR7kKI=OXQQ_LbQ&a1q8#fUcr1@yK4E^5_{N`oix9(@ zmkhoP*Ey2h6=2*|wjxY5qDmkoy!1!%C7Tj^ap(F$iFQ7z(YuxdCbr-FXOBmcC^{;wb*H7!cBve4Fi~fDG5elCMZJ?+(e@fgA z?f7Y7_9N0}K7xMj_H5wLN?`@_4b&b z-wDQBGpVw~8fp2YgoajE-~D3|ts6IAJ(vB(=i$xz?*?(^TzdC9gR5q_?%yY?WjPP; z*&3|(hyVN8lE@clPrhKZZ2#??_J7x4WmAm!#;53go_(B19(vp=nB-V>?2pO1_FQ{h zP1Rj2^jN;~0=>z^c6vnhM$btuX{OON6YhD9=Wor#KJeKdJ&kj~B@+dPm9Kv%3P8IZ zjENM|X$MZ~EB;J+#uH$b=tI|$bCW%>dgfTFO+`|Ev0n1o`MB*XJ62+n``(;7X4uEV zYho?L|M-gI*zeVMf~mM0?axVy6pohulAt$Fd8+BB?L+@L(IGnC&(oyLh+B|6N+f17 zvk)__O&6vgG}ZGk%xG-6gm;ijkon8~hHX-dD%#z+e|8CN7qX%mxzSJld#9DxnB30K zn}w^HcPo(ZGwOR{X4Tgm&5oFd4aas|njg={Y>%5h5ySX61RX07yj$+lTZ7!(lw|)- zUGMA?mf+{Q(`-Iz<_E2&vxWIqIwXes_Qfn~y#?-b+$(NyI`5&dRWWCI^^&T55`savMvH1r% zeb}#CCu#>BZZ)pA)fVKT#C^4BxXGty@8lQL)1uF}k4sw!d$5I}z1w~i7gIiNUSWY- z4t$}wc$vIqxYMY5SL!r97jxLdk4=+x1$@sO?B9kH`G!{|$R$7cQE7FDz-JT{S|sUr z{(^PqCwe*T;Y#?UkJ0w&idtlfuNpVz(@HjGWsyBd26u_Pavl6f2(&RJVvP{FPE4I~76Dv7{O%&`ZpR zoh9)qx*k1xj+nnv?+hL{x@=BS`#U@?H}LsblF{yRZuPHXAvsnfViMoNb_!pjz=-NSm|C{UsC;-IYb!w?7?&96J6S+*lWg_t(1^lPF+IUg zu7xkl{6DBqMOeDm$|;v6y*6&Dlvm?k>e301IWgXhDwvoz{rVHKQ* zsRIwet+tAuJY&M9g3}Wli9_mab6w=6B)qm*cLEM|8g3uwx8&~~l1P-sXOH*K_2*HA z(yvZ0ENKilGrwIZqTmo%|7b9=;wui*s^U+&Z zL`H*9%9I87b)H-pZyfu=3(JpPcJt}HL2+fehG+@JP)pU^&=WRrbO`t6^$B->p?QW- z|0nAdY5lL`{c@iMo?Lk3yA^QliSl4DyD~*ta>#=X%~l37Uk|L<2ZPa7K9OWNr)@0BS9QC6w!k_2{my@~=!Tth6N{o+7xPRn$etmdxL~JCv zXW2I)!Lg@!?g>-7OF&Pd7H{k_DaH}aa(4>$`uQ)c7;oaau2(FdjO{AK*nwyCbQ_Ct8ic758XR$%<94el@;6L2(r0c(%Snvu5S;iYxm={QT%e9M8s7 zZ5{?kgDSBu-imEEt#!Z9aesa!jsIGWcnRJOOA$)=2jgtNdP!*v>yU*H3MC$ey8qJH zHovbV=^0%7leX5)kIJj*C8eAUQ>+l zwGW4%h8@L4+`<TG|i_Cm|cMCCg9kQN_DzpMLo2U;|5KKM#I73PX>l^3BF0OWOov7A* zSUsG_nv2tGS3^^4eL5gk`pI_h<@(VnBe*fJr?ba(lg|1`QUo><*D-{S7ZKGAIx-&c z?t0ZExfd&54KO3>YJOwbDl}60mzfbhhxPKVXR()(TNX~vc6*Sjj5d6-R3^xz^!cFg zVQ28#Y#{5Q1f>*Kr-`tG_*!z`OW`%Qh_;P!UAMc;xJvJT9BI0?$W%k9=!}5Adj-|C zq3Cg|XN=Z|=q67|gHPexv9X6FT|Dni*gSf$IP+kjs6JKNqFazXy3mgr}d*m)BBnFnHD zG{}WKZ;eWfju!^lp7NawIU+hgzR5tc8ok_MxtCBEHQLne0ME%AwjG? zT3_G(ZFyDn%$7`0)RWSp`4wwOTR@#UQajUk1vaynLNGNQuqmq={{07pGkFUno=fb6 zxr3{`yb-TopMD`x5kJ)X7c>R;n<+uwpOloulh{e+Kk+?M+2jw91f|ped3N9*puzb6 z0F=AO8c~rRU5be2^GN>J*TrO>r?xD~AMX8&ecj(0Q6V}6dE0&N_ zU-78bCDusYUSsMyuK$4)qkn#Et-}8gHswL! zu-~A~OvD2q_nUc-3N`PhB?p$?=zD{YN@R;rp+B>kGj-q0Km)#vIf|{*w%#N2??Ov9 z#hfp}-o>Q}8tAcvXVkU>nQm?#1A($;e&29G3IKU{+1WW0n9z&d%g?K-L}5N7Ucu6J z^A>bfmJ0e*{)YZcQ8ofJa4P>DaDaLq%42dG8mPL83MtVH!@sVNc6Od43#TD`hctEs z$1mdlDV-v!IoPHF--A#t^35CHUaQA|-ZL}aaOariMMXu`;O(^aeE&y1;A%Y(ckwW@ zEL7Gf+A6m;@#>XwzZaIvh5umQ<&)+2se<^YeO#@_bm;Cb-aB>^}9L4{;cEk98sTq?T)80S_2o&IfVPQ!1$`bTXMTzDX z78Qk-+MVaePTD)R`FL3XPod*NEUTa}4SnZ|sw#N#d2q0N8T<7=VBN7UC_J16)Kl^C zRM6*&T{_PL0~?@-B!E`i;D5Bl|Gn>h_H4&;n{YxZI=aw+02!CyzYPjnTRK2GoTsBp zUUG!l322^t7%KdyFei0#aA=L#75I1mUd#S}TDUsCYBZjZJlZ8gnuv%vdb$$!57FWR zPb&rO4W}xRNcm#?X#B_l(ink8hn@A7S8;+owVb~Y zoheYjr0xG1LFq37$$N-F$2`t>1Ss6a@LuS8I_3LV))-{qM&mCHy4&di0T0c~ zG+=yjW*ZTk->eI3?t=!_bizr-(S1ueDiI-B6YXl{ zfVn<%_G|`F(xekxOGyni_M?o06VWt8p|4*XPJRpA2a#fDXhZPpVL@P(T1dF7Zv)YV z=p9Qi5>r4=BdXi-Tz`llG=jDrOID`Z`n9o)k@#ZIaM`_eacBiSh-P&Nu=YeDntqJ< zwr-G_yOzrsjh*Wew0PEF{A7J5(M}~t<$4A6gQHo=qxX*3wzJfHelR*yyEo6C;=fI;WoI%OPhJ(9iQ^i(8iAkxgl&c=j$p{3+mIY%lL;|8TPz=2R(Hk#Fb0J<5 zG>0=ZkBz0m`hHZo+I`e0R0KUNB9Am_3V9FjyJ_|FH7J*x^!4xEI|0Xa1$4sj^q?In zq^tz!Rw6n#=w%`jO%MzreKt@ao~9nAiCQiNS4am5o?5B%^pKU zSxg>EonzlJxr8MEkV?FhP2PDoQo&&Jk; zBpFoH(8)1tjl7PCy%D+JsOO3Ukn;N7r=L z__!fhj6C#os3g3EKyP5&l_VU^ZIFUU-rPy&%+6XaK}(PjB20p~XW79HXd9fLu*LUT z=tWdBYaFYG?i5g?!pNwBv9YmAUL6SEku^e~_5$4wqMHD9O0oUK-GC*KhbjQ$@3xGd zMf4w_X1ETWI_MQoVX=)nYg0>lp|Ei+Ane;-3UtC(IMpKK#zg6i{akQphbvF5#4UHn1{aPBo>SPK4}N5hJN&|M*JP~E;jZt z(Ph6OaUZLd{2WBW1ggmf8-e5Yivzq|`qi?aW?I|a{A|~sCQSkg7HLp8sc^CY*aWc$ zgq=%PeR-A!`k)c}sGdK6K6*qxj8^z7%-UH(%Mqq%a9C)a7(|BXKvzWo+C#_^%`i`sG%su#%{#p8ZhOP@wf`FNr8ip=Lh_rS9E<0Xi4CPQUU#XvTXTS8iipw%Q3tQ$`jbB`pG z+&>SK6}q~*h!F;mG0Z?LMwI5zk6l|V!F=sBkc>lgGp`=sW0FLM=HQ!bV59?P#h_E# z2+4@g*=`Z+1$w|Q5+%PQX$zt6FJEp0nGLmsS4B;(G=#mQgB27qK}bkQh^RvVl!N53 z4fGBQh^iT6FA!H1l$#++!PmZm#xKm95I_>;A2DI_R-XG+ntRax3#=sJrsZGIJe&O? z!(awU2WB2sU<^^zg;V-ozfJa_C-iTOhW-pqO4Y+ZhyFtP%g29uUIR|z1D zG2pm=AejfmI_A*2$MH5RCJB9kW@xcmcJ(`u4diJSy@2R7xwzPYh&xW7w%;*M9dv42 z+z!iV=FK+4?ZDuW!vJ^bcHcBY>3Z$(CVDcIIj7g9)v zV{e_AaaVnvY#LC>WO}&7i$uN4va_S{-v$Q<50CELxq}=r1TV!@iKhm!OmoM3V6GCu zK%k94+#5{l4b0Ufg9hPyskH{AZKIX6#1x3<*`5#~tq2}L9~SQc5=j7Lpx35>QEKSx zi*L^Nk~Hw}d5@?>jh0@#(Asq%P>M;@8k|MkdS$6RtYHS!W2v7eAY9q==gIL|_i_A3 z=z!g5;e?6;B*6iQXa=1B5onWOg0SWFg=@66s-`#(Gn{90vLj14sMBw8P>_JEtAtzL z1EVlcPYptODKc?WgE6#|g~a}<6n+dDEQBd20wjNfIEe?e3J@jC$Fl4vz9K@ZiV7hR zv)bhrps&w~nBHIaMC6~KGs^6>OvM$4t5P$^n8YEIDAvtyS6_Ux>8A65! z3B@VWg~(IZmoBu1N1jTn1x*yVK{~iAjx4j>$?mguzWv6_PcYg(Y*U)-RnurpSZ^ax z0tyV!g*8CR*a4*pGExH;hf(Vf>Y%-L3)J%_fYCs&Kosn|ef9DmEkI+W`Sw@_S#zu8 z085PbfQhUCwP0)@+*XTEx6gJ!_*ql z@RCZdP02(0cxrpiXzBA8?l671*l_8RYeYu(@Oqh*pz4tA+XUma9yNuBC6D;4v=c0` zk5$-j-E8~RscZk`q%y_HJGUdeQ+E#t`T2OxHl*=;c}p;m(R*|yZHT9?@L6oy;fXHMwb}=Xk5NA2~Y*&rtZzXk(P<`y()^c^C^FEd+ zpMI(y1pL!5w}~mQJ6MX2j{ceSW*cr*}f zxYr!uO1U&w|7eY8HY}7{*wM5L@Zwv^N9tpTFcxJ%PN0F}*6i{3T7IIC=<)Mg)l<-~ z?V^rWjJCA56RMF)^g zDrkAJVWP{j$ofDV_-tiV9KTYBDuBUr*aD82m>Be2R$_M@>gX-m7vyX6%SYcrsepA# z#p^<~GiMqq)vn$TN8OPq$PH>TCy+2EfxNC4f4Mi{V}8ya&p3!u#8}{*M79NB1l3&v zKZu#Jki=_si7ezTmXG;R!+|c>Y>%F$;xSB)aOgDCdJ4K=^g=-y}=*Xvl1Ll)bKYsiOUda!W(lUJTdnDdIihWE;kt5;U z9GeA2IyIlEEMoOu>rts4GLm~gs<--d&`^-{fDRNazv4^JU_6G-(s)S01piw`@-4&B zPBXQDjV5Rc<6$M{kj4{ujP7=#<@=KY{BQbK&Uiu*pae=bCm1lxg5t*=F!nmkdG{tw z*-1$*+%>VoLbAv$au&rrSM9Bu96isa zQsieo&YZi0tepzm|)mSaK80-2(W1ZjE2ot01`x@V6-LjSya zXEGRumJJFj=RdwJ)N>ti-d%RBON7(n0+}L4Mq)ie8#DH_e8dsPeoE9yz=^gsKlEQ2i@vTX;}%NqAxbn#PzBZQQhy@f&ysN&*b z1SlH{vE9D%+8DS}e%CHC--^iblu&y;!rQ}6*0mC#utp3A4MHOtvE{58KXOG`&;~gn zdqpIHyvMl+q`Q;vgA)BZR*Y2C{tWHq#8sCFi=BTBzAufZ1 zd5sOpqYX(px{XgzOy!sJ{=7A2W@d(1za!`oXJL%2>kbiJG;HAKnb*;K5({@#RaHu_ zuAFd=7jt*4bX}?4y?^3%)GEwkPJc)bYtyLP>lMLl_xuEi!+~tQNw|2KG`;N!f|VE$ zhEIb{bVyU`sX57FXKs4!tnTB=>pDTFYNh9U%GZC8cBxbAJ|Sy#zrH7@ zIz}6Xd<}tmiLgtx(`g>$-xuQvP9u*enF)@;!|ms1e3Ab?GCXz#dHmmfxlEd<9txEV zz%a1k3MOPH-^poJJd@rd^}eE1hjTF@!|L(Q?+UKZyvSVG-^=PkMZ}E}#z{mIH7nXJ z8s%kPZTIqC@Rt9f)_+Ip;;!d$0`+p!-N+F4t(+$MQ$XITA*l07?Rre%O&kva@kFF& z^9)U$yJO9E4UM{*I`%dDQDmG&N8tu;Z+~2gdnTu~Bx>8f<6*BqR~6^r{6fw9K3xf& zU%2jpsi%wmV=A;8=|9l!n|`Isb-4F&j+0xc!mWy0DF)4jv7>|8UTuu0!>?f&*}k3p z-fhd0R%r2kl0&+@fRd~D4(V67NA!#!pjv?#SmJu zfcQXcAp#}}Yko8-^z^@33Yyd`_L8f08PXD7nzfi-nK}YX8BBZJl^9n9`DfqL_UK>( z*nrt3{Id1p`JUokOMV(JNjoB=o52qJXVhl|B91ffpx95b-VI8%WCGcVD0Wk0$|CNd^2n%Wkmy z;08N85^a(f2rhP6%| zw&sncXSZ+{d~8O3I~+1-BH7jd{G= za*J#>iEO*|hj-OavBMOW?CG6ep9#GU+|R*azGvTHA#Fo*z37Kw`-Zc_hZs5cofp@l z9tS+q_wpLkeYRa<9g0q?-u0M8El*;pc^2Of@AeYT^<+LRwo*#wjk1`fG*~p)*gsNm zpr&O?zq1AdE_HU>VRvr*Y0cm z1-(KV(b27%(Y;vrEf0pzc$WpeEN9Nt$})V=`i$0R8|i}Tl~*BNF523qtep;?OK-Rt zez13Hd=>qLod-_B)zfuA3D61>QaKkR}!zfO2kk* z#bu}tQ8+86>q)!2%ndVN?|k4mx6*7rjSk2T>m2vS0(H>_H3Guwx6!!RP<*M~v2SUt1;s28OHb!H zJ!`Nt_SteS{B@#~dw+qYQ_EGk$b6R}PHyi-6D=Wg1?{C0rC5ddH~n?nH5{~}0@xwD z)TJ&F_NS!cH|2^~6D;^9qE)*m_)}Y}>yE_Rvy?D>$BD9*CIT#e-Rd`OTpUEca?WMY zOwQ7hBAh0!zp#QaI0YqPmMoe*#g?6MAje|1u4Q4iR^c#rkS%##&V1C%X>?~TyvJg? zCE8_PZG|c*O&Lc3LU+@Gs^!XIm!YQ!a^$L7EM{uuZKjO^_O*W>`*id74`AsYpE^tR zCOgIBM(W{awiDEA$W#gPeCOseRHR-ox{CoiWBr$PAr^JCjk2y8g~8NhC^>N8K$T z7>B{M3m33g`CIWiw&?2`dd|Hf*+rF5hX_Jns0{(K`n>v&tTSr&k+Tuip zLBDkE+&)~@O-T|H&Fp-zj%|>9L*{I)u`z&HVd|8H*($x>e04I@81>pSb+yM>K?4aM zsqjHg6cvAI*KV#|$5tmw>R_pn8a+8phSjj3eIq!-)fKZXUf0!};*5_2`THV&P4U>l?GArYM%gf?zSoa~*SpQHNA8VIoyV~Vi% z)GsZij(4lEW#$bss(mawt-y3r#ve{^_+8jwR6&a&>}Z{1m&5W%?5M!zDMMb}Y*1kp zLv=(~wmrWE`|4ezVB*C!hCZF4&uP}@#BqV8of@`Iw7q2^F=-75wEkY0nlPiB9lIZ? zlhJTzA{0x#|)I}l?w_uP|+k6sZB%RfwuhT*7@fxYoFU)DF?l8$AKVK+9FY%VK1-%mza{E(lI}A!jZivU$ThJ zO8Upq?(M7tQzKC=U4nF5>XZAZ=K7Hj;?1`B(%AMQ7iC9w)tSc^Cm{^r{;0@;o;siB zTlXS-%Vt|eRGosd(kjqXof}}zFkPBP$Z?jE{F)W|3OoPicC)ZI_ozA678_X~OHS?y zAnVW@f52#18__kivMjedhUVS9&Z`>htWHuc8mvB@G-fh|=9>l`Qss}1J~6pHMqi!*SV6S7qMVLzG+Ajg)@CeY)mVL*UzJt#-&9^NO( z{^jb%U7iDp{^oe8i>FhmAl11`ol_hLn!#r|QUz)0SW#Zx}eJgD>M!x7=YOg44DgSv7QSt|}jyk43z^2BIGsoW4 zg=7pZwj>_S#-Ic)6U?$e{-LI*ygENp7Y^S+{StSkV^YZqO5}WH#b}+jjw?{DxJ zS(!Z4Qtd1;N3LL=dsi{^_+e-D*|FbhbuFTony=;BSc`2dV;XDepp5j6D6gmf_21fxs7})|?Rrl#DRZb~Y+e8lO&5b%PBLhavlJ4zmd?76@PqXP(PaPKfWn*_(+{+m zmgvzWp)6Ues!glWMOd5SZ4oamQp)9H^66PZXKlat>a~w8 zTvvQdU!g86G*NOgHcHVAlF6^}i5y$^N;|b^QRxx3b6&`}NIh_mp`kPAIT6wB5XXU# zF}wqV*Mhy&TrwargtpKJYK-u&Hpejp(I!7;*I*z+YCWV`)}Jq>_3nS0yYCG(aJhU$ zJIyS*akr@OyhE?<`NJc&b4RoIIX9kU@)pCE3DyTX8ogY}z@?lmkwS#MHYRP=X*jcJGhR?8JYuvw~daT0{N1-C&@ z%F;;))M__qEwfu5(~f86Gtbic8>0(0k-TybhMjLrym#~nZa&}YbXorL#ID#=6rN?V ztZqxaD50mEiYw@Bl(g=aFL|^Gaf&X+=F%FRQ*wN=?h-(-$-b@a9z z$`qrgd_)ymq0_|h@|{P$D=#((_vod1f8&SkX_@bir_&?2d8FW;-`M%E+~7jlqTHsl zz8OOs6_wv;EYO6%RJ?egKNujMz`Qcmvml@^WsNmv@yF5m<`!OFtv_d9FOOeI@MBQp z@%BRQ$f>WitOiz?@^+hpV>EKO|Ke=F*1p2+2~+tVeAdmUiBtKk>y%t)_wKs`Az8^x zhJX<*oo;6iNMc$M{Bsa{T85JKD;Yj>Gd=@U+4+(Rf^lll^m`lgSz5}>Mnk?u{3(jt z7OCPP(n(Hs5&BubdVA57ju=1@JWbZ(^Au?{#dSqx=st6Nx#f6m#0Btg?18L@dpMqN zSOKY;XH{|2p)Kon<F}-&9OM9Tr?l?Uc4tznY$=6K8qi^8BToiHBO;Y z%uCm46!!ydmYEscqZMP|v@_-1`dVF9)KahJlVcefUe>>MDH(D$|64Ckc32OUM0{-| zepleRzIIfw=l2)s&egQKV3SfDsD+N)*D@c;uFTwak=}6PU@pw4|yV|j^<(m?y+N4H@Pzb)kRgwOrZ+p zJ0Dt`x|3SjjH|ZdbG>~@MgdF}MQh@Ou&Tm2V8YO8vq?qU7KU;c0x5ppHGNY`V`F(S zk%3e30TZ?T4*3-{XeXe@pTBI>dD)m^u-gQa)vl@S8>th`n~L!iJidI5QRD06y{F15 zo8S1tY|&mMxoAz{<+N5;$KgWMqaK<1NxBD0rU=f*g$>K7%*y2}H4yEXMDQ-`*s%k`caJT799!kL z+-(<5R*hd@K2C|p`0NXa*^^{QSr+ppEUESGGW7!?G`b1hzYv=`Pg7$0Mx$7+*?oY= zOM)iSS1eyOl44i{l*V^AvYI9{EP+6@02(*0>HTk+@o3xy#Y=^{ zy}a%NvTwSos)}qos%|xU8{zBAD=OJH9d&&pEtK)gv0fB(OL7PVs^uOye}*PR0u^a3 zYlS6HNZ@oi3Que(9H*cNy8wYi)zYP*PK0`>>eOg zOpf=ze;$tY?4=q6cu$4whXw6glCpO4%|kEdxpVx!S<;&OXWMOvDaljw(*F5pnc5b(xs|-+M58(=CpmWw7W&{(ykSVRL zfj!57Uc6|~9_5(>$|1zUGPI+jZWc89QgBW{+~BmWP=BJQ@@%6nW$|z+uaF$+pw5rc zTV}ymMmN}q8-spbl<6AwCx~k7W}mgmJ1JGrP1bDraU1lJ!|4>I0n9d>i@PXo#dIQ| zzb<0(twv;t%>=zqXu`6Yceu{`2wS;_NIo3^uDny1Z(r)5dR4T6wXAxf-H|ol%sqhA z+1j@oEc$Lh_CQEq{rLunxWV?Fe+l6cBp(YyLqiVu6bcZP#gSh3Q${g(PjHZ7Vg~j) zAhV}64pl(zg5w`h#t8Qcf-f7CcvE235f%!l%$P^tMod5g$saazuaF}kHQ*eayb{%iw_<*8v8O7($3aZdI- z4QA%`g$eTJiX#_)24#Vzk`1*5)EM#IaMm$AzYJX+AKi%a{9B%;1m1fiI+eW)DE~UW z@$VC4M#a=?=HC@Fefrr03V(F&Ub~>OwpP9aU9on}#8xb!Tw||_wbD#R5QyGjSQoC4 z7U{su$u8w{)&sNSxc%iYG>cVT<@TC05DV2T6+AI;;$!?IfMA9Ynsb4nIZWCzZw7Qu z?g8wfgvsMKFEqvTjwIUUwZ<5?J@Z{3+u9O@eO6h}Nh3T*(R=6(Ff@>{?fv}F zzKnmgY9WPVH;25Q7Ipc*V*mrPB%8c}`GGxG_OMexeu3~>SK!+Vh%W43 zUQVl+thML7r_TNu{OShcgp)tkNWB38xd?#qh3SXeZUw1ttw5#c|8Cs)J-GBZkh`)f zFU}3MB64UDf353r`#M8%>7gb)(u{86&ly8=ipn;L!w5EH8#hVl{sd#zlyB zGg4;5#`@~8+pkNPgG44N`a6b)bI(8B5H2Y9N?00m_v~d7O25$|hl9j{lFd*6-9>+h zt0?P=s<3=<`I4I2cYerk1kmPs<&rSovMj6#%e((|8hlDPe(@cUBfXUg`$k5z?L7tG zUr~e56Kh~GBG8~?foQl*tdcS!2?R*CXn-^k?C92P|AVv7Hew;eaClH}B}oMYtl;p| zg$9UP#3G^y2xqRK1e+y&cw1Y!wpkw$jr}3MK|Zw0E*G>t?c~urS~cqzUmlb`L;@qB zpY0pns}@y0DDBnXPASN`6|?B5yEt+u+{c3{Aaq@!Pjxi7^6H1}a;@+lQgMSlbAP=% zH?FZx^aDbADMuf}Q+q+P^G-a@&Guf{!DdB*FWQ%+cYP~ma|ySzi0a!If0hIf#`H0} z74M|=OczG?Y%KYyhA-Q8-ukcK@= zal=hXlu%uW&aBQ4n%>6Yjn^+WRyu93< zlCn4&<>gHtln&?z+C>cOf03=tax`8UoVS#}B)S9ns9lTC&R@A1Q2lV+FTt0;R4%A2 zvhhhR3QYY_raAY!mNkAZNEyPdfij^Z4@^>1<97wCS1OUQuv!2R~ zNg33Vw}l<-Ji5JXcO-D}o$*Sv9=~eX8QY^rfAv~SyLRDjV6p*G%fd>>FR{(Ut;tD= z*W4f3xwDCG)%8DtMi3ix!WI27MRl&U~6phLVD-}Ibk9afeX zjgllK)PL-lJU3Pn*&iqdHm^8>yRjqcHb_nuN$!n^4g}F6p!q#R#pG8sL4*hbll(z; z%`@GnX5Rj!#IR!}<14Hv_p2fMe)Fl4;b|isos1%u&2wwgc-guf`$0{)Q$xNgqM6mB6yT&{bEL!gW_~TaA%lj_aZjE~$3}33CS-k5+Z}Yz8gvnj1 zS>}A9?%Hn&AGy!8Q z2V!+8Q1Av$m(_L1h@=EMybGB2upqNDBZERYXEgo+pOcpU1~Ob_aa$3J4lou8d;(_R zRIyx9!ooiKS_w>D8`#RLIL1vwKtys8i8(R8Ey{Ot4WiFJ_%a9jaImnG3@hvZuDAH; zs}9IF^M~9wIrv8@pi!GkKMWw5SWW=(f;6@}L010U3*DbCb+1FDkPF#8wc}Pk4FN3YGx~Y1z=`=H@c9Dhpyku&ag$)O6j!tTUk5A?^=2 ztjpj`n3tCq{1IZd-<GBHN2D7uTZ-a@b<>3`sCFBx0AZB~2)lkFkXRL@whezYK z-{x)oR5+3?i5B)LO|X9z$CpzrLjA-3cXy2(-y%BjftImzLI*?cCa^%SKo$g_`)}01hd^KzZMA};E7ps;I z*BW>;@)}Y^Js{A%rM1)WKC~IVZ>}QyD3H>Cn_3;!Q{}4rEpoc%K$tE{fPaMB>lPk9 zw$nYP`qL=g4*#D8;7{5{{>&u(XDutA&;9QheLj!c=TZCDZDF6Q<#V-su9nY>l^OC-5o1{HL1QwXgqyG-uy!Ohf+pap$T}_q59@4u6#MX{7hA zA~?06wX2=si!ZhzhkkzJ=fOeh;B)1Cemamk_+L}UDfSs%t9y~(;*h^N9dSEc`P1o( F{|)d%`-A`h literal 0 HcmV?d00001 diff --git a/ui-tests/tests/ui.test.ts-snapshots/environment-remove-confirm-linux.png b/ui-tests/tests/ui.test.ts-snapshots/environment-remove-confirm-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..50f502833d35e559b96fe5e59b41423c5be71eb5 GIT binary patch literal 43839 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 literal 0 HcmV?d00001 diff --git a/ui-tests/tests/ui.test.ts-snapshots/environment-removed-linux.png b/ui-tests/tests/ui.test.ts-snapshots/environment-removed-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..149ba83bacac0e03c5e86d59b16d98947da52669 GIT binary patch literal 25899 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 literal 0 HcmV?d00001 diff --git a/ui-tests/tests/ui.test.ts-snapshots/environments-page-linux.png b/ui-tests/tests/ui.test.ts-snapshots/environments-page-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..a55ab2172c63b8eb1ef04b6e257ac906dec2be6d GIT binary patch literal 25441 zcmdqJbyQYg*EV`93QCGdBdDmTG)R{P7=(aygMc924F+8z(r}|7Eg;EDCiN zzCHc(95#IEa2Zj6FQ=?z#UG$D+iB)es4J)^kM6&)k69YAv%h3B*?`$u(wBR3^@8L1 ztJYr=u6+Ld*M@bw5qe?C*^oc_`)R*?*8SR_ zPkzMddw+gASfw?&1np&CM%No(FZ0e0{req*@xptI zb3A8%UX~kmD#gB59;+Y-ZC1?-O)TZU7 z?BW{@`!n;OGMZ0~=jgTUnjAT17SB-a?=0FG>C|h-sJd0<+cCE%V6+MynRO$We}3jl zDp1tfq^QvgSAVLcMB(b{nrGCLmL^(qrQeua3N85LXn!lc^wysVmi3e8L*=PtT)K2g zD|Y~8epEqx@U~JXM$ofm{+118cn!Arlm+b=7W>$Q+wzq4BKM^lwltL(yz1kl1Ba8N z9mA0lF1aL$)RoCUV|~o5FpXL(Sxk<%wf6X^8 z1B(#^Y+GfRrKJI7ox&mZ=r(f6%5^26ehfineBNgp(rUK#TTpR_=!;y9P%2 z-YsMe`?2}eJS^64Wros?4{kDNk_oY0i@%dU(jjsZquUT@(Iv^#883>5T3=t^{T(9R z*wHcDt7?|`B;=+>3yp|t%s{SzT%oD@O67@b$L2_>U9Q%T(^TBXjYSqy{RJk}cw|gk zC&x#-`}@BVpOM!GUVirS<#qjBO56jH;Sw80lc55=)(G|+&32n}GBa(_UfLA?)I5RM z1XOD?(Pke%ew-YbVazH!eb3ySjYx3K-9Q<3&B{pW9;SiL$Iq{3-ufaXWz%=mH#Z-DRXm&Nr1F3Y>$`61#cjgLQ+7xWK!6B zDPUrwp+p@PE3CqoQ3R(eWj@)+hD^Pq;$#ABR_y4pgyJw(#hV+2p`rd(EvMCn$R5nF z`+qK>7!kX_!yfT~T7Fm9@6XnZOm}orO~%?j_T4KnU<=w;O`Xsb_5WEPAy)1_zu;v~ zJE}ZCt)r_ukY`8|85xN-v@MP8?^m*2>c1}~CFP@MX=&;0<8zgTrTw*|h6b&Lg+*R%&8X9=(Ba`>(cyYas$v#xG`GoQkD{g?cmcE?zwJ_EZ-%P!cdb+N^Yb?fNa^T0 z2J>I@xgPR<`SJx7Bk1r;jwQNHOiTvLGmNX&G^t>(wReR~>4=@SqzeXv?N8zL=yRX|{fea;coS$oJ4BvBKifY7At$C2Gw`eddogC3OH2#pjJu7b_pr461%&* zS`^qggf!!Goe6@NS`zE!K~nd_LudW=n5Gh&#R#s~WMCmReSP6zd0k%~;@GYXH!bv} zQwlle_3`tV4tv*3XpL9B+1=YawN_Yp6aYJReSa~lD^-qx*6k2;Q4dT|7j{RU@xVs| zw1em8&vFg6!$lSnvHYP98#A5B(sa@p;&vp{3F1K?!@}xQWD<%n_0&Q`OzosQoMNT- zBTNr2)UcilXQrFY;W0Noq?)bIV&^BSJNL~=Au!$QD4c@XNeg{QAoerWrX)w!+?Abj zHhZMV)e$F7b(A@OW_; zvcIVf!}z9A9_6^T&{=FX%Mo6Fuu@t);Ym#)?7Zv1l+9B*(!M_3Ldk91?=WK86GEIj z-Cdbmd(PCnx7TKHh#OzxCJE1&b1uUn*4oaF!LP4RXasEij}CTnUv*xS4jB`6*}p(e z-e6XFRL|9?_E2j)^$H_B{kvEJyNhIGVq+C9(&;qdcdFR%X`R>ZOYhFIGz9RBHae}A zHyrM5>}|xIEaj`g=7OP4fG=Zq6N$E~xvN7Zrv2)*(jog+oVQgMPmwIqJq3=KMAXkU zyjsCY2kBiLtux|URO{q1R&<`a7Dcjd4X=L9`xgdBMKzOaI^PE`N6D^p2At4!1_s0n zg5f?rlWW=h^+||%u^Q@dvr8HRRc7f*$pVW){!pE=0tLw>tt#&dVRA{349tjk7nk= z;Rn{%cPo#!sj0b*$A344y!Y^6ciuHuDKsUhYK`QaA1>xpEinE9?>1~d6@WabsE8LA z7Z=QVeDHNvqI~+th8gGE`-_2bade*A7if>g>4GXxjs;r6Ss8BJ@Zh&u_?fLMo>{SP zB$4z{2&>8kheISR?W9rB z7R}QIkx(jz_r8RLzanbRoL4F5<#_?SmD+{|F93v&%!{sLBqStHo;>-XlWjf~z>}k0 zgH1>)=-sBTTkB2yNL)N5JiGy-V)duna_8{yrV_(7CX=E~C*4jC=pd%-9vpDmE-6vn zO{t(09X@^fbXj}AB>221;VkOB=Hnn{FX3g-JhTDt2xdmPNTg@W1l5&xIX{Eb?xfaH+6pGoUeXf zfz5nRL4gchG;}2&Edh=N&UR_`cCCZECdn2)Ya7q)9G`HU7T<2{5ww9@>sn1#mvw%P}4z0a=knnz^Rh*`> z$jKomo!cS1RC37LnmO8GhVmLc{q0+~wCepSjfV;XZc0Y|EO)XCyev?^Io~xMINsc` zO`BI|qf$Cvcg{@4mXa#ptMz3JrTDG#!s=#78m=%fc)`?k!kbBtA>Sn$cFDQOmZ-7J zv_?LB@#2!(eplRgl?((cF{u@OVArkJ;*M@=X`u(_ByzIX0T2CdIsJ5dW#m~y;N>so zKgrzO+~VWo`?Ga%z*9^V44Ed#B#12yr}5JS#@@x3B?^*=Xzg^CaJum|CNGf*>z52Ur|Cn_#}*s?WLD zmt`jQ2k+py~<8H?Iu818&`Dv4^L=@u?(YH||5X<;A#u;f;u*;xCC-Iyf!VUJmD z(b-?~Wpt$K^x*ZCm6g9HC0UNS>>&04GuWS_hlj+{#t&DG$0|mwMveh_Kpr@m-9QVl zH^+KjHjG)deit*LhM9A>SCC@yy;q}i&DRMB22M22^}8dhtsuku)a zJ}Lm-2_QA4^YPv+0(Y`1kD~xiY|JOeakw2j2hs{P?~J)gtEflIc%@{qKi7cBZp?*82!Q!;qFv7B(Q78G)lP;N!k6uRl6k?GKCY^o5 zCtT5O_|)9^;VpHZ1k|YhN;eS(shH2ox%!E{lZ-*7(gmk_#KGe zKhqUi!FT`y#5?V*+`#U5^7N?=U`fPi(VEV8tc(GP&ZaU`6BFMzH~(&6y|j=Adni63 z0cI~A(y#YkUQPsS*{}OpN^F;(Lhg&%+L~TS&)SX=F}U_Crqbz{YJ809<87>-qx&xY5gq};N!vTAB- z`XZMs1%SqCviAHfeC4iRzvjAAH&rS{gUs~WYkb=in=9x-i^X_p2&Ln^$oxF?+oD4E zXs4&ACl(j|VB%m+zyrum#35)gMiF4A5YLD;$(uKCAWT^`-3T`aFK-zRz7ecE_7oQO zb4Vr^dNW!g*mYm^q>&POy~|K73z+_EsPf7xHbPX^~|}&L}r{1VPT$K^ItW}9W{PP_GPLY z4&>Z$+FqIfA94Nqb)XjJetxMji${?L!+f0J$m1lx4*TRYqO}(F$S)tHC7-TvgodF%A8qxjQrd`e*DnLiiDjbVmIqI zVrl>;s^)gIg*H?#wM9})HQNEb=k}SGjwEofvBOf>)vQHaoSn-wcp@eGmv4xOn_j)@ zcDHQ@gSl-tx-kz1#hOoa&raz{_D=WF!}lYm3`|V^U>U^ZdCN8WyZ^c)-?$H%n* zA#2e2a$inqbx`Uoelf6YFSquOHy6kmt9 zA>2ms?n^zrZ09}8K(H>;UYQrRw%iKoJ&O*#>e;vH>9HWiFo<(e&?(;B+@$IW`V3Gm zNO1je;%rA_Pg?*jU`=rgctEPFc=dZ|`#uogO(l@xE$dB_XM~#~elRsPwL43*a(EqWb(2o5;(pb6wfQF$TPnwx zs1_f_WmHjfg*PvWf^NzF4>?I!Kl2-_b)l{lhl}GzKlkxplRI)ow*ga#@E*Vn3bkDr zX?u%x`g8=pjZtb#Qc_Y_N%M0*D&UQyFn6i z5jWwD*$%Jjq$%JpYP^WL@(jCVE7?rAqx;6VEXLB(;)PMET9pDe3y;7~7*I^3hlMH4 z-8wA$!Y{1L7!O=u%ureIs}vYF(FX}ukCr<i}RZ0R!p4$d8sXr@DxkN3CG67(A-+8F@un& z#6&jgydmkhy`((91>Q2(<-oRM3}Dpn*;x`=TB+yHFMxkQ_YHSoPfSbz`!Q)*EZDFN zF%O-Yh7q@N>skh7mHbxK9uXHLMLGmML z&*tFZa0p51CV$iL1}PCu`;D5(pxb49sP-aKtrk`$ZxUIOtF{BFJKuH>X83L5OMelL z?=C;PCF}H4udQZpC|s+h=2bVX-0gSoV*>ME_vHXAy4V%X^?HU+V{4&@o|U!Z^>e__ zDl1+;N1V9;bs|B`Ze@wjth%O#&vq%I?-21gJK4NoE^YeA-n{zIlg;qgbwF0Uu7~!d z+lRyFiHI2Z_y%69fbUd1*PW>@0BGQ$7vbgI_1ffFS2t6Rib0|SJF>0vCt&Dz!$ zGloWWlXl;kExHZ8t`1(zpH2jgnQ9=pd^rFT23Vqf!=MK90ljcy5|SE7cu^4m<-yV2 zxOK}Lf@Zc(9WLN+2z}pF@^NuXO<#AX5I+lN@uC;h z^NHcFh6x?Bax%A3Z&XkN+FeNvM@{7MQ3y zySRXV)UER+y=&C%{rx)|_)hy5ZkuhHr z5gAKQ=mw9l0rX}kFl~^xw?P1p6tH6f)vCu*jt~|e9o2v&;|;r#kZT|*-T)`L)<_@p zDJnDuFG%E=7fKYE7rP5Xg{;y-TbCf}PlYOKd~rKDo@Nm-8N8b$9k;S~5Gb%R{sxCu zYcS6cAwnVj2a0|!auzc6E06&}?nVsZn-X2gltrh_!vH)WYPDC}|OW zs?wJZ``NVRq}m31reg+M;kVjDkE3TYU#Zem6T||FfE?W0oeCPre@$L$yL@^a;dR1P zO|=1Q>GcktKYv~uvMXmGBG402u~H1cXb;=;sq1m8=PEH-&;5ME^}6>bL|4d1o0$sh zbhHn5F|AQten3=an+$O~?yM}IM?sF(Q9~rss;KEw2e7HX(2Ne?UU-WKAUoJBzo)0= z_pg>b#mAB>4E}(AZ#81TtLyf*Kd#F7NB1n5ztqF4?ASE6YAnggx3ki(kmF+|tS(0^ zbk|@uM6?<{Ru8_F@=pra^4}9k+LvFYuNtYfo2n0h9qI`@`rCK!d;$ZvsT{0<8b%n7 z!cj*&zq$vouy>XWvgOki;PDfytE-eU6rW+#_>>&)J@Cjs#>PrQnG2?xk#n3%*qK-4 zc$fZUw?X9l&@$u?Y_5m99O5yV0KKjr&P%)LOgD!zDd)Tg6Gm7H;9li*G$2hE3!-g{ z;j?EHHsn0XO&FIw zZ0zbZ`E)`0`aW-0bx|1Y?|7|jr6NdS5tzFNNh9L?kVGKPWt(!f;(!IB#l6TDz+j)? z)z>@4=_UZML(VBAQcXm4*Bho0F~$+oWC(5&5o{A>9&VSgUBL}9v%3K0L&_omL z_1#y`Q$q=WfUX%bt6WY!vjMkqxbxtVs3@k1A?{O21&}qZi>p9z5#Vyt*)4W&H1Rra zrldFLUo>{$Jr+8vs4a#M%dSi1;t%D|-|3<~Vxj`Zrz;sPjq z+#$Fgg+{xEVV}xAqeZpD-_A-`y;ozcrX9dut@>btg(5&e2iNRP7ti>MD+(X*D7`E$ zKdZ7~o9TZ1J+guQbiL4``X4Po4V(1tg*%kTi4e0OlL6wHfa>lo8#Kfdmh#PC7rPj{ z+&)3B!0!Io0WzZ+2+c@-tXb(AYJ?v8`h+CvuA%ITAWS@ISYJa!vg|t#imQoq3_Nm5 zdwT3tdG*7eZL&R_%W$wQI;a?Il;fnQmfAizgqnBKGu!GES1{<5?MrV!}K$ORU$(Aa#` zg{tl%ton?T+I&}*_O=ak(id!w@n)!`l?3*!eG)NDlwKmlb?4m)FB(Dn50FqI$Ql4v z$0%XU8$hj}Y!-WiQ*PmzUe0-W-TIt#c=<2n|O;3N2GT^zzrUra0t~_Kpe*9%aFF| zb3(BqS?If%r6mV2vw(NlOoxj$I61PA5Quyp-;j5>Z~?M2&n@cyawi^7?Vovua+$Qw z`3&c*NPpjRyqH<`O%9`ZkFDFp)50_1EPz38C{%&L+12Z@_;oql`O3s!B_;}FBmx8> zB#JCfBM=e!q%Iq+U%A3{KY-#)t%}wSE-q5sgINLRT{ZyvXK>=EM0?lp-ij^rs%}lT z>;1Il{}HEZZN15N`%n4SyK%sL-$#+1OcM{>D!Q_!x>~A~GUH!EhreT}0pY#MR+{T6 zC7;-;KJ|)pAWcPln)F{!Cl1E*f+2x304`A8PR1w(04u36@FU6c_;dB*b;5s-h?tnq&zPGUPz(j3S4}8T88s6rD;$56B;Jk6I^5AnJ=wEm+EU(5`=19O zfBhbQPWRvGSR_t;{xc(wnUnrij6$yYN+yT;`9DD;*=2>C;4~xd zS<*if@;G1?^3EUPohPiqL61#ds8ktHh$TL}_jg`o6N<4!c0`i9=1H-A)g*@R$7xeU zNF+V=aQ{1xU+eGC?lT9qOup+$U3!xJQU3FqG>g;^S8S7O&XJaSE}qusw%@<`B(M52 zF+~koD)<y8e-+!!vOSW^S z5*&l^)*gdwwU1h|B1%c+T*_Y)G7==vz9L)TD@^yFR}-`9JAEnmS7_fM`G2N_B(*-S zF_Q6kPv)=1afJyqKEHAcxtihc)$p4Cj|{Av;wIKHdj%hT>3ap(xCC(vEbjld@y0!C z8<5RZq@B7#(e(b$+k0r z2FEfp({6?j-)Yg6w0jFYOJuIZpOH-qEzkQ+v6}HT^;gM}Gd@cI{`K1<%|t`e3Wn-j zJp;T%QeOYDnOACVPj1nT48B!wSa+BWe_4IHZMZX;b|e~yV=2z5F;|@;fdJkkA1Sd{P&Qw zhs%K+uKiTKK7Qr(PY&#qkHmMgXD|h=BN0-ojrUxo^DP^aeY!CMq$LE4G*2^onkHiz z_736`&|4^LGukT6EVBoF`lnw0=HGSfI2=WmAwo5E zD{N-}*@NN|7q-e;gV23P(Z!>+Ffz3smWb^xU5n!JIvGidAt8S$)}?CY-JOhZkFMja z?8LBXrKA8>o}}=I(abM&jC3X~Ug>gky@DTBm`@M5FvWRQ@YkY$pVl84{g^&@w#&ki z$$^_Z;DNKZLjhK9ZxZH^Nc`L;SGJuPL&a!JyJm&dosA>ZIXpH_-IpYu*7&Eil$V~M z4<^nj@3rH$OlYiDx=JRx(7QPnoV(86)*M&KUmNSP$X=pKF>qFDbbpWcM8hp!wjn>> zB+QOB=GnqupUi^0Oug52y}LU8GDG?43{e422iqUSgh|TfGnK`5>VYr&l?qv@-IWUq ze-BDsEh|`}h|7GYSFJZ8DD*AZ;P@ws^Q4%;S4)IMu0pVJNA=geF93M<7{H)d*=9VE|$-tih@F0a{JMH?S)y}kn*A$RV_tA#$y zgc)AY$I#XB#7;>=igoeJCCz1;(s2Xr`t!3~6!xROiQ=>3yOq@rLp+4z^|UsT+fyPjZa$G)fh8@SMsnu@Wd?FPiAGsBlRJHPQVaIE)Lny=E`SC-2CgGVaN4?%f z!e7W*_AOjbt6-fkCd4iv(07uhh2e(}#f`bo@zXeLUF;Y;-+)K4*=yP{cCybE$`c-! zc4V(Nq*Zbk52dx2DPc@Vjy2S)t@nToYv`=iwT2)2V^+<>3YZDWzgbDS&yb@ud^hx;4K*#;%w}$FtK{zwC*E?q7t0pE#M7R zBMsaWm#`y3mCclUmzriunJI?_uDo?n<&bhJKak6y5i(2=Z@JQ{|E`9To6NXn?Ti&! z?vKH1`OCgTE@kdS3Ma%D(5+VX_xv=c8Jj9plENL?rN04qq47tC;_6`P*p-6r(lBFOT10_d_pewXH=w_sec=I zKBejN-7YV=^(XiT`#pF%ajP=m0h318;%;P7f$lk{k9hsAMVt4ThKW1^(fT&b&cf^;HFxx_mP?%;Hx-ZwWat*_rL{V?a4t8{tMv#+^wo3Mz4&^=T(7Ux z)QzxQ<%}%P&(`J<<-?0{bzd2;6{WebowX&8Ci_!m=JY=q=X}vL{#gZ+)zAKcE64zeoDtEYYER1c% zgC4Is&&U$q!uSd6X}4uMyhTXZ)OcN8!(8XJ58DJMx7?7o&;)hcu7#-eWrcc!?5pfv zu+Vnu8bJ~7iZ8`zpSY1KUv#?YMS`a6_5S9}a5AE5D_N6sokpa`PNO624cbr$?|{`` z#MX4bCw<{yT0zF7Ay<;?55W2zKW_cQUsQarVRyz^O+PmCatCwTw45ns$r-2ccr2CJaOWoZxaAL+S@5J5a#`j~`dFHA zBC=J#C8&S6-dv%39_Jw-rC?M}8kswBhG+X*i(atX8SPN@)j=0N3hdo|ibFdyZbF7b zJ87~$^^46VN7Fk^eQf>JagM!PQ3Z>yXt~Af=6ii;aHua@%~6xq?x=F!$(OKDC7jMS z)g%m38$l)GwPH(@aJ)TP?$AD%5F8|($62$cnC_+(q+TUYjKT5ZG!9i-X#EQ}gZ=6Y z*(rYysR{DldYhbS^2jkW_J)A;`a+H_`gpXN!?69n21Vz4RaSzAzJ}V9ZG(-&xAf?~ zslaJYn`7-`OL;8h$7bBgUEeZ2Quf`>$Z+<3{gtbCA&AJZvG=PWp+Wy0H8VXyK2{$H z@K!3*XL;?bpURd5Je*gMc6%q%K#uJ`y?KK3v)~Ke>S1bRU!I-fbxya}Vv#ME@?SMP z*%v#TZEv7|V<+e9!7R;qU8khO<^pzqEDM>bNYjQ$%xE@aW_*2(!PL>6WkKF>D1zId z8882V&!0M`Ehj9CLA~C;YztMUx$POu0!!HAfV{12&oekkp%ZFn^=$ZAQU3plQ2(D| z^VDqonzj8b?@uo}XCM8|1-f~04bcebZ(ARM5S5^X_aHKrOUfn6+;2#j~b= z0oX^6?)+dww1QAuPaoRVEhJmpn{f{Ot^(>{1_}XA|-A@(Jw`_Qka11 z%*6{A-0O6Hyu4HTB@3osZ8rbYpJYAsH!Mf78kE2xuY+37@0pp8adAO46KiEGmh86% zua5#T_0BmLli)#g_k=YEnu@ z{6Oy8Rq|-x>WW{lE@}NcSt-_veL``~GW)iZ^Pm5My6X7f!9hCxKbW@d#RP;R7Mz=l z5L)`Vu>tabOx#=T6Es$UM4&rW4u>u-t-{Rb8)EYm1x&(?gs5I2}^%XXI{B6-F zR#MJTKokq0TDo>EzWJ(FC{`7u-zXs3(q3HnlZX=U)eJO`qz&VMK#T>RAg>s zM(O)MSGWv>K>ddemuBZ^|E;ep^@v&Bx?MhlmKMKGs3siUHy~rpKn4 zF6|%&D2fILBGgcx;X|O;K_Fh#x4D>E8u$!!ZqDT5kG}RA0V^pZBLjpfQpCwDg9<%V z0$`caOJAXsG88~GQ47)mp{|<}5%&sBN7_{>ft2*|_0@smf<_mNMiLZdj0)e}pVGF# zFSBV^zu!=>B~ImQuix4RnU+C&3?DuPn>)PBQcPH3fmJ0PaGxxgK`7h^uJ%AND=ouW z&qedo_J}=y+WH7Th~I@lHUyQw#mEBSpTz=co~NP)R|G46n1wdl}1wLtKh3Y^#2~0 z_0gJ;&B6;RE+gx}XHFJK9TF*qv1i;&U$C2sWQmK3X+?CNu$a^Z>c|nn&>_@My3-Xqa-BOjM4+GpO&PlRDv|8E*wB#ytq&^`K)KI=6#Ob1 z+nWDQ7C$qnUcG1?y+I_r0b;X{K>kCK0BP8OvOdF=D=1$YJa;S{!Zo-q2UsX8g__Kg z_Q(ZWVERZvhO2HjA_}!HrDDq)UCGiQbBcra&H}e7OE0fVGJfM(7zhTNIW)(h$78A? zC>aXHo6AGtAdbNbZ#i34;d0;&76TPz;PT%x|5TW_S*vn^S=`DfY+afLf7Uu zRz^lYhB)VsrXwYtg=U%^b@v~A<$m4&{VLoP=|h>0wHy5cIvOVRl1rr{grsWJBYlHV zEwiX0;6X&X^+9wUP&^b`1lh+plmZe#lZRArp-dU`?Hf}T2eMG0cl-&3Mr=ZwM$n94 z-;ry0Y$qllPSWM-MM@QXGj-V2S=MJwDgEXL2>)o27QtGsXnif)!0G*5#sCAIe1JEng zK{ZlvQ3#9>Byp@z%Z>*XUD@{F>we>cr=h7yDZtV}ee4>vhH$nS<%gZiO!;j$F)wKM zLKL%F-!qw+F@ij%Ew~G2nt(D|WAeJWXe`%t0dRu1~65^7^nI`dDHSO1>xge zT~OPCZdN1m;JHTq^Ii_*b?)5pjpQ_NEO3Kzf@9AmrbP|KuSuz4sPE8Yg$NBRkGHa* zJ{D?!1j3AAi-yaf`@sNX&H=X;-W|s}2IYi(+s;;>W>=P`2vVGMb{2#e1oAf&)ZtN3 z4?}98hDL&*-wk8cY)1qqpyfnL7iMLcdWRtc;^3&yP<939){$Sx(N~X5S9)fNFH+Ws zh@j{oh=*!(#lgxH+)oFz4a1;AMe2B9M8mnpAbQ>zwjzQ`4x(k;T5}?*an@t;JfmoHRSA zzd`RkZ&+;gWms-!bu11hA&bh5Q8DwnkWhK;&V9Y@d26&ly9eiptKnEiqH={Z9~L%# zl`%KgcW4&~q!VceMI^{?*IRi&c?Xi##{51F)dfeuDNv)H0Z}LP()4hagDB2=slSu) zR_O<%o&jwx9M*Hs508$7y1+v>gG|~GtS7RiMDv-nvY5gbgkM!Hp|d+@U6s zt=m9|0t5%)LTeyLFLC9eC}mCL%Fg`oqVJ1BBg4~6v$GBUl$=FJ+e1jb$$o!6xg1fQ zIj{Y|0TI+Ms2yMv(YC@oD_6P-Ax$F&6;Rs?0BgTLfi=2XdD4!Q-=J&+>x1lQknDW` zuL|8!k&t%T4O`$`I^N#{O|FBhHYssx8@wT+=LOx2^+LA~%p0gdWl~>HfyE%f=JOg( z6iA$r{!1gHJ4h3j4+DDbZa&f$2XVjvG#hy)Lt&u2_!t^0inN44Bm%A9H7JsP`0(MP z9!!$}sOn-(XqrLLMt8qdI10h2bbhgw$rTP{4Iw8kRUIQ?T z+GUB%!p_c4L=Nwssa^`;M`r%@-MY*-q3WhkBNseet3e%tOc?Do2Ri&5&^u|^Pn?yG z(?wc6An+y2Cq<3J&kcUOJu3)43=~ooN874{1tyDITABkcX-igK2QGp`cS?`I896d5 z4%)r80J;{m3ZD3slaXOjQMk|J`AR@W0}T&M*@)WcA}Q(gUMcK#!Gon-jSYyE6K@Gn zBlndtQ^cT$TrM2bn6dOCqMLyr*1+b!F37lIq7B6CTjMgIS(ltHxtR{@7>GGcrCSGP@@GnzZt&8Gs$6 z`h1Do@N>-Tgy=dQ%%K~Ang~tGMrrIjbwl=eZrii#9TnPoGYL8&85tEtArBcc|Mc&iCQ$koO}21zLP(wxUXN z6^Mfe8%Kz3K-y$hzC{KArg%1KQzA1!Dwzb=?7fSN%a`xHwwONXRYpM;2s`sT07Qjv zNYyh%~Kmu!DJopvwU^o2d>L-kuVh0 zV4uIAUxn@>kd588`LqD#X?P=?d!Tmh|E`UNbio4H(UA1MUB*-Nv#6$XQc^!RCues$ zT=Nx(brJE?rD8JBYr`%@P%0F;-Mh+GKjci$&W1!sKYR7+7Rc*GkU!v_X4?f;e|wN? zjD!4uF}ro3onpATv` znZG%#$7DvG2t9ukocgU=P^w3O3Dl0m`88o!7!c$xT&G<-R4>!lRt8`9+gQ!akH72S z+m&gDKU#pkw9%cCEJN64Cu5`KI1ciCL3D1+Oyr6Z#A5yg_aBgd(pHdsB13=Q(+@-q z>WUQ}I>+`~QR>&+h)VfXPvYOCyBnzpEzH^f6k6+IG`ENjdNMyo0YR)jsblwQebDdUmNESDCd!PTV(@h7a{0i z3E=Z?#nG~vIK%@ZXH87ynoD(iySvC*6;=XZQLYskJGf9B6!|)k`v4|t1nGz5=3*Z! znBtU*$p*N_Am}6LF7h1*QJycf@~(z7@oYFc~)#B5Z=#6nKn{?KNwly4+o%f0=DJ3w3YK>hOf zLP1r_mRxMRO$|lV*KETz#j#bFRVPg8*bxg@x1!SaR+gKPFCg>%&G~G=-1di<23;5{ zSH<~}u;th&msa+MM_C%>lK`ayAX5{AmNFeMlTJ|k6rCI&EV{&@sE}5mI!c2WVhG1p z!=SXwcQtW_{Av;sjX>x=s)KEk0C^&GaW%|A3z73i^q4=ik8*-k<6>xNsKsjej#vj; z2+!=TYQ7OE$bO%fLHx(m&>gdBxNP-!XRt62{krN!a}mTt$`WzHLfH5e7og=pU|4J` z(MUDD0^c4wOOSTr`nH*`oS9L+!^K&nAi7b{_&bC;&P(Ww^QD5*-j0VM)ZgZGv(Vi|C7U65q6Wo zydnrIJ54*?kUH1`PQHET&YcSDF-%GgX0Y?d7ueZPK81#ou4ET64;?sWZw*+M<{o93 z9OdWd<>l2+LGP{~uy|B)XD$;1ZtF+xHno)75vX0`DGH8zBE%R{mh!fv)U-6;J`E>k z4aoWCh6>HDeyVd5QTn>yd-)&=ao^BejEGZw;kr6Nvy)RnB7xup?}E^m2C!Yq7H{cB z1wGY3WuzzftDm2XAnVrwJsKoB#GtLo*81^QslwS|Vl+{8^`Qw>O~H04gk+!qhM-Ma z0gx*TXsO#EL)Dm|bt~Q1Ag7Xjhf@W@Bxu@HivgvIhaTum1E|f)ve)7q*T#QjL;jbN zlF~n+B;Y7hIu$5@JPp&Y8&n6Qjfdq&-qvx1+`axA7&>CLoCfXw&`8TJ#W(#)rJNh> zyxxQXG+PI4e+i(HferG)9(uS8k=(8pRuxf2vYU@rQ7zKBY<60JzN!|y6&bylzc&oK z9$YIeBAy#IGkQj@W_}-{%oXTJq5?GK4O=7DRM!cy8*ox%^T{U~(CFL=Ba0AnvPF-k?rGf}UN1a~I9=*UnLZmla7qoyWyW0k$rE@m)|!!A1` z7J%{_04m0Ve!d-=4H2=;qM+?VP`jBxq!iF_m<|O&{SJ3ruE0TF`Kmw#^tmCkWcX=d zw9jwQ^?7Y(ZH$SF$;coi-n2-^g7IisvAL(l>S+1Y7cW|0WS>B@3%b9|!3q%SZRkQ> z;5|9qC@dC{gd`363G4V~V@RN#Q+@&iom~w;T#zBU*^Jqde#lvQK^a5|`HJ+g<6=f9 zbivQ{WofFxu<`@Vv!ho9;)#!=4IkrNwtn7<77{?_3&@#3IcZm0y?S7AfX##VC6aOUOtWNN$B>jh3rnV z=xdI!WGp`y&_>yiyqN|NeLnTsb|Im>xaAfqwG8+Ni#~O`I>;7upn+hL4z*N^_y_=( zzCI)jy$1|EFjeW8Ma>ibw4r=@S z*vawE6v(Cn0YOw~G=TEW6loW>7&J`oSu8>=QH7(h;Pje%^wSr$;44bY>&!jm>thMj z8TjH}`@izfZ$-k`$}meV_{hCc-MNnE-2rKT3(`jZ>CW8U;A6*f3OPLIf9?MNZ^rgN zbFF*%c%%W^2O4x!z9a`%_cr9fR!2K7q{e0zf-%nx7hA!`)hg{sT~0L7O(C}~`;wd^2Yy5Cq4ZUPhKnezK3*)izk$vCuNy#F^x8wpS#S^oSx!B) zBOp$wxur!H8rHI5XePpT0M?NHQ!zm15J(u4BqA?rI%7m9eszu=&hW5nRk`!-&m~Ni zZL~A0dGbTtM>tE|sTcC{b>|skELF8u*9VQOZ4OYN7{PX)V z;+IJo(Dph2^z+yH+XMRodjn$Cl1g)J=&v1Pg4}9BiJkyAhvxXTWsRuva@{ki?^(pC zQ|>Ok&<}bUA}aEBraOF!Y8IlG6 zN?VS$E16)Wg;{V{Vh#;U~8i3By)TNE)F$)9XFPk#P!$ z>MV9K$Zzo~S%D-xtblyPeA;A#Nj>L=lsdVHz zN(~LU=EJ-6Ml3=rgVL@Q#N0gS-ssKJ)J%5C2tZyF{!Ai18#&$rf>4OJH}7nW)iqno zGTQ=E^#aul5GQ+#(b;s%WW#s6(ArF@4t>x}S#9j6QT>Yl?EcxKIdKtR$h-xSqdKTs zz<6lu>NJlX4D|H$Cf2){^WmY8H0Rqxu*a)JyKE1rv>|P&7+^>1pwf^KAFtyTeqw5( zIIB#zkdq~_0cJ|hQs*)gX)u{lIO+?E;y(NK?Lb8n=ySC#RB(~5OiN2+6)Io|B1Tn> zUPqlq9h3pwsRf>G3K(U7$ZIc!*@07n9`!DO3%8h5i_Ep5E9gu8fNf95$an3B6KLC> z$^t=EV{s{1U>S9w9>eaqIY%Ml z>YP!asisB)9@Gy&w;&*~@6W8pLLGX&N>*M!dITw_E{qYmtJ{2t1>jveFfVU-{Pj`5 zSrNi6j%9$9q2WHM+N!{=%qVwdyW4gI0zG2tQ*AtB{y+gDK-fraT}`v$9O`rS1@LTl z#r!FV0jOqV8v|j6>>=L8Z@CCy=malcv|KP$P<#voN&--|>@dM|P~8A`a1$<*SzL~@ zsHcQUp#fw(GF`mdEV%ekea8kahBAz1tzE@NtWvq7O+W)75Yvb!pMpb!Ob~FK{i-vb zcgml05{SkOOqt2$tijAu=6rQKXk%vAsr9Ddw|?ckm9Ba8D{*Se#vg^E@{3P18CiQt z{tZA=(BVreB>o@w^@uxJVP8SMzkU;}1mK4bK$!ot|5>-i-snrpxS&gcyy$0i&odNw zP2GP(B;zl_Qe{@>+5Uf-gzFs8bi)g!lF4tm?M8E{KOe)UfKRC*7`8>HD0v;^#Yo&l za(rYD?(9?a979BG03b^Nd9)wYKiz`Nf?VFA&cSuxqoF(Javbn#NC%HEgiQp!AnlV* zF8)TOq@*%%o&rOxwJc;i`v2uJYGKGw?BOJaDFcxMWh4y<p1sCh{Ir8=pO^BGKEr}-U|f~msbc2M^h!NE@P5Tu|Pdz}|D zi=D=pft`QP%a{EM2k38PVj6-{82vRJ$j7#Xkr4oi$pZ!C3*s~uk03p+gJUeFfJyfb zWmH_r=i|wPghL$M?L%oO=0g#=`=?w==%gnane2NC$uXAA+*4}MEr=YLPFu#MhTtwEFTa&&xpShocVcXVddtD~0tEa02kz==2v z500i|nyl>16!jz1-0y)Nf0ZDa3}BEkkQpKKq&)yf=IFw-HcZKu_wOQOHA5 z;4whZ)InA@_*2doY1DQfYgBS2f%9wBB%+l9nwLA5H#i7v*rI#BS7xbPgaHt@_6nlnk=4Ea`DvB zrT@nVEhRxumMCyvI#uqcFe9t3JQbJ#vs%c%D;nw}crA2*CcE0szxa)UBUP~~IKXJkgOijxBtDJ5{S|aWx5Rv@; zx!iP^;{O`3=~w_93R?U@^L%eBIFub0U!9@+V4uK$Cvfj?!NzQ0lS-!ejNwM$nG~W* z3C{Hwj!pacenB%|7w~`zm&t0q##>F#MS>E>0kNnp8G^vo5IMl@bj8eV^(D)XxV}I>@4#?@iHT5@uo7RA-e$BbZS1cK( zO__28nA2X_2!doE{0FugW2a1+a;0*P75f3uTmdkfJ_fd73e^-q3a(rPb{atZ&abbp zy94vxE1NiA_6!Y;Wxoj=4*^xwz_C+t&@}z$B_ItC>O+As2`U?at!GhS<|~z39|wu! z3l={`5af$MQ#|Ub(MTbG5NR|`0`t#s86O)h3Py{9(V}29JCie;Fx)DFblt4a x3=B-)L3adg-~ literal 0 HcmV?d00001 diff --git a/ui-tests/tests/ui.test.ts-snapshots/login-page-linux.png b/ui-tests/tests/ui.test.ts-snapshots/login-page-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..10bc901bc48f2e3759680f1708fd5e90c8b6d162 GIT binary patch literal 30095 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 z z?d>_L=ZQ*eQ)IY19nnpjMvMogIE&@@pV^<|147??45U#RlBFsdH-Q z+4~F#!SYa<$v#7D>vo;KfzGAdtLd)61K+gF$UC)Frq$02cefhUkT-FF!k)cZb9{o_jZjH2-fsQgI?4HI+$4MO5VoixvVnRZ>jA{$~+kDLpIn}th zsa>BHKEJ7koZa8kVw-zQWPOWzj6YUMYv*|abFi|?`77pm?O6d@oUuiBl{cWojyCvW_^0hBOq5Bl3Z*2}+S)BjOF{E6Q9~(?L;? zPu*dp_Qe*di&{926dEbEz^5(!$Uz-Fy6=7X^TkdQL$bidl2c(5m4EZT6z$q*Tp3H6 z9JPQodA;L#fQ;6gzk-D7>qm^Z{auy-_Yzy4W6WeHRZ=DKthXlf2n zp~WO67#U9q4i&ezUu08w7SfsUHlZ!9sqg7*Dav8+ASvLGyzGB?A~wgn>xKiq^sPq1 z=>bJJUJyN==S`GhxxM=3t)whFLn8kL9$+a-n8s(Hnmashv(K})?L<{MB+@%f6j$<; z+@+3b=wSOQ0-NTj0nwoMg5fKdo~daV&_16%R39bz3?q#+BU`g_*oK9&Jj<)hd>km5 zRKNYIyC8Bwo$;g&X+eCT!ranhtLc~h>-QxRiuc92s&7;{yMmnL6p!opxJDiuz zgWxO(6}$(Efqsv_lQbU56_T$!J-g{y*Jvf}GW_Dzn%`!eKUn0VzCHwPgz4s>hipb~ zGx5;x6exEN=L8Cg?0KWmhXq|m#Bap$&MCJA;3WE478%gJw595Cl0&ewrj(@-r3s`heYbU@YE6QSM+r;v@rJEe5T*h;w+sGEYj2(`^y{@Sf{BqZBx3> zjf?+|k14V4cnrg}6a<;qLbTF{1`(D)21G+GdYCO6eBr}WX%}djPvAN#S;S1xl29b} z#ATqqGLv=daZBCMkmPwPu8T!7th1<_A9SS|+`nH8yo~8K(kNEjbiGTEydYs*VJhA4 zjjJ1qmZ?=l-g=L{eEqtPFIPZd^OL;w$y@0?h40ym*oInFIpk|cD$t5FrzwMt+cq{h zswE1u2J}{a`^sT>|9;9n70m;w0}Uns+cE4~`UMfQ^yUUtPZQvyO*{`CB=*PUz14X5 z$WS}R;LvX!bri=Qp`2^$@D5oKgfX=%mtX07(qJy?UB6a$G%#Zy_Wpput8vW~vpyCK zoO;Hm3AKb)mh{;anw+P$H)^HH1^TqKd~Q=oeE%NUb479SK(OMgPNv?SW#IAje~4Tu zu=`zX`bCu0e3t1&jyxBbyoPVh<~N=9rOV4s)GC+wFy*~BJoc0O57O3l*rRqs(ADm;|Uw4;)gr zALQUx2*Jf4<@Jhd9QLyJk& z;vy^Hnj)55rx*{sSIf(tczFwoA1zLpm;x3HTm}gM-Nc{rb+K`)g1#c}UTE=ADL!5f z`Dw(^S$8F?+uq?5%gYnD5|nIw=G0kPQ$a6~Vf;7pCSVHW(V?m__9hj1I7xB-a)d_| z@OuG)b|^~Y0p1fQk|wtUd!YK-ezBT>^>yA^w@FO!dIUblIPYz7CG^l(FOt>y>|Vx&E>FP)3KT2-|8hML00|K=^v>p0%ebfY_#m? z6=*(~F)JL+^}XJ+>+ph2s+vb=wTv_`FnVHZ0>Zs&P-41ZrC>9#z{WjB#(^Ay~km4 zKF>(hu$*<8n8 z9E0ZuZ6n|w$sowX?Fa^#ovpoHtl35HW#g5<2hQIzvj(jDwtx}?@oIx-KE}o<$vp85%Qwt~D1t0Zf?!8*!lq~O~kes}6B`_6l;!t18 zT6`kH!yG)6AH2KWZ;_CP-4&L@|IltlS|FjV)EsRY3!-x?%GF3@*S^7!x)ly;p(Czu zhBH9ENxo7?V~<*FxIsJ1ZUYaG2!?N89Rbp?Y?}du`u_Fr$AFbQ1)O#mEEOjG=KG;$ z`(q;eL2v!MTKmUG4o6nT{;GlE{TU4x^)L9XuYIBg!&}oggoK4_-%Unp*A$+YoM{=C z{MGZ;qrsf54;emI>#_tp86YY4b8$G&^F{O>z;aZh1McR5%z&Fw3F)C{Be@*W11>YEIR2S;dqJ#_w3H5#X9bZ;Y}8`>-Xnqa|3@C?@PyjN!v%-wPw{Nqw%~*mWs(Auv z+bmHDXP9@N+wrvH5*|3HotlOT}Th7>+N1Ks!dNak7@NhLbqM?_{>d^@h=0(qbw%lqytD-6EiX@ERD+h z!%{>X#tTiVMnFd!3YdFz`ppNFiNLc{T)+;6-|~J0uv1+I$gc(aK`|{h=ABWG5HvFt zJ0A=|AxkXEy#u$`Skfd`)yPZz>KK0?(GgnnKuA|8?W^WIAVhpjtpb(e5TR2v&h*dg zzg`&lM~~t^d5Ym%8MH|WbODO4=pV#szkg@|Xicpn1?YJvXfym%K%o0BcI%c2@QRV4 zj@43^jI^B?jG_YqFw*|lRmjEBDOZrGJNEv-YKkco%BX?#WSX{@dlyxoeI&&?5Dsp; z`rip@ErnJTb5rnzKF;YZ{lyW4Ol1m9Bmq=N4}7YWvdsnHWvhD9^K0ibMfreyW|8-m z2;Ns15;Ep;8Gt9r;9kC+-qz`rc5mkUd#{b5TkbI%oDY%36AhHKRW&j)V1RJ@(cj#Wx6!TWCsfm95BZaGihbyY;2 zP3B1iP5*dXD+xe7hl}}cPV3vBwy z7pN5YKIyR0bec~aipqmJhA$KGJLcrgObOHex*B(CXI6D7OAGAc# z@;07Cz5Fnx05pvU+H@JQu+e2MjxGwX+8P_b34&FrT73&F-8)4n9QAB9y7#miWP-5k z7J(Xf@4jGDc8}1HEfUDLKJx&HFSZgWS(+q;1xWnr-Fhz}E-vM>U$kp8>Izby#MwZT%GHuxE0E@)85>>JwAWkFxT#s<;OpXb0aRC2Hm#T6o zr67%E+1JkM{5PmANnL4PU9QCY15_Cj+Mw$<{Q`udvt0$?UX%_b^=w*t*`D4Yia;|@Qv>u7E& zkQFrm1f<2XQGzCdouP?mG2NBLaX-aKYQBsSwD+C}-0bL%WGicXg2UCc;^Jc&M-E$3 zitkc32j%mW6YSFv`N;>0rWk+k5o}~j-=@xC*$)wUDc6Ii0%F}07`v>(00j+Nwi|Z7 zvVU5qmJC0=4+~DHkD#*|5%TZC=Bqwtf zYs{{j?hkrsrQb5UZgHj1GH6#n_B=)ns4Gc;A!s5dIX0@yMbXUN>E&mvEC*kPDq9Y1 zY|8`p`A+g-dZs*HBR}3Gpw1Aka^`Kv7+P5yAj`<|q1M18=F}!^a&O-4_T~m6k)}Z? zWhrT|Msww`W?_eWVGV>Od7NkF?@3A0I9Czag5d-mRRN%XYGsORGEN4ES32X&(d1Q& z$Ddn($15WvC5ZAR$EeYO{L0~Qs)T}Lqnj157Lylw1vy7Sg_wTh1y}DJ~J1W zIdIUfigN0I$PhmLej20?^?w}?0X7i&6umqI1SSB8uP$A>RQ&t5?s-nhJ3>YkP;d&t zrMaad3As%ichgKp8YXr!L26W)sQ<5G#|ixxM-Cb*f*C;%A#*+Y$>m+AC1b^#*4eaU zK`rJcD3{^;W@u6;+=4JE(*cYXF;s4Uj5N+-l#Sf*hV3N@vOrZk&Gb{#{O)yh2msCl z4q!kYc08sDAtGiP21=|2N2rZmi(U>>jG8ot1u2ER1{dG__-;Hg#p@9uMh>3K3>>#F zBTuci!g6wWhwJrV(E-!4U`826T7WM8rxr5>n&}Vnl`wK;TT;WIn|v7PN?>DJg0|gD z09T}Cb4@D?c|U*tEeMmNv76iTieU=d&11E#yoBJ5IkCot`R6UPk><6Jz*8BfkMz*9 z(@X#dOhCKH08SV+>P+W0LRyHB@cw<{!C&e18tY(Z)%Ax3nV48v3o-tT4+mtkHew@_ z7lHB%g+S~OrWy^|WE~K7F5?AqD9455g4Pnvd7=kW(aZSO74(6!Kb+If zfZFc9AGm_4N&T8q)&02IT8QV-Xf!P8uThN)f|~qOMyB@3{E&!CCK?IM2wqhi&9LhI zpt@z-DAw_1&-qCLmxN2{UU$Wm?f4>%lobIY~ z9^td(=jL9EXt$`KD5sRMa*4d-DJUrDA`pypqFKvL(Rf52smiK983R`?H%=xx8kpo{ zwH{g;#A6f`6VsCBb`O3juePpYNlNWsGxR(>H0p4!z$lQ$8Wu5^H3U zTmYHxcE1S@=nOR)S$!OXF5x}Ub zYRy3x*~^5y2&kC@t!?2k5Fzc?H#VRcc~@LxmUM~NGl2)r<0XetoIEz60vEK1_MaVf zEbAE4N$bkjmO&6cWZetPWRrME8k3Iiu^pU&D-En&yfr$;s(OH&`n);Wy4x6Fr`QCC zlrcwdZtRMfQU-0wD-z~NjDqQ~YsEG7H2FPeXeC6c-MuULO+wq$ceoZyVW`DV(riIo zEF%QFBCECqOR4i+^UlvVmsJ1-rTd94y%zoq(qVBUHP_~ zl}nSbcRqUGlhY>-nmwDad^JbE?GO3Lg3VE&RdcP#nPb-`o8!}hNcKeom27Fs&Ya_Yxf0R-zz<}d#!ty{`y(eBwy=sBDBe8 zwTFUw?&oKH*5vPt@m?$D_cCL=|$=j{O>sCWvMI~9NK44Y#+Sfr{U5j|iJU=flw5rNIO_u11dN!&1AY%KW z32_cAr)PUXq98wCP;|wsrIJ^;yw>Lso&}OP9(B+8U|t=aSOpIM-+g-Cq+1WurPVrI z&_YTFQCnQM%f$;MUKLit#+LG8m2sa`)Bu*F7P?l+cUt4XsRf#@2gwOYDQw<*`_yW> z)_G49v-{1z^Sc{O0(kM_$QT>Spp)K0G^n_LIMOMLp5L$vv>rIb*`lH zZM@P@OoqQ`lXCNlGw8tYuU-uv%79O-j0LG}JCC9Kkv_{4@gj8HBsq}FRWciZl#c&3 zI2YD6t!6(kE-_rC8N9Royi7e$e)Gq>mP+ZCmIp)GK^zY%$MfB>v0l!MfYN`F`R1_H zR3qg%G7svGIGFRbq18_=zH)H9oYe5nilN{0zQOgaEq#g$i98|ECbhiAvN@Atw7I02 zSGi;=SL;|Aou2FEiu^>+AXw-E8>gYkC`mR;X%EiS8E)SlAM5ZdpH=PxhmdmXHHV3t z=CS9NMb!PC-*E-1;X>Re9U(=0B~4SvP#3EosZ3W`la2P@;h=5or@LP_7uqNd_fl@@ zD3zA1_KxI!?V|afpVw+JGRa)2)^X^jxymW!VwoG-MgjY*i3}nIao11QbKY6|TytG= zWftzGLs4U5)7MuyN$wvh&X6r+W;q%5WX5l`a&xSi*{BhFJxnqGZM^M5&WpTR0GiA_ zYz~hPGZFb9-CW#pj~_<0Uky}pHLVLer97r~5eQeUFY*$Sk}3h$Uc?Jb&rVIn74=tX zwwROvSI`62CEC#X@B$a!f@tWx1FHWyPZ#_2>4n*{2km-o&0N-xPU`pqlWT)pPisPku^;0WNd6;JN)7gGC>*oLeL8M&+Ep2o-|MSpC`?q z9uN8RX~^6E?7#l63=API?e82Pb{u*Dlv6LbK;ar0Ei{}*=?kVd8|~IanWNR6$CTd{ z)x865GK4;icbF(|ieXorTJZpodH&1X3P6F6WJ=erh@hD?WY$G+dPU#u)$g^n5q|?q z{nP<&9A=eC2)CGsBS2@Cu%64re*a>*TGyNwMlXY|I$9FHh6pqkWrrHD+P>j}cl zkuD`ZHJqG%WEypbvY)uDOccrgK89e5q4fH9*s`E@o4`Jhy;U!hpeUPLX-Jl z@_7PxhCQM$%UYbB)7CQ{?PDhcQMeeu{fUz&_Z?~dlXqxSykuc1Y*Dy#w#9I{9}gx}w1vkC$?`sE3*R#6Vvgofr@fbKk(wJ{ zok6hgeu-`q@v!?>_Cv*oGlRK4f#tv+2S3LPpze+`+MMaP&BD&(FJ`ijfCtU8 z9hSEk>~au(y-7Puwv2&f`s{mlcS#cjXt3!(F> z3v&^(JnE6HyB1u%=GmKGO^sd-6*DssaBS+?vcXQ)Qh>V_0B`Hdsxeo4v0|Px8N+D} ze`|LjK8=pOmtzuB7c?v{28Ve>)xr7w`pjV4`Z1s9x}b;x1t?x?L*(-Nc~DtuRuq;X zrQ!CYFNo%{%#m?ot~ZN2#rMHpi$hy?12&;9o@_+M?e^LPt%kb zgTlaaoCRy%_u;I?0(YGyu+k{kLvD-=nRjPrX9<wJN~C(D+8 zw1gTSZbwcYKCa9>!2VTXs$|4SCRMH>AN2!0f>&KS9cn3TTG$>=!P#vTmJ(i3mZIMd z(oVl;W>)s=U`lN-kjZTWvP%OcD5c%!Il@Wrl?}a~5$<&v-3R9{8|x~fC$j6DuX)sB zAQ?i2m4kp;*zZSPN7>FERg|8&t0+4MEb6DkHgt-|fsK2yNyAHDNzyHUWI zDzS4~(4v?M^2(lP_1M@YkW>JDEKQLpg4tTX+>^RjkQ7jJZ&fQ$J*y|9l$J+Wj<|L- zhD{KANe5#jADRbCIb5z}>Y97jcb($cAtNNZXL{R5!89++PYd7V-M7RwXTLN)UF+5l zH*H*2Ga{7*?>_+0HZ(En>NqApEoHZoJk})US<%vApfoUAGf&=Ww%^?n0XPR(>Ivra?}iIMpa1S)1RPz|ap|R~I4#hPn?TC#3z&3VNDYSU?4cLmGl7s+LKcD8+vqs2iYp*nJM*$`} z;y%v1+`Eqp{ zTg3FP{UD=?!ozt4q(rp%biS1sSLLpgMShK0g2FIqGDA@kksm@AEamJ`1QyQF+rbDI z>nL3ugc$?C_$+ft0r*y{GgXBPYmrc)rK_9$>sK$otSqnDUMW;i!({Nbfx#dI_ySJJ zl5kDXeQ;@fCem@1`ps4=u}7%LhuPdKCAE+7@Cz~h(b_&p=;VVd`*|dA+)z%*h9|h^%x>Zy= zizYCkoQo`ioYNvsFb@x*+d-?!PxHOlNcjw+bPhN?Fh!s15g#Y!wpPM>L4`E zuhk=zpUg~7 z*%-`F-TQgWrccqJ0AuWOyQKrZxz(~QG~B~{`7>mcNGf2-f_#mTQAZpFG7o{UiXee7 zS;;^$D^}TK1_|L%h}uD3!$#}C_x4kBdlM|JsvGMRW+0VlqyUKwtOR=8d#+m+%Fk7J zYR_x9U4j5v`}x%LO2aLkcF-M`3w~fu^|VzWeaH4?mi z+mrAWmy(i_4+xoW<2T1dGrW<0?(=uOnTp`YORRBqfWTSS1&&tdfX-gsI_K29E`2fo z?h|}g)0a3n$}$z@8dcd>CQveJP1jkpLSuT_?wb6{?GH2p6(QYrQB!&BqSsvgNw|>S zwTDk^RG18mua>|zc!*4KxouD5$0zr^Cz(u7J9u`J_|r-0uRB8D>& zL4i;Sv}kQc%(q}hDymII(&U5R(tb(D-5{aPi8@_PsxT~DaTtUQPNwI9xDRvuJo^Cc zzcRomgtMoH5x`E+YxljatI{HaW_91r34S9}hl6N;}8so0^)=p)4*vXZ9)pJ$1o{<48bm3TezBCB;B4 zV5WXf#5mV-}+N#_9*%$shvqOpHD|E*??q|=7LwS;o*spZrP z^1&%jGBJrj-W9U)U?()29OF>(Fc*tT&)*)jgRT?~_}L9?B)@;U0|$uixA-+KZFj|~ z$Lzy>(91U*h>;_9A(Je(QnmoSoqUNLu5|7#I-D!iYjZo#v7bGeavKJ8Pl#M?f@;j= z>_%^ghX~bk{trPG+^2F(t!r>l1tbDP9}g4@%8M$s-%F}cPtqQ>5p>5D!i%D?x5%4W zZUv2=(?qlT7cKlXXkP@`0<>b><)52JKF|~!RRSh?k#M<;mfnNxLg;3nB^>ouxAjyL zY|R`9R%{YWdYHpc3Ro%xEq$d{_Khe12~pAUZeJ|^o;e+3#c za2BhS8QZk}KiWI*s3^8<4;PAh#ei4A00@$U5)?s2q6pYXlAJ*#C|QDJ=&J%s5N$ye zNlIwRiXfrMsDR3q+(Hwt4M=KKf&_utr@b@ltyycy9)oIp9hb$EVsmX#Cq>my22$iNNAvz!v>TYB2Xlj+_Bobdi2nRlG$0DuEHEYiXZBX@`CiRr(e(i|y zJ|e9JvCG^$J!ONu@n)JBth1_#rQ1jOzDDS#zZ=WiT68M3)x7-My2D+6Tg9UBw*`t4 zhu0~h-Tu0x;-g*Q=JgbX)b!b*--fPZH~{~CSexh2sZ_Oqbif`d*RB;V1uJ#+?5d@u zaHsJ!wdqG-KybIF!0lf)%16ZvrLAbql+F!E4QHyPR2K-UZe1|?_1iKRshB#!y7mUv zP=a#F#fS$pX2Z$J$#jrCJJm+Tf})iaVFc�t-lf5gK_fTYI2^ABTKyi*mWg;=9H5 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 literal 0 HcmV?d00001 diff --git a/ui-tests/tests/ui.test.ts-snapshots/server-removed-linux.png b/ui-tests/tests/ui.test.ts-snapshots/server-removed-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..488a24c1b105379e4ee2b9f3179f9101abf13009 GIT binary patch literal 23565 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 literal 0 HcmV?d00001 diff --git a/ui-tests/tests/ui.test.ts-snapshots/servers-dialog-linux.png b/ui-tests/tests/ui.test.ts-snapshots/servers-dialog-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..0cba803a292e6bb5c56bf2e4f75c2883cb4c7faa GIT binary patch literal 50322 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 literal 0 HcmV?d00001 diff --git a/ui-tests/tests/ui.test.ts-snapshots/servers-page-linux.png b/ui-tests/tests/ui.test.ts-snapshots/servers-page-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..73628f0ab90e403724b7e538b287ac0453a05eb8 GIT binary patch literal 23180 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
    YHm1%03+Vq4O9mE$wS><6e%GHxORG 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

    URX=D4ip?cPs3=c!6lcq2IZ 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 nP5843e|QAM!2iFSFheWYTl4lW>xdsH)Mcd