From 7b5ac4f0088ba7f24a2d21064f4b00e7a7d7adf8 Mon Sep 17 00:00:00 2001 From: worksofliam Date: Mon, 2 Feb 2026 11:14:44 -0500 Subject: [PATCH] Init commit Signed-off-by: worksofliam --- .eslintrc.json | 26 - .github/workflows/ci.yaml | 25 - .github/workflows/test.yaml | 16 + .gitignore | 8 +- .vscode-test.mjs | 5 + .vscode/extensions.json | 10 +- .vscode/launch.json | 23 +- .vscode/settings.json | 13 + .vscode/tasks.json | 43 + .vscodeignore | 12 +- CHANGELOG.md | 2 +- LICENSE | 21 - README.md | 11 +- esbuild.js | 56 + eslint.config.mjs | 28 + icon.png | Bin 21397 -> 0 bytes jsconfig.json | 13 - package-lock.json | 10246 +++++++++++++++++++---------- package.json | 140 +- schemas/dspf.code-snippets | 47 - src/dspf.js | 495 -- src/extension.js | 134 - src/extension.ts | 27 + src/indicators.js | 8 - src/lensProvider.js | 65 - src/render.js | 697 -- src/tests/dspf.test.ts | 140 + src/tests/first.test.ts | 7 + src/ui/dspf.ts | 627 ++ src/ui/index.ts | 194 + src/window.js | 32 - test/file/depts.js | 37 - test/file/issue1149.js | 22 - test/file/issue1382.js | 6 - test/file/replloadfm.js | 74 - test/index.js | 3 - test/tests.js | 176 - tsconfig.json | 17 + vsc-extension-quickstart.md | 48 + webui/dspf.d.ts | 85 + webui/index.html | 41 + webui/main.js | 1347 ++++ webui/scripts/codicon.css | 629 ++ webui/scripts/codicon.ttf | Bin 0 -> 80188 bytes webui/scripts/konva.min.js | 12 + webui/scripts/vscode-elements.js | 2856 ++++++++ webui/styles.css | 0 47 files changed, 13163 insertions(+), 5361 deletions(-) delete mode 100644 .eslintrc.json delete mode 100644 .github/workflows/ci.yaml create mode 100644 .github/workflows/test.yaml create mode 100644 .vscode-test.mjs create mode 100644 .vscode/settings.json create mode 100644 .vscode/tasks.json delete mode 100644 LICENSE create mode 100644 esbuild.js create mode 100644 eslint.config.mjs delete mode 100644 icon.png delete mode 100644 jsconfig.json delete mode 100644 schemas/dspf.code-snippets delete mode 100644 src/dspf.js delete mode 100644 src/extension.js create mode 100644 src/extension.ts delete mode 100644 src/indicators.js delete mode 100644 src/lensProvider.js delete mode 100644 src/render.js create mode 100644 src/tests/dspf.test.ts create mode 100644 src/tests/first.test.ts create mode 100644 src/ui/dspf.ts create mode 100644 src/ui/index.ts delete mode 100644 src/window.js delete mode 100644 test/file/depts.js delete mode 100644 test/file/issue1149.js delete mode 100644 test/file/issue1382.js delete mode 100644 test/file/replloadfm.js delete mode 100644 test/index.js delete mode 100644 test/tests.js create mode 100644 tsconfig.json create mode 100644 vsc-extension-quickstart.md create mode 100644 webui/dspf.d.ts create mode 100644 webui/index.html create mode 100644 webui/main.js create mode 100644 webui/scripts/codicon.css create mode 100644 webui/scripts/codicon.ttf create mode 100644 webui/scripts/konva.min.js create mode 100644 webui/scripts/vscode-elements.js create mode 100644 webui/styles.css diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 4a5df37..0000000 --- a/.eslintrc.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "env": { - "browser": false, - "commonjs": true, - "es6": true, - "node": true, - "mocha": true - }, - "parserOptions": { - "ecmaVersion": 2018, - "ecmaFeatures": { - "jsx": true - }, - "sourceType": "module" - }, - "rules": { - "indent": ["warn", 2], - "no-const-assign": "warn", - "no-this-before-super": "warn", - "no-undef": "warn", - "no-unreachable": "warn", - "no-unused-vars": "warn", - "constructor-super": "warn", - "valid-typeof": "warn" - } -} diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml deleted file mode 100644 index 080befc..0000000 --- a/.github/workflows/ci.yaml +++ /dev/null @@ -1,25 +0,0 @@ -on: - release: - types: [created] - -jobs: - release: - name: Release and publish - runs-on: ubuntu-latest - steps: - - uses: actions/setup-node@v2 - with: - node-version: '16' - - uses: actions/checkout@v2 - - - run: npm install - - - run: npm install -g vsce ovsx - - - name: Publish to Marketplace - run: vsce publish -p $PUBLISHER_TOKEN - env: - PUBLISHER_TOKEN: ${{ secrets.PUBLISHER_TOKEN }} - - - name: Publish to Open VSX - run: npx ovsx publish -p ${{ secrets.OPENVSX_TOKEN }} diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml new file mode 100644 index 0000000..3dc24b0 --- /dev/null +++ b/.github/workflows/test.yaml @@ -0,0 +1,16 @@ +on: + pull_request: + paths: + - 'src/**' + +jobs: + release: + name: Test runner + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 1 + submodules: true + - run: npm ci + - run: npm run test \ No newline at end of file diff --git a/.gitignore b/.gitignore index 70e73a2..249c168 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ -node_modules +out dist -*.vsix \ No newline at end of file +node_modules +.vscode-test/ +*.vsix +.DS_Store +types \ No newline at end of file diff --git a/.vscode-test.mjs b/.vscode-test.mjs new file mode 100644 index 0000000..b62ba25 --- /dev/null +++ b/.vscode-test.mjs @@ -0,0 +1,5 @@ +import { defineConfig } from '@vscode/test-cli'; + +export default defineConfig({ + files: 'out/test/**/*.test.js', +}); diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 0915202..d7a3ca1 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,7 +1,5 @@ { - // See https://go.microsoft.com/fwlink/?LinkId=733558 - // for the documentation about the extensions.json format - "recommendations": [ - "dbaeumer.vscode-eslint" - ] -} \ No newline at end of file + // See http://go.microsoft.com/fwlink/?LinkId=827846 + // for the documentation about the extensions.json format + "recommendations": ["dbaeumer.vscode-eslint", "connor4312.esbuild-problem-matchers", "ms-vscode.extension-test-runner"] +} diff --git a/.vscode/launch.json b/.vscode/launch.json index e282ad5..8072b9f 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,27 +1,24 @@ -// A launch configuration that launches the extension inside a new window +// A launch configuration that compiles the extension and then opens it inside a new window // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 { "version": "0.2.0", "configurations": [ - { - "name": "Launch Tests", - "program": "${workspaceFolder}/test/index.js", - "request": "launch", - "skipFiles": [ - "/**" - ], - "type": "node" - }, { "name": "Run Extension", "type": "extensionHost", "request": "launch", "args": [ "--extensionDevelopmentPath=${workspaceFolder}" - ] - }, - + ], + "outFiles": [ + "${workspaceFolder}/dist/**/*.js" + ], + "preLaunchTask": "${defaultBuildTask}", + "env": { + "MODEL": "qwen2.5-coder:14b" + } + } ] } diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..5c5ac48 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,13 @@ +// Place your settings in this file to overwrite default and user settings. +{ + "files.exclude": { + "out": false, // set this to true to hide the "out" folder with the compiled JS files + "dist": false // set this to true to hide the "dist" folder with the compiled JS files + }, + "search.exclude": { + "out": true, // set this to false to include "out" folder in search results + "dist": true // set this to false to include "dist" folder in search results + }, + // Turn off tsc task auto detection since we have the necessary tasks as npm scripts + "typescript.tsc.autoDetect": "off" +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..fec46a7 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,43 @@ +// See https://go.microsoft.com/fwlink/?LinkId=733558 +// for the documentation about the tasks.json format +{ + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "dependsOn": [ + "npm: build:tsc", + "npm: build:esbuild" + ], + "presentation": { + "reveal": "never" + }, + "group": { + "kind": "build", + "isDefault": true + } + }, + { + "type": "npm", + "script": "build:esbuild", + "group": "build", + "problemMatcher": "$esbuild-watch", + "label": "npm: build:esbuild", + "presentation": { + "group": "watch", + "reveal": "never" + } + }, + { + "type": "npm", + "script": "build:tsc", + "group": "build", + "problemMatcher": "$tsc-watch", + "label": "npm: build:tsc", + "presentation": { + "group": "watch", + "reveal": "never" + } + }, + ] +} diff --git a/.vscodeignore b/.vscodeignore index a775644..3c17a61 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -1,9 +1,15 @@ .vscode/** .vscode-test/** -test/** +out/** +node_modules/** +src/** .gitignore .yarnrc +esbuild.js vsc-extension-quickstart.md -**/jsconfig.json +**/tsconfig.json +**/eslint.config.mjs **/*.map -**/.eslintrc.json +**/*.ts +**/.vscode-test.* +tests \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index f392b13..a3e5fdb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Change Log -All notable changes to the "vscode-displayfile" extension will be documented in this file. +All notable changes to the "vscode-ibmi-renderer" extension will be documented in this file. Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file. diff --git a/LICENSE b/LICENSE deleted file mode 100644 index b612807..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2022 Halcyon Tech Ltd - -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. diff --git a/README.md b/README.md index 86961d8..8f3f87b 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,9 @@ -## vscode-displayfile +**This repository is out of sync with the VS Code extension found in the Marketplace and in OpenVSX**. As we transition to a new DDS renderer, the old renderer is deprecated and replace with this new real-time DDS editor. -A display and printer file renderer for Visual Studio Code. In preview. Not perfected. +## IBM i Renderer -* Provides a Code Lens on `dds.dspf` and `dds.prtf` to let the user render all or a specific record format into a new tab. -* Configurable option to change preview update rate. Default is 1.5 seconds. +⚠️ Still in development. Not ready for production. -![image](https://user-images.githubusercontent.com/3708366/147897988-c9f9f3cd-11ca-485b-a698-a8a55a5bafc7.png) +Adds a new editor to VS Code for IBM i display files. + +[See the project board](https://github.com/orgs/codefori/projects/7) for remaining functionality. \ No newline at end of file diff --git a/esbuild.js b/esbuild.js new file mode 100644 index 0000000..cc2be59 --- /dev/null +++ b/esbuild.js @@ -0,0 +1,56 @@ +const esbuild = require("esbuild"); + +const production = process.argv.includes('--production'); +const watch = process.argv.includes('--watch'); + +/** + * @type {import('esbuild').Plugin} + */ +const esbuildProblemMatcherPlugin = { + name: 'esbuild-problem-matcher', + + setup(build) { + build.onStart(() => { + console.log('[watch] build started'); + }); + build.onEnd((result) => { + result.errors.forEach(({ text, location }) => { + console.error(`✘ [ERROR] ${text}`); + console.error(` ${location.file}:${location.line}:${location.column}:`); + }); + console.log('[watch] build finished'); + }); + }, +}; + +async function main() { + const ctx = await esbuild.context({ + entryPoints: [ + 'src/extension.ts' + ], + bundle: true, + format: 'cjs', + minify: production, + sourcemap: !production, + sourcesContent: false, + platform: 'node', + outfile: 'dist/extension.js', + external: ['vscode'], + logLevel: 'silent', + plugins: [ + /* add to the end of plugins array */ + esbuildProblemMatcherPlugin, + ], + }); + if (watch) { + await ctx.watch(); + } else { + await ctx.rebuild(); + await ctx.dispose(); + } +} + +main().catch(e => { + console.error(e); + process.exit(1); +}); diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..d5c0b53 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,28 @@ +import typescriptEslint from "@typescript-eslint/eslint-plugin"; +import tsParser from "@typescript-eslint/parser"; + +export default [{ + files: ["**/*.ts"], +}, { + plugins: { + "@typescript-eslint": typescriptEslint, + }, + + languageOptions: { + parser: tsParser, + ecmaVersion: 2022, + sourceType: "module", + }, + + rules: { + "@typescript-eslint/naming-convention": ["warn", { + selector: "import", + format: ["camelCase", "PascalCase"], + }], + + curly: "warn", + eqeqeq: "warn", + "no-throw-literal": "warn", + semi: "warn", + }, +}]; \ No newline at end of file diff --git a/icon.png b/icon.png deleted file mode 100644 index 49b2230332afc7e6d546b4b65b3c0004439d975e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21397 zcmb?i^;cBi7o8af7#L!P4w0c-I+QL&LII__K~g|EhE8EXx?8$InxO=wLFonwrKR)B z=YROVweEWBy&vwo>)rFtK6{`2B2?eJ!pEh;1pol}uNCCf0RSNIzX8E|yyLM4yL&w0 zI4S73005xA{{}E(+W+wJCeTIwl?eASeHbGyICpt-4hlpU6&F=Z(Z_{lQ}CbB6`{yjnQ~BM#_tc=@HH?`(RMxI znv^XP@>6+rsks_)u3A*CF-6j&_%13BADg$es3%1yIBwYl-KJ_cBjOY(@q`kHR4HJH zz4H2c_U_p|NYv=GpnYUz-JDuaab%_iZUfBiU$}|54{uFuyMu^C5N%!ddou$d|1)3f z0%uYzs3Hz4V~D(YH@~=mXr7G*V|bka-x|IhHP4y>gRmym{kNF(qIO^X467=xD5+)l zEaG=hlk#R&B3BnBH8l4pcA|JffYNM0OzJ4NI4N>LjaooDx!}O7nOTy|mmaeGP1R5v zVuq%N9s5~tlv-HCVIg?E@}Cx1cTe2y;^)(pI@c|o&rcl-P@n{&0a?xuj3$TnRi<&Q z!{>8pl`3?U>)n;d$D)SC7P*_Tki==a>HXmpdg&)qNz_n2&P-qW&l}F&O+ydBe~~ zmLd-lPdCrQ?LK&23ruqQQPm4ASYSWu&?GZ-0lRk!Z%hYn{L?YLK>Khz7H-}zIyqig zy#1VhFE$KRc^B(is_M?EguXjdbtJW?FB(R9s_ z#CdgJTl``9zT?5&G+uDMZB&9~bkbcLQ>8rDbCh^WvMs95hBl-lCqXK7EnT4W;+%-` z>pQzlu>KT2k=y6>zZ2}y&If7}HHU0IqZ{4X?(y!&n^{8_mRVu}XUm~CDS!E|E`-Ye zhOAV*o(^*Tog#&-qRwld6#Y)3kii$(%-6c`&HiR*k9@_hZNG6L!4?GyR5sCu5xWt& znvYP{k7#SWrC=5x9ajeO2Zvh^hvT;j)q8Nydj_(7+|r$5#6(cuoHOx${3#Iii@)6c zr$BO_u~MDNZC_yE=$L>hbKs}uuJ3=Oh4K---*=~e zd8_*=qsfd8pGW@JFL#c5?}phw`gX89z&A4&dbZO&)VJi$iKI|Z$=4BB+z9!CR_E$W{h=>zbG@g(!dn&$d zWX!Yi`f?7Da?}I5kCMj}9>tr>{$@m;6lfW<33Da7d`*|~kMR-tDEnYj3z*$3yRI$pvc^n)-PO_z1B$ z-pj7HFl&DrWhANUFa8cNm6^V;j~>~7P4~}3V$FXcZH{^=lhg9Pe~(@d&a>rV@OLlk z-|R=0@^|nckInU^@q3q8wYiEK($kp{#XlfICfVGB=LQh^SrmChWGp@5?2Aex|J>S?RYgVTNxu$OZt?oyy8%CHH zl^SUn?`E$75)*(~y&bhuHu+L>&-e~4#RYKa4&$WLV!lPK6;=|QYkNmEY{#G!s$a_% zXi~5Eo1SiZr$kaXZFV!T-(%g)i^pN7RvL{=1`{nYZuTljyeJM9Cq5F9hu%-jIglwF z!{}ntPWBUyQsTp1>$4>{2;Wv}w|RVACJt#nnfVJfTsh9o+lXCZrrkT-As{vkUS#GV zmf$#=vV?`StJ^c08GcqSsNE_$nkb6B_nc=F{g=r&9MVsv!S3aBd)a(Ietm603e6V1 zH1uRT#`v7U`mOHNjw%*}0qfyxu+GH*f9rN8x4~d_}}jLwno> zzRH6W-;8fzd`+EVV)ZuF`OEIT&h*$?x1Op-83IIFpZbKtY20q7=Mj}N^h7AmdbJ^| z2QuQiRnK9lCn>0ddGwm-{@+jnXh2?>06bU7WZ^@d?>{_4o~T7d>=t0dHU1*UsQqkV zhO=>WWauk>dLrO~>#f9xZ4Sf*}{LK4Jy?VOk zY15~!uBBvM?2|We^9Cj!tI;Rz`T4R|0qEy`+XG`=(K26_vSHVWN8~rU#9)M zp(}#m-DuF`#?qYqAs6Ztp5&nx-NLU`$I+G~ipAaOD@^vtVyO7YXL|dUls`las95N) z&KsXdw?yy?Qak5QX6QY$gZR)zdqxd+N1&nfH($2SAf$87*+)U}-4akbEOpIpbGc{}4Zn-fMHJ|sch+Q7pe_KlW zSJJ2Rn*fcULo1*1!Asiaifd3Gn@^PudD~aWRJfNfFW-2@{a__yro4`WltMVoZ2cu0 zvGiOeGhd)(Ex$)=Y3_?wd35)Ze`(&CSBv(|3ufEo9S>Uls`5%lR^S6UQ6Ivc#aZCP zl6`$czRvEbekJ#SkP0}`^TO!X?gy?aPeiw3>$f}(DQgS#oRm>R_4?zdy?k45pzpr1+}s)fi$((EPI~K>a9^qjH@2O$G%dA;Ivs zXN)av@T!fxvUFE~l9J*q3v>j#XBTf^Dpg?ti%9*nwb9>qtvQsgChU1&IVFR9&3K`| z_g6(itg-LBgK7Vw*D{Jpkb#7i>>Oq{^zh{%^as)2V0pm6X^w{h_p_^>WLpW5Y!c}= z@Q^uE948Lsbij`<+qb=Uc}B1cmr`woE^Gv(ik3I9Tz(DS|GE>}M)_L9`e(7#wxbuz zSM{j6mpGgTEeT(7_?J4h6++p`)OVmM%4aRL&SXY5>ook;lkY4^V={fdRV(WdAgB|N z)u8$i>U6R{0hgw9+{LDJA?8l%ti1*pVf585U^7040qOwsFDT)RVK&FDl+bUSovz7A zrTD>>_kA+BC96~N@_T`%VmxU-qvhCnYH44LEDH!%-tc!BAm|djk zkMy*=p!awBFNsLYE4}%^Kl9DXGb{@s*;r;0ziHVyi+K>rMW{7$Ma8BoZWef|UQJ6- z3g7CJ?(HfuALAO4k%3yaYJMRd1?6WyR=qT03|U#Qj%Ny8ew))-V6x(okdu%ff9OdT z9oZc-1379hBImjnGged?DKQ<|YyA$h`upGd4Jb1Hpi)7_B_Ru5H$>f^$}mAgBsid* zHwTfva^Uw4$Zq4+ACp8vLET~cn6)(Ua|v6z}ujg*~bxM z69Kp!o>QJ#wnibCq*%l=v8-14gW}@G-$8%N-5lHg$Kj-g$3Y3+uUgp#ONV*!~JJ4=qqn}9*3 zgY?o}%Ni6Ox0UT=@hI+xsjnFCTcmVe9Kv3cr1^m1346V;YUKBNnzAFfC+B zPW2jJ$?UEi|GBH+#ShsA_c%fCpgwyG0ZCMxBEY6wDf!tii9I#W%`l&Iot^PqS-Y_; zal4CyrM;uI9v|v{#BGW3-fWFeNolF+yCUT^TTWbFpW0#+4RhYnmD{4;HyZXnSnz9r ze9qsMyOV(SzpsH}3A>R9;t^6qE(N8Xw52$%Vp5cA1&b=D>xOpH6w;|mw;|GgzCMB* zcIyh%1d(*@e$5_z^N2o$B%F&=li#OLPiLo*G`!VodxpxRQpC1@#SUvqOFs>#PmMy% z6NpgVfn6NJPg?4$o%gc$!E_hRlWvtlL?Nr4N8QlIRYG!OHYrMd*9m#g3fOr0snx4= z&r4N@cMeT@$$AS(?$x4`%RbA*?}`ph6>%6b4a)|bNXJ_R=5zzRV}~kq13ps=*IH$H zT54mi5UN6wjr^XcKX+kX85I_g%iFV3;VPF^2gBS)rubl`XzhpD*<%-LRFq|&9?B-K z=S$Et--ApWhPMy1MRL!O9{a?F<~Y&jI)uD`9_|kP-_BLhJ{!&yCBIc!W((qKH#vu@ zgL#F2{h;}Y_Zl9~@)IWi`a;5Q*aH^wvWP7(`W^G2S#5Vg+_ zwa7nejf?%U`g_#j+(WOG=^(U@CUxsQ!4~gl`R=ttN#6TeZ$1^cc|6f-Fybns%f)D= zM&p|$mD>e8q4UT((tc4Q%YqAWNrE}3yXKDJ(A`IFG#t_AgT|=X-y5lP@IL*Ptuhks zf;;SwPqup?emEFGtTpM7U;*Ki#|b}#>#7=fJ52Br-_y~8%`uefx*Lp2%=d2jl0G5F z9tIdg<9sOnJ||2@ z%aar`cmQa8#6P!RxW>Ky*SlZmqPUp_y>&GijP${<5LGb#M7Zlurz1=mI_vI_Jke(r ztwI?Wx0Ks7Bj9g{cXHtz0jZL$R>M2*ELW7=E5fZzZSPrvurFgdYe77JxOHlSD~vj` zeq*58PVa9H7oKA`M-myBy_1nXx3qd&UOBL|FXM7XH(q~?nb;rQSzf+Z#fecKU{Xa> zeNxs;RD6BPl$@g-PHRO^yFfknQ-P%8A=d9Szn=M$vD@it=hEB%W?{v7nIV}sC;^@L zyQzOPHRd;03D5Mc)>NgTNA-cGkanZHjg;w^;Z_{-9s8 zFKEaEee1uI8#ep5s&jM_lXo&welO}8z%3<^Fh4t0y7jsPgFKf*}Sh46~ z8$Z`3ZSBQm++@^YG?)pN%<~&t^aBvH+T(aVLlZ1%%a~U!yjKDNh`LgEx0ie^xypZ= z>D2v(!*w8(s;2_X^A*|Qwy*mJ@<9&LGAQ|d{dLy@e+Dd=r|W@sI8Fm1p?#6dcbE&Q z#w%j_@;4IAh`XSihmveMF6n)u%h`#HMvB|F3JqTkrEb$&^q}E*twhF}HRChqa*Y&T zcBb%eOo)!10+?A;e@%3sF*^X#3iDwNSOeXYv4VyNL@E5q^%M0R+Xby~dfMY4H`(8X zrk^&b1AR`gQtaV?35(bmnhSX$yeo{J5-^y~njG3}L_(eSg7~lUGcqb=Oym(2t{axi z&%=WQOSqSmx0lzY?n?x$I$16|A}zE_6|1=tvb^`lgs>i+8A(d@d=Aj_n+n#wmM!_h zq}$#uydq#t6V#?{JrQ#txr2$R^@Dq0F5rY_@V%CCH3{J5t)uT>Jq)2_Jv}`gE32c|Nyx}*0|P;t`uf8^hK8<)s+kXaS0La0a~vM?-~P9ith&lB;{D9M!gGhM zLdbB1hrDrc&y2(izgv_L2Mrk$A`$OzGMABfh3R?5h~aiKKbSue7M!!>I;Dc44uF9n z{{AC=kjprRSK9C15kE+jKzwSE^u^`nn^2NoW7ZD+ZOHxCl1%%9-G=jEzN1os`dHz! zpELfaV_!3BU5ZJ%syA^E%&eAV?9ctuwmExZ5={OIng1Dym}R3vjLCZ5 z9uTg2Lsuk8!_^*EyMh)wY2TpfDV{qsl5a`gAIIKlhBjdv-Tl$hdG=Udh|GU~f!B5Q zoI1WY%lmmWh40;jS z*6}jqTZTIRI}UaQ3-lCZ?tss7!uIn8r0-)4cQn{o5yU~MNzBpk!?iG4%ew$oKnc$V zPhZ?X&}RPo5#Q+P?qovnWPfR(&+YY0=jiun%ARWs)}L#N6>o$k)M2K{NqJ0-;;#a( zK*@)*?;I5(>Hovl559M2Wd2D)c+H~5g*f>`A9v>4Cv<<}dNcz;dD^T~R1tY(Ig)e8 z$FBuxF6$4wY-xERG0zNzT<=WeUs*L_(lT7c(1=d{33C7Rsiyy_ceEZ?i6uIKyz6dI zLu`CibQ00`gRB6^i!FGHgzt-Vac`k?0UIJM@If4{W>=WRDP7VV5>nEdvdWf7 z7tCq`b>RK7{wFAsV<_r!uODRjG0uWgq#U${s8*~f*qg)jK35jROP=FVpm26KUT*Vz zaX0Q&%_>xP9E^bZUfsb?aEO_!-@O%2gi3UK_yQvlOC|lP zU@aqGK`puV_I5Ud^dSeJCI9vDfVyU>Ec(+7pmOz z>QGt=sxO%v2xUJR_}6Z#Kgubu9gVgmhy9{&VfXidj%!tUGW2UHIC4R1-nljsaPgd2 zuac0=k_0@LXwj#fHIq{1X_@hxih>tcZ9~pvwH0dnw~BV}IYF2@j`b#P3Z`rTG83_R zZ@c-*+&MspCxLC}tpLCiFvtv~+x?oG+ja3N<@o5zQ8fx4>h@AvdMDOszQecl zXQHhX1v?W`z~u8&#Ya{vV#vza1eoJ+mLyLV$d)Q~0E7!S0S5t3r0Ai54oNU;>V#1+ z3Eh#xzKT2hNA}CxZOJiD(BtQ^6sP|U>pya$HtY#Xy(Oo2RM6<>+!A|F8clJ=sU9_l zK25__eqlGAt8pf<{R&(Ksnf)b`%6+j&8d0<7$(VxJ|xT~ z^1P$i=bg8tLK9|qZl(HAQ-%)8;XAFkG*n6fa96K?5Mhg=*Qe8_G{$GkYfDSqdEbR% zo8uQ4;Gi>V5|ElNKCUmyok!V0%++gDOEr-@?JMM}$Jha97$j0gbMB^_Vb$o`5d7S=k4LwV5F&~Wg(*w)qfd{IlIxn}*b(BBQemAO~ zu3h+I(?Iv9QOJL4a65H#c!)xH_gYb+8}`PZHS{pw9xqBugMa zIm%rsTFj*tWGfp_y7&>uyHQC#E#==GW}^X`B%gfsCga4OTl{w;h_6DM^%u#sc{!kW zx5fkb91tP$h)A&e_aAWh;DOWtG~wxQGQ^87+?UsoFOP~FPi{K*IOB{I6ijY-dC?jB z$1zvUtL)2gO18wubvc7gEbFHQNGJU2EVY#9!3h0;_uYYm+CYl4TMxh{5P^-DXwduS zphBTIOopaH+9Jl2^{TzjJ|uBd5RcEgb3}P=qTkRbd4THZBH-_Eu_!fJvadboCkD9` zoG1CP?f~3^c zo&j);r^|KDB}k;`Z4ue}pvU6L!c@7AAG$Oz6Ay2LDful$&Tne5)bGS=X|g#9 zj?25XE0FxA#@q8pS(yRsmW_woeV8Rq7}7}+PBKU9o$W4dPazpJqMUtT{bA$(CgwYl z0-h$4qXzI5dNGjTVN$3R7Ez8dJm&!kaK^q(FnRXo_cHloj+z~!QI`mztHr@*Ge%pK z#Aivi=jF*r?$=L^_jB%EK_@M6Af0lw-jn5y{r$kj1?K-YmDD&8C5L7`c!kBR4#-P3 zu9R`Z0ic5YrU93!`fs0{ge_1R3z@J6LV8Uw2TrErEK(IqOj;6=WSpFB;EDudKNc?= z^-xmi+1ED+IErEuGuo>ddL%T`AkK=?>RarS5^)gz2 z!1PJc?|u>Q;#8w)<0<}PZHPi)9e(W%5s*%t+vH#f_sE6T8D|wNw~hiNAhYQee#s13 z+U-WnGv=6_k@FPPn*cMWnk+Wh=YLjgYu2fseUWKNK>E!om3{pa5;FbMG*2?}#yhnl zUP7(ZV)3VGiI|=5C;W3_OG!+?W(zd};|^=_NGWLaSEHGs_B7Tv1$Lgs5#YkY)`Psa zH({ID15_U;{9VPMZ+y2g2k@S2LZROLdqptvcgXw%-jmK?^(7?>B(4GqET#6^L`6>J$7((kU&Q(z+ z+4P`wQ^B8ix<@7VgSuy(03nM*8Td%Qr-qnS?i)WP=&a0#Q1p8mhK{fS3i#$vf3;9g z1$uX>gyLMrg*W4Mdasdh{rF_KIx@=o*GY@;yAG!1ywg;Yihp4y=X zQWC2b1XqV-gI&{&CbNT$6U$li$l}5%JgZX01m0Y)}&~koPl@bPvpvNg;5Acb?g)pjv3>DlIzuEPq zz3F*!CP+?bti6zj!CP_Oc1bRvwNvO#{=Iv608kD<1a+ye^4P$!!3ReuwCq*H4F)hJFOTpH-m<8 z3D5gKP!$tZ8w3RM=2z8rRQv-o=LN~M+Sqx8{sWeXSx1;o&rM?aG{r>{4QOx}+kWFu zBTF|z^6J1>J6nV`ZxaVBDgloSv>BAbZ$+R5DyKa_OC=yx-?eG8s%kqGW@4;fhz}@A z-&89Pou?5v~eZ_7XUh`jqMsc4;kmJxdK+l(gW+IjzdQ#64b zCm+w`_&6;0NQ?!nBROHjWX!@d=4;u<$(57+M^z`yM;9+ulPd*M5-sAFgv=I2efWt; zj#B`7#OXI% zzF+0Gk$F8}m=ZI57x3@Kw^87q0WhGW1#|GoRx19(2PX-l2)#zTV_z=X1hgK_@DF_0 zxG6t$E;#4vFpi5_jk8xakc^Hs325>Dj6>Iv$>~VIM4Upb--#JRVIee=he!O8A>X2Y z^e{7jcM_(S?*y=dzBw^`13U|8&6biV!ZVY=lx#`__EZfte|NV90$*F;Xp;tAYuUzd{&cnHJ0I?2cW}A`UdC8i0O?rGwuV#L zG7p7$Lz9&dmc;SRK-UQs0i}=6K$TMT>fC{@VqB|US z+&4fJMu&;60GJ`0f3a}@85!a5t_mb9TSuW(n+NZ?5h_A_xWr8pONj6_7^Yf+QuUik zPEPdvrWOjCtv129c_aw4Eua3Lya56Z+b;~eXIu<$+Wstk2=x4Yv!{PfG8s&FS`8MV zMQ+h;U15BwNJv1Y#ueL`M_MOWXd4t_2UjH(>wX6+h~&cfYzce2p3MpbQ1!!LV`3s{LaY?Jhr z-25w%R4^hDo3IVpngi)I&hrbriah%}!{W1~gtJMsT>JEkIp>u@l~}CX`YNcKj84QF z7oebllhP-{-Nvgm^{GUA;7E~Z)8AMq1anDhQni$D1KsxzRS_?jJdXRwH_CyXSC}WHLrGjpmoG?=%5DMagG^e+Q6%u4AtI5>bKERy z)knpP0W{1A&IM!10|A5V!1Nmi5GM?RRbFC_52rqDvvvb|VON)9QS82dDg_HpA=Sh> z0VXIJ=W#y+II-v$JPP@o$wwdJcM%iI2lI(D+?$oiUkV9UkU-cIYi-q+wTfsMQ_rVQ zpMdLkc8x=+bev2$yh)!-q$LZkVSxzO^w$0-E_g%kId9P13G4ujNQg?ec6taU_hw%u zAZTqd%pZ$k3ruj(DC6||r5fda4*UD6=02~D>;une9kqbSNZeQdU_#*via6Ry*jj*7 zi&JYykE%ULFrrAk0Sm>yNU# zbU)BfQkqT6`I5%TC0;R7CM z!&+M}`u*+a1jjE0ANB-h7Yv#wL^~v>(fng#8&1%j``?9v$O$86j5w|cGwbh@v$F%_ z%IH4_f(nFULrlHo(5w89L!HU|E}Mt;wzg5a3lpjQRxP?P{3oy3fK4C;7(FJ^PP+ZZ z`p&ZIUvyK_HkRHzmBmf>oFn|Sp9=8WV>{D*e&Ug3zy88pYJ z(Cj2GG!!f8FA{{x2UbT1KXA*|ExrOWYVFTAM6C$RVL9ja9F>`4+9{2z8IomJyuCL$ z?wBzwhla>3oh};hG6^GY$7Kl%Em&0)aaQ{ojISkKa4GtSP0j0!Mn+ShMN|?Id0pMbdARj;qY|Y47mUuFac8VmThuZ4!|Ngt8M{) zz7CY+8Kiq7Ml{BP|EZXwzdsQ@p4RH2k=VAw{2qN-vG>nnwWZ9=Oq1H8U?rX%g`~ns zE-gTk6skkN_~TMqC0llfh&rFctxip)OoR{3=Y4wHocA-cKULj0KoGvC&Q)q$aJfXf z%Kn|u#|3=shI2nI0jJ4De^C&0IxgzPvzqp8#c#pnwFUJm79%eH50U!wcF{)3vsG+? zaW`2U6ljM@3!!|HO!k;;gydKUAQQg?WC$HkQ~!;6wB>i4JD#}zdq~>ic-tUfo5k8Y z@Y86E3XTz{1}W=aGGJX;`w9TKoA+iO@tO8QRy?WT4tJyO9balOlW;uB7>@te@cB5W zKOA%VsMN!v-fL=}ECQ&+CW`>b0?q&?rKBSw(`&w#PoK4AUQKH_irl*-`zv#^QgFqG znr4Q!EvuMOd*chWs#?v7@n7MvWT0skI`0D`08xM$wb{g2A4r_VO>esKotju;u^J>? z`Z)`FAL~@Z3}`F0X=twG2n+_V;Wn)?QSXO+NbWrU%#rnV#G#g?H9{^V)!GWDR)B8T zoQ|r!iAgFS@z#jMcZ{&@-^-1KZ?~&k3R+s3pBgvjFD0i}m3JM}7|I!j7{dP3yKk02 z)Ex&Z!b`n_wRUf#k0?E0fita%iizqixee(bse)V`+!1e^EI@EmXcw!TWJ?l(%k6JK)qqa9b0L zOU)(KAfo5%F-=W@c7Ppg5=j z0u5Y71QpiDcd*AJ+9rVX+#a1>OWd7KPAART2dv@_>-~$0QoS#iB8??kaCJ0^Lp+MV zzRg~?GKr?m5gRwgU|fq}$(rT1;Cq4`mpuFVuKZE?-i^@WT@N}9TH#g?h2tD;0Ixv_ zJAZzaT~T#Pmqs!!N!5(=#R5>t9OIs+?2jM{zt|Q)c{LVla#K z8p<~nB9#Eh#E1f1cQZ}|-{tV3i>y3*0g9`_omcqO ztj{_wP0!Z|{YA`f2)ZxARtTYpM7BP8?f2hHzGnSMuOPrOR^c>k6Unz^^{Sp2CUTWL zH1xRG7S^xd4KO+^P}w96RNPAwb~Gf^NyW(0%Hb|x^o*y6yh-7q)7H`o(|*HibFqGK z;85(s8o1ivO+|~7n2?F!0B+xCzuK+fq0gZ{e)|e@c4u#t$(iQ?Lt0)Q^X9T&ax_u8 zD5tZVJ2G$)7ch}H#NC;ZeipR5vLVi2xV8G~Ob(CPgz>CVNJCQ4dy(GxOE3t%Cm??6 zemeOt;d}y7_<`(J8>U;mpzu)dC-V6vSM#v;p^ZqJ*Lw5A$3`-|L{Uq|lZod%$eA;W zy$$&nLzY2+tAk7LyDesAvK^`DO?sGp)5<^&Lr@exHsZ*!{fzA5#`eR9c%eJsA~faU zU_3_^fGi%Qh`zyE6c*_y%wLh*lfE?f=w(4rcC%3hFX0Fvs%urSr1 z*)YiGjATn@$9l*OSdSmc;aeB<1z-LNduVSI*M8sRut-V!K&UbWO))bR+@h3`6EbNe z4grt=pLTRm*_>lSFnzXYMBS?0mp%KLmqYV3D8aP<=-N&vmBjYK79ZXR)1qB~>pwH0 z2o3;clOyCtI(%t=P95{$m(!Qfw}O4_Siby!j%64puTT5S9Et)+aC2H~Yip?+K;-&P z(kTahsNS(_j*pf-6Q2KEPjrm8={5>y*RdmC=aWug=zHw0tX%%!{hICRyGMk!hg(nA zTNb4s>6qejvkf|TB2($4oWK~qIY8;W02ZV?5}TTF{qlI@ijM+qCk1mGjt<^`uk1$& z^MZ7W62m~v))RRW92h1BrpR6Hi9c8pgppRP%^=7_>>r|RhOCQG*@mI)441``N7vMp zco;PjGeAC$7UhO#K1=!x@RrK7h#onjYsa+;#Z}2W3cgxS?nm^iJk-&nZ-^~Lu@+WH z2ZfwX;R%7NSgSP2XS6fZT}EM^wyq@ShXs@8X`7&nDIBbVy3a7vtaByJ=ml^V3 zQ|zM0{lo_q^wK_?*EnqRT(>ZKZUn_DknwtTPx4lnOqflXyW;PtUmgr5{tr9q5@h@V z+JzA+OBsHM9M8@MNxl62X~tmY@Y45%f@~X$ddE~qLS%?$r^|K{%R_aXkf#IsG3$B} zJP|=9Nd!jltkxv?A%b4Eu-a%Z!{QY1FZs1wyoQOImt_yzf1Q4ht$K)oN7VO~GObe= z44ALQg?ITaWQe+)nvk>{cHCh75)MIhKZIT#{thD)I=Y8h`#jb5XMNNrAI=vXY3nuD zn%p1LXOlZ*qlnnCaJ7BUYxlV!r#Tngc?@rTF7!PR5Hx)>s>mV~O!&%#3(mW$DUBhI z7jrkulJ=u4Mv~>6<%bQ)G2y$)Qv?jgKt0{i&=9nK2r@l+v-SlFH9^>y^m*fUkq=7D zUU(a&+(OAXSMwi?$GXBVg5*PVqwY!UanPS-Na$(ga*b+Gus8Cz9# zeTU5mu%%E(0+7#NP!QIW%Y7su2~fqA;WdT_?i+6Yv&bc%IW1JpSzNvO>T>P0rkiWa zPfvNLk++*RWXwf*W-DrT(~&E!OVIwXb$H%h?JD}wYU%gy-%E_#?XO}Ve+CGlkY5aa zkAs(Ht}_?BE*`YG5RB#&=%MG-vuaJURKLswCH zpxtl9-nBW)0*HWakKp+HUxL%dr;88M3IDj;w5LARHN@CCe5jR26CN#NEO_C$z4_?y z0ci3^rpdUJpm$M)-1w#JQRm&hG1y)CPIq6d;@TY@upMzT-u_MK%N zqgLOM2xS;0ROs^Dt8BP5{~#%H#7Mb-SHB0*5S7k767GRoj6o!mRrsA5k+RLFdq zmZX>Z?}p)FD6A4$Odd{{iVvJD0bkyR)E^P_aZ2RFBIGc${eSN}MoU;sH=Jv{TrqO@ zD;bqY%qI(=&4EeLSL!x=P(As32LQr*DPP_wvyZ4?sivu7ITYeRu@>cD6p6gj=9w!- zcU`P#-*%Iad8WN)>fsdHwI0<0Iq&k0v6dGXv)Va0G?D_@0%UOKNc0>0`o|Pw(@CK0 z)HQr&omJ30o&|3h9@t|bm!cO`h%_72#)E-VPGC-)FpqNh3#Bj=9(E3^2@PQPzSYlj zcJ8HeXiv>&IbEant$64~rAHjA+_bdGSWHn7^C>>0O1p+WFoRkMj{=u%-4i6x0^SLe z{zH) zR7jo#V?DB$3!$^?774<-R*>&KMy zh{(cmqp(HT=!Sz0An^?W4~UaOz?e9Y?gUiNFadbKNSar%JY?Sh>>Jt42V!5*!!sR1 z{jBfO&TBWA_bEhg7|1=-Sf0Xz$W9SCOyukYq_xDIlHKuC;V9~(Wa#$d=&&@3Fxb4} ztjNVO*PQqL_j;3&BC1S&t2e>jp>6r44X$u*wBwIXzoUv@VVa%pZ}sVUSDdsEX>yO< zWVLf$D+gu&N|XVB5ViMyBW$MPTAY8dbNS@N*^mPr+N3%_D7&lXQc_V_N#-x+0M^3V zk(Y4*>W3_EOS+tY;S&8O$@R=h>dUg?2fcGw?*#jyfZZ|DS|}SSw0$5dq={pEem?D+ zq7*M6%RWo0!yW6!K#7s1NK$Knz}Q*Molsix zYyFKv&kvRVG(~(jpB%HA-CH~cj5Ha%2BKAeetisB$YUE~BN8bBoD<(E95=bV%U*VM z2__Elb6P%$DegM>K){iwYNAj*{h^mJ8GR-0h5z8^PszVczDf2U_SkV4BNDTMLe_4v z@;Kmc8S_xD;k-p|^l+{atJ}-zFP8p?TQ~Jm)yn$D9_^nqEe0;1gspJWvUj|rGm2vs zmcoK`g~f2Upi(2G>19!bZo{rPCzCX&uEFjIVitP$`7LbgrJ(bnGQZ=0BiPH@p0Pf) z7ka&h(y#J5Ke2X7(fI->cM1UlvHJ%MuS#ux**1gRFyKjaJ^-E!MRYZ@ZuH(tr=)Tu zk^|_BzZoul2u(JsZ}aS*{<_fu8`K-+0kH)@yua$PfkI9njW+Gd);(t4ONWjRG!^tt zm@lI#xMphz?}Z!dKd)|4?cL`n-F<)PiTGcgU?op`-K3F0mmZCS3Sgt zJ+ls`(n4M&>w5)gqZ?C_@dWqRuMM7OTat^dTG~JX^hYKsc&#-vED)56a*ev_l4T*` zMUSj2A_c76O-yo&D{(trfB%*wn#%TG5w~rzReFa+yqC-EHpVdN>Tt%mRF!)WaJas3 zCgXqT`TY4ad~>iGj}DB{MCfr_vve4|UbkpTCl(gQJ);itSU7k0pUa(*yZK!3YoYp`~UFKnF+(CrgNX{ad(+ zcRT@s`?04<9w3ht{0MGe$ntVE+SjXE2@31a&$_WtRgY1i>4lG zzQnrIJa4MKukaVDO(Cjw!QdOj1@Kj1#afXBvYHoB{xZrx=3fF3`S0Ufb=dg5VI*8hINHgAzm(^z@AK4fo4h;$_#y?LPsf#on&{o!UL0G)&EepR7 zq$!E1NCsGy(ClAHpxliJOoYSJOCX$g=WbgNdcUHeMaV5qb`X%!{(F&68=I@sQ3H+< zav$($^&>$BVW1k-INz(P!itKeQb+*XAZ<=w){Wvn%Jzd@j%1dCwdzrrY6CN@LZyA> zFNGgw-1F8H(tRVyT4&oa1?2MgzHv44m&J9DOOrsaa60fvpk1Un(j#vOsA3*fWO?T8 znGe?RPs^U$CYlWR{M(TmJCcAWx~)a+w@n*Dv8iY9R>9OSt`Wj_6aI)~OF?x7Nfh$h zI{*1AOC$9~&jOR*k&gQ3jP`DNOTnHo=!2zJeoY*6XP0MLYT<(vFJqsM5J$X>c`}EQ zhuZ9n3eIfB;&8m2{?l_<)$*z(I)a(&ctlruY(Luoey*E*0wsyZhz#LzYHDVwGAXdw z-Xb0T0j-`ETemoy8c<+D?e^sEZDChn)=@lfA)6vh z>@k7KKH)>pJT;*jw}bHj4vA#NHP8lN)#u6KL*>Qrk7PK7e*YXWB|2E-vL zf|>kDs;oa-*QujC2tj}O?yD3K0tLgSa|Rv-DrX2)1-wU}O!R3yhbosBBp$Rn#<>Wv z4K0WsF&MctY>yxRF`_8%#aksJcmHVj`Q~sH@GA&GM#{6o(8v;I9XsB7SE(V$p>c#A z8A2r8$RK=oxYSt)(QImJ(iY37=SJj*rPagXX1(=8oVwn@)t2{2v2{;w) zO$u$+TL!)Q=CHXGRL}ujtCBQ+7y!%StiLDX-OzC)B6k$b`wXu}9PRB%OZwWh zF-&?s$BH*O-nF~m&xQvtq-?uxt0xBh3|fs7dfe2N;~7h`ZN8QnfHQ`sVW$(RxVsR! z)IZ4*g=WzMMJQqTJA_j88m^Jj?<`$aihZTaw{o2TA|eq0%vX`~mA?C_OI2=VZ`rr@FqrUdfe<*#h>G zFt8}C;_U*thmK7ee{_?+AjgPaj&^a?%e=g)c7Zz8pJ_S+#U&*X=FVx=)XjNdo>ZKf zZenI-v|Mc4E4nBP($MUy-dB%0i&#t2D{La3#uKFhT2;!BD@+n-#lGvifn&4?{TQbl zMr?`>q*6+=MzOg&C@TGFNm&^&_%n@=d6GOjJ<-j3 zp;6I{g^MQ6{nh;si&>4Fms*^G$RsdKZ7@Bgu^Y;ROd1%`SOax8`j&+N)1j5 z#%F}fDaWs>9t1fLcd?M>vkk2O-JQQ>vAzMkP5|A5GQC*H3%TYF$bf=FMj@J&7Lo!e z>gebYJqQZPDk%8U>P@$nO`3e6d=YmA4EH!--lk$&!7WhDN^=X~d@#-UpPS;d0=;@s zgge`}J~F-R3TCja%Y?WhqfnzCOvAdcuuwxvH+m5K>!$C1hZBWCA__I>K@bms zCR&=CkH?Xy!G25O;Gb3~qA*i|uE6_fIf6B*{XHc3M@dZmXdQPRseorX2`zhGd43hM zxBz;dY$agT39xKK&fB$Cu@T&YAQ6QH#1rr+K|w)53B3k4p?~|%{2snFD+n!+C6#!dX@kBg#f*rL2<0J{=o7l zPoMacqN1WU3Jt;?=%i>=50TL#Pax}%56-Q~@Pz9VVrGRQ7S0b4HvmOYc-c#@FBp6J z$G+?M;SImHGheu(B*;Ehq)HCc30c@Ns)NCYN$)iYNV38`kk{T>a{a|S9{JtQo}QjI zvMf8v5qS0uP=s|GonV%SS;WNwb50#dm5ckmd{Jf)eC<4`kAQ@m(M>gJ8 z67r+MgtyH34iSuZ-FS~fzUa?r@0AGTbxydWecKbKj9fs2M<=-g?c@ryj~zR<>+s>j zylkCisTBa^)evU!19CvO7bqy4z%-XjU~StOh1jBVjw40z zeX{PudS7%U68u0B_<=b;zU8DdZoKs&w>bz%fdWYx zF!u4n0K2+0zlcIE=wY)512^Y;&13QYy4=u>nd#V`{T;;XahF@++rE*=q)+5BxcLO( zYBcTGy7b*2{XY-XzW4f3W}5$80npNA5rU$hVAdjEl>k=+6DLj#?%%&3WFc1q6fr0! ze-F`v0uY7A5K$;UqW$Jyvc-5YM&5 zDTD-4?=_moe`5cJXI$6S)Ua;XUza}k_ATGy>B01DbknmTcmS+97r?UI3IOuefVC9? zEuqTF%7Uh*CNZl~i4`#jePz{#?^jHlK3}u0Fk}nBr*jnefovoSWfLB4*pEaswjV5f z#9(sToFNU%vRlNgSNj~*<-?954Ij%O!S%_y0Df?!gN4IwJ#9@jorfA~>fih48*l&Q zJL{O$waQwM5h#=Z?^SWd6<37OO*mT#L4mwf0v0#G=ttBoqL7CU1yM+^!y-V$AavE% zJ-;cc9DSO7EfY7*R0Kj0#Ha>d;FgMlj3o+@?P!|q1{ZK7(QqbSHfZ}~);)sRKd+1S|F!(w5JrO=SXbAksWFH`0El3hqLY$ zzu1=1hXBWvDq{&gEa{houy-D=Ul-}@Zfn`QV@Jcfcen3b`SQW0jcZyV+a%=75_&^y zqb-L^64P!BmjXN# z{6)bD}Ql5==g1d%uS)c=6`F ze3JW7iT|79At@5W@AX*D1@qwt+<6<~K$J}QaA!w-chixYw%UC=I_eJ8)&A=rHQSax za!|U&V9rmM_jy>43_gS0KW+ukc7(PgB>Z6#e!B{l6hL=#b2GN(%E7Ex0Dw{gj5$(^ zM~)m>Nami17?jXbghZmxJoWq~6X%_O3)3{m1gG9)q4|nQ6b?LM0HKDtz8}ncBx?Ka zT-Y6-=>EgpuWIox_xTtLn_u%FLk;PD%zgRa*m>^n6aPL=@z)$uAMWa^?*(S7_5*tl*8c0Inw@`nvfdiG-R~ZC9g_uCD1oT7E%rs$pUnl7m6i3hwY72cpDe~O zq5;{Q7~}<|1WY)HLMB-RR>Xj(8qa_I{p&`bdg`^ZA`lmQD+9)^CTrm11<4Tv5bFKb zNRE*m3(WbBsQb;W5j5FR*gjcvzQkgRz;F6?r(f@*NSJK)Yo6aV&LZ&8TH)@l`W^^7 z{PjIMb{wvLyQcoFm38&iZ?{<{yZn)SZJF>cz?MI9l(c99}!Xp4DpL}v;)22;AQRIvQ0F)A7F`|$;dk_@R16176(E()u zi-6B+bnULX-xOAiJk9IYIotzl^em>M-z<+s3}C_^wS>JP8s$VCIv2%{>Q2%uHWGV` zu*`XCJTyrO_zN;~2(b}YLFrHkaYF3p9=JX$(%Tm4=&J7`6TY=}Z%zCD+WOkpU)-_n znMZj^H-sIK1U_yAm;HGb6J#JNoA%;05_-NS!50d_ehpkOaX|9%2>tdEGW~gVpf&ot zugfVYC1Am1yEP3FgSBhd2I(OP9X@!}btg;+#EWe`KL5l)i-cpcDeocJ@&dm-Y6-U?3AzyWs2JTbqT_tb4s5+< z5Sho#cUmH()a`4SQ;9@JjT(jbju7z|CE-V#I=mKff0tZ?QUdXSHGumPVzH{jVria3 zL<}a)z3cvm^+2F3MsAsqd2#=dG5&1BWs-Zl7#=pX%QbLD+&zM1p8mb-V;ruI6#|u& zfLPJ{ge_qYlL_BUCVWHnyEO;i;3j;#%RD!vQ9kOy$UB4`f{tUBIWJ6joDz}Dc`m#V za_f4S^R~%O{=D7uueG(+A@pO%j*XI%w}rc^s>;~Cd$(*speYT@l?Xs0C?yaNO8X*?GgIM^Z+=SoJ+uGK)_l0NHZvJzOg|~#+9eOid#GO5gTf#1mN9DC! z$X&17`z0kM7~v!B?d|rpWXea$igUXPo)!lA`ONb3ku!p6?F{Lr=1u=7r35_Sn)O%^ zg-`?{TEG>-7gxM}-Kd$Te$5t4OY+_3y{!;z8I*>6H%n*v;hxGwobRb!oK}VF3LiJa zX^~*g#-5gznx58{`u6&LHEsL$9o+xgD>dY=*E6S32*G!o@ZvRj^yJ$vUmf71wb!VQ z(VW(XHL63{VaD@q8r=qTl)l$5kVN*W`(A&u-&*LPua=FDN$)zw1a8RiDK?Y7&P z>wD)VloIdg_z`x3*hFZ2*mX*4$ESDZFP(sS9y zxd?sv_vSfBr0HpCtm$ba6MpZ`9Y@x#+P?qQm+R}-twM2(*9a&Jl^Egeec6P!%y$uc z=OH%|bQ}`B_@m@j$$mB`=fKPhLC3N3@^b#V)xL{=hcRQu7!3^#?vb5;4;s}CYgCv2 zYA)#3lwgj#rVxWt0tp~Wk7+YFZrr#a5k@vYK(7^{*vKXd3yCPSZE-DbfES2`(!Ah| zsauADf2%XU;|z&3k+yIrh1?pC)O0o;t#3bAdvNda=hn7tuW36#A-CA4*o?d*yyi2? zJIr>mSfjbj!ebqg&b3*1nD7=kC!6>3HuDj7htSWPH_uqPa;19|SHj*8C?(Jbq(q_s zJ)8w(q85=kN_wEMghn);QOJ7`+vS8yjm{_wU=$R$p7U|CN_^?EK4CS=+UD`ZACC~;zVQr{{03q@|eui{w|iF^L>owix)38mMmGKNh7-w z^g)190?C0#42VGv5rgbbE#|GsKJ=vplh6LeuYM6MD?7nCq6=h34;)`%%F?k#X z3*Xb!NFldoV&Ql0IJBBr_?7?Si8RtX$%K|6kMLp}Cb?kTU7|o$66W$@{INs9IBAfIE5us5cLLHyUyg3C9 zjOtjd%u8YLFs1}Q9(HsL)+c6-|*P?f-E zA(Rs6AGmOnuN$D)v`8f4Yk+)fSP4NAUMLD3%D@tCIRxM)$B6N}zubZh@UlR9RUW zLZ@Poh9syV5>l=RSd2&D0%R!zyocMrjuU8!jpzHNrKM4coa4vnbB(5^CWFG4QTM10 ze;rDM6qPKvQEOE9QbU%i8F{IjIX*b78lH-tjq1K|vwoAtx4zPR2sW?NMD)8usY!dJhE! zg=~ja>?5oMCD;lI3JMAe3JMAe3JMAe3JMAe3JMAe3JMAe3JMAe3JMAe3JMAe3JMCt afd3!4BpUKFE!#=}0000=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz", - "integrity": "sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dev": true, - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "node_modules/@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "dev": true - }, - "node_modules/@types/mocha": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.0.0.tgz", - "integrity": "sha512-scN0hAWyLVAvLR9AyW7HoFF5sJZglyBsbPuHO4fv7JRvfmPBMfp1ozWqOf/e4wwPNxezBZXRfWzMb6iFLgEVRA==", - "dev": true - }, - "node_modules/@types/node": { - "version": "14.18.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.4.tgz", - "integrity": "sha512-swe3lD4izOJWHuxvsZdDFRq6S9i6koJsXOnQKYekhSO5JTizMVirUFgY/bUsaOJQj8oSD4oxmRYPBM/0b6jpdw==", - "dev": true - }, - "node_modules/@types/vscode": { - "version": "1.63.1", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.63.1.tgz", - "integrity": "sha512-Z+ZqjRcnGfHP86dvx/BtSwWyZPKQ/LBdmAVImY82TphyjOw2KgTKcp7Nx92oNwCTsHzlshwexAG/WiY2JuUm3g==", - "dev": true - }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, - "node_modules/@vscode/test-electron": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-1.6.2.tgz", - "integrity": "sha512-W01ajJEMx6223Y7J5yaajGjVs1QfW3YGkkOJHVKfAMEqNB1ZHN9wCcViehv5ZwVSSJnjhu6lYEYgwBdHtCxqhQ==", - "dev": true, - "dependencies": { - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "rimraf": "^3.0.2", - "unzipper": "^0.10.11" - }, - "engines": { - "node": ">=8.9.3" - } - }, - "node_modules/acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "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/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.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/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "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/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/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", - "dev": true, - "dependencies": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - }, - "engines": { - "node": "*" - } - }, - "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/bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=", - "dev": true - }, - "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/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "node_modules/buffer-indexof-polyfill": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", - "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", - "dev": true, - "engines": { - "node": ">=0.2.0" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", - "dev": true, - "dependencies": { - "traverse": ">=0.3.0 <0.4" - }, - "engines": { - "node": "*" - } - }, - "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.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", - "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" - }, - "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/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "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/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "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/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "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/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.6.0.tgz", - "integrity": "sha512-UvxdOJ7mXFlw7iuHZA4jmzPaUqIw54mZrv+XPYKNbKdLR0et4rf60lIZUU9kiNtnzzMzGWxMV+tQ7uG7JG8DPw==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.0.5", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.0", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.1.0", - "espree": "^9.3.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.2.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "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-scope": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", - "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", - "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/espree": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz", - "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==", - "dev": true, - "dependencies": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.1.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "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/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-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": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "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-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.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", - "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/fstream/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", - "dev": true - }, - "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true, - "engines": { - "node": ">=4.x" - } - }, - "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/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/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-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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-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-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-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/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": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "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/listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=", - "dev": true - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mocha": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.1.3.tgz", - "integrity": "sha512-Xcpl9FqXOAYqI3j79pEtHBBnQgVXIhpULjGQa7DVb0Po+VzmSIK9kanAiWLHoRR/dbZ2qpdPshuXr8l1VaHCzw==", - "dev": true, - "dependencies": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.2", - "debug": "4.3.2", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.1.7", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "3.0.4", - "ms": "2.1.3", - "nanoid": "3.1.25", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.1.5", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/mocha/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/mocha/node_modules/debug/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/mocha/node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/mocha/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/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.1.25", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz", - "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==", - "dev": true, - "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": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "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/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "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/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "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/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/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/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "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/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "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/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-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "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/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "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/traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", - "dev": true, - "engines": { - "node": "*" - } - }, - "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/typescript": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz", - "integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/unzipper": { - "version": "0.10.11", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", - "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", - "dev": true, - "dependencies": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "^1.0.12", - "graceful-fs": "^4.2.2", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" - } - }, - "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/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "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/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/workerpool": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.5.tgz", - "integrity": "sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw==", - "dev": true - }, - "node_modules/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/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "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/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@eslint/eslintrc": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz", - "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.2.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - } - }, - "@humanwhocodes/config-array": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz", - "integrity": "sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, - "@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dev": true, - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "dev": true - }, - "@types/mocha": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.0.0.tgz", - "integrity": "sha512-scN0hAWyLVAvLR9AyW7HoFF5sJZglyBsbPuHO4fv7JRvfmPBMfp1ozWqOf/e4wwPNxezBZXRfWzMb6iFLgEVRA==", - "dev": true - }, - "@types/node": { - "version": "14.18.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.4.tgz", - "integrity": "sha512-swe3lD4izOJWHuxvsZdDFRq6S9i6koJsXOnQKYekhSO5JTizMVirUFgY/bUsaOJQj8oSD4oxmRYPBM/0b6jpdw==", - "dev": true - }, - "@types/vscode": { - "version": "1.63.1", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.63.1.tgz", - "integrity": "sha512-Z+ZqjRcnGfHP86dvx/BtSwWyZPKQ/LBdmAVImY82TphyjOw2KgTKcp7Nx92oNwCTsHzlshwexAG/WiY2JuUm3g==", - "dev": true - }, - "@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, - "@vscode/test-electron": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-1.6.2.tgz", - "integrity": "sha512-W01ajJEMx6223Y7J5yaajGjVs1QfW3YGkkOJHVKfAMEqNB1ZHN9wCcViehv5ZwVSSJnjhu6lYEYgwBdHtCxqhQ==", - "dev": true, - "requires": { - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "rimraf": "^3.0.2", - "unzipper": "^0.10.11" - } - }, - "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "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 - }, - "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 - }, - "big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", - "dev": true - }, - "binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", - "dev": true, - "requires": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - } - }, - "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 - }, - "bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "buffer-indexof-polyfill": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", - "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", - "dev": true - }, - "buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", - "dev": true - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - }, - "chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", - "dev": true, - "requires": { - "traverse": ">=0.3.0 <0.4" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.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" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true - }, - "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 - }, - "diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "dev": true, - "requires": { - "readable-stream": "^2.0.2" - } - }, - "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 - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.6.0.tgz", - "integrity": "sha512-UvxdOJ7mXFlw7iuHZA4jmzPaUqIw54mZrv+XPYKNbKdLR0et4rf60lIZUU9kiNtnzzMzGWxMV+tQ7uG7JG8DPw==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.0.5", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.0", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.1.0", - "espree": "^9.3.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.2.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - } - }, - "eslint-scope": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", - "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", - "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", - "dev": true - }, - "espree": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz", - "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==", - "dev": true, - "requires": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.1.0" - } - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - } - }, - "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, - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "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 - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "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, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", - "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "13.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", - "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", - "dev": true - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, - "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 - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - } - }, - "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "is-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, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "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 - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=", - "dev": true - }, - "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, - "requires": { - "p-locate": "^5.0.0" - } - }, - "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 - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - } - }, - "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, - "requires": { - "yallist": "^4.0.0" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "mocha": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.1.3.tgz", - "integrity": "sha512-Xcpl9FqXOAYqI3j79pEtHBBnQgVXIhpULjGQa7DVb0Po+VzmSIK9kanAiWLHoRR/dbZ2qpdPshuXr8l1VaHCzw==", - "dev": true, - "requires": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.2", - "debug": "4.3.2", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.1.7", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "3.0.4", - "ms": "2.1.3", - "nanoid": "3.1.25", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.1.5", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - }, - "dependencies": { - "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 - } - } - }, - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "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, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "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 - }, - "nanoid": { - "version": "3.1.25", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz", - "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "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 - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - }, - "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 - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "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, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", - "dev": true - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "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 - }, - "typescript": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz", - "integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==", - "dev": true - }, - "unzipper": { - "version": "0.10.11", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", - "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", - "dev": true, - "requires": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "^1.0.12", - "graceful-fs": "^4.2.2", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "workerpool": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.5.tgz", - "integrity": "sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw==", - "dev": true - }, - "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, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true - }, - "yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "requires": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - } - }, - "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 - } - } + "name": "vscode-ibmi-renderer", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "vscode-ibmi-renderer", + "version": "0.0.1", + "dependencies": { + "@vscode-elements/elements": "^1.15.0", + "@vscode/codicons": "^0.0.36", + "konva": "^9.3.20", + "vitest": "^3.2.0" + }, + "devDependencies": { + "@types/node": "20.x", + "@types/vscode": "^1.97.0", + "@typescript-eslint/eslint-plugin": "^8.22.0", + "@typescript-eslint/parser": "^8.22.0", + "@vscode/test-cli": "^0.0.10", + "@vscode/test-electron": "^2.4.1", + "esbuild": "^0.24.2", + "eslint": "^9.19.0", + "npm-run-all": "^4.1.5", + "typescript": "^5.7.3" + }, + "engines": { + "vscode": "^1.97.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", + "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", + "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", + "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", + "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", + "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", + "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", + "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", + "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", + "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", + "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", + "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", + "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", + "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", + "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", + "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", + "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", + "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", + "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", + "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", + "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", + "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", + "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", + "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", + "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", + "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "dev": true, + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/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/@eslint/config-helpers": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.0.tgz", + "integrity": "sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz", + "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.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": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/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/@eslint/js": { + "version": "9.32.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.32.0.tgz", + "integrity": "sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.4.tgz", + "integrity": "sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==", + "dev": true, + "dependencies": { + "@eslint/core": "^0.15.1", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "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/retry": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", + "dev": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "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/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, + "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/@lit-labs/ssr-dom-shim": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.3.0.tgz", + "integrity": "sha512-nQIWonJ6eFAvUUrSlwyHDm/aE8PBDu5kRpL0vHMg6K8fK3Diq1xdPjTnsJSwxABhaZ+5eBi1btQB5ShUTKo4nQ==" + }, + "node_modules/@lit/reactive-element": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz", + "integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.2.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/@rollup/rollup-android-arm-eabi": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.41.1.tgz", + "integrity": "sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.41.1.tgz", + "integrity": "sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.41.1.tgz", + "integrity": "sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.41.1.tgz", + "integrity": "sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.41.1.tgz", + "integrity": "sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.41.1.tgz", + "integrity": "sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.41.1.tgz", + "integrity": "sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.41.1.tgz", + "integrity": "sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.41.1.tgz", + "integrity": "sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.41.1.tgz", + "integrity": "sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.41.1.tgz", + "integrity": "sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.41.1.tgz", + "integrity": "sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.41.1.tgz", + "integrity": "sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.41.1.tgz", + "integrity": "sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.41.1.tgz", + "integrity": "sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.41.1.tgz", + "integrity": "sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.41.1.tgz", + "integrity": "sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.41.1.tgz", + "integrity": "sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.41.1.tgz", + "integrity": "sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.41.1.tgz", + "integrity": "sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/chai": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz", + "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==", + "dependencies": { + "@types/deep-eql": "*" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==" + }, + "node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==" + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "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/mocha": { + "version": "10.0.10", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", + "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.17.19", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.19.tgz", + "integrity": "sha512-LEwC7o1ifqg/6r2gn9Dns0f1rhK+fPFDoMiceTJ6kWmVk6bgXBI/9IOWfVan4WiAavK9pIVWdX0/e3J+eEUh5A==", + "devOptional": true, + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" + }, + "node_modules/@types/vscode": { + "version": "1.97.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.97.0.tgz", + "integrity": "sha512-ueE73loeOTe7olaVyqP9mrRI54kVPJifUPjblZo9fYcv1CuVLPOEKEkqW0GkqPC454+nCEoigLWnC2Pp7prZ9w==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.25.0.tgz", + "integrity": "sha512-VM7bpzAe7JO/BFf40pIT1lJqS/z1F8OaSsUB3rpFJucQA4cOSuH2RVVVkFULN+En0Djgr29/jb4EQnedUo95KA==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.25.0", + "@typescript-eslint/type-utils": "8.25.0", + "@typescript-eslint/utils": "8.25.0", + "@typescript-eslint/visitor-keys": "8.25.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.25.0.tgz", + "integrity": "sha512-4gbs64bnbSzu4FpgMiQ1A+D+urxkoJk/kqlDJ2W//5SygaEiAP2B4GoS7TEdxgwol2el03gckFV9lJ4QOMiiHg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "8.25.0", + "@typescript-eslint/types": "8.25.0", + "@typescript-eslint/typescript-estree": "8.25.0", + "@typescript-eslint/visitor-keys": "8.25.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.25.0.tgz", + "integrity": "sha512-6PPeiKIGbgStEyt4NNXa2ru5pMzQ8OYKO1hX1z53HMomrmiSB+R5FmChgQAP1ro8jMtNawz+TRQo/cSXrauTpg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.25.0", + "@typescript-eslint/visitor-keys": "8.25.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.25.0.tgz", + "integrity": "sha512-d77dHgHWnxmXOPJuDWO4FDWADmGQkN5+tt6SFRZz/RtCWl4pHgFl3+WdYCn16+3teG09DY6XtEpf3gGD0a186g==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "8.25.0", + "@typescript-eslint/utils": "8.25.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.25.0.tgz", + "integrity": "sha512-+vUe0Zb4tkNgznQwicsvLUJgZIRs6ITeWSCclX1q85pR1iOiaj+4uZJIUp//Z27QWu5Cseiw3O3AR8hVpax7Aw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.25.0.tgz", + "integrity": "sha512-ZPaiAKEZ6Blt/TPAx5Ot0EIB/yGtLI2EsGoY6F7XKklfMxYQyvtL+gT/UCqkMzO0BVFHLDlzvFqQzurYahxv9Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.25.0", + "@typescript-eslint/visitor-keys": "8.25.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.25.0.tgz", + "integrity": "sha512-syqRbrEv0J1wywiLsK60XzHnQe/kRViI3zwFALrNEgnntn1l24Ra2KvOAWwWbWZ1lBZxZljPDGOq967dsl6fkA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.25.0", + "@typescript-eslint/types": "8.25.0", + "@typescript-eslint/typescript-estree": "8.25.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.25.0.tgz", + "integrity": "sha512-kCYXKAum9CecGVHGij7muybDfTS2sD3t0L4bJsEZLkyrXUImiCTq1M3LG2SRtOhiHFwMR9wAFplpT6XHYjTkwQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.25.0", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@vitest/expect": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.0.tgz", + "integrity": "sha512-0v4YVbhDKX3SKoy0PHWXpKhj44w+3zZkIoVES9Ex2pq+u6+Bijijbi2ua5kE+h3qT6LBWFTNZSCOEU37H8Y5sA==", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/spy": "3.2.0", + "@vitest/utils": "3.2.0", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.0.tgz", + "integrity": "sha512-HFcW0lAMx3eN9vQqis63H0Pscv0QcVMo1Kv8BNysZbxcmHu3ZUYv59DS6BGYiGQ8F5lUkmsfMMlPm4DJFJdf/A==", + "dependencies": { + "@vitest/spy": "3.2.0", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.0.tgz", + "integrity": "sha512-gUUhaUmPBHFkrqnOokmfMGRBMHhgpICud9nrz/xpNV3/4OXCn35oG+Pl8rYYsKaTNd/FAIrqRHnwpDpmYxCYZw==", + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.0.tgz", + "integrity": "sha512-bXdmnHxuB7fXJdh+8vvnlwi/m1zvu+I06i1dICVcDQFhyV4iKw2RExC/acavtDn93m/dRuawUObKsrNE1gJacA==", + "dependencies": { + "@vitest/utils": "3.2.0", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.0.tgz", + "integrity": "sha512-z7P/EneBRMe7hdvWhcHoXjhA6at0Q4ipcoZo6SqgxLyQQ8KSMMCmvw1cSt7FHib3ozt0wnRHc37ivuUMbxzG/A==", + "dependencies": { + "@vitest/pretty-format": "3.2.0", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.0.tgz", + "integrity": "sha512-s3+TkCNUIEOX99S0JwNDfsHRaZDDZZR/n8F0mop0PmsEbQGKZikCGpTGZ6JRiHuONKew3Fb5//EPwCP+pUX9cw==", + "dependencies": { + "tinyspy": "^4.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.0.tgz", + "integrity": "sha512-gXXOe7Fj6toCsZKVQouTRLJftJwmvbhH5lKOBR6rlP950zUq9AitTUjnFoXS/CqjBC2aoejAztLPzzuva++XBw==", + "dependencies": { + "@vitest/pretty-format": "3.2.0", + "loupe": "^3.1.3", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vscode-elements/elements": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@vscode-elements/elements/-/elements-1.15.0.tgz", + "integrity": "sha512-H+Ky/NqqhgaqdyoFR0np1OSL4n9x4acNR3jRHKP8x8jXGj8Gtw3ZoGV0PAMiVYKeyhwW0Yz3RRONtp6S49cMFA==", + "dependencies": { + "lit": "^3.2.1" + } + }, + "node_modules/@vscode/codicons": { + "version": "0.0.36", + "resolved": "https://registry.npmjs.org/@vscode/codicons/-/codicons-0.0.36.tgz", + "integrity": "sha512-wsNOvNMMJ2BY8rC2N2MNBG7yOowV3ov8KlvUE/AiVUlHKTfWsw3OgAOQduX7h0Un6GssKD3aoTVH+TF3DSQwKQ==" + }, + "node_modules/@vscode/test-cli": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/@vscode/test-cli/-/test-cli-0.0.10.tgz", + "integrity": "sha512-B0mMH4ia+MOOtwNiLi79XhA+MLmUItIC8FckEuKrVAVriIuSWjt7vv4+bF8qVFiNFe4QRfzPaIZk39FZGWEwHA==", + "dev": true, + "dependencies": { + "@types/mocha": "^10.0.2", + "c8": "^9.1.0", + "chokidar": "^3.5.3", + "enhanced-resolve": "^5.15.0", + "glob": "^10.3.10", + "minimatch": "^9.0.3", + "mocha": "^10.2.0", + "supports-color": "^9.4.0", + "yargs": "^17.7.2" + }, + "bin": { + "vscode-test": "out/bin.mjs" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@vscode/test-electron": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.4.1.tgz", + "integrity": "sha512-Gc6EdaLANdktQ1t+zozoBVRynfIsMKMc94Svu1QreOBC8y76x4tvaK32TljrLi1LI2+PK58sDVbL7ALdqf3VRQ==", + "dev": true, + "dependencies": { + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "jszip": "^3.10.1", + "ora": "^7.0.1", + "semver": "^7.6.2" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "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/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "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/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "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/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/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "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/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bl": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", + "dev": true, + "dependencies": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "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": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/c8": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-9.1.0.tgz", + "integrity": "sha512-mBWcT5iqNir1zIkzSPyI3NCR9EZCVI3WUD+AVO17MVWTSFNyUueXE82qTeampNtTr+ilN/5Ua3j24LgbCKjDVg==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^3.1.1", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.1.6", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.0.0", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1" + }, + "bin": { + "c8": "bin/c8.js" + }, + "engines": { + "node": ">=14.14.0" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "dev": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" + }, + "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==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chai": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", + "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "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/chalk/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/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "engines": { + "node": ">= 16" + } + }, + "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/cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "dev": true, + "dependencies": { + "restore-cursor": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/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/cliui/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/cliui/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/cliui/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/cliui/node_modules/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/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/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": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "engines": { + "node": ">=6" + } + }, + "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/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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/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.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "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-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", + "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.24.2", + "@esbuild/android-arm": "0.24.2", + "@esbuild/android-arm64": "0.24.2", + "@esbuild/android-x64": "0.24.2", + "@esbuild/darwin-arm64": "0.24.2", + "@esbuild/darwin-x64": "0.24.2", + "@esbuild/freebsd-arm64": "0.24.2", + "@esbuild/freebsd-x64": "0.24.2", + "@esbuild/linux-arm": "0.24.2", + "@esbuild/linux-arm64": "0.24.2", + "@esbuild/linux-ia32": "0.24.2", + "@esbuild/linux-loong64": "0.24.2", + "@esbuild/linux-mips64el": "0.24.2", + "@esbuild/linux-ppc64": "0.24.2", + "@esbuild/linux-riscv64": "0.24.2", + "@esbuild/linux-s390x": "0.24.2", + "@esbuild/linux-x64": "0.24.2", + "@esbuild/netbsd-arm64": "0.24.2", + "@esbuild/netbsd-x64": "0.24.2", + "@esbuild/openbsd-arm64": "0.24.2", + "@esbuild/openbsd-x64": "0.24.2", + "@esbuild/sunos-x64": "0.24.2", + "@esbuild/win32-arm64": "0.24.2", + "@esbuild/win32-ia32": "0.24.2", + "@esbuild/win32-x64": "0.24.2" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.32.0.tgz", + "integrity": "sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.0", + "@eslint/config-helpers": "^0.3.0", + "@eslint/core": "^0.15.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.32.0", + "@eslint/plugin-kit": "^0.3.4", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/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/eslint/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/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "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/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dependencies": { + "@types/estree": "^1.0.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/expect-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz", + "integrity": "sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==", + "engines": { + "node": ">=12.0.0" + } + }, + "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-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "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.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "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": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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==", + "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==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "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-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "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.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "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==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "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/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "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.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "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==", + "dev": true + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "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.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "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.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "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.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.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-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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-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.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "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.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "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/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/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/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "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-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dev": true, + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "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/konva": { + "version": "9.3.20", + "resolved": "https://registry.npmjs.org/konva/-/konva-9.3.20.tgz", + "integrity": "sha512-7XPD/YtgfzC8b1c7z0hhY5TF1IO/pBYNa29zMTA2PeBaqI0n5YplUeo4JRuRcljeAF8lWtW65jePZZF7064c8w==", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/lavrton" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/konva" + }, + { + "type": "github", + "url": "https://github.com/sponsors/lavrton" + } + ] + }, + "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/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lit": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.2.1.tgz", + "integrity": "sha512-1BBa1E/z0O9ye5fZprPtdqnc0BFzxIxTTOO/tQFmyC/hj1O3jL4TfmLBw0WEwjAokdLwpclkvGgDJwTIh0/22w==", + "dependencies": { + "@lit/reactive-element": "^2.0.4", + "lit-element": "^4.1.0", + "lit-html": "^3.2.0" + } + }, + "node_modules/lit-element": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.1.1.tgz", + "integrity": "sha512-HO9Tkkh34QkTeUmEdNYhMT8hzLid7YlMlATSi1q4q17HE5d9mrrEHJ/o8O2D0cMi182zK1F3v7x0PWFjrhXFew==", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.2.0", + "@lit/reactive-element": "^2.0.4", + "lit-html": "^3.2.0" + } + }, + "node_modules/lit-html": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.2.1.tgz", + "integrity": "sha512-qI/3lziaPMSKsrwlxH/xMgikhQ0EGOX2ICU73Bi/YHFvz2j/yMCIrw4+puF2IpQ4+upd3EWbvnHM9+PnJn48YA==", + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/loupe": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", + "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==" + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "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.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mocha": { + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", + "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^8.1.0", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9", + "yargs-unparser": "^2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/mocha/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/mocha/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/mocha/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/mocha/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/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/mocha/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/mocha/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/mocha/node_modules/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/mocha/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "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/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/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, + "bin": { + "semver": "bin/semver" + } + }, + "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/npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm-run-all/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/npm-run-all/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/npm-run-all/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/npm-run-all/node_modules/cross-spawn": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/npm-run-all/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/npm-run-all/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/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/npm-run-all/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/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, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-run-all/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "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.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.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/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-7.0.1.tgz", + "integrity": "sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==", + "dev": true, + "dependencies": { + "chalk": "^5.3.0", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.9.0", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^1.3.0", + "log-symbols": "^5.1.0", + "stdin-discarder": "^0.1.0", + "string-width": "^6.1.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true + }, + "node_modules/ora/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/log-symbols": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", + "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", + "dev": true, + "dependencies": { + "chalk": "^5.0.0", + "is-unicode-supported": "^1.1.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/string-width": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-6.1.0.tgz", + "integrity": "sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^10.2.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==" + }, + "node_modules/pathval": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", + "engines": { + "node": ">= 14.16" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.4.tgz", + "integrity": "sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==", + "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.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": 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/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "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/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.41.1.tgz", + "integrity": "sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==", + "dependencies": { + "@types/estree": "1.0.7" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.41.1", + "@rollup/rollup-android-arm64": "4.41.1", + "@rollup/rollup-darwin-arm64": "4.41.1", + "@rollup/rollup-darwin-x64": "4.41.1", + "@rollup/rollup-freebsd-arm64": "4.41.1", + "@rollup/rollup-freebsd-x64": "4.41.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.41.1", + "@rollup/rollup-linux-arm-musleabihf": "4.41.1", + "@rollup/rollup-linux-arm64-gnu": "4.41.1", + "@rollup/rollup-linux-arm64-musl": "4.41.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.41.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.41.1", + "@rollup/rollup-linux-riscv64-gnu": "4.41.1", + "@rollup/rollup-linux-riscv64-musl": "4.41.1", + "@rollup/rollup-linux-s390x-gnu": "4.41.1", + "@rollup/rollup-linux-x64-gnu": "4.41.1", + "@rollup/rollup-linux-x64-musl": "4.41.1", + "@rollup/rollup-win32-arm64-msvc": "4.41.1", + "@rollup/rollup-win32-ia32-msvc": "4.41.1", + "@rollup/rollup-win32-x64-msvc": "4.41.1", + "fsevents": "~2.3.2" + } + }, + "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.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/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/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-push-apply/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/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "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/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "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/shell-quote": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", + "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==" + }, + "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/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.21", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz", + "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==", + "dev": true + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==" + }, + "node_modules/std-env": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", + "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==" + }, + "node_modules/stdin-discarder": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.1.0.tgz", + "integrity": "sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==", + "dev": true, + "dependencies": { + "bl": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.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/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/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-cjs/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/string.prototype.padend": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.6.tgz", + "integrity": "sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-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-ansi-cjs/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/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/supports-color": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", + "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "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/test-exclude/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/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==" + }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==" + }, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.5", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz", + "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tinypool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.0.tgz", + "integrity": "sha512-7CotroY9a8DKsKprEy/a14aCCm8jYVmR7aFy4fpkZM8sdpNJbKkixuNjgM50yCmip2ezc8z4N7k3oe2+rfRJCQ==", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.3.tgz", + "integrity": "sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==", + "engines": { + "node": ">=14.0.0" + } + }, + "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-api-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", + "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", + "dev": true, + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "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/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "devOptional": true + }, + "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/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/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vite": { + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.0.tgz", + "integrity": "sha512-8Fc5Ko5Y4URIJkmMF/iFP1C0/OJyY+VGVe9Nw6WAdZyw4bTO+eVg9mwxWkQp/y8NnAoQY3o9KAvE1ZdA2v+Vmg==", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.4.1", + "es-module-lexer": "^1.7.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vite/node_modules/@esbuild/aix-ppc64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", + "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz", + "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz", + "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz", + "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz", + "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz", + "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz", + "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz", + "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz", + "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz", + "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz", + "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz", + "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz", + "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz", + "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz", + "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz", + "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz", + "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz", + "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz", + "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz", + "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz", + "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz", + "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz", + "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz", + "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", + "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", + "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.5", + "@esbuild/android-arm": "0.25.5", + "@esbuild/android-arm64": "0.25.5", + "@esbuild/android-x64": "0.25.5", + "@esbuild/darwin-arm64": "0.25.5", + "@esbuild/darwin-x64": "0.25.5", + "@esbuild/freebsd-arm64": "0.25.5", + "@esbuild/freebsd-x64": "0.25.5", + "@esbuild/linux-arm": "0.25.5", + "@esbuild/linux-arm64": "0.25.5", + "@esbuild/linux-ia32": "0.25.5", + "@esbuild/linux-loong64": "0.25.5", + "@esbuild/linux-mips64el": "0.25.5", + "@esbuild/linux-ppc64": "0.25.5", + "@esbuild/linux-riscv64": "0.25.5", + "@esbuild/linux-s390x": "0.25.5", + "@esbuild/linux-x64": "0.25.5", + "@esbuild/netbsd-arm64": "0.25.5", + "@esbuild/netbsd-x64": "0.25.5", + "@esbuild/openbsd-arm64": "0.25.5", + "@esbuild/openbsd-x64": "0.25.5", + "@esbuild/sunos-x64": "0.25.5", + "@esbuild/win32-arm64": "0.25.5", + "@esbuild/win32-ia32": "0.25.5", + "@esbuild/win32-x64": "0.25.5" + } + }, + "node_modules/vite/node_modules/fdir": { + "version": "6.4.5", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz", + "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/vitest": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.0.tgz", + "integrity": "sha512-P7Nvwuli8WBNmeMHHek7PnGW4oAZl9za1fddfRVidZar8wDZRi7hpznLKQePQ8JPLwSBEYDK11g+++j7uFJV8Q==", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/expect": "3.2.0", + "@vitest/mocker": "3.2.0", + "@vitest/pretty-format": "^3.2.0", + "@vitest/runner": "3.2.0", + "@vitest/snapshot": "3.2.0", + "@vitest/spy": "3.2.0", + "@vitest/utils": "3.2.0", + "chai": "^5.2.0", + "debug": "^4.4.1", + "expect-type": "^1.2.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "picomatch": "^4.0.2", + "std-env": "^3.9.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.14", + "tinypool": "^1.1.0", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", + "vite-node": "3.2.0", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.2.0", + "@vitest/ui": "3.2.0", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/debug": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "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.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type/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/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.18", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", + "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workerpool": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", + "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/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/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-cjs/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/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/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/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/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/yargs/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/yargs/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/yargs/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/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 index 264842e..9dc4b29 100644 --- a/package.json +++ b/package.json @@ -1,79 +1,65 @@ { - "name": "vscode-displayfile", - "displayName": "IBM i Renderer", - "description": "Preview IBM i display & printer files", - "version": "0.1.3", - "publisher": "halcyontechltd", - "author": { - "name": "Halcyon-Tech, Liam Allan" - }, - "keywords": [ - "ibmi", - "rpgle", - "cobol", - "ile", - "iseries", - "as400", - "printer", - "5250" - ], - "preview": true, - "repository": "https://github.com/halcyon-tech/vscode-displayfile", - "engines": { - "vscode": "^1.63.0" - }, - "categories": [ - "Other" - ], - "icon": "icon.png", - "activationEvents": [ - "onLanguage:dds.dspf", - "onLanguage:dds.prtf" - ], - "main": "./src/extension.js", - "contributes": { - "snippets": [ - { - "path": "./schemas/dspf.code-snippets", - "language": "dds.dspf" - } - ], - "configuration": { - "title": "Display File", - "properties": { - "vscode-displayfile.renderTimeout": { - "type": "number", - "description": "Amount of time to wait before rendering changes after the cursor has moved. You may have to restart VS Code if you change this value.", - "default": 1500, - "minimum": 0 - } - } - }, - "commands": [ - { - "command": "vscode-displayfile.changeInd", - "title": "Flip indicators", - "category": "Display File" - } - ] - }, - "extensionDependencies": [ - "barrettotte.ibmi-languages" - ], - "scripts": { - "lint": "eslint .", - "test": "node ./test", - "package": "vsce package" - }, - "devDependencies": { - "@types/glob": "^7.1.4", - "@types/mocha": "^9.0.0", - "@types/node": "14.x", - "@types/vscode": "^1.63.0", - "@vscode/test-electron": "^1.6.2", - "eslint": "^8.6.0", - "glob": "^7.1.7", - "mocha": "^9.1.3", - "typescript": "^4.4.4" - } + "name": "vscode-ibmi-renderer", + "displayName": "vscode-ibmi-renderer", + "description": "IBM i Renderer 2", + "version": "0.0.1", + "engines": { + "vscode": "^1.97.0" + }, + "categories": [ + "Other" + ], + "activationEvents": [ + "onLanguage:dds.dspf" + ], + "main": "./dist/extension.js", + "contributes": { + "commands": [ + { + "command": "vscode-ibmi-renderer.launchRenderer", + "title": "Launch Renderer", + "icon": "$(search)" + } + ], + "menus": { + "editor/title": [ + { + "command": "vscode-ibmi-renderer.launchRenderer", + "when": "editorLangId == dds.dspf", + "group": "navigation" + } + ] + } + }, + "scripts": { + "vscode:prepublish": "npm run package", + "compile": "npm run build:frontend && npm run check-types && npm run lint && node esbuild.js", + "watch": "npm-run-all -p watch:*", + "build:frontend": "mkdir -p webui/scripts && cp node_modules/@vscode-elements/elements/dist/bundled.js webui/scripts/vscode-elements.js && cp node_modules/@vscode/codicons/dist/codicon.css webui/scripts/codicon.css && cp node_modules/@vscode/codicons/dist/codicon.ttf webui/scripts/codicon.ttf && cp node_modules/konva/konva.min.js webui/scripts/konva.min.js", + "build:esbuild": "node esbuild.js", + "build:tsc": "tsc --noEmit --project tsconfig.json", + "getTsTypesForFile": "tsc --declaration --emitDeclarationOnly --outDir types && cp types/ui/dspf.d.ts webui/dspf.d.ts", + "package": "npm run check-types && npm run lint && node esbuild.js --production", + "check-types": "tsc --noEmit", + "lint": "eslint src", + "test": "vitest" + }, + "devDependencies": { + "@types/node": "20.x", + "@types/vscode": "^1.97.0", + "@typescript-eslint/eslint-plugin": "^8.22.0", + "@typescript-eslint/parser": "^8.22.0", + "@vscode/test-cli": "^0.0.10", + "@vscode/test-electron": "^2.4.1", + "esbuild": "^0.24.2", + "eslint": "^9.19.0", + "npm-run-all": "^4.1.5", + "typescript": "^5.7.3" + }, + "dependencies": { + "@vscode-elements/elements": "^1.15.0", + "@vscode/codicons": "^0.0.36", + "konva": "^9.3.20", + "vitest": "^3.2.0" + } } diff --git a/schemas/dspf.code-snippets b/schemas/dspf.code-snippets deleted file mode 100644 index 11a29ac..0000000 --- a/schemas/dspf.code-snippets +++ /dev/null @@ -1,47 +0,0 @@ -{ - "subfile": { - "scope": "dds.dspf", - "description": "Basic load all subfile", - "isFileTemplate": true, - "prefix": "subfile", - "body": [ - " A INDARA", - " A CA12(12)", - " A R SFLDTA SFL", - " A RRN 4Y 0H", - " A* DISPLAY DTA", - " A XSEL 1A B 7 8", - " A XID 3A O 7 12", - " A XNAME 38A O 7 16", - " A* COLOR HELLO", - " A R SFLCTL SFLCTL(SFLDTA)", - " A SFLPAG(0014)", - " A SFLSIZ(9999)", - " A OVERLAY", - " A 85 SFLDSPCTL", - " A 95 SFLDSP", - " A N85 SFLCLR", - " A SFLRRN 4S 0H SFLRCDNBR(CURSOR)", - " A*", - " A 6 6'Opt'", - " A DSPATR(HI)", - " A DSPATR(UL)", - " A 6 12'ID'", - " A DSPATR(HI)", - " A DSPATR(UL)", - " A 6 16'Name'", - " A DSPATR(UL)", - " A COLOR(WHT)", - " A R FOOTER_FMT", - " A OVERLAY", - " A 3 6'F3=Exit'", - " A COLOR(BLU)", - " A 2 35'$1'", - " A DSPATR(UL)", - " A COLOR(WHT)", - " A 4 6'5=View'", - " A COLOR(BLU)", - "", - ] - } -} \ No newline at end of file diff --git a/src/dspf.js b/src/dspf.js deleted file mode 100644 index 39030d2..0000000 --- a/src/dspf.js +++ /dev/null @@ -1,495 +0,0 @@ - -class DisplayFile { - constructor() { - /** @type {RecordInfo[]} */ - this.formats = []; - - /** @type {FieldInfo} */ - this.currentField = null; - - /** @type {FieldInfo[]} */ - this.currentFields = []; - - /** @type {RecordInfo} */ - this.currentRecord = new RecordInfo(`GLOBAL`); - } - - /** - * @param {string[]} lines - */ - parse(lines) { - let textCounter = 0; - - let conditionals, name, len, type, dec, inout, x, y, keywords; - - lines.forEach((line, index) => { - line = line.padEnd(80); - - if (line[6] === `*`) return; - - conditionals = line.substring(6, 16).padEnd(10); - name = line.substring(18, 28).trim(); - len = line.substring(29, 34).trim(); - type = line[34].toUpperCase(); - dec = line.substring(35, 37).trim(); - inout = line[37].toUpperCase(); - y = line.substring(38, 41).trim(); - x = line.substring(41, 44).trim(); - keywords = line.substring(44).trimEnd(); - - switch (line[16]) { - case 'R': - if (this.currentField !== null) { - this.currentField.handleKeywords(); - this.currentFields.push(this.currentField); - }; - if (this.currentFields !== null) this.currentRecord.fields = this.currentFields; - if (this.currentRecord !== null) { - this.currentRecord.range.end = index; - this.currentRecord.handleKeywords(); - this.formats.push(this.currentRecord); - } - - this.currentRecord = new RecordInfo(name); - this.currentRecord.range.start = index; - - this.currentFields = []; - this.currentField = null; - - this.HandleKeywords(keywords); - break; - - case ' ': - if ((x !== "" && y !== "") || inout === `H`) { - // From a regular display file - if (this.currentField !== null) { - this.currentField.handleKeywords(); - this.currentFields.push(this.currentField); - } - - this.currentField = new FieldInfo(); - this.currentField.position = { - x: Number(x), - y: Number(y) - }; - } else if (x !== "" && y === "") { - // From a printer file with no Y position - if (this.currentField !== null) { - this.currentField.handleKeywords(); - this.currentFields.push(this.currentField); - } - - let totalX = Number(x); - if (x.startsWith(`+`)) { - totalX = this.currentFields[this.currentFields.length - 1].position.x + Number(x.substring(1)); - - if (this.currentFields[this.currentFields.length - 1].value) { - totalX += this.currentFields[this.currentFields.length - 1].value.length; - } - } - - this.currentField = new FieldInfo(); - this.currentField.position = { - x: totalX, - y: 0 - }; - } - - if (name != "") - { - if (this.currentField) { - this.currentField.name = name; - this.currentField.value = ""; - this.currentField.length = Number(len); - switch (inout) - { - case "I": - this.currentField.displayType = `input`; - break; - case "B": - this.currentField.displayType = `both`; - break; - case "H": - this.currentField.displayType = `hidden`; - break; - case " ": - case "O": - this.currentField.displayType = `output`; - break; - } - - this.currentField.decimals = 0; - switch (type) - { - case "D": - case "Z": - case "Y": - this.currentField.type = `decimal`; - if (dec != "") this.currentField.decimals = Number(dec); - break; - case `L`: //Date - this.currentField.length = 8; - this.currentField.type = `char`; - this.currentField.keywords.push({ - name: `DATE`, - value: undefined, - conditions: [] - }); - break; - case `T`: //Time - this.currentField.length = 8; - this.currentField.type = `char`; - this.currentField.keywords.push({ - name: `TIME`, - value: undefined, - conditions: [] - }); - break; - default: - this.currentField.type = `char`; - break; - } - - this.currentField.conditions.push( - ...DisplayFile.parseConditionals(conditionals) - ) - - this.HandleKeywords(keywords, conditionals); - } - } - else - { - if (this.currentField != null) - { - if (this.currentField.name == null) - { - textCounter++; - this.currentField.name = `TEXT${textCounter}`; - if (this.currentField.value == null) this.currentField.value = ""; - this.currentField.length = this.currentField.value.length; - this.currentField.displayType = `const`; - - this.currentField.conditions.push( - ...DisplayFile.parseConditionals(conditionals) - ) - } - } - this.HandleKeywords(keywords, conditionals); - } - break; - } - }); - - if (this.currentField !== null) { - this.currentField.handleKeywords(); - this.currentFields.push(this.currentField); - }; - if (this.currentFields !== null) this.currentRecord.fields = this.currentFields; - if (this.currentRecord !== null) { - this.currentRecord.range.end = lines.length; - this.currentRecord.handleKeywords(); - this.formats.push(this.currentRecord); - } - - this.currentField = null; - this.currentFields = null; - this.currentRecord = null; - } - - /** - * @param {string} keywords - * @param {string} [conditionals] - * @returns - */ - HandleKeywords(keywords, conditionals = ``) { - let insertIndex; - - if (this.currentField) { - insertIndex = this.currentField.keywordStrings.keywordLines.push(keywords); - this.currentField.keywordStrings.conditionalLines[insertIndex] = conditionals; - } else { - this.currentRecord.keywordStrings.push(keywords); - } - - - } - - static parseConditionals(conditionColumns) { - if (conditionColumns.trim() === "") return []; - - /** @type {Conditional[]} */ - let conditionals = []; - - //TODO: something with condition - //const condition = conditionColumns.substring(0, 1); //A (and) or O (or) - - let current = ""; - let negate = false; - let indicator = 0; - - let cIndex = 1; - - while (cIndex <= 7) { - current = conditionColumns.substring(cIndex, cIndex + 3); - - if (current.trim() !== "") { - negate = (conditionColumns.substring(cIndex, cIndex + 1) == "N"); - indicator = Number(conditionColumns.substring(cIndex+1, cIndex+3)); - - conditionals.push(new Conditional(indicator, negate)); - } - - cIndex += 3; - } - - return conditionals; - } - - /** - * @param {string[]} keywordStrings - * @param {{[line: number]: string}} [conditionalStrings] - * */ - static parseKeywords(keywordStrings, conditionalStrings) { - let result = { - value: ``, - keywords: [], - conditions: [] - }; - - const newLineMark = `~`; - - let value = keywordStrings.join(newLineMark) + newLineMark; - let conditionalLine = 1; - - if (value.length > 0) { - value += ` `; - - let inBrackets = 0; - let word = ``; - let innerValue = ``; - let inString = false; - - for (let i = 0; i < value.length; i++) { - switch (value[i]) { - case `+`: - case `-`: - if (value[i+1] !== newLineMark) { - innerValue += value[i]; - } - break; - - case `'`: - if (inBrackets > 0) { - innerValue += value[i]; - } else { - if (inString) { - inString = false; - - result.value = innerValue; - innerValue = ``; - } else { - inString = true; - } - } - break; - - case `(`: - if (inString) { - innerValue += value[i]; - } else { - inBrackets++; - } - break; - case `)`: - if (inString) { - innerValue += value[i]; - } else { - inBrackets--; - } - break; - - case newLineMark: - case ` `: - if (inBrackets > 0 || inString) { - if (value[i] !== newLineMark) { - innerValue += value[i]; - } - } else { - if (word.length > 0) { - let conditionals = conditionalStrings ? conditionalStrings[conditionalLine] : undefined; - - result.keywords.push({ - name: word.toUpperCase(), - value: innerValue.length > 0 ? innerValue : undefined, - conditions: conditionals ? DisplayFile.parseConditionals(conditionals) : [] - }); - - word = ``; - innerValue = ``; - } - } - - if (value[i] === newLineMark) conditionalLine += 1; - break; - default: - if (inBrackets > 0 || inString) - innerValue += value[i]; - else - word += value[i]; - break; - } - } - } - - return result; - } -} - -class RecordInfo { - constructor(name) { - this.name = name; - - /** @type {FieldInfo[]} */ - this.fields = []; - - this.range = { - start: -1, - end: -1 - }; - - this.isWindow = false; - /** @type {string} */ - this.windowReference = undefined; - this.windowSize = { - y: 0, - x: 0, - width: 80, - height: 24 - }; - - /** @type {string[]} */ - this.keywordStrings = []; - - /** @type {{name: string, value: string}[]} */ - this.keywords = []; - } - - handleKeywords() { - const data = DisplayFile.parseKeywords(this.keywordStrings); - - this.keywords.push(...data.keywords); - - this.keywords.forEach(keyword => { - switch (keyword.name) { - case "WINDOW": - this.isWindow = true; - let points = keyword.value.split(' '); - - - if (points.length >= 3 && points[0].toUpperCase() === `*DFT`) { - // WINDOW (*DFT Y X) - this.windowSize = { - y: 2, - x: 2, - width: Number(points[2]), - height: Number(points[1]) - }; - } else { - if (points.length === 1) { - // WINDOW (REF) - this.windowReference = points[0]; - - } else if (points.length >= 4) { - // WINDOW (*DFT SY SX Y X) - this.windowSize = { - y: Number(points[0]) || 2, - x: Number(points[1]) || 2, - width: Number(points[3]), - height: Number(points[2]) - }; - } - } - - switch (points[0]) { - case `*DFT`: - break; - - } - - switch (points.length) { - case 4: - //WINDOW (STARTY STARTX SIZEY SIZEX) - - break; - case 1: - //WINDOW (REF) - this.windowReference = points[0]; - break; - } - - break; - } - }); - } -} - -class FieldInfo { - constructor(name) { - /** @type {string} */ - this.name = name; - - /** @type {string} */ - this.value = ``; - - /** @type {`char`|`decimal`} */ - this.type = null; - - /** @type {`input`|`output`|`both`|`const`|`hidden`} */ - this.displayType = null; - - this.length = 0; - this.decimals = 0; - - this.position = { - x: 0, - y: 0 - }; - - /** @type {{keywordLines: string[], conditionalLines: {[lineIndex: number]: string}}} */ - this.keywordStrings = { - keywordLines: [], - conditionalLines: {} - }; - - /** @type {Conditional[]} */ - this.conditions = []; - - /** @type {{name: string, value: string, conditions: Conditional[]}[]} */ - this.keywords = []; - } - - handleKeywords() { - const data = DisplayFile.parseKeywords(this.keywordStrings.keywordLines, this.keywordStrings.conditionalLines); - - this.keywords.push(...data.keywords); - - if (data.value.length > 0) this.value = data.value; - } -} - -class Conditional { - /** - * @param {number} ind - * @param {boolean} [negate] - */ - constructor(ind, negate = false) { - this.indicator = ind; - this.negate = negate; - } -} - -module.exports = { - DisplayFile, - FieldInfo, - RecordInfo -} \ No newline at end of file diff --git a/src/extension.js b/src/extension.js deleted file mode 100644 index d7b2a4b..0000000 --- a/src/extension.js +++ /dev/null @@ -1,134 +0,0 @@ -// The module 'vscode' contains the VS Code extensibility API -// Import the module and reference it with the alias vscode in your code below -const vscode = require('vscode'); - -const lensProvider = require(`./lensProvider`); - -const { DisplayFile } = require(`./dspf`); -const Render = require(`./render`); -const Window = require(`./window`); - -const Indicators = require(`./indicators`); - -let renderTimeout; - -// this method is called when your extension is activated -// your extension is activated the very first time the command is executed - -/** - * @param {vscode.ExtensionContext} context - */ -function activate(context) { - - // Use the console to output diagnostic information (console.log) and errors (console.error) - // This line of code will only be executed once when your extension is activated - console.log('Congratulations, your extension "vscode-displayfile" is now active!'); - - Indicators.initialize(); - - const lens = new lensProvider(); - - const config = vscode.workspace.getConfiguration('vscode-displayfile'); - - // The command has been defined in the package.json file - // Now provide the implementation of the command with registerCommand - // The commandId parameter must match the command field in package.json - context.subscriptions.push( - vscode.commands.registerCommand('vscode-displayfile.render', function (sourceLines, format, type) { - // The code you place here will be executed every time your command is executed - - try { - const dspf = new DisplayFile(); - dspf.parse(sourceLines); - - const render = new Render(dspf, Indicators.values, type); - - const html = render.generate(format); - - Window.create(); - Window.update(html); - - } catch (e) { - console.log(e); - } - }), - - vscode.commands.registerCommand(`vscode-displayfile.changeInd`, async () => { - const inds = Object.keys(Indicators.values); - - vscode.window.showQuickPick(inds.map((ind) => ({ - label: `${ind} - ${Indicators.values[ind]}`, - value: ind - })), { - canPickMany: true, - placeHolder: `Chose which indicators to switch` - }).then(chosen => { - chosen.forEach(ind => { - const index = Number(ind.value); - Indicators.values[index] = !Indicators.values[index]; - }) - }) - }), - - vscode.window.onDidChangeTextEditorSelection((event) => { - const editor = event.textEditor; - const selection = editor.selection; - - const timeout = config.get(`renderTimeout`) || 1500; - - clearTimeout(renderTimeout); - - renderTimeout = setTimeout(() => { - if (Window.isActive()) { - const activeEditor = vscode.window.activeTextEditor; - if (editor && activeEditor) { - const document = editor.document; - const id = document.languageId; - - if ([`dds.dspf`, `dds.prtf`].includes(id)) { - const eol = document.eol === vscode.EndOfLine.CRLF ? `\r\n` : `\n`; - const sourceLines = document.getText().split(eol); - - const dspf = new DisplayFile(); - dspf.parse(sourceLines); - - const render = new Render(dspf, Indicators.values, id); - - const line = selection.start.line; - - const format = dspf.formats.find(f => line >= f.range.start && line < f.range.end); - - if (format) { - const html = render.generate(format.name); - - Window.update(html); - } - } - } - } - }, timeout); - - }), - - vscode.languages.registerCodeLensProvider( - { - language: `dds.dspf`, - }, - lens - ), - vscode.languages.registerCodeLensProvider( - { - language: `dds.prtf`, - }, - lens - ), - ); -} - -// this method is called when your extension is deactivated -function deactivate() {} - -module.exports = { - activate, - deactivate -} diff --git a/src/extension.ts b/src/extension.ts new file mode 100644 index 0000000..7d74c4b --- /dev/null +++ b/src/extension.ts @@ -0,0 +1,27 @@ +// The module 'vscode' contains the VS Code extensibility API +// Import the module and reference it with the alias vscode in your code below +import * as vscode from 'vscode'; +import { RendererWebview } from './ui'; + +// This method is called when your extension is activated +// Your extension is activated the very first time the command is executed +export function activate(context: vscode.ExtensionContext) { + + // Use the console to output diagnostic information (console.log) and errors (console.error) + // This line of code will only be executed once when your extension is activated + console.log('Congratulations, your extension "vscode-ibmi-renderer" is now active!'); + + context.subscriptions.push( + vscode.commands.registerCommand('vscode-ibmi-renderer.launchRenderer', (uri?: vscode.Uri) => { + if (uri) { + const panel = new RendererWebview(context, uri); + panel.load().then(() => { + panel.show(); + }); + } + }) + ); +} + +// This method is called when your extension is deactivated +export function deactivate() {} diff --git a/src/indicators.js b/src/indicators.js deleted file mode 100644 index f70c811..0000000 --- a/src/indicators.js +++ /dev/null @@ -1,8 +0,0 @@ -/** @type {{[ind: number]: boolean}} */ -exports.values = {}; - -exports.initialize = () => { - for (let i = 1; i <= 99; i++) { - this.values[i] = false; - } -} \ No newline at end of file diff --git a/src/lensProvider.js b/src/lensProvider.js deleted file mode 100644 index f32b7e9..0000000 --- a/src/lensProvider.js +++ /dev/null @@ -1,65 +0,0 @@ - -const vscode = require(`vscode`); - -/** - * @type {vscode.CodeLensProvider} - */ -module.exports = class lensProvider { - constructor() { - this.emitter = new vscode.EventEmitter(); - this.onDidChangeCodeLenses = this.emitter.event; - } - - refresh() { - this.emitter.fire(); - } - - /** - * - * @param {vscode.TextDocument} document - * @returns {Promise} - */ - async provideCodeLenses(document) { - const codeLens = []; - - const eol = document.eol === 1 ? `\n` : `\r\n`; - const lines = document.getText().split(eol); - - lines.forEach((line, index) => { - line = line.padEnd(30); - // Not a comment - if (line[6] !== `*`) { - // Is a record format definition - if (line[16].toUpperCase() === `R`) { - const name = line.substring(18, 28).trim(); - - codeLens.push(new vscode.CodeLens( - new vscode.Range( - index, 0, index, 0 - ), - { - command: `vscode-displayfile.render`, - title: `Preview ${name}`, - arguments: [lines, name, document.languageId] - } - )); - } - } - }); - - // If codelens exist, that means there is formats - // Let's add a show all button - codeLens.push(new vscode.CodeLens( - new vscode.Range( - 0, 0, 0, 0 - ), - { - command: `vscode-displayfile.render`, - title: `Preview all`, - arguments: [lines, undefined, document.languageId] - } - )); - - return codeLens; - } -} diff --git a/src/render.js b/src/render.js deleted file mode 100644 index 2d834a9..0000000 --- a/src/render.js +++ /dev/null @@ -1,697 +0,0 @@ - -const { DisplayFile, FieldInfo, RecordInfo } = require(`./dspf`); - -const colors = { - RED: `red`, - BLU: `#4287f5`, - WHT: `#FFFFFF`, - GRN: `green`, - TRQ: `turquoise`, - YLW: `yellow`, - PNK: `pink`, - BLK: `black`, -}; - -const dateFormats = { - '*MDY': `mm/dd/yyyy`, - '*DMY': `dd/mm/yyyy`, - '*YMD': `yyyy/mm/dd`, - '*JUL': 'yy/ddd', - '*ISO': 'yyyy-mm-dd', - '*USA': 'mm/dd/yyyy', - '*EUR': 'dd.mm.yyyy', - '*JIS': 'yyyy-mm-dd', -}; - -const timeFormats = { - '*HMS': 'hh:mm:ss', - '*ISO': 'hh.mm.ss', - '*USA': 'hh:mm am', - '*EUR': 'hh.mm.ss', - '*JIS': 'hh:mm:ss', -}; - -module.exports = class Render { - constructor(display, indicators, type) { - /** @type {DisplayFile} */ - this.display = display; - - /** @type {{[ind: number]: boolean}} */ - this.indicators = indicators || {}; - - this.printerFileLine = 0; - - /** @type {"dds.dspf"|"dds.prtf"} */ - this.type = type; - } - - generate(format) { - let props = { - borderSize: '0px', - shadow: false, - zoom: `0.9`, - size: { - width: 880, - height: 480 - }, - backgroundColor: colors.BLK, - textColor: colors.GRN, - } - - switch (this.type) { - case `dds.dspf`: - const globalFormat = this.display.formats.find(currentFormat => currentFormat.name === `GLOBAL`); - - let parts; - - if (globalFormat) { - const displaySize = globalFormat.keywords.find(keyword => keyword.name === `DSPSIZ`); - - if (displaySize) { - parts = Render.parseParms(displaySize.value); - - if (parts.length >= 2) { - const [height, width] = parts; - - props.size = { - width: Number(width) * 11, - height: Number(height) * 20 - }; - } - } - } - break; - case `dds.prtf`: - props.zoom = `0.7`; - props.size = { - width: 132 * 11, - height: 66 * 20 - }; - - props.shadow = true; - props.borderSize = `3px`; - props.backgroundColor = `#fffdf0`; - props.textColor = colors.BLK; - break; - } - - let css = [ - `#container {`, - ` margin-top: 10px;`, - ` font-family: monospace;`, - ` font-size: 18px;`, - ` border: solid black ${props.borderSize};`, - ` width: ${props.size.width}px;`, - ` height: ${props.size.height}px;`, - ` position: absolute;`, - ` --g: transparent calc(100% - 1px), #ebebeb 0;`, - ` letter-spacing: 0.15px;`, - ` color: ${props.textColor};`, - ` background: ${props.backgroundColor};`, - ` background-size:`, - ` 11px 100%,`, - ` 100% 20px;`, - (props.shadow ? `box-shadow: 5px 5px 5px grey;` : ``), - `}`, - `@keyframes blinker {`, - ` 50% {`, - ` opacity: 0;`, - ` }`, - `}`, - ].join(` `); - - let body = `
`; - - const content = this.getHTML(format); - css += content.css; - body += content.body; - body += `
`; - - return [ - ``, - ``, - `${body}`, - `` - ].join(``); - } - - /** - * @param {string} format - */ - getHTML(format) { - let parts; - - /** @type {RecordInfo} */ - let windowFormat; - - /** @type {{baseX: number, baseY: number, baseWidth: number, baseHeight: number, x: number, y: number, width: number, height: number, color?: string}} */ - let windowConfig; - - /** @type {FieldInfo} */ - let windowTitle; - - /** @type {RecordInfo} */ - let recordFormat; - if (format) { - recordFormat = this.display.formats.find(currentFormat => currentFormat.name === format); - } - - if (recordFormat) { - if (recordFormat.isWindow) { - if (recordFormat.windowReference) { - windowFormat = this.display.formats.find(currentFormat => currentFormat.name === recordFormat.windowReference); - } else { - windowFormat = recordFormat; - } - - const { x, y, width, height } = windowFormat.windowSize; - windowConfig = { - baseX: x, - baseY: y, - baseWidth: width, - baseHeight: height, - x: x * 11, - y: y * 20, - width: width * 11, - height: (height-1) * 20 - }; - - const borderInfo = windowFormat.keywords.find(keyword => keyword.name === `WDWBORDER`); - if (borderInfo) { - parts = Render.parseParms(borderInfo.value); - - parts.forEach((part, index) => { - switch (part.toUpperCase()) { - case `*COLOR`: - windowConfig.color = parts[index + 1]; - break; - } - }); - } - - const windowInfo = windowFormat.keywords.find(keyword => keyword.name === `WDWTITLE`); - if (windowInfo) { - windowTitle = new FieldInfo(`WINDOWTITLE`); - windowTitle.type = `char`; - windowTitle.displayType = `const`; - - let xPositionValue = `center`; - let yPositionValue = `top`; - - parts = Render.parseParms(windowInfo.value); - - parts.forEach((part, index) => { - switch (part.toUpperCase()) { - case `*TEXT`: - windowTitle.value = parts[index + 1]; - break; - case `*COLOR`: - windowTitle.keywords.push({ - name: `COLOR`, - value: parts[index + 1], - conditions: [] - }); - case `*DSPATR`: - windowTitle.keywords.push({ - name: `DSPATR`, - value: parts[index + 1], - conditions: [] - }); - break; - - case `*CENTER`: - case `*LEFT`: - case `*RIGHT`: - xPositionValue = part.substring(1).toLowerCase(); - break; - - case `*TOP`: - case `*BOTTOM`: - yPositionValue = part.substring(1).toLowerCase(); - break; - } - }); - - // If no color is found, the default is blue. - if (!windowTitle.keywords.find(keyword => keyword.name === `COLOR`)) { - windowTitle.keywords.push({ - name: `COLOR`, - value: `BLU`, - conditions: [] - }); - } - - const txtLength = windowTitle.value.length; - - const yPosition = (windowConfig.baseY) + (yPositionValue === `top` ? 0 : windowConfig.baseHeight); - let xPosition = (windowConfig.baseX + 1); - - switch (xPositionValue) { - case `center`: - xPosition = (windowConfig.baseX + 1) + Math.floor((windowConfig.baseWidth / 2) - (txtLength / 2)); - break; - case `right`: - xPosition = (windowConfig.baseX + 1) + windowConfig.baseWidth - txtLength; - break; - case `left`: - xPosition = (windowConfig.baseX + 1); - break; - } - - windowTitle.position = { - x: xPosition, - y: yPosition - }; - - } - - } - } - - let css = ``; - let body = ``; - - if (windowFormat) { - // If this is a window, add the window CSS - if (windowConfig) { - const windowColor = colors[windowConfig.color] || colors.BLU; - css += [ - `#${windowFormat.name} {`, - ` position: absolute;`, - ` width: ${windowConfig.width}px;`, - ` height: ${windowConfig.height}px;`, - ` top: ${windowConfig.y}px;`, - ` left: ${windowConfig.x}px;`, - ` border: solid ${windowColor} 5px;`, - `}`, - ].join(` `); - } - - if (windowTitle) { - const windowContent = this.getContent(windowTitle); - - css += windowContent.css; - body += windowContent.body; - } - - if (windowConfig) { - body += `
`; - } - - if (windowFormat.name !== format) { - const windowContent = this.getFormatContent(windowFormat.name); - - css += windowContent.css; - body += windowContent.body; - } - } - - if (format) { - const content = this.getFormatContent(format); - - css += content.css; - body += content.body; - - } else { - this.display.formats.forEach(currentFormat => { - if (currentFormat.keywords.find(key => [`SFL`, `WINDOW`].includes(key.name))) { - // All but subfiles and windows - // SFL gets written by SFLCTL - return; - } - - const content = this.getFormatContent(currentFormat.name); - - css += content.css; - body += content.body; - }); - } - - if (windowFormat && windowConfig) { - body += `
`; - } - - return { - css, - body - } - } - - /** - * @param {string} recordFormat - */ - getFormatContent(recordFormat) { - let css = ``; - let body = ``; - - const formats = this.display.formats; - - const format = formats.find(format => format.name === recordFormat); - if (format) { - const subfileFormat = format.keywords.find(keyword => keyword.name === `SFLCTL`); - - // If there is a subfile format, render that first - if (subfileFormat) { - const subfilePage = format.keywords.find(keyword => keyword.name === `SFLPAG`) - const rows = Number(subfilePage ? subfilePage.value : 1); - - const subfileRecord = formats.find(format => format.name === subfileFormat.value); - - if (subfileRecord) { - const subfileFields = subfileRecord.fields.filter(field => field.displayType !== `hidden`); - - const low = Math.min(...subfileFields.map(field => field.position.y)); - const high = Math.max(...subfileFields.map(field => field.position.y)); - const linesPerItem = (high - low) + 1 - - for (let row = 0; row < rows; row++) { - subfileFields.forEach(field => { - let canDisplay = true; - - field.conditions.forEach(cond => { - if (this.indicators[cond.indicator] !== (cond.negate ? false : true)) { - canDisplay = false; - } - }) - - if (canDisplay) { - field.name = `${field.name}_${row}`; - const content = this.getContent(field); - css += content.css; - body += content.body; - } - - field.position.y += linesPerItem; - }); - } - - - } else { - throw new Error(`Unable to find SFLCTL format ${subfileFormat} from ${recordFormat}`); - } - } - - // Printer file keywords - let skipBefore = format.keywords.find(keyword => keyword.name === `SKIPB`); - let skipAfter = format.keywords.find(keyword => keyword.name === `SKIPA`); - let spaceBefore = format.keywords.find(keyword => keyword.name === `SPACEB`); - let spaceAfter = format.keywords.find(keyword => keyword.name === `SPACEA`); - - if (this.printerFileLine === 0) this.printerFileLine += 1; - - if (skipBefore) { - this.printerFileLine = Number(skipBefore.value); - } - - if (spaceBefore) { - this.printerFileLine += Number(spaceBefore.value); - } - - if (spaceAfter) { - this.printerFileLine += Number(spaceAfter.value); - } - - if (skipAfter) { - this.printerFileLine += Number(skipAfter.value); - } - - const fields = format.fields.filter(field => field.displayType !== `hidden`); - fields.forEach(field => { - let canDisplay = true; - - field.conditions.forEach(cond => { - if (this.indicators[cond.indicator] !== (cond.negate ? false : true)) { - canDisplay = false; - } - }); - - spaceBefore = field.keywords.find(keyword => keyword.name === `SPACEB`); - spaceAfter = field.keywords.find(keyword => keyword.name === `SPACEA`); - - if (spaceBefore) { - this.printerFileLine += Number(spaceBefore.value); - } - - if (field.position.y === 0) - field.position.y += this.printerFileLine; - - if (canDisplay) { - const content = this.getContent(field); - css += content.css; - body += content.body; - } - - if (spaceAfter) { - this.printerFileLine += Number(spaceAfter.value); - } - }); - - } else { - throw new Error(`Record format does not exist.`); - } - - return { - css, - body - } - } - - /** - * @param {FieldInfo} field - */ - getContent(field) { - if (field.displayType !== `hidden`) { - // Hacky way to make names valid IDs - const htmlName = field.name - .replace(new RegExp(`1`, `g`), `ONE`) - .replace(new RegExp(`2`, `g`), `TWO`) - .replace(new RegExp(`3`, `g`), `THREE`) - .replace(new RegExp(`4`, `g`), `FOUR`) - .replace(new RegExp(`5`, `g`), `FIVE`) - .replace(new RegExp(`6`, `g`), `SIX`) - .replace(new RegExp(`7`, `g`), `SEVEN`) - .replace(new RegExp(`8`, `g`), `EIGHT`) - .replace(new RegExp(`9`, `g`), `NINE`) - .replace(new RegExp(`0`, `g`), `ZERO`) - .replace(new RegExp(`#`, `g`), `HASH`) - .replace(new RegExp(`@`, `g`), `HASH`) - .replace(new RegExp(`\\$`, `g`), `DOLLAR`) - .replace(new RegExp(`_`, `g`), `US`) - - let css = `#${htmlName} {`; - - const keywords = field.keywords; - - keywords.forEach(keyword => { - let canDisplay = true; - - keyword.conditions.forEach(cond => { - if (this.indicators[cond.indicator] !== (cond.negate ? false : true)) { - canDisplay = false; - } - }) - - if (!canDisplay) return; - - const key = keyword.name; - switch (key) { - case `PAGNBR`: - field.value = `####` - break; - case `COLOR`: - css += `color: ${colors[keyword.value]};` - break; - case `SYSNAME`: - field.value = `SYSNAME_` - break; - case `USER`: - field.value = `USERNAME__` - break; - case `DATE`: - const dateSep = keywords.find(keyword => keyword.name === `DATSEP`); - - const dateFormat = keywords.find(keyword => keyword.name === `DATFMT`); - if (dateFormat) { - field.value = dateFormats[dateFormat.value] || `?FORMAT?`; - - if (dateSep && dateSep.value.toUpperCase() !== `*JOB`) { - field.value = field.value.replace(new RegExp(`[./-:]`, `g`), dateSep.value); - } - } - break; - case `TIME`: - const sep = keywords.find(keyword => keyword.name === `TIMSEP`); - - const format = keywords.find(keyword => keyword.name === `TIMFMT`); - if (format) { - field.value = timeFormats[format.value] || `?FORMAT?`; - - if (sep && sep.value.toUpperCase() !== `*JOB`) { - field.value = field.value.replace(new RegExp(`[./-:]`, `g`), sep.value); - } - } - break; - case `UNDERLINE`: - css += `text-decoration: underline;`; - break; - case `HIGHLIGHT`: - css += `font-weight: 900;`; - break; - case `DSPATR`: - keyword.value.split(` `).forEach(value => { - switch (value) { - case `UL`: - css += `text-decoration: underline;`; - break; - case `HI`: - css += `font-weight: 900;`; - if (!keywords.find(keyword => keyword.name === `COLOR`)) { - css += `color: ${colors.WHT};`; - } - break; - case `BL`: - css += `animation: blinker 1s step-start infinite;`; - break; - } - }) - break; - } - }); - - const length = field.length > 0 && field.value.length < field.length ? field.length : field.value.length; - const value = field.value - .replace(/ /g, ` `) - .replace(new RegExp(`''`, `g`), `'`); - - let padString = `-`; - - switch (field.type) { - case `char`: - switch (field.displayType) { - case `input`: padString = `I`; break; - case `output`: padString = `O`; break; - case `both`: padString = `B`; break; - } - break; - case `decimal`: - switch (field.displayType) { - case `input`: padString = `3`; break; - case `output`: padString = `6`; break; - case `both`: padString = `9`; break; - } - break; - } - - let displayName = (field.displayType === `const` ? - `Constant` : - (field.name.includes(`_0`) ? field.name.substring(0, field.name.indexOf(`_0`)) : field.name)) - - const textKeyword = keywords.find(keyword => keyword.name === `TEXT`); - const hoverText = `${displayName} (${field.position.y}, ${field.position.x}) ${textKeyword ? textKeyword.value : ``}`.trim(); - - let body = `
${hoverText ? `
${hoverText}
` : ``}${value.padEnd(length, padString)}
` - - css += [ - `position: absolute`, - `width: ${length * 11}px`, - `height: 19px`, - `top: ${(field.position.y - 1) * 20}px`, - `left: ${(field.position.x - 1) * 11}px`, - ].join(`;`) + `;`; - - if ([`input`, `both`].includes(field.displayType)) { - css += `text-decoration: underline;`; - } - - css += `} `; - - if (hoverText) { - css += `` + - [ - `#${htmlName} #${htmlName}_tooltip {`, - ` font-size: 12px;`, - ` visibility: hidden;`, - ` width: 120px;`, - ` background-color: #121212;`, - ` color: #fff;`, - ` text-align: center;`, - ` border-radius: 6px;`, - ` padding: 5px 0;`, - ` `, - ` /* Position the tooltip */`, - ` position: absolute;`, - ` z-index: 1;`, - ` top: 100%;`, - ` left: 50%;`, - ` margin-left: -60px;`, - ` margin-top: 10px;`, - `}` - ].join(``); - - css += [ - `#${htmlName}:hover #${htmlName}_tooltip {`, - ` visibility: visible;`, - `}`, - ].join(``) + ` `; - - css += [ - `#${htmlName} #${htmlName}_tooltip::after {`, - ` content: "";`, - ` position: absolute;`, - ` bottom: 100%; /* At the top of the tooltip */`, - ` left: 50%;`, - ` margin-left: -5px;`, - ` border-width: 5px;`, - ` border-style: solid;`, - ` border-color: transparent transparent #121212 transparent;`, - `}`, - ].join(``) + ` `; - } - - return { - css, - body - }; - - } else { - return { - css: ``, - body: `` - } - } - } - - /** - * @param {string} string - * @returns {string[]} - */ - static parseParms(string) { - let items = []; - let inString = false; - let current = ``; - - for (let i = 0; i < string.length; i++) { - switch (string[i]) { - case `'`: - inString = !inString; - break; - case ` `: - if (inString) current += string[i]; - else { - items.push(current); - current = ``; - } - break; - default: - current += string[i]; - break; - } - } - - if (current.trim().length > 0) { - items.push(current.trim()); - } - - return items; - } -} \ No newline at end of file diff --git a/src/tests/dspf.test.ts b/src/tests/dspf.test.ts new file mode 100644 index 0000000..655d3e0 --- /dev/null +++ b/src/tests/dspf.test.ts @@ -0,0 +1,140 @@ +import { expect, describe, it } from "vitest"; +import { DdsLineRange, DisplayFile, FieldInfo } from "../ui/dspf"; +import exp from "constants"; + +describe('DisplayFile tests', () => { + + const dspf1: string[] = [ + ` A DSPSIZ(24 80 *DS3) `, + ` A R HEAD `, + ` A 1 32'vscode-displayfile' `, + ` A R FMT1 `, + ` A SLNO(03) `, + ` A 1 3'Opt' `, + ` A COLOR(BLU) `, + ` A 1 8'Name' `, + ` A COLOR(BLU) `, + ` A R GLOBAL `, + ` A SLNO(04) `, + ` A 1 3'---' `, + ` A R FORM1 `, + ` A SLNO(06) `, + ` A FLD0101 10A B 3 5 `, + ` A 20 DSPATR(PR) `, + ` A COLOR(YLW) `, + ` A FLD0102 10 B 3 5 `, + ]; + + it('getRangeForFormat', () => { + let dds = new DisplayFile(); + dds.parse(dspf1); + + expect(dds.getHeaderRangeForFormat(`DONOTEXIST`)).toBeUndefined(); + + let range: DdsLineRange | undefined; + + range = dds.getHeaderRangeForFormat(`FMT1`); + expect(range?.start).toBe(3); + expect(range?.end).toBe(9); + + range = dds.getHeaderRangeForFormat(`HEAD`); + expect(range?.start).toBe(1); + expect(range?.end).toBe(3); + }); + + it('getRangeForField', () => { + let dds = new DisplayFile(); + dds.parse(dspf1); + + let range: DdsLineRange | undefined; + + expect(dds.getRangeForField(`FORM1`, `UNKNOWN`)).toBeUndefined(); + + range = dds.getRangeForField(`FORM1`, `FLD0101`); + expect(range?.start).toBe(14); + expect(range?.end).toBe(16); + + range = dds.getRangeForField(`FORM1`, `FLD0102`); + expect(range?.start).toBe(17); + expect(range?.end).toBe(17); + }); + + it('generates the same as what is provided', () => { + let dds = new DisplayFile(); + dds.parse(dspf1); + + const form1 = dds.formats.find(f => f.name === `FORM1`); + expect(form1).toBeDefined(); + + const FLD0101 = form1?.fields.find(f => f.name === `FLD0101`); + expect(FLD0101).toBeDefined(); + expect(FLD0101?.keywords.length).toBe(2); + + const DSPATR = FLD0101?.keywords.find(k => k.name === `DSPATR`); + expect(DSPATR).toBeDefined(); + expect(DSPATR?.value).toBe(`PR`); + expect(DSPATR?.conditions.length).toBe(1); + + const cond = DSPATR?.conditions[0]; + expect(cond).toBeDefined(); + expect(cond?.indicator).toBe(20); + expect(cond?.negate).toBeFalsy(); + + const generatedKeywordLines = DisplayFile.getLinesForKeyword(DSPATR!); + expect(generatedKeywordLines.length).toBe(1); + expect(generatedKeywordLines[0]).toBe(dspf1[15].trimEnd()); + + const generateFieldLines = DisplayFile.getLinesForField(FLD0101!); + expect(generateFieldLines.length).toBe(3); + + expect(generateFieldLines[0]).toBe(dspf1[14].trimEnd()); + expect(generateFieldLines[1]).toBe(dspf1[15].trimEnd()); + expect(generateFieldLines[2]).toBe(dspf1[16].trimEnd()); + + const generatedRecordFormatLines = DisplayFile.getHeaderLinesForFormat(form1!.name, form1!.keywords); + expect(generatedRecordFormatLines.length).toBe(2); + expect(generatedRecordFormatLines[0]).toBe(dspf1[12].trimEnd()); + expect(generatedRecordFormatLines[1]).toBe(dspf1[13].trimEnd()); + + }); + + it('getLinesForField', () => { + let field = new FieldInfo(0); + field.displayType = `const`; + field.value = `Some text`; + field.position.x = 10; + field.position.y = 4; + + let lines = DisplayFile.getLinesForField(field); + + expect(lines.length).toBe(1); + expect(lines[0]).toBe(` A 4 10'Some text'`); + + field.keywords.push( + { + name: "COLOR", + value: "BLU", + conditions: [] + }, + { + name: "DSPATR", + value: "PR", + conditions: [] + } + ); + + lines = DisplayFile.getLinesForField(field); + expect(lines.length).toBe(3); + expect(lines[0]).toBe(` A 4 10'Some text'`); + expect(lines[1]).toBe(` A COLOR(BLU)`); + expect(lines[2]).toBe(` A DSPATR(PR)`); + }); + + it('No duplicate RecordInfo', () => { + let dds = new DisplayFile(); + dds.parse(dspf1); + let names = dds.formats.map(rcd => rcd.name); + expect(new Set(names).size).toBe(names.length); + }); + +}); diff --git a/src/tests/first.test.ts b/src/tests/first.test.ts new file mode 100644 index 0000000..35d54d8 --- /dev/null +++ b/src/tests/first.test.ts @@ -0,0 +1,7 @@ +import { expect, describe, it } from "vitest"; + +describe('First Test Suite', () => { + it('should pass the first test', () => { + expect(true).toBe(true); + }); +}); diff --git a/src/ui/dspf.ts b/src/ui/dspf.ts new file mode 100644 index 0000000..d272a6e --- /dev/null +++ b/src/ui/dspf.ts @@ -0,0 +1,627 @@ + +export interface DdsLineRange { start: number, endHeader?: number, end: number }; +export interface DdsUpdate { newLines: string[], range?: DdsLineRange }; + +const GLOBAL_RECORD_NAME = `_GLOBAL`; + +export class DisplayFile { + public formats: RecordInfo[] = []; + public currentField: FieldInfo | undefined; + public currentFields: FieldInfo[] = []; + public currentRecord: RecordInfo|undefined = new RecordInfo(GLOBAL_RECORD_NAME); + + constructor() { } + + /** + * @param {string[]} lines + */ + parse(lines: string[]) { + let textCounter = 0; + + let conditionals: string, name: string, len: string, type: string, dec: string, inout: string, x: string, y: string, keywords: string; + + lines.forEach((line, index) => { + line = line.padEnd(80); + + if (line[6] === `*`) { + return; + } + + conditionals = line.substring(6, 16).padEnd(10); + name = line.substring(18, 28).trim(); + len = line.substring(29, 34).trim(); + type = line[34].toUpperCase().trim(); + dec = line.substring(35, 37).trim(); + inout = line[37].toUpperCase(); + y = line.substring(38, 41).trim(); + x = line.substring(41, 44).trim(); + keywords = line.substring(44).trimEnd(); + + switch (line[16]) { + case 'R': + if (this.currentField) { + this.currentField.handleKeywords(); + this.currentFields.push(this.currentField); + }; + if (this.currentRecord && this.currentFields) { + this.currentRecord.fields = this.currentFields; + } + if (this.currentRecord) { + this.currentRecord.range.end = index; + this.currentRecord.handleKeywords(); + this.formats.push(this.currentRecord); + } + + this.currentRecord = new RecordInfo(name); + this.currentRecord.range.start = index; + + this.currentFields = []; + this.currentField = undefined; + + this.HandleKeywords(keywords); + break; + + case ' ': + if ((x !== "" && y !== "") || inout === `H`) { + // From a regular display file + if (this.currentField) { + this.currentField.handleKeywords(); + this.currentFields.push(this.currentField); + } + + this.currentField = new FieldInfo(index); + this.currentField.position = { + x: Number(x), + y: Number(y) + }; + } else if (x !== "" && y === "") { + // From a printer file with no Y position + if (this.currentField) { + this.currentField.handleKeywords(); + this.currentFields.push(this.currentField); + } + + let totalX = Number(x); + if (x.startsWith(`+`)) { + totalX = this.currentFields[this.currentFields.length - 1].position.x + Number(x.substring(1)); + + if (this.currentFields[this.currentFields.length - 1] && this.currentFields[this.currentFields.length - 1].value) { + totalX += this.currentFields[this.currentFields.length - 1].value!.length; + } + } + + this.currentField = new FieldInfo(index); + this.currentField.position = { + x: totalX, + y: 0 + }; + } else if (name !== undefined && type !== "") { + // Some fields have no positions + if (this.currentField) { + this.currentField.handleKeywords(); + this.currentFields.push(this.currentField); + } + + this.currentField = new FieldInfo(index, name); + this.currentField.position = { + x: -1, + y: -1 + }; + } + + if (name !== "") { + if (this.currentField) { + this.currentField.name = name; + this.currentField.value = ""; + this.currentField.length = Number(len); + switch (inout) { + case "I": + this.currentField.displayType = `input`; + break; + case "B": + this.currentField.displayType = `both`; + break; + case "H": + this.currentField.displayType = `hidden`; + break; + case " ": + case "O": + this.currentField.displayType = `output`; + break; + } + + this.currentField.type = type; + + this.currentField.decimals = 0; + switch (type) { + case "D": + case "Z": + case "Y": + this.currentField.primitiveType = `decimal`; + if (dec !== "") { this.currentField.decimals = Number(dec); } + break; + case `L`: //Date + this.currentField.length = 8; + this.currentField.primitiveType = `char`; + this.currentField.keywords.push({ + name: `DATE`, + value: undefined, + conditions: [] + }); + break; + case `T`: //Time + this.currentField.length = 8; + this.currentField.primitiveType = `char`; + this.currentField.keywords.push({ + name: `TIME`, + value: undefined, + conditions: [] + }); + break; + default: + this.currentField.primitiveType = `char`; + break; + } + + this.currentField.conditions.push( + ...DisplayFile.parseConditionals(conditionals) + ); + } + this.HandleKeywords(keywords, conditionals); + } + else { + if (this.currentField) { + if (!this.currentField.name) { + textCounter++; + this.currentField.name = `TEXT${textCounter}`; + if (!this.currentField.value) {this.currentField.value = "";} + this.currentField.length = this.currentField.value.length; + this.currentField.displayType = `const`; + + this.currentField.conditions.push( + ...DisplayFile.parseConditionals(conditionals) + ); + } + } + this.HandleKeywords(keywords, conditionals); + } + break; + } + }); + + if (this.currentField) { + this.currentField.handleKeywords(); + this.currentFields.push(this.currentField); + }; + if (this.currentRecord) { + if (this.currentFields) { + this.currentRecord.fields = this.currentFields; + } + + this.currentRecord.range.end = lines.length; + this.currentRecord.handleKeywords(); + this.formats.push(this.currentRecord); + } + + this.currentField = undefined; + this.currentFields = []; + this.currentRecord = undefined; + } + + /** + * @param {string} keywords + * @param {string} [conditionals] + * @returns + */ + HandleKeywords(keywords: string, conditionals = ``) { + let insertIndex; + + if (this.currentField) { + insertIndex = this.currentField.keywordStrings.keywordLines.push(keywords); + this.currentField.keywordStrings.conditionalLines[insertIndex] = conditionals; + } else if (this.currentRecord) { + insertIndex = this.currentRecord.keywordStrings.keywordLines.push(keywords); + this.currentRecord.keywordStrings.conditionalLines[insertIndex] = conditionals; + } + + + } + + static parseConditionals(conditionColumns: string): Conditional[] { + if (conditionColumns.trim() === "") {return [];} + + let conditionals: Conditional[] = []; + + //TODO: something with condition + //const condition = conditionColumns.substring(0, 1); //A (and) or O (or) + + let current = ""; + let negate = false; + let indicator = 0; + + let cIndex = 1; + + while (cIndex <= 7) { + current = conditionColumns.substring(cIndex, cIndex + 3); + + if (current.trim() !== "") { + negate = (conditionColumns.substring(cIndex, cIndex + 1) === "N"); + indicator = Number(conditionColumns.substring(cIndex + 1, cIndex + 3)); + + conditionals.push({indicator, negate}); + } + + cIndex += 3; + } + + return conditionals; + } + + static parseKeywords(keywordStrings: string[], conditionalStrings?: { [line: number]: string }) { + let result: { value: string, keywords: Keyword[], conditions: Conditional[] } = { + value: ``, + keywords: [], + conditions: [] + }; + + const newLineMark = `~`; + + let value = keywordStrings.join(newLineMark) + newLineMark; + let conditionalLine = 1; + + if (value.length > 0) { + value += ` `; + + let inBrackets = 0; + let word = ``; + let innerValue = ``; + let inString = false; + + for (let i = 0; i < value.length; i++) { + switch (value[i]) { + case `+`: + case `-`: + if (value[i + 1] !== newLineMark) { + innerValue += value[i]; + } + break; + + case `'`: + if (inBrackets > 0) { + innerValue += value[i]; + } else { + if (inString) { + inString = false; + + result.value = innerValue; + innerValue = ``; + } else { + inString = true; + } + } + break; + + case `(`: + if (inString) { + innerValue += value[i]; + } else { + inBrackets++; + } + break; + case `)`: + if (inString) { + innerValue += value[i]; + } else { + inBrackets--; + } + break; + + case newLineMark: + case ` `: + if (inBrackets > 0 || inString) { + if (value[i] !== newLineMark) { + innerValue += value[i]; + } + } else { + if (word.length > 0) { + let conditionals = conditionalStrings ? conditionalStrings[conditionalLine] : undefined; + + result.keywords.push({ + name: word.toUpperCase(), + value: innerValue.length > 0 ? innerValue : undefined, + conditions: conditionals ? DisplayFile.parseConditionals(conditionals) : [] + }); + + word = ``; + innerValue = ``; + } + } + + if (value[i] === newLineMark) { conditionalLine += 1; } + break; + default: + if (inBrackets > 0 || inString) { innerValue += value[i]; } + else { word += value[i]; } + break; + } + } + } + + return result; + } + + private static conditionalGroups(conditions: Conditional[]) { + return conditions.reduce((acc, curr, index) => { + if (index % 3 === 0) { + acc.push([curr]); + } else { + acc[acc.length - 1].push(curr); + } + return acc; + }, [] as Conditional[][]); + } + + public static getLinesForKeyword(keyword: Keyword): string[] { + const lines: string[] = []; + + // Convert array into groups of three + const condition = this.conditionalGroups(keyword.conditions); + + const firstConditions = condition[0] || []; + const conditionStrings = firstConditions.map(c => `${c.negate ? 'N' : ' '}${c.indicator}`).join('').padEnd(9); + + lines.push(` A ${conditionStrings} ${keyword.name}${keyword.value ? `(${keyword.value})` : ``}`); + + for (let g = 1; g < condition.length; g++) { + const group = condition[g]; + const conditionStrings = group.map(c => `${c.negate ? 'N' : ' '}${c.indicator}`).join(''); + lines.push(` A ${conditionStrings}`); + } + + return lines; + } + + public static getLinesForField(field: FieldInfo): string[] { + const newLines: string[] = []; + + const FIELD_TYPE: { [name in DisplayType]: string } = { + both: 'B', + input: "I", + output: "O", + const: "", + hidden: "H" + }; + + const x = String(field.position.x).padStart(3, ` `); + const y = String(field.position.y).padStart(3, ` `); + const displayType = FIELD_TYPE[field.displayType!]; + + // Convert array into groups of three + const condition = this.conditionalGroups(field.conditions); + const firstConditions = condition[0] || []; + const conditionStrings = firstConditions.map(c => `${c.negate ? 'N' : ' '}${c.indicator}`).join('').padEnd(9); + + if (field.displayType === `const`) { + const value = field.value; + newLines.push( + ` A ${conditionStrings} ${y}${x}'${value}'`, + ); + } else if (displayType && field.name) { + const definitionType = field.type; + const length = String(field.length).padStart(5); + const decimals = (field.type !== `A` ? String(field.decimals) : ``).padStart(2); + newLines.push( + ` A ${conditionStrings} ${field.name.padEnd(10)} ${length}${definitionType}${decimals}${displayType}${y}${x}`, + ); + } + + for (const keyword of field.keywords) { + newLines.push(...DisplayFile.getLinesForKeyword(keyword)); + } + + return newLines; + } + + public getRangeForField(recordFormat: string, fieldName: string): DdsLineRange|undefined { + let range: DdsLineRange|undefined = undefined; + const currentFormatI = this.formats.findIndex(format => format.name === recordFormat); + if (currentFormatI > 0) { + const currentFormat = this.formats[currentFormatI]; + const index = currentFormat.fields.findIndex(field => field.name === fieldName); + + if (index >= 0) { + // Update existing field + const fieldStart = currentFormat.fields[index].startRange; + let fieldEnd: number|undefined = undefined; + + if (currentFormat.fields[index+1]) { + fieldEnd = currentFormat.fields[index+1].startRange; + } else { + fieldEnd = currentFormat.range.end; + } + + if (fieldEnd) { + fieldEnd--; + + range = { start: fieldStart, end: fieldEnd }; + } + + } + } + + return range; + } + + // TODO: test cases + public updateField(recordFormat: string, originalFieldName: string|undefined, fieldInfo: FieldInfo): DdsUpdate|undefined { + const newLines = DisplayFile.getLinesForField(fieldInfo); + + let range = this.getRangeForField(recordFormat, originalFieldName!); + + if (!range) { + const recordFormatDetail = this.formats.find(format => format.name === recordFormat); + if (recordFormatDetail) { + range = { start: recordFormatDetail?.range.end, end: recordFormatDetail.range.end }; + } + } + + return { newLines, range }; + } + + // TODO: test cases + static getHeaderLinesForFormat(recordFormat: string, keywords: Keyword[]): string[] { + const lines: string[] = []; + + if (recordFormat) { + lines.push(` A R ${recordFormat}`); + } + + for (const keyword of keywords) { + // TODO: support conditions + lines.push(...DisplayFile.getLinesForKeyword(keyword)); + } + + return lines; + } + + public getHeaderRangeForFormat(recordFormat: string): DdsLineRange|undefined { + let range: DdsLineRange|undefined = undefined; + const currentFormatI = this.formats.findIndex(format => format.name === recordFormat); + if (currentFormatI > 0) { + range = { start: this.formats[currentFormatI].range.start, end: this.formats[currentFormatI].range.end }; + + const currentFormat = this.formats[currentFormatI]; + const firstField = currentFormat.fields[0]; + + if (firstField) { + range.endHeader = firstField.startRange-1; + } else { + range.endHeader = range.start; + } + } + + return range; + } + + // TODO: test cases + public updateFormatHeader(originalFormatName: string, keywords: Keyword[]): DdsUpdate|undefined { + const newLines = DisplayFile.getHeaderLinesForFormat(originalFormatName, keywords); + let range = this.getHeaderRangeForFormat(originalFormatName); + + if (range) { + range = { + start: range.start, + end: range.endHeader || range.end, + }; + } + + return { + newLines, + range + }; + } +} + +export class RecordInfo { + public fields: FieldInfo[] = []; + public range: DdsLineRange = { start: -1, end: -1 }; + public isWindow: boolean = false; + public windowReference: string | undefined = undefined; + public windowSize: { y: number, x: number, width: number, height: number } = { y: 0, x: 0, width: 80, height: 24 }; + public keywordStrings: { keywordLines: string[], conditionalLines: { [lineIndex: number]: string } } = { keywordLines: [], conditionalLines: {} }; + public keywords: Keyword[] = []; + + constructor(public name: string) { } + + handleKeywords() { + const data = DisplayFile.parseKeywords(this.keywordStrings.keywordLines, this.keywordStrings.conditionalLines); + + this.keywords.push(...data.keywords); + + this.keywords.forEach(keyword => { + switch (keyword.name) { + case "WINDOW": + this.isWindow = true; + if (keyword.value) { + let points = keyword.value.split(' '); + + if (points.length >= 3 && points[0].toUpperCase() === `*DFT`) { + // WINDOW (*DFT Y X) + this.windowSize = { + y: 2, + x: 2, + width: Number(points[2]), + height: Number(points[1]) + }; + } else { + if (points.length === 1) { + // WINDOW (REF) + this.windowReference = points[0]; + + } else if (points.length >= 4) { + // WINDOW (*DFT SY SX Y X) + this.windowSize = { + y: Number(points[0]) || 2, + x: Number(points[1]) || 2, + width: Number(points[3]), + height: Number(points[2]) + }; + } + } + + switch (points[0]) { + case `*DFT`: + break; + } + + switch (points.length) { + case 4: + //WINDOW (STARTY STARTX SIZEY SIZEX) + + break; + case 1: + //WINDOW (REF) + this.windowReference = points[0]; + break; + } + } + + break; + } + }); + } +} + +export interface Keyword { name: string, value?: string, conditions: Conditional[] }; + +export type DisplayType = "input" | "output" | "both" | "const" | "hidden"; + +export class FieldInfo { + public value: string | undefined; + public type: string | undefined; + public primitiveType: "char" | "decimal" | undefined; + public displayType: DisplayType | undefined; + public length: number = 0; + public decimals: number = 0; + public position: { x: number, y: number } = { x: 0, y: 0 }; + public keywordStrings: { keywordLines: string[], conditionalLines: { [lineIndex: number]: string } } = { keywordLines: [], conditionalLines: {} }; + public conditions: Conditional[] = []; + public keywords: Keyword[] = []; + + constructor(public startRange: number, public name?: string) {} + + handleKeywords() { + const data = DisplayFile.parseKeywords(this.keywordStrings.keywordLines, this.keywordStrings.conditionalLines); + + this.keywords.push(...data.keywords); + + if (data.value.length > 0) { + this.value = data.value; + } + } +} + +export interface Conditional { + indicator: number, + negate: boolean +} \ No newline at end of file diff --git a/src/ui/index.ts b/src/ui/index.ts new file mode 100644 index 0000000..26c5346 --- /dev/null +++ b/src/ui/index.ts @@ -0,0 +1,194 @@ +import { readFileSync } from "fs"; +import { Uri, Webview, window, WebviewPanel, ViewColumn, ExtensionContext, workspace, TextDocument, Range, WorkspaceEdit, Position } from "vscode"; +import { DisplayFile, FieldInfo, Keyword, RecordInfo } from "./dspf"; + + +export class RendererWebview { + private view: WebviewPanel; + private document: TextDocument|undefined; + private dds: DisplayFile|undefined; + + private get extensionPath() { + return this.context.extensionUri; + } + + constructor(private readonly context: ExtensionContext, private readonly workingUri: Uri) { + const panel = window.createWebviewPanel(`ibmi_renderer`, `Renderer`, { + preserveFocus: true, + viewColumn: ViewColumn.Active + }); + + panel.webview.options = { + enableScripts: true, + enableCommandUris: true, + localResourceRoots: [ + this.extensionPath, + Uri.joinPath(this.extensionPath, 'webui'), + Uri.joinPath(this.extensionPath, 'webui', `scripts`), + ], + }; + + panel.onDidChangeViewState((e) => { + if (e.webviewPanel.visible) { + this.load(); + } + }); + panel.webview.onDidReceiveMessage(this.onDidGetMessage.bind(this)); + + panel.webview.html = this.getBaseHtml(panel.webview); + + this.view = panel; + } + + async load(rerender = true) { + this.document = await workspace.openTextDocument(this.workingUri); + const content = this.document.getText(); + + this.dds = new DisplayFile(); + this.dds.parse(content.split(/\r?\n/)); + + this.view.webview.postMessage({ + command: rerender ? "load" : "update", + dds: this.dds, + }); + } + + show() { + if (this.view) { + this.view.reveal(); + } + } + + private async onDidGetMessage(message: any) { + let recordFormat: string|undefined; + let fieldInfo: FieldInfo|undefined; + + switch (message.command) { + case 'deleteField': + recordFormat = message.recordFormat; + const fieldName = message.fieldName; + + if (typeof recordFormat === `string` && typeof fieldName === `string`) { + const deleteFieldRange = this.dds?.getRangeForField(recordFormat, fieldName); + + if (deleteFieldRange && this.document) { + const workspaceEdit = new WorkspaceEdit(); + workspaceEdit.delete(this.document.uri, new Range(deleteFieldRange.start, 0, deleteFieldRange.end, 1000)); + + await workspace.applyEdit(workspaceEdit); + this.load(true); + } + } + break; + + case 'newField': + recordFormat = message.recordFormat; + fieldInfo = message.fieldInfo; + + if (typeof recordFormat === `string` && typeof fieldInfo === `object`) { + const newField = this.dds?.updateField(recordFormat, undefined, fieldInfo); + + if (newField) { + if (newField.range && this.document) { + const workspaceEdit = new WorkspaceEdit(); + workspaceEdit.insert( + this.document.uri, + new Position(newField.range.start, 0), + newField.newLines.join('\n') + `\n`, // TOOD: use the correct EOL? + {label: `Add DDS Field`, needsConfirmation: false} + ); + + if (await workspace.applyEdit(workspaceEdit)) { + this.load(true); + } + } + } + } + + break; + case `updateField`: + recordFormat = message.recordFormat; + const originalFieldName = message.originalFieldName; + fieldInfo = message.fieldInfo; + + if (typeof recordFormat === `string` && typeof originalFieldName === `string` && typeof fieldInfo === `object`) { + const fieldUpdate = this.dds?.updateField(recordFormat, originalFieldName, fieldInfo); + + if (fieldUpdate) { + if (fieldUpdate.range && this.document) { + const workspaceEdit = new WorkspaceEdit(); + workspaceEdit.replace( + this.document.uri, + new Range(fieldUpdate.range.start, 0, fieldUpdate.range.end, 1000), + fieldUpdate.newLines.join('\n'), // TOOD: use the correct EOL? + {label: `Update DDS Field`, needsConfirmation: false} + ); + + await workspace.applyEdit(workspaceEdit); + this.load(false); //Field is updated on the client + } + } + } + break; + + case `updateFormat`: + // This does not update any of the fields in the record format, only the format header + recordFormat = message.recordFormat; + const newKeywords: Keyword[] = message.newKeywords; + + if (typeof recordFormat === `string` && Array.isArray(newKeywords)) { + const formatUpdate = this.dds?.updateFormatHeader(recordFormat, newKeywords); + + if (formatUpdate) { + if (formatUpdate.range && this.document) { + const workspaceEdit = new WorkspaceEdit(); + workspaceEdit.replace( + this.document.uri, + new Range(formatUpdate.range.start, 0, formatUpdate.range.end, 1000), + formatUpdate.newLines.join('\n'), // TOOD: use the correct EOL? + {label: `Update DDS Format`, needsConfirmation: false} + ); + + await workspace.applyEdit(workspaceEdit); + this.load(true); + } + } + } + break; + } + } + + private getBaseHtml(webview: Webview) { + const basePath = toUri(webview, this.extensionPath, `webui`, `index.html`); + // async might be better + let content = readFileSync(basePath.fsPath, "utf-8"); + + const fileVariables = { + '{main}': toUri(webview, this.extensionPath, `webui`, `main.js`), + '{elements}': toUri(webview, this.extensionPath, `webui`, `scripts`, `vscode-elements.js`), + '{styles}': toUri(webview, this.extensionPath, `webui`, `styles.css`), + '{codicon}': toUri(webview, this.extensionPath, `webui`, `scripts`, `codicon.css`), + '{konva}': toUri(webview, this.extensionPath, `webui`, `scripts`, `konva.min.js`), + }; + + // Replace all variables in the content + for (const [key, value] of Object.entries(fileVariables)) { + const regex = new RegExp(key, 'g'); + content = content.replace(regex, value.toString()); + } + + return content; + } + + static getCommandHref(command: string, ...args: unknown[]) { + return `command:${command}?${encodeURIComponent(JSON.stringify(args))}`; + } +} + +function toUri( + webview: Webview, + extensionUri: Uri, + ...pathList: string[] +) { + return webview.asWebviewUri(Uri.joinPath(extensionUri, ...pathList)); +} diff --git a/src/window.js b/src/window.js deleted file mode 100644 index 02d2f15..0000000 --- a/src/window.js +++ /dev/null @@ -1,32 +0,0 @@ -const vscode = require(`vscode`); - -/** @type {vscode.WebviewPanel} */ -let panel; - -module.exports = class { - static create() { - if (panel) { - panel.reveal(); - } else { - panel = vscode.window.createWebviewPanel( - `displayFile`, - `Preview`, - vscode.ViewColumn.Active - ); - - panel.onDidDispose(() => { - panel = undefined; - }); - } - } - - static update(html) { - if (panel) { - panel.webview.html = html; - } - } - - static isActive() { - return panel !== undefined; - } -} \ No newline at end of file diff --git a/test/file/depts.js b/test/file/depts.js deleted file mode 100644 index 5b6df0b..0000000 --- a/test/file/depts.js +++ /dev/null @@ -1,37 +0,0 @@ -exports.lines = [ -` A INDARA`, -` A CA03(03)`, -` A R SFLDTA SFL`, -` A RRN 4Y 0H`, -` A* DISPLAY DTA`, -` A XSEL 1A B 7 8`, -` A XID 3A O 7 12`, -` A XNAME 38A O 7 16`, -` A* COLOR HELLO`, -` A R SFLCTL SFLCTL(SFLDTA)`, -` A SFLPAG(0014)`, -` A SFLSIZ(9999)`, -` A OVERLAY`, -` A 85 SFLDSPCTL`, -` A 95 SFLDSP`, -` A N85 SFLCLR`, -` A SFLRRN 4S 0H SFLRCDNBR(CURSOR)`, -` A*`, -` A 6 6'Opt'`, -` A DSPATR(HI)`, -` A DSPATR(UL)`, -` A 6 12'ID'`, -` A DSPATR(HI)`, -` A DSPATR(UL)`, -` A 6 16'Name'`, -` A DSPATR(UL)`, -` A COLOR(WHT)`, -` A R FOOTER_FMT`, -` A OVERLAY`, -` A 3 6'F3=Exit'`, -` A COLOR(BLU)`, -` A 2 35'Departments'`, -` A DSPATR(UL)`, -` A COLOR(WHT)`, -` A 4 6'5=View' COLOR(BLU)`, -]; \ No newline at end of file diff --git a/test/file/issue1149.js b/test/file/issue1149.js deleted file mode 100644 index c60685e..0000000 --- a/test/file/issue1149.js +++ /dev/null @@ -1,22 +0,0 @@ -exports.lines = [ -` A R HELP`, -` A*%%TS SD 20080304 144943 PGML REL-V5R4M0 5722-WDS`, -` A KEEP`, -` A OVERLAY`, -` A WINDOW(10 2 10 70 *NORSTCSR)`, -` A WDWBORDER((*DSPATR RI) (*CHAR ':.::-`, -` A ::.:'))`, -` A WDWTITLE((*TEXT 'Print accounts by -`, -` A store number for status type - Help-`, -` A ') (*COLOR WHT))`, -` A 1 26'Print accounts - Help'`, -` A COLOR(WHT)`, -` A 3 3'This report print all accounts of -`, -` A selected status for a store or all'`, -` A 4 2'stores. An account will print for-`, -` A a store only if that store has'`, -` A 5 2'taken a check from that account. -`, -` A You can only select one status type'`, -` A 6 2'for each report request.'`, -` A 9 2'Press Enter to return'`, -] \ No newline at end of file diff --git a/test/file/issue1382.js b/test/file/issue1382.js deleted file mode 100644 index 5614c32..0000000 --- a/test/file/issue1382.js +++ /dev/null @@ -1,6 +0,0 @@ -exports.lines = [ - ` A DSPSIZ(27 132 *DS4)`, - ` A R SCRN2`, - ` A 2 2'This text containt parentheses (Y/N)'`, - ` A 3 2'This text containt dashes -Y/N-'`, -]; \ No newline at end of file diff --git a/test/file/replloadfm.js b/test/file/replloadfm.js deleted file mode 100644 index 2e58df0..0000000 --- a/test/file/replloadfm.js +++ /dev/null @@ -1,74 +0,0 @@ -// https://github.com/tom-writes-code/rpgle-repl - -exports.lines = [ - ` DSPSIZ(27 132 *DS4)`, - ` INDARA`, - ``, - ` R HEADER`, - ` 1 2'repl:load snippets'`, - ` COLOR(BLU)`, - ``, - ` 2 2'1=Load 4=Delete'`, - ` COLOR(WHT)`, - ``, - ` H_MODE 16A O 2 84`, - ` 50 COLOR(WHT)`, - ` N50 COLOR(RED)`, - ` 2102'filter by profile:'`, - ` COLOR(WHT)`, - ` H_FILTER 10A B 2122`, - ` COLOR(WHT)`, - ``, - ` R SNIPPET SFL`, - ` CHGINPDFT(LC)`, - ` S_SELECT 1A B 3 2COLOR(WHT)`, - ` DSPATR(UL)`, - ` 99 DSPATR(RI)`, - ` 99 DSPATR(PC)`, - ` S_ORIGIN 30A O 3 4COLOR(BLU)`, - ` S_LASTCHG 10A O 3 35COLOR(BLU)`, - ` S_PREVIEW 85A O 3 46COLOR(GRN)`, - ` S_OWNER 10A H`, - ` S_SAVENAME 20A H`, - ` S_SESSION 28A H`, - ``, - ` R SNIPPETS SFLCTL(SNIPPET)`, - ` SFLSIZ(23)`, - ` SFLPAG(22)`, - ` TEXT('Snippets Control Format')`, - ` CF03(03 'Exit')`, - ` CF11(11 'Saved/Unsaved')`, - ` OVERLAY`, - ` 40 SFLDSP`, - ` 41 SFLDSPCTL`, - ` 42 SFLCLR`, - ` 43 SFLEND(*MORE)`, - ``, - ` R NORECORDS`, - ` OVERLAY`, - ` 4 5'no snippets found for the current -`, - ` search criteria'`, - ``, - ` R FKEYS`, - ` FRCDTA`, - ` OVERLAY`, - ` MSGLIN 129A O 27 2DSPATR(HI)`, - ``, - ` 26 2'F3=Exit F11=Saved/Unsaved Snippet-`, - ` s'`, - ` COLOR(BLU)`, - ``, - ` R CONFIRM`, - ` OVERLAY`, - ` WINDOW(6 6 6 54)`, - ` CF10(10 'Confirm')`, - ` CF12(12 'Cancel')`, - ``, - ``, - ` CNFTXT1 50A O 2 3COLOR(WHT)`, - ` CNFTXT2 50A O 3 3COLOR(WHT)`, - ``, - ` 5 3'F10=Confirm -`, - ` F12=Cancel'`, - ` COLOR(BLU)`, -] \ No newline at end of file diff --git a/test/index.js b/test/index.js deleted file mode 100644 index da7008e..0000000 --- a/test/index.js +++ /dev/null @@ -1,3 +0,0 @@ -const cases = require("./tests"); - -Object.values(cases).forEach(testcase => testcase()); \ No newline at end of file diff --git a/test/tests.js b/test/tests.js deleted file mode 100644 index c33efa9..0000000 --- a/test/tests.js +++ /dev/null @@ -1,176 +0,0 @@ -const assert = require("assert"); -const { DisplayFile } = require("../src/dspf"); - -const depts = require("./file/depts"); -const replloadfm = require("./file/replloadfm"); -const issue1149 = require(`./file/issue1149`); -const issue1382 = require(`./file/issue1382`); - -exports.simple = () => { - const file = new DisplayFile(); - file.parse(depts.lines); - - assert.strictEqual(file.formats.length, 4); - - // Testing: window size, keywords - - const globalFormat = file.formats[0]; - assert.strictEqual(globalFormat.name, `GLOBAL`); - assert.deepStrictEqual(globalFormat.windowSize, { - height: 24, width: 80, x: 0, y: 0 - }); - assert.strictEqual(globalFormat.keywords.length, 2); - assert.deepStrictEqual(globalFormat.keywords[0], { - name: `INDARA`, value: undefined, conditions: [] - }); - assert.deepStrictEqual(globalFormat.keywords[1], { - name: `CA03`, value: `03`, conditions: [] - }); - - // Field type tests: - - const subfileData = file.formats[1]; - assert.strictEqual(subfileData.name, `SFLDTA`); - assert.deepStrictEqual(subfileData.keywords[0], { - name: `SFL`, value: undefined, conditions: [] - }); - - const rrnField = subfileData.fields[0]; - assert.strictEqual(rrnField.type, `decimal`); - assert.strictEqual(rrnField.length, 4); - assert.strictEqual(rrnField.decimals, 0); - assert.strictEqual(rrnField.displayType, `hidden`); - assert.strictEqual(rrnField.name, `RRN`); - assert.deepStrictEqual(rrnField.position, {x: 0, y: 0}); - - const xselField = subfileData.fields[1]; - assert.strictEqual(xselField.type, `char`); - assert.strictEqual(xselField.length, 1); - assert.strictEqual(xselField.decimals, 0); - assert.strictEqual(xselField.displayType, `both`); - assert.strictEqual(xselField.name, `XSEL`); - assert.deepStrictEqual(xselField.position, {x: 8, y: 7}); - - const xidField = subfileData.fields[2]; - assert.strictEqual(xidField.type, `char`); - assert.strictEqual(xidField.length, 3); - assert.strictEqual(xidField.decimals, 0); - assert.strictEqual(xidField.displayType, `output`); - assert.strictEqual(xidField.name, `XID`); - assert.deepStrictEqual(xidField.position, {x: 12, y: 7}); - - const xnameField = subfileData.fields[3]; - assert.strictEqual(xnameField.type, `char`); - assert.strictEqual(xnameField.length, 38); - assert.strictEqual(xnameField.decimals, 0); - assert.strictEqual(xnameField.displayType, `output`); - assert.strictEqual(xnameField.name, `XNAME`); - assert.deepStrictEqual(xnameField.position, {x: 16, y: 7}); - - // Const (text field) tests - - const subfileControl = file.formats[2]; - assert.strictEqual(subfileControl.fields.length, 4); - assert.strictEqual(subfileControl.keywords.length, 7); - - const text1 = subfileControl.fields[1]; - assert.strictEqual(text1.name, `TEXT1`); - assert.strictEqual(text1.displayType, `const`); - assert.strictEqual(text1.value, `Opt`); - assert.deepStrictEqual(text1.position, {x: 6, y: 6}); - assert.deepStrictEqual(text1.keywords, [ - { name: `DSPATR`, value: `HI`, conditions: [] }, - { name: `DSPATR`, value: `UL`, conditions: [] } - ]); - - // Keywords on same line tests - const footer = file.formats[3]; - assert.strictEqual(footer.fields.length, 3); - assert.strictEqual(footer.keywords.length, 1); - - const sameLineField = footer.fields[2]; - assert.strictEqual(sameLineField.name, `TEXT6`); - assert.strictEqual(sameLineField.displayType, `const`); - assert.strictEqual(sameLineField.value, `5=View`); - assert.deepStrictEqual(sameLineField.position, {x: 6, y: 4}); - assert.deepStrictEqual(sameLineField.keywords, [ - { name: `COLOR`, value: `BLU`, conditions: [] }, - ]); -} - -exports.strings = () => { - const file = new DisplayFile(); - file.parse(replloadfm.lines); - - assert.strictEqual(file.formats.length, 7); - - // Verify parsing keywords with strings in - const snippetsFormat = file.formats[3]; - assert.strictEqual(snippetsFormat.name, `SNIPPETS`); - - const CF03 = snippetsFormat.keywords.find(keyword => keyword.name === `CF03`); - assert.notStrictEqual(CF03, undefined); - assert.strictEqual(CF03.value, `03 'Exit'`); - - // Verify strings over many lines - - const noRecordsFormat = file.formats[4]; - assert.strictEqual(noRecordsFormat.name, `NORECORDS`); - const textField = noRecordsFormat.fields[0]; - assert.strictEqual(textField.name, `TEXT4`); - assert.deepStrictEqual(textField.position, {x: 5, y: 4}); - assert.strictEqual(textField.value, `no snippets found for the current search criteria`); - - // Second verification, with space at the start - - const confirmWindowFormat = file.formats[6]; - assert.strictEqual(confirmWindowFormat.name, `CONFIRM`); - const longTextField = confirmWindowFormat.fields[2]; - assert.strictEqual(longTextField.value, `F10=Confirm F12=Cancel`) -} - -exports.window = () => { - const file = new DisplayFile(); - file.parse(replloadfm.lines); - - const confirmWindowFormat = file.formats[6]; - assert.strictEqual(confirmWindowFormat.name, `CONFIRM`); - assert.deepStrictEqual(confirmWindowFormat.windowSize, { - height: 6, width: 54, x: 6, y: 6 - }); -} - -exports.issue1149 = () => { - const file = new DisplayFile(); - file.parse(issue1149.lines); - - const windowFormat = file.formats[1]; - assert.strictEqual(windowFormat.name, `HELP`); - assert.deepStrictEqual(windowFormat.windowSize, { - height: 10, width: 70, x: 2, y: 10 - }); - - const windowTitle = windowFormat.keywords.find(keyword => keyword.name === `WDWTITLE`); - assert.strictEqual(windowTitle.value, `*TEXT 'Print accounts by store number for status type - Help' *COLOR WHT`); - - const text4 = windowFormat.fields.find(field => field.name === `TEXT4`); - assert.ok(text4); - assert.strictEqual(text4.value, `taken a check from that account. You can only select one status type`); - assert.deepStrictEqual(text4.position, {x: 2, y: 5}); -} - -exports.issue1382 = () => { - const file = new DisplayFile(); - file.parse(issue1382.lines); - - const screenFormat = file.formats[1]; - assert.strictEqual(screenFormat.name, `SCRN2`); - - const textField1 = screenFormat.fields[0]; - assert.strictEqual(textField1.name, `TEXT1`); - assert.strictEqual(textField1.value, `This text containt parentheses (Y/N)`); - - const textField2 = screenFormat.fields[1]; - assert.strictEqual(textField2.name, `TEXT2`); - assert.strictEqual(textField2.value, `This text containt dashes -Y/N-`); -} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..1e6f3ea --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "module": "Node16", + "target": "ES2022", + "lib": [ + "ES2022" + ], + "sourceMap": true, + "rootDir": "src", + "strict": true, /* enable all strict type-checking options */ + /* Additional Checks */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + }, + "exclude": ["src/tests"] +} diff --git a/vsc-extension-quickstart.md b/vsc-extension-quickstart.md new file mode 100644 index 0000000..f518bb8 --- /dev/null +++ b/vsc-extension-quickstart.md @@ -0,0 +1,48 @@ +# Welcome to your VS Code Extension + +## What's in the folder + +* This folder contains all of the files necessary for your extension. +* `package.json` - this is the manifest file in which you declare your extension and command. + * The sample plugin registers a command and defines its title and command name. With this information VS Code can show the command in the command palette. It doesn’t yet need to load the plugin. +* `src/extension.ts` - this is the main file where you will provide the implementation of your command. + * The file exports one function, `activate`, which is called the very first time your extension is activated (in this case by executing the command). Inside the `activate` function we call `registerCommand`. + * We pass the function containing the implementation of the command as the second parameter to `registerCommand`. + +## Setup + +* install the recommended extensions (amodio.tsl-problem-matcher, ms-vscode.extension-test-runner, and dbaeumer.vscode-eslint) + + +## Get up and running straight away + +* Press `F5` to open a new window with your extension loaded. +* Run your command from the command palette by pressing (`Ctrl+Shift+P` or `Cmd+Shift+P` on Mac) and typing `Hello World`. +* Set breakpoints in your code inside `src/extension.ts` to debug your extension. +* Find output from your extension in the debug console. + +## Make changes + +* You can relaunch the extension from the debug toolbar after changing code in `src/extension.ts`. +* You can also reload (`Ctrl+R` or `Cmd+R` on Mac) the VS Code window with your extension to load your changes. + + +## Explore the API + +* You can open the full set of our API when you open the file `node_modules/@types/vscode/index.d.ts`. + +## Run tests + +* Install the [Extension Test Runner](https://marketplace.visualstudio.com/items?itemName=ms-vscode.extension-test-runner) +* Run the "watch" task via the **Tasks: Run Task** command. Make sure this is running, or tests might not be discovered. +* Open the Testing view from the activity bar and click the Run Test" button, or use the hotkey `Ctrl/Cmd + ; A` +* See the output of the test result in the Test Results view. +* Make changes to `src/test/extension.test.ts` or create new test files inside the `test` folder. + * The provided test runner will only consider files matching the name pattern `**.test.ts`. + * You can create folders inside the `test` folder to structure your tests any way you want. + +## Go further + +* Reduce the extension size and improve the startup time by [bundling your extension](https://code.visualstudio.com/api/working-with-extensions/bundling-extension). +* [Publish your extension](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code extension marketplace. +* Automate builds by setting up [Continuous Integration](https://code.visualstudio.com/api/working-with-extensions/continuous-integration). diff --git a/webui/dspf.d.ts b/webui/dspf.d.ts new file mode 100644 index 0000000..9f2ff07 --- /dev/null +++ b/webui/dspf.d.ts @@ -0,0 +1,85 @@ +export interface DdsLineRange { + start: number; + end: number; +} +export declare class DisplayFile { + formats: RecordInfo[]; + currentField: FieldInfo | undefined; + currentFields: FieldInfo[]; + currentRecord: RecordInfo | undefined; + constructor(); + /** + * @param {string[]} lines + */ + parse(lines: string[]): void; + /** + * @param {string} keywords + * @param {string} [conditionals] + * @returns + */ + HandleKeywords(keywords: string, conditionals?: string): void; + static parseConditionals(conditionColumns: string): Conditional[]; + static parseKeywords(keywordStrings: string[], conditionalStrings?: { + [line: number]: string; + }): { + value: string; + keywords: Keyword[]; + conditions: Conditional[]; + }; + updateField(recordFormat: string, originalFieldName: string, fieldInfo: FieldInfo): { + newLines: string[]; + range?: DdsLineRange; + } | undefined; +} +export declare class RecordInfo { + name: string; + fields: FieldInfo[]; + range: DdsLineRange; + isWindow: boolean; + windowReference: string | undefined; + windowSize: { + y: number; + x: number; + width: number; + height: number; + }; + keywordStrings: string[]; + keywords: Keyword[]; + constructor(name: string); + handleKeywords(): void; +} +export interface Keyword { + name: string; + value?: string; + conditions: Conditional[]; +} +export type DisplayType = "input" | "output" | "both" | "const" | "hidden"; +export declare class FieldInfo { + startRange: number; + name?: string | undefined; + value: string | undefined; + type: string | undefined; + primitiveType: "char" | "decimal" | undefined; + displayType: DisplayType | undefined; + length: number; + decimals: number; + position: { + x: number; + y: number; + }; + keywordStrings: { + keywordLines: string[]; + conditionalLines: { + [lineIndex: number]: string; + }; + }; + conditions: Conditional[]; + keywords: Keyword[]; + constructor(startRange: number, name?: string | undefined); + handleKeywords(): void; +} +export declare class Conditional { + indicator: number; + negate: boolean; + constructor(indicator: number, negate?: boolean); +} diff --git a/webui/index.html b/webui/index.html new file mode 100644 index 0000000..efe3012 --- /dev/null +++ b/webui/index.html @@ -0,0 +1,41 @@ + + + + + + + + + + + +
+ + + + + + +
+ +
+
+
+
+
+
+ + +
+
+
+ + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/webui/main.js b/webui/main.js new file mode 100644 index 0000000..fdc70f9 --- /dev/null +++ b/webui/main.js @@ -0,0 +1,1347 @@ +/** + * @typedef {import('./dspf.d.ts').DisplayFile} DisplayFile + * @typedef {import('./dspf.d.ts').RecordInfo} RecordInfo + * @typedef {import('./dspf.d.ts').FieldInfo} FieldInfo + * @typedef {import('./dspf.d.ts').Keyword} Keyword + * @typedef {import("konva").default.Rect} Rect + * @typedef {import("konva").default.Stage} Stage + * @typedef {import("konva").default.Group} Group + * @typedef {import("konva").default.Layer} Layer + * @typedef {{label: string, id?: string, value: string}} Property + * @typedef {{[key: string]: string}} NewProperties + * @typedef {{title: string, html: string|Element, open?: boolean}} Section + */ + +const colours = { + RED: `red`, + BLU: `#4287f5`, + WHT: `#FFFFFF`, + GRN: `green`, + TRQ: `turquoise`, + YLW: `yellow`, + PNK: `pink`, + BLK: `black`, +}; + +const SELECTED_COLOUR = `#383838`; + +const dateFormats = { + '*MDY': `mm/dd/yyyy`, + '*DMY': `dd/mm/yyyy`, + '*YMD': `yyyy/mm/dd`, + '*JUL': 'yy/ddd', + '*ISO': 'yyyy-mm-dd', + '*USA': 'mm/dd/yyyy', + '*EUR': 'dd.mm.yyyy', + '*JIS': 'yyyy-mm-dd', +}; + +const timeFormats = { + '*HMS': 'hh:mm:ss', + '*ISO': 'hh.mm.ss', + '*USA': 'hh:mm am', + '*EUR': 'hh.mm.ss', + '*JIS': 'hh:mm:ss', +}; + +const GLOBAL_RECORD_FORMAT = `_GLOBAL`; + +const vscode = acquireVsCodeApi(); + +const pxwPerChar = 8.45; +const pxhPerLine = 20; +const pxhPerChar = 12.5; + +function snapToFixedGrid(x, y) { + const newX = Math.round(x / pxwPerChar) * pxwPerChar; + const newY = Math.round(y / pxhPerLine) * pxhPerLine; + return {x: newX, y: newY}; +} + +function gridCordsToFieldCords(x, y) { + return { + x: Math.round(x / pxwPerChar) + 1, + y: Math.round(y / pxhPerLine) + 1 + }; +} + +function widthInP(x) { + return x * pxwPerChar; +} + +function heightInP(x) { + return x * pxhPerLine; +} + +/** @type {DisplayFile|undefined} */ +let activeDocument = undefined; + +/** @type {"dds.dspf"|undefined} */ +let activeDocumentType = undefined; + +/** @type {string|undefined} */ +let lastSelectedFormat = undefined; + +/** @type {Stage|undefined} */ +let existingStage = undefined; + +/** + * @param {DisplayFile} newDoc + * @param {"dds.dspf"} type //TODO: support dds.prtf + */ +function loadDDS(newDoc, type, withRerender = true) { + activeDocument = newDoc; + activeDocumentType = type; + + if (withRerender) { + const validFormats = activeDocument.formats.filter(format => format.name !== GLOBAL_RECORD_FORMAT); + + setTabs(validFormats.map(format => format.name), lastSelectedFormat); + + const chosenFormat = lastSelectedFormat || (validFormats[0] ? validFormats[0].name : undefined); + if (chosenFormat) { + setWindowForFormat(chosenFormat); + } + } +} + +/** + * @param {string} chosenFormat + */ +function setWindowForFormat(chosenFormat) { + let renderWidth = 80; + let renderHeight = 24; + + const globalFormat = activeDocument.formats.find(currentFormat => currentFormat.name === `GLOBAL`); + const selectedFormat = activeDocument.formats.find(currentFormat => currentFormat.name === chosenFormat); + + if (!selectedFormat) { + console.error(`Format ${chosenFormat} not found`); + return; + } + + switch (activeDocumentType) { + case `dds.dspf`: + if (globalFormat) { + const displaySize = globalFormat.keywords.find(keyword => keyword.name === `DSPSIZ`); + + if (displaySize) { + const parts = parseParms(displaySize.value); + + if (parts.length >= 2) { + const [height, width] = parts; + + renderWidth = widthInP(Number(width)); + renderHeight = heightInP(Number(height)); + } else if (parts.length === 1) { + switch (parts[0].toUpperCase()) { + case '*DS4': + renderWidth = 132; + renderHeight = 27; + break; + } + } + } + } + break; + } + + let width = renderWidth * pxwPerChar; + let height = renderHeight * pxhPerLine; + + if (existingStage) { + existingStage.destroy(); + } + + existingStage = new Konva.Stage({ + container: 'container', + width: width, + height: height + }); + + const bg = new Konva.Rect({ + x: 0, + y: 0, + width: width, + height: height, + fill: colours.BLK + }); + + bg.on('pointerclick', () => { + setActiveField(); + }); + + let layer = new Konva.Layer({ + id: selectedFormat.name + }); + + layer.add(bg); + + renderSelectedFormat(layer, selectedFormat); + existingStage.add(layer); + + updateRecordFormatSidebar(selectedFormat, globalFormat); + setActiveField(); +} + +/** + * + * @param {Layer} layer + * @param {RecordInfo} [format] + */ +function renderSelectedFormat(layer, format) { + lastSelectedFormat = format.name; + + /** @type {RecordInfo|undefined} */ + let windowFormat; + + /** @type {{baseX: number, baseY: number, baseWidth: number, baseHeight: number, x: number, y: number, width: number, height: number, color?: string}|undefined} */ + let windowConfig; + + /** @type {FieldInfo|undefined} */ + let windowTitle; + + /** @type {RecordInfo} */ + let recordFormat; + if (format) { + recordFormat = activeDocument.formats.find(currentFormat => currentFormat.name === lastSelectedFormat); + } + + if (recordFormat) { + if (recordFormat.isWindow) { + if (recordFormat.windowReference) { + windowFormat = activeDocument.formats.find(currentFormat => currentFormat.name === recordFormat.windowReference); + } else { + windowFormat = recordFormat; + } + + const { x, y, width, height } = windowFormat.windowSize; + windowConfig = { + baseX: x, + baseY: y, + baseWidth: width, + baseHeight: height, + x: widthInP(x), + y: heightInP(y), + width: widthInP(width), + height: heightInP(height-1) + }; + + const borderInfo = windowFormat.keywords.find(keyword => keyword.name === `WDWBORDER`); + if (borderInfo) { + parts = parseParms(borderInfo.value); + + parts.forEach((part, index) => { + switch (part.toUpperCase()) { + case `*COLOR`: + windowConfig.color = parts[index + 1]; + break; + } + }); + } + + const windowInfo = windowFormat.keywords.find(keyword => keyword.name === `WDWTITLE`); + if (windowInfo) { + windowTitle = { + name: `WINDOWTITLE`, + displayType: `const`, + type: `A`, + primitiveType: `char` + }; + + let xPositionValue = `center`; + let yPositionValue = `top`; + + parts = Render.parseParms(windowInfo.value); + + parts.forEach((part, index) => { + switch (part.toUpperCase()) { + case `*TEXT`: + windowTitle.value = parts[index + 1]; + break; + case `*COLOR`: + windowTitle.keywords.push({ + name: `COLOR`, + value: parts[index + 1], + conditions: [] + }); + case `*DSPATR`: + windowTitle.keywords.push({ + name: `DSPATR`, + value: parts[index + 1], + conditions: [] + }); + break; + + case `*CENTER`: + case `*LEFT`: + case `*RIGHT`: + xPositionValue = part.substring(1).toLowerCase(); + break; + + case `*TOP`: + case `*BOTTOM`: + yPositionValue = part.substring(1).toLowerCase(); + break; + } + }); + + // If no color is found, the default is blue. + if (!windowTitle.keywords.find(keyword => keyword.name === `COLOR`)) { + windowTitle.keywords.push({ + name: `COLOR`, + value: `BLU`, + conditions: [] + }); + } + + const txtLength = windowTitle.value.length; + + const yPosition = (windowConfig.baseY) + (yPositionValue === `top` ? 0 : windowConfig.baseHeight); + let xPosition = (windowConfig.baseX + 1); + + switch (xPositionValue) { + case `center`: + xPosition = (windowConfig.baseX + 1) + Math.floor((windowConfig.baseWidth / 2) - (txtLength / 2)); + break; + case `right`: + xPosition = (windowConfig.baseX + 1) + windowConfig.baseWidth - txtLength; + break; + case `left`: + xPosition = (windowConfig.baseX + 1); + break; + } + + windowTitle.position = { + x: xPosition, + y: yPosition + }; + } + } + } + + if (windowFormat) { + // If this is a window, add the window CSS + if (windowConfig) { + const windowColor = colors[windowConfig.color] || colors.BLU; + + /** @type {Rect} */ + const windowRect = new Konva.Rect({ + id: windowFormat.name, + x: windowConfig.x, + y: windowConfig.y, + width: windowConfig.width, + height: windowConfig.height, + stroke: windowColor, + }); + + layer.add(windowRect); + } + + if (windowTitle) { + console.log(`TODO: add window title: ${windowFormat}`); + // const windowContent = this.getContent(windowTitle); + + // css += windowContent.css; + // body += windowContent.body; + } + + if (windowFormat.name !== format.name) { + renderSelectedFormat(layer, windowFormat); + } + } + + // TODO: handle window + // TODO: make format optional + if (format) { + addFieldsToLayer(layer, format); + } +} + +/** + * + * @param {*} layer + * @param {RecordInfo} format + */ +function addFieldsToLayer(layer, format) { + const subfileFormat = format.keywords.find(keyword => keyword.name === `SFLCTL`); + // TODO: handle when subFileFormat is found + + if (subfileFormat) { + const subfilePage = format.keywords.find(keyword => keyword.name === `SFLPAG`) + const rows = Number(subfilePage ? subfilePage.value : 1); + + const subfileRecord = activeDocument.formats.find(format => format.name === subfileFormat.value); + + if (subfileRecord) { + const subfileFields = subfileRecord.fields.filter(field => field.displayType !== `hidden` && field.position.x > 0 && field.position.y > 0); + + const low = Math.min(...subfileFields.map(field => field.position.y)); + const high = Math.max(...subfileFields.map(field => field.position.y)); + const linesPerItem = (high - low) + 1; + + for (let row = 0; row < rows; row++) { + subfileFields.forEach(field => { + // TODO: these fields cant be edited in this format + let subField = JSON.parse(JSON.stringify(field)); + subField.position.y += (row * linesPerItem); + let canDisplay = true; + + // field.conditions.forEach(cond => { + // if (this.indicators[cond.indicator] !== (cond.negate ? false : true)) { + // canDisplay = false; + // } + // }); + + if (canDisplay) { + subField.name = `${field.name}_${row}`; + const content = getElement(subField, true); + layer.add(content); + } + }); + } + + + } else { + throw new Error(`Unable to find SFLCTL format ${subfileFormat} from ${recordFormat}`); + } + } + + const fields = format.fields.filter(field => field.displayType !== `hidden`); + fields.forEach(field => { + let canDisplay = true; + + field.conditions.forEach(cond => { + // TODO: indicator support? + // if (this.indicators[cond.indicator] !== (cond.negate ? false : true)) { + // canDisplay = false; + // } + }); + + if (canDisplay) { + const content = getElement(field); + layer.add(content); + } + }); +} + +/** + * + * @param {FieldInfo} fieldInfo + * @returns {Konva.Group|undefined} + */ +function renderSpecificField(fieldInfo) { + const existingField = existingStage.findOne(`#${fieldInfo.name}`); + + if (existingField) { + existingField.destroy(); + } + + const formatLayer = existingStage.findOne(`#${lastSelectedFormat}`); + + if (formatLayer) { + const content = getElement(fieldInfo); + formatLayer.add(content); + + return content; + } +} + +/** + * @param {FieldInfo} fieldInfo + */ +function getElement(fieldInfo, displayOnly = false) { + const boxInfo = { + id: fieldInfo.name, + x: widthInP(fieldInfo.position.x - 1), + y: heightInP(fieldInfo.position.y - 1), + width: 0, + height: heightInP(1), + draggable: !displayOnly, + }; + + const labelInfo = { + value: fieldInfo.value || ``, + colour: colours.GRN, + fontStyle: `normal`, + textDecoration: `` + }; + + const keywords = fieldInfo.keywords; + + keywords.forEach(keyword => { + const key = keyword.name; + switch (key) { + case `PAGNBR`: + labelInfo.value = `####`; + break; + case `COLOR`: + labelInfo.colour = colours[keyword.value] || colours.GRN; + break; + case `SYSNAME`: + labelInfo.value = `SYSNAME_`; + break; + case `USER`: + labelInfo.value = `USERNAME__`; + break; + case `DATE`: + const dateSep = keywords.find(keyword => keyword.name === `DATSEP`); + + const dateFormat = keywords.find(keyword => keyword.name === `DATFMT`); + if (dateFormat) { + labelInfo.value = dateFormats[dateFormat.value] || `?FORMAT?`; + + if (dateSep && dateSep.value.toUpperCase() !== `*JOB`) { + labelInfo.value = labelInfo.value.replace(new RegExp(`[./-:]`, `g`), dateSep.value); + } + } + break; + case `TIME`: + const sep = keywords.find(keyword => keyword.name === `TIMSEP`); + + const format = keywords.find(keyword => keyword.name === `TIMFMT`); + if (format) { + labelInfo.value = timeFormats[format.value] || `?FORMAT?`; + + if (sep && sep.value.toUpperCase() !== `*JOB`) { + labelInfo.value = labelInfo.value.replace(new RegExp(`[./-:]`, `g`), sep.value); + } + } + break; + case `UNDERLINE`: + labelInfo.textDecoration = `underline`; + break; + case `HIGHLIGHT`: + // css += `font-weight: 900;`; + labelInfo.fontStyle = `900`; + break; + case `DSPATR`: + keyword.value.split(` `).forEach(value => { + switch (value) { + case `UL`: + // css += `text-decoration: underline;`; + labelInfo.textDecoration = `underline`; + break; + case `HI`: + // css += `font-weight: 900;`; + // if (!keywords.find(keyword => keyword.name === `COLOR`)) { + // css += `color: ${colors.WHT};`; + // } + labelInfo.fontStyle = `900`; + labelInfo.colour = colours.WHT; + break; + case `BL`: + // Can Konva do a blinking effect? + // css += `animation: blinker 1s step-start infinite;`; + break; + } + }); + break; + } + }); + + let padString = `_`; + + switch (fieldInfo.primitiveType) { + case `char`: + switch (fieldInfo.displayType) { + case `input`: padString = `I`; break; + case `output`: padString = `O`; break; + case `both`: padString = `B`; break; + } + break; + case `decimal`: + switch (fieldInfo.displayType) { + case `input`: padString = `3`; break; + case `output`: padString = `6`; break; + case `both`: padString = `9`; break; + } + break; + } + + const displayLength = fieldInfo.length > 0 && labelInfo.value.length < fieldInfo.length ? fieldInfo.length : labelInfo.value.length; + const displayValue = labelInfo.value + .replace(new RegExp(`''`, `g`), `'`) + .padEnd(displayLength, padString); + + boxInfo.width = widthInP(displayLength); + labelInfo.width = widthInP(displayLength); + + let group = new Konva.Group(boxInfo); + + group.on('dragmove', (e) => { + /** @type {Group} */ + const cGroup = e.target; + + /** @type {Stage} */ + const stage = e.target.getStage(); + const mousePos = stage.getPointerPosition(); + + let {x, y} = mousePos; + + const boxPos = cGroup.absolutePosition(); + + // Mouse pos inside the group + x -= (x - boxPos.x); + y -= (y - boxPos.y); + + const newCords = snapToFixedGrid(x, y); + + cGroup.absolutePosition({ + x: newCords.x, + y: newCords.y + }); + }); + + group.on(`dragend`, e => { + // const {x, y} = e.target.attrs; + // get mouse x,y + /** @type {Group} */ + const cGroup = e.target; + const stage = cGroup.getStage(); + const mousePos = stage.getPointerPosition(); + + let {x, y} = mousePos; + const boxPos = cGroup.absolutePosition(); + + // Mouse pos inside the group + x -= (x - boxPos.x); + y -= (y - boxPos.y); + + const newCords = snapToFixedGrid(x, y); + + cGroup.absolutePosition({ + x: newCords.x, + y: newCords.y + }); + + const fieldCords = gridCordsToFieldCords(newCords.x, newCords.y); + fieldInfo.position.x = fieldCords.x; + fieldInfo.position.y = fieldCords.y; + + sendFieldUpdate(lastSelectedFormat, fieldInfo.name, fieldInfo); + }); + + group.add(new Konva.Rect({ + id: `bg`, + fill: colours.BLK, + x: 0, + y: 0, + width: boxInfo.width, + height: pxhPerChar, + })); + + // add text to the label + group.add(new Konva.Text({ + text: displayValue, + fontSize: 14, + fontFamily: `Consolas, "Liberation Mono", Menlo, Courier, monospace`, + fill: labelInfo.colour, + fontStyle: labelInfo.fontStyle, + textDecoration: labelInfo.textDecoration, + })); + + if (!displayOnly) { + group.on('pointerclick', () => { + setActiveField(group, fieldInfo); + }); + } + + return group; +} + +function parseParms(string) { + let items = []; + let inString = false; + let current = ``; + + for (let i = 0; i < string.length; i++) { + switch (string[i]) { + case `'`: + inString = !inString; + break; + case ` `: + if (inString) { current += string[i]; } + else { + items.push(current); + current = ``; + } + break; + default: + current += string[i]; + break; + } + } + + if (current.trim().length > 0) { + items.push(current.trim()); + } + + return items; +} + +/** + * @param {string[]} recordFormats + */ +function setTabs(recordFormats, setActiveTab) { + // Defined like: + const tabs = document.getElementById(`recordFormatTabs`); + tabs.innerHTML = recordFormats.map(f => + `${f}` + ).join(``); + + if (setActiveTab) { + tabs.setAttribute(`selected-index`, recordFormats.indexOf(setActiveTab)); + } +} + + +window.addEventListener("message", (event) => { + const command = event.data.command; + switch (command) { + case `load`: + loadDDS(event.data.dds, `dds.dspf`); + break; + case 'update': + loadDDS(event.data.dds, `dds.dspf`, false); + break; + } +}); + + +window.onload = () => { + const tabs = document.getElementById(`recordFormatTabs`); + + tabs.addEventListener(`vsc-tabs-select`, (event) => { + console.log(event.detail.selectedIndex); + + const selectedFormat = activeDocument && activeDocument.formats[event.detail.selectedIndex+1]; + + if (selectedFormat) { + setWindowForFormat(selectedFormat.name); + } + }); +}; + +/** @type {Rect|undefined} */ +let lastActiveKonvaElement; + +/** + * + * @param {*} [konvaElement] + * @param {FieldInfo} [fieldInfo] + */ +function setActiveField(konvaElement, fieldInfo) { + clearKeywordEditor(); + + if (lastActiveKonvaElement) { + const bg = lastActiveKonvaElement.findOne(`#bg`); + // Remove background from last active element + + if (bg) { + bg.fill(colours.BLK); + } + + lastActiveKonvaElement = undefined; + } + + if (konvaElement && fieldInfo) { + lastActiveKonvaElement = konvaElement; + + const bg = lastActiveKonvaElement.findOne(`#bg`); + bg.fill(SELECTED_COLOUR); + + updateSelectedFieldSidebar(fieldInfo); + } else { + clearFieldInfo(); + } +} + +/** + * @param {RecordInfo} recordInfo + * @param {RecordInfo} [globalInfo] + */ +function updateRecordFormatSidebar(recordInfo, globalInfo) { + const sidebar = document.getElementById(`recordFormatSidebar`); + + /** @type {Section[]} */ + let sections = []; + + // TODO: support updating record formats + + if (globalInfo) { + sections.push({ + title: `File Keywords`, + html: createKeywordPanel(`keywords-${globalInfo.name}`, globalInfo.keywords), + open: true + }); + } + + sections.push({ + title: `Format Keywords`, + html: createKeywordPanel(`keywords-${recordInfo.name}`, recordInfo.keywords, (keywords) => { + sendFormatHeaderUpdate(recordInfo.name, keywords); + }), + open: true + }); + + renderSections(sidebar, sections); +} + +function clearFieldInfo() { + const sidebar = document.getElementById(`fieldInfoSidebar`); + sidebar.innerHTML = ``; + + /** + * @param {string} label + * @param {string} icon + * @param {FieldInfo} field + */ + const createButton = (label, icon, field) => { + const button = document.createElement(`vscode-button`); + button.setAttribute(`secondary`, `true`); + button.setAttribute(`icon`, icon); + button.style.margin = `1em`; + button.style.display = `block`; + button.style.textAlign = `right`; + button.innerText = label; + sidebar.appendChild(button); + + button.onclick = () => { + if (lastSelectedFormat) { + sendNewField(lastSelectedFormat, field); + } + }; + + return button; + } + + // Creates: Secondary button + + sidebar.appendChild(createButton(`Named field`, `add`)); + sidebar.appendChild(createButton(`Date field`, `calendar`)); + sidebar.appendChild(createButton(`Time field`, `calendar`)); + sidebar.appendChild(createButton(`Timestamp field`, `calendar`)); + + sidebar.appendChild(createButton(`Constant text`, `symbol-constant`, { + value: `Constant`, + position: {x: 1, y: 1}, + displayType: `const`, + keywords: [], + })); + sidebar.appendChild(createButton(`System name constant`, `account`)); + sidebar.appendChild(createButton(`Date constant`, `calendar`)); + sidebar.appendChild(createButton(`Time constant`, `calendar`)); +} + +/** + * + * @param {FieldInfo} fieldInfo + */ +function updateSelectedFieldSidebar(fieldInfo) { + const sidebar = document.getElementById(`fieldInfoSidebar`); + + /** @type {Section[]} */ + let sections = []; + + /** @type {Property[]} */ + const properties = []; + + if (fieldInfo.name) { + properties.push({ label: `Name`, value: fieldInfo.name }); + } + + properties.push( + { label: `Display Type`, value: fieldInfo.displayType }, + { label: `Position`, value: `${fieldInfo.position.x}, ${fieldInfo.position.y}` }, + ); + + if (fieldInfo.displayType === `const`) { + properties.push({ label: `Value`, value: fieldInfo.value, id: `value` }); + } + + if (fieldInfo.type) { + properties.push( + { label: `Type`, value: fieldInfo.type }, + { label: `Length`, value: fieldInfo.length, id: `length` }, + ); + + if (fieldInfo.type !== `A`) { + properties.push({ label: `Decimals`, value: fieldInfo.decimals, id: `decimals` }); + } + } + + sections.push( + { + title: `Properties`, + open: true, + // TODO: swap this to createKeywordPanel + html: createValuesPanel(`properties-${fieldInfo.name}`, properties, (newProps) => { + fieldInfo = { + ...fieldInfo, + ...newProps + }; + + sendFieldUpdate(lastSelectedFormat, fieldInfo.name, fieldInfo); + }) + }, + { + title: `Keywords`, + open: Object.keys(fieldInfo.keywords).length > 0, + html: createKeywordPanel(`keywords-${fieldInfo.name}`, fieldInfo.keywords, (keywords) => { + fieldInfo.keywords = keywords; + sendFieldUpdate(lastSelectedFormat, fieldInfo.name, fieldInfo); + }), + } + ); + + renderSections(sidebar, sections); + + const deleteButton = document.createElement(`vscode-button`); + deleteButton.setAttribute(`secondary`, `true`); + deleteButton.innerText = `Delete`; + + // Center the button + deleteButton.style.margin = `1em`; + deleteButton.style.display = `block`; + + deleteButton.addEventListener(`click`, (e) => { + if (fieldInfo.name) { + sendDelete(lastSelectedFormat, fieldInfo.name); + } + }); + + sidebar.appendChild(deleteButton); +} + +/** + * + * @param {HTMLElement} sidebar + * @param {Section[]} sections + */ +function renderSections(sidebar, sections) { + sidebar.innerHTML = ``; + + for (let section of sections) { + let newSection = document.createElement(`vscode-collapsible`); + newSection.setAttribute(`title`, section.title); + if (section.open) { + newSection.setAttribute(`open`, ``); + } + + if (typeof section.html === `string`) { + newSection.innerHTML = section.html; + } else { + newSection.appendChild(section.html); + } + + sidebar.appendChild(newSection); + } +} + +/** + * @param {string} recordFormat + * @param {FieldInfo} fieldInfo + */ +function sendNewField(recordFormat, fieldInfo) { + vscode.postMessage({ + command: `newField`, + recordFormat, + fieldInfo + }); +} + +function sendDelete(recordFormat, fieldName) { + vscode.postMessage({ + command: `deleteField`, + recordFormat, + fieldName + }); +} + +/** + * @param {string} recordFormat + * @param {string} originalFieldName + * @param {FieldInfo} newFieldInfo + */ +function sendFieldUpdate(recordFormat, originalFieldName, newFieldInfo) { + vscode.postMessage({ + command: `updateField`, + recordFormat, + originalFieldName, + fieldInfo: newFieldInfo + }); + + // const currentFormat = activeDocument.formats.find(format => format.name === recordFormat); + // if (currentFormat) { + // const field = currentFormat.fields.find(field => field.name === originalFieldName); + // for (const propKey in newFieldInfo) { + // const propValue = newFieldInfo[propKey]; + + // field[propKey] = propValue; + // } + // } + + const newGroup = renderSpecificField(newFieldInfo); + + if (newGroup) { + setActiveField(newGroup, newFieldInfo); + } +} + +/** + * @param {string} recordFormat + * @param {Keyword[]} newKeywords + */ +function sendFormatHeaderUpdate(recordFormat, newKeywords) { + vscode.postMessage({ + command: `updateFormat`, + recordFormat, + newKeywords + }); +} + +/** + * Used to create panels for editable key/value lists. + * @param {string} id + * @param {Keyword[]} inputKeywords + * @param {(keywords: Keyword[]) => void} [onUpdate] + */ +function createKeywordPanel(id, inputKeywords, onUpdate) { + /** @type {Keyword[]} */ + const keywords = JSON.parse(JSON.stringify(inputKeywords)); + + const section = document.createElement(`div`); + section.id = id; + + const tree = document.createElement(`vscode-tree`); + tree.id = id; + + const actions = onUpdate ? [ + { + icon: "edit", + actionId: "edit", + tooltip: "Edit", + }, + { + icon: "trash", + actionId: "delete", + tooltip: "Delete", + }, + ] : []; + + const icons = { + branch: 'folder', + leaf: 'circle-filled', + open: 'folder-opened', + }; + + const rerenderTree = () => { + tree.data = keywords.map((keyword, index) => { + return { + icons, + label: keyword.name, + value: keyword, + description: keyword.value, + actions, + subItems: keyword.conditions.map(c => ({ + label: String(c.indicator), + description: c.negate ? `Negated` : undefined, + icons + })), + }; + }); + }; + + rerenderTree(); + + tree.addEventListener('vsc-run-action', (event) => { + console.log(event.detail); + /** @type {Keyword} */ + const currentKeyword = event.detail.value; + const oldKeywordIndex = keywords.findIndex(k => k.name === currentKeyword.name && k.value === currentKeyword.value); + + switch (event.detail.actionId) { + case `delete`: + if (oldKeywordIndex >= 0) { + keywords.splice(oldKeywordIndex, 1); + } + rerenderTree(); + break; + + case `edit`: + editKeyword((newKeyword) => { + if (oldKeywordIndex >= 0) { + keywords[oldKeywordIndex] = newKeyword; + } else { + keywords.push(newKeyword); + } + + clearKeywordEditor(); + rerenderTree(); + }, event.detail.value); + break; + } + }); + + section.appendChild(tree); + + if (onUpdate) { + const newKeyword = document.createElement(`vscode-button`); + newKeyword.setAttribute(`icon`, `add`); + + newKeyword.innerText = `New Keyword`; + newKeyword.style.margin = `1em`; + newKeyword.style.display = `block`; + + newKeyword.addEventListener(`click`, (e) => { + editKeyword((newKeyword) => { + keywords.push(newKeyword); + clearKeywordEditor(); + rerenderTree(); + }); + }); + + const updateButton = document.createElement(`vscode-button`); + updateButton.innerText = `Update`; + + // Center the button + updateButton.style.margin = `1em`; + updateButton.style.display = `block`; + + updateButton.addEventListener(`click`, (e) => { + // As we update keywords, the `keywords` variable is updated + onUpdate(keywords); + }); + + section.appendChild(newKeyword); + section.appendChild(updateButton); + } + + return section; +} + +/** + * Used to create a panel for editable properties. + * Properties with the `id` property are editable. + * @param {string} id + * @param {Property[]} properties + * @param {(newProps: NewProperties) => {}} onUpdate + */ +function createValuesPanel(id, properties, onUpdate) { + const section = document.createElement(`div`); + section.id = id; + + const createLabelCell = (label) => { + const cell = document.createElement(`vscode-table-cell`); + cell.innerText = label; + return cell; + }; + + const createInputCell = (id, value, placeHolder) => { + const cell = document.createElement(`vscode-table-cell`); + + const input = document.createElement(`code`); + input.id = id; + input.innerText = value; + input.setAttribute(`contenteditable`, `true`); + + cell.appendChild(input); + + return cell; + }; + + const table = document.createElement(`vscode-table`); + table.id = id; + + const tableBody = document.createElement(`vscode-table-body`); + + const hasEditableData = properties.some(prop => prop.id !== undefined); + + for (let prop of properties) { + const row = document.createElement(`vscode-table-row`); + + row.appendChild(createLabelCell(prop.label)); + + if (prop.id) { + row.append(createInputCell(prop.id, prop.value, `no value`)); + } else { + row.append(createLabelCell(prop.value)); + } + + tableBody.appendChild(row); + } + + table.appendChild(tableBody); + section.appendChild(table); + + if (hasEditableData) { + const updateButton = document.createElement(`vscode-button`); + updateButton.innerText = `Update`; + + // Center the button + updateButton.style.margin = `1em`; + updateButton.style.display = `block`; + + updateButton.addEventListener(`click`, (e) => { + const values = section.querySelectorAll(`[contenteditable]`); + + /** @type {{[key: string]: string}} */ + let newProperties = {}; + + values.forEach(field => { + newProperties[field.id] = field.innerText; + }); + + onUpdate(newProperties); + }); + + section.appendChild(updateButton); + } + + return section; +} + +function clearKeywordEditor() { + const keywordEditorArea = document.getElementById(`keywordEditorArea`); + keywordEditorArea.innerHTML = ``; +} + +/** + * @param {(keyword: Keyword) => void} onUpdate + * @param {Keyword} [keyword] + */ +function editKeyword(onUpdate, keyword) { + const group = document.createElement(`vscode-form-group`); + group.id = `currentKeywordEditor`; + group.setAttribute(`variant`, `vertical`); + group.style.paddingLeft = `1em`; + group.style.paddingRight = `1em`; + + const createLabel = (label, forId) => { + const labelElement = document.createElement(`vscode-label`); + labelElement.setAttribute(`for`, forId); + labelElement.innerText = label; + labelElement.style.marginTop = `0.5em`; + return labelElement; + }; + + const createInputField = (id, value) => { + const input = document.createElement(`vscode-textfield`); + input.setAttribute(`id`, id); + input.setAttribute(`value`, value); + return input; + }; + + const createIndicatorSelect = (id, defaultValue) => { + const select = document.createElement(`vscode-single-select`); + select.setAttribute(`id`, id); + + const options = [`None`]; + + for (let i = 1; i <= 99; i++) { + options.push(String(i)); + } + + options.forEach(option => { + const optionElement = document.createElement(`vscode-option`); + optionElement.setAttribute(`value`, option); + optionElement.innerText = option; + + if (option === defaultValue) { + optionElement.setAttribute(`selected`, `true`); + } + + select.appendChild(optionElement); + }); + + return select; + }; + + const createCheckbox = (id, label, checked) => { + const checkbox = document.createElement(`vscode-checkbox`); + checkbox.setAttribute(`id`, id); + checkbox.setAttribute(`label`, label); + if (checked) { + checkbox.setAttribute(`checked`, checked); + } + return checkbox; + }; + + group.appendChild(createLabel(`Keyword`, `keyword`)); + group.appendChild(createInputField(`keyword`, keyword ? keyword.name : ``)); + + group.appendChild(createLabel(`Value`, `value`)); + group.appendChild(createInputField(`value`, keyword ? (keyword.value || ``) : ``)); + + group.appendChild(createLabel(`Indicator 1`, `ind1`)); + group.appendChild(createIndicatorSelect(`ind1`, keyword ? keyword.conditions[0]?.indicator : undefined)); + + group.appendChild(createCheckbox(`neg1`, `Negate`, keyword ? keyword.conditions[0]?.negate : undefined)); + + group.appendChild(createLabel(`Indicator 2`, `ind2`)); + group.appendChild(createIndicatorSelect(`ind2`, keyword ? keyword.conditions[1]?.indicator : undefined)); + + group.appendChild(createCheckbox(`neg2`, `Negate`, keyword ? keyword.conditions[1]?.negate : undefined)); + + group.appendChild(createLabel(`Indicator 3`, `ind3`)); + group.appendChild(createIndicatorSelect(`ind3`, keyword ? keyword.conditions[2]?.indicator : undefined)); + + group.appendChild(createCheckbox(`neg3`, `Negate`, keyword ? keyword.conditions[2]?.negate : undefined)); + + const button = document.createElement(`vscode-button`); + button.setAttribute(`icon`, `check`); + button.style.marginTop = `1em`; + button.style.display = `block`; + button.innerText = `Confirm`; + button.onclick = () => { + const keywordName = group.querySelector(`#keyword`).value; + const keywordValue = group.querySelector(`#value`).value; + + const ind1 = group.querySelector(`#ind1`).value; + const neg1 = group.querySelector(`#neg1`).checked; + + const ind2 = group.querySelector(`#ind2`).value; + const neg2 = group.querySelector(`#neg2`).checked; + + const ind3 = group.querySelector(`#ind3`).value; + const neg3 = group.querySelector(`#neg3`).checked; + + const newKeyword = { + name: keywordName, + value: keywordValue ? keywordValue : undefined, + conditions: [] + }; + + if (ind1 !== `None`) { + newKeyword.conditions.push({ + indicator: ind1, + negate: neg1 + }); + } + + if (ind2 !== `None`) { + newKeyword.conditions.push({ + indicator: ind2, + negate: neg2 + }); + } + + if (ind3 !== `None`) { + newKeyword.conditions.push({ + indicator: ind3, + negate: neg3 + }); + } + + onUpdate(newKeyword); + }; + + group.appendChild(button); + + const keywordEditorArea = document.getElementById(`keywordEditorArea`); + keywordEditorArea.innerHTML = ``; + + keywordEditorArea.appendChild(document.createElement(`vscode-divider`)); + keywordEditorArea.appendChild(group); +} \ No newline at end of file diff --git a/webui/scripts/codicon.css b/webui/scripts/codicon.css new file mode 100644 index 0000000..e5f07c5 --- /dev/null +++ b/webui/scripts/codicon.css @@ -0,0 +1,629 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +@font-face { + font-family: "codicon"; + font-display: block; + src: url("./codicon.ttf?38dcd33a732ebca5a557e04831e9e235") format("truetype"); +} + +.codicon[class*='codicon-'] { + font: normal normal normal 16px/1 codicon; + display: inline-block; + text-decoration: none; + text-rendering: auto; + text-align: center; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + user-select: none; + -webkit-user-select: none; + -ms-user-select: none; +} + +/*--------------------- + * Modifiers + *-------------------*/ + +@keyframes codicon-spin { + 100% { + transform:rotate(360deg); + } +} + +.codicon-sync.codicon-modifier-spin, +.codicon-loading.codicon-modifier-spin, +.codicon-gear.codicon-modifier-spin { + /* Use steps to throttle FPS to reduce CPU usage */ + animation: codicon-spin 1.5s steps(30) infinite; +} + +.codicon-modifier-disabled { + opacity: 0.5; +} + +.codicon-modifier-hidden { + opacity: 0; +} + +/* custom speed & easing for loading icon */ +.codicon-loading { + animation-duration: 1s !important; + animation-timing-function: cubic-bezier(0.53, 0.21, 0.29, 0.67) !important; +} + +/*--------------------- + * Icons + *-------------------*/ + +.codicon-add:before { content: "\ea60" } +.codicon-plus:before { content: "\ea60" } +.codicon-gist-new:before { content: "\ea60" } +.codicon-repo-create:before { content: "\ea60" } +.codicon-lightbulb:before { content: "\ea61" } +.codicon-light-bulb:before { content: "\ea61" } +.codicon-repo:before { content: "\ea62" } +.codicon-repo-delete:before { content: "\ea62" } +.codicon-gist-fork:before { content: "\ea63" } +.codicon-repo-forked:before { content: "\ea63" } +.codicon-git-pull-request:before { content: "\ea64" } +.codicon-git-pull-request-abandoned:before { content: "\ea64" } +.codicon-record-keys:before { content: "\ea65" } +.codicon-keyboard:before { content: "\ea65" } +.codicon-tag:before { content: "\ea66" } +.codicon-git-pull-request-label:before { content: "\ea66" } +.codicon-tag-add:before { content: "\ea66" } +.codicon-tag-remove:before { content: "\ea66" } +.codicon-person:before { content: "\ea67" } +.codicon-person-follow:before { content: "\ea67" } +.codicon-person-outline:before { content: "\ea67" } +.codicon-person-filled:before { content: "\ea67" } +.codicon-git-branch:before { content: "\ea68" } +.codicon-git-branch-create:before { content: "\ea68" } +.codicon-git-branch-delete:before { content: "\ea68" } +.codicon-source-control:before { content: "\ea68" } +.codicon-mirror:before { content: "\ea69" } +.codicon-mirror-public:before { content: "\ea69" } +.codicon-star:before { content: "\ea6a" } +.codicon-star-add:before { content: "\ea6a" } +.codicon-star-delete:before { content: "\ea6a" } +.codicon-star-empty:before { content: "\ea6a" } +.codicon-comment:before { content: "\ea6b" } +.codicon-comment-add:before { content: "\ea6b" } +.codicon-alert:before { content: "\ea6c" } +.codicon-warning:before { content: "\ea6c" } +.codicon-search:before { content: "\ea6d" } +.codicon-search-save:before { content: "\ea6d" } +.codicon-log-out:before { content: "\ea6e" } +.codicon-sign-out:before { content: "\ea6e" } +.codicon-log-in:before { content: "\ea6f" } +.codicon-sign-in:before { content: "\ea6f" } +.codicon-eye:before { content: "\ea70" } +.codicon-eye-unwatch:before { content: "\ea70" } +.codicon-eye-watch:before { content: "\ea70" } +.codicon-circle-filled:before { content: "\ea71" } +.codicon-primitive-dot:before { content: "\ea71" } +.codicon-close-dirty:before { content: "\ea71" } +.codicon-debug-breakpoint:before { content: "\ea71" } +.codicon-debug-breakpoint-disabled:before { content: "\ea71" } +.codicon-debug-hint:before { content: "\ea71" } +.codicon-terminal-decoration-success:before { content: "\ea71" } +.codicon-primitive-square:before { content: "\ea72" } +.codicon-edit:before { content: "\ea73" } +.codicon-pencil:before { content: "\ea73" } +.codicon-info:before { content: "\ea74" } +.codicon-issue-opened:before { content: "\ea74" } +.codicon-gist-private:before { content: "\ea75" } +.codicon-git-fork-private:before { content: "\ea75" } +.codicon-lock:before { content: "\ea75" } +.codicon-mirror-private:before { content: "\ea75" } +.codicon-close:before { content: "\ea76" } +.codicon-remove-close:before { content: "\ea76" } +.codicon-x:before { content: "\ea76" } +.codicon-repo-sync:before { content: "\ea77" } +.codicon-sync:before { content: "\ea77" } +.codicon-clone:before { content: "\ea78" } +.codicon-desktop-download:before { content: "\ea78" } +.codicon-beaker:before { content: "\ea79" } +.codicon-microscope:before { content: "\ea79" } +.codicon-vm:before { content: "\ea7a" } +.codicon-device-desktop:before { content: "\ea7a" } +.codicon-file:before { content: "\ea7b" } +.codicon-file-text:before { content: "\ea7b" } +.codicon-more:before { content: "\ea7c" } +.codicon-ellipsis:before { content: "\ea7c" } +.codicon-kebab-horizontal:before { content: "\ea7c" } +.codicon-mail-reply:before { content: "\ea7d" } +.codicon-reply:before { content: "\ea7d" } +.codicon-organization:before { content: "\ea7e" } +.codicon-organization-filled:before { content: "\ea7e" } +.codicon-organization-outline:before { content: "\ea7e" } +.codicon-new-file:before { content: "\ea7f" } +.codicon-file-add:before { content: "\ea7f" } +.codicon-new-folder:before { content: "\ea80" } +.codicon-file-directory-create:before { content: "\ea80" } +.codicon-trash:before { content: "\ea81" } +.codicon-trashcan:before { content: "\ea81" } +.codicon-history:before { content: "\ea82" } +.codicon-clock:before { content: "\ea82" } +.codicon-folder:before { content: "\ea83" } +.codicon-file-directory:before { content: "\ea83" } +.codicon-symbol-folder:before { content: "\ea83" } +.codicon-logo-github:before { content: "\ea84" } +.codicon-mark-github:before { content: "\ea84" } +.codicon-github:before { content: "\ea84" } +.codicon-terminal:before { content: "\ea85" } +.codicon-console:before { content: "\ea85" } +.codicon-repl:before { content: "\ea85" } +.codicon-zap:before { content: "\ea86" } +.codicon-symbol-event:before { content: "\ea86" } +.codicon-error:before { content: "\ea87" } +.codicon-stop:before { content: "\ea87" } +.codicon-variable:before { content: "\ea88" } +.codicon-symbol-variable:before { content: "\ea88" } +.codicon-array:before { content: "\ea8a" } +.codicon-symbol-array:before { content: "\ea8a" } +.codicon-symbol-module:before { content: "\ea8b" } +.codicon-symbol-package:before { content: "\ea8b" } +.codicon-symbol-namespace:before { content: "\ea8b" } +.codicon-symbol-object:before { content: "\ea8b" } +.codicon-symbol-method:before { content: "\ea8c" } +.codicon-symbol-function:before { content: "\ea8c" } +.codicon-symbol-constructor:before { content: "\ea8c" } +.codicon-symbol-boolean:before { content: "\ea8f" } +.codicon-symbol-null:before { content: "\ea8f" } +.codicon-symbol-numeric:before { content: "\ea90" } +.codicon-symbol-number:before { content: "\ea90" } +.codicon-symbol-structure:before { content: "\ea91" } +.codicon-symbol-struct:before { content: "\ea91" } +.codicon-symbol-parameter:before { content: "\ea92" } +.codicon-symbol-type-parameter:before { content: "\ea92" } +.codicon-symbol-key:before { content: "\ea93" } +.codicon-symbol-text:before { content: "\ea93" } +.codicon-symbol-reference:before { content: "\ea94" } +.codicon-go-to-file:before { content: "\ea94" } +.codicon-symbol-enum:before { content: "\ea95" } +.codicon-symbol-value:before { content: "\ea95" } +.codicon-symbol-ruler:before { content: "\ea96" } +.codicon-symbol-unit:before { content: "\ea96" } +.codicon-activate-breakpoints:before { content: "\ea97" } +.codicon-archive:before { content: "\ea98" } +.codicon-arrow-both:before { content: "\ea99" } +.codicon-arrow-down:before { content: "\ea9a" } +.codicon-arrow-left:before { content: "\ea9b" } +.codicon-arrow-right:before { content: "\ea9c" } +.codicon-arrow-small-down:before { content: "\ea9d" } +.codicon-arrow-small-left:before { content: "\ea9e" } +.codicon-arrow-small-right:before { content: "\ea9f" } +.codicon-arrow-small-up:before { content: "\eaa0" } +.codicon-arrow-up:before { content: "\eaa1" } +.codicon-bell:before { content: "\eaa2" } +.codicon-bold:before { content: "\eaa3" } +.codicon-book:before { content: "\eaa4" } +.codicon-bookmark:before { content: "\eaa5" } +.codicon-debug-breakpoint-conditional-unverified:before { content: "\eaa6" } +.codicon-debug-breakpoint-conditional:before { content: "\eaa7" } +.codicon-debug-breakpoint-conditional-disabled:before { content: "\eaa7" } +.codicon-debug-breakpoint-data-unverified:before { content: "\eaa8" } +.codicon-debug-breakpoint-data:before { content: "\eaa9" } +.codicon-debug-breakpoint-data-disabled:before { content: "\eaa9" } +.codicon-debug-breakpoint-log-unverified:before { content: "\eaaa" } +.codicon-debug-breakpoint-log:before { content: "\eaab" } +.codicon-debug-breakpoint-log-disabled:before { content: "\eaab" } +.codicon-briefcase:before { content: "\eaac" } +.codicon-broadcast:before { content: "\eaad" } +.codicon-browser:before { content: "\eaae" } +.codicon-bug:before { content: "\eaaf" } +.codicon-calendar:before { content: "\eab0" } +.codicon-case-sensitive:before { content: "\eab1" } +.codicon-check:before { content: "\eab2" } +.codicon-checklist:before { content: "\eab3" } +.codicon-chevron-down:before { content: "\eab4" } +.codicon-chevron-left:before { content: "\eab5" } +.codicon-chevron-right:before { content: "\eab6" } +.codicon-chevron-up:before { content: "\eab7" } +.codicon-chrome-close:before { content: "\eab8" } +.codicon-chrome-maximize:before { content: "\eab9" } +.codicon-chrome-minimize:before { content: "\eaba" } +.codicon-chrome-restore:before { content: "\eabb" } +.codicon-circle-outline:before { content: "\eabc" } +.codicon-circle:before { content: "\eabc" } +.codicon-debug-breakpoint-unverified:before { content: "\eabc" } +.codicon-terminal-decoration-incomplete:before { content: "\eabc" } +.codicon-circle-slash:before { content: "\eabd" } +.codicon-circuit-board:before { content: "\eabe" } +.codicon-clear-all:before { content: "\eabf" } +.codicon-clippy:before { content: "\eac0" } +.codicon-close-all:before { content: "\eac1" } +.codicon-cloud-download:before { content: "\eac2" } +.codicon-cloud-upload:before { content: "\eac3" } +.codicon-code:before { content: "\eac4" } +.codicon-collapse-all:before { content: "\eac5" } +.codicon-color-mode:before { content: "\eac6" } +.codicon-comment-discussion:before { content: "\eac7" } +.codicon-credit-card:before { content: "\eac9" } +.codicon-dash:before { content: "\eacc" } +.codicon-dashboard:before { content: "\eacd" } +.codicon-database:before { content: "\eace" } +.codicon-debug-continue:before { content: "\eacf" } +.codicon-debug-disconnect:before { content: "\ead0" } +.codicon-debug-pause:before { content: "\ead1" } +.codicon-debug-restart:before { content: "\ead2" } +.codicon-debug-start:before { content: "\ead3" } +.codicon-debug-step-into:before { content: "\ead4" } +.codicon-debug-step-out:before { content: "\ead5" } +.codicon-debug-step-over:before { content: "\ead6" } +.codicon-debug-stop:before { content: "\ead7" } +.codicon-debug:before { content: "\ead8" } +.codicon-device-camera-video:before { content: "\ead9" } +.codicon-device-camera:before { content: "\eada" } +.codicon-device-mobile:before { content: "\eadb" } +.codicon-diff-added:before { content: "\eadc" } +.codicon-diff-ignored:before { content: "\eadd" } +.codicon-diff-modified:before { content: "\eade" } +.codicon-diff-removed:before { content: "\eadf" } +.codicon-diff-renamed:before { content: "\eae0" } +.codicon-diff:before { content: "\eae1" } +.codicon-diff-sidebyside:before { content: "\eae1" } +.codicon-discard:before { content: "\eae2" } +.codicon-editor-layout:before { content: "\eae3" } +.codicon-empty-window:before { content: "\eae4" } +.codicon-exclude:before { content: "\eae5" } +.codicon-extensions:before { content: "\eae6" } +.codicon-eye-closed:before { content: "\eae7" } +.codicon-file-binary:before { content: "\eae8" } +.codicon-file-code:before { content: "\eae9" } +.codicon-file-media:before { content: "\eaea" } +.codicon-file-pdf:before { content: "\eaeb" } +.codicon-file-submodule:before { content: "\eaec" } +.codicon-file-symlink-directory:before { content: "\eaed" } +.codicon-file-symlink-file:before { content: "\eaee" } +.codicon-file-zip:before { content: "\eaef" } +.codicon-files:before { content: "\eaf0" } +.codicon-filter:before { content: "\eaf1" } +.codicon-flame:before { content: "\eaf2" } +.codicon-fold-down:before { content: "\eaf3" } +.codicon-fold-up:before { content: "\eaf4" } +.codicon-fold:before { content: "\eaf5" } +.codicon-folder-active:before { content: "\eaf6" } +.codicon-folder-opened:before { content: "\eaf7" } +.codicon-gear:before { content: "\eaf8" } +.codicon-gift:before { content: "\eaf9" } +.codicon-gist-secret:before { content: "\eafa" } +.codicon-gist:before { content: "\eafb" } +.codicon-git-commit:before { content: "\eafc" } +.codicon-git-compare:before { content: "\eafd" } +.codicon-compare-changes:before { content: "\eafd" } +.codicon-git-merge:before { content: "\eafe" } +.codicon-github-action:before { content: "\eaff" } +.codicon-github-alt:before { content: "\eb00" } +.codicon-globe:before { content: "\eb01" } +.codicon-grabber:before { content: "\eb02" } +.codicon-graph:before { content: "\eb03" } +.codicon-gripper:before { content: "\eb04" } +.codicon-heart:before { content: "\eb05" } +.codicon-home:before { content: "\eb06" } +.codicon-horizontal-rule:before { content: "\eb07" } +.codicon-hubot:before { content: "\eb08" } +.codicon-inbox:before { content: "\eb09" } +.codicon-issue-reopened:before { content: "\eb0b" } +.codicon-issues:before { content: "\eb0c" } +.codicon-italic:before { content: "\eb0d" } +.codicon-jersey:before { content: "\eb0e" } +.codicon-json:before { content: "\eb0f" } +.codicon-kebab-vertical:before { content: "\eb10" } +.codicon-key:before { content: "\eb11" } +.codicon-law:before { content: "\eb12" } +.codicon-lightbulb-autofix:before { content: "\eb13" } +.codicon-link-external:before { content: "\eb14" } +.codicon-link:before { content: "\eb15" } +.codicon-list-ordered:before { content: "\eb16" } +.codicon-list-unordered:before { content: "\eb17" } +.codicon-live-share:before { content: "\eb18" } +.codicon-loading:before { content: "\eb19" } +.codicon-location:before { content: "\eb1a" } +.codicon-mail-read:before { content: "\eb1b" } +.codicon-mail:before { content: "\eb1c" } +.codicon-markdown:before { content: "\eb1d" } +.codicon-megaphone:before { content: "\eb1e" } +.codicon-mention:before { content: "\eb1f" } +.codicon-milestone:before { content: "\eb20" } +.codicon-git-pull-request-milestone:before { content: "\eb20" } +.codicon-mortar-board:before { content: "\eb21" } +.codicon-move:before { content: "\eb22" } +.codicon-multiple-windows:before { content: "\eb23" } +.codicon-mute:before { content: "\eb24" } +.codicon-no-newline:before { content: "\eb25" } +.codicon-note:before { content: "\eb26" } +.codicon-octoface:before { content: "\eb27" } +.codicon-open-preview:before { content: "\eb28" } +.codicon-package:before { content: "\eb29" } +.codicon-paintcan:before { content: "\eb2a" } +.codicon-pin:before { content: "\eb2b" } +.codicon-play:before { content: "\eb2c" } +.codicon-run:before { content: "\eb2c" } +.codicon-plug:before { content: "\eb2d" } +.codicon-preserve-case:before { content: "\eb2e" } +.codicon-preview:before { content: "\eb2f" } +.codicon-project:before { content: "\eb30" } +.codicon-pulse:before { content: "\eb31" } +.codicon-question:before { content: "\eb32" } +.codicon-quote:before { content: "\eb33" } +.codicon-radio-tower:before { content: "\eb34" } +.codicon-reactions:before { content: "\eb35" } +.codicon-references:before { content: "\eb36" } +.codicon-refresh:before { content: "\eb37" } +.codicon-regex:before { content: "\eb38" } +.codicon-remote-explorer:before { content: "\eb39" } +.codicon-remote:before { content: "\eb3a" } +.codicon-remove:before { content: "\eb3b" } +.codicon-replace-all:before { content: "\eb3c" } +.codicon-replace:before { content: "\eb3d" } +.codicon-repo-clone:before { content: "\eb3e" } +.codicon-repo-force-push:before { content: "\eb3f" } +.codicon-repo-pull:before { content: "\eb40" } +.codicon-repo-push:before { content: "\eb41" } +.codicon-report:before { content: "\eb42" } +.codicon-request-changes:before { content: "\eb43" } +.codicon-rocket:before { content: "\eb44" } +.codicon-root-folder-opened:before { content: "\eb45" } +.codicon-root-folder:before { content: "\eb46" } +.codicon-rss:before { content: "\eb47" } +.codicon-ruby:before { content: "\eb48" } +.codicon-save-all:before { content: "\eb49" } +.codicon-save-as:before { content: "\eb4a" } +.codicon-save:before { content: "\eb4b" } +.codicon-screen-full:before { content: "\eb4c" } +.codicon-screen-normal:before { content: "\eb4d" } +.codicon-search-stop:before { content: "\eb4e" } +.codicon-server:before { content: "\eb50" } +.codicon-settings-gear:before { content: "\eb51" } +.codicon-settings:before { content: "\eb52" } +.codicon-shield:before { content: "\eb53" } +.codicon-smiley:before { content: "\eb54" } +.codicon-sort-precedence:before { content: "\eb55" } +.codicon-split-horizontal:before { content: "\eb56" } +.codicon-split-vertical:before { content: "\eb57" } +.codicon-squirrel:before { content: "\eb58" } +.codicon-star-full:before { content: "\eb59" } +.codicon-star-half:before { content: "\eb5a" } +.codicon-symbol-class:before { content: "\eb5b" } +.codicon-symbol-color:before { content: "\eb5c" } +.codicon-symbol-constant:before { content: "\eb5d" } +.codicon-symbol-enum-member:before { content: "\eb5e" } +.codicon-symbol-field:before { content: "\eb5f" } +.codicon-symbol-file:before { content: "\eb60" } +.codicon-symbol-interface:before { content: "\eb61" } +.codicon-symbol-keyword:before { content: "\eb62" } +.codicon-symbol-misc:before { content: "\eb63" } +.codicon-symbol-operator:before { content: "\eb64" } +.codicon-symbol-property:before { content: "\eb65" } +.codicon-wrench:before { content: "\eb65" } +.codicon-wrench-subaction:before { content: "\eb65" } +.codicon-symbol-snippet:before { content: "\eb66" } +.codicon-tasklist:before { content: "\eb67" } +.codicon-telescope:before { content: "\eb68" } +.codicon-text-size:before { content: "\eb69" } +.codicon-three-bars:before { content: "\eb6a" } +.codicon-thumbsdown:before { content: "\eb6b" } +.codicon-thumbsup:before { content: "\eb6c" } +.codicon-tools:before { content: "\eb6d" } +.codicon-triangle-down:before { content: "\eb6e" } +.codicon-triangle-left:before { content: "\eb6f" } +.codicon-triangle-right:before { content: "\eb70" } +.codicon-triangle-up:before { content: "\eb71" } +.codicon-twitter:before { content: "\eb72" } +.codicon-unfold:before { content: "\eb73" } +.codicon-unlock:before { content: "\eb74" } +.codicon-unmute:before { content: "\eb75" } +.codicon-unverified:before { content: "\eb76" } +.codicon-verified:before { content: "\eb77" } +.codicon-versions:before { content: "\eb78" } +.codicon-vm-active:before { content: "\eb79" } +.codicon-vm-outline:before { content: "\eb7a" } +.codicon-vm-running:before { content: "\eb7b" } +.codicon-watch:before { content: "\eb7c" } +.codicon-whitespace:before { content: "\eb7d" } +.codicon-whole-word:before { content: "\eb7e" } +.codicon-window:before { content: "\eb7f" } +.codicon-word-wrap:before { content: "\eb80" } +.codicon-zoom-in:before { content: "\eb81" } +.codicon-zoom-out:before { content: "\eb82" } +.codicon-list-filter:before { content: "\eb83" } +.codicon-list-flat:before { content: "\eb84" } +.codicon-list-selection:before { content: "\eb85" } +.codicon-selection:before { content: "\eb85" } +.codicon-list-tree:before { content: "\eb86" } +.codicon-debug-breakpoint-function-unverified:before { content: "\eb87" } +.codicon-debug-breakpoint-function:before { content: "\eb88" } +.codicon-debug-breakpoint-function-disabled:before { content: "\eb88" } +.codicon-debug-stackframe-active:before { content: "\eb89" } +.codicon-circle-small-filled:before { content: "\eb8a" } +.codicon-debug-stackframe-dot:before { content: "\eb8a" } +.codicon-terminal-decoration-mark:before { content: "\eb8a" } +.codicon-debug-stackframe:before { content: "\eb8b" } +.codicon-debug-stackframe-focused:before { content: "\eb8b" } +.codicon-debug-breakpoint-unsupported:before { content: "\eb8c" } +.codicon-symbol-string:before { content: "\eb8d" } +.codicon-debug-reverse-continue:before { content: "\eb8e" } +.codicon-debug-step-back:before { content: "\eb8f" } +.codicon-debug-restart-frame:before { content: "\eb90" } +.codicon-debug-alt:before { content: "\eb91" } +.codicon-call-incoming:before { content: "\eb92" } +.codicon-call-outgoing:before { content: "\eb93" } +.codicon-menu:before { content: "\eb94" } +.codicon-expand-all:before { content: "\eb95" } +.codicon-feedback:before { content: "\eb96" } +.codicon-git-pull-request-reviewer:before { content: "\eb96" } +.codicon-group-by-ref-type:before { content: "\eb97" } +.codicon-ungroup-by-ref-type:before { content: "\eb98" } +.codicon-account:before { content: "\eb99" } +.codicon-git-pull-request-assignee:before { content: "\eb99" } +.codicon-bell-dot:before { content: "\eb9a" } +.codicon-debug-console:before { content: "\eb9b" } +.codicon-library:before { content: "\eb9c" } +.codicon-output:before { content: "\eb9d" } +.codicon-run-all:before { content: "\eb9e" } +.codicon-sync-ignored:before { content: "\eb9f" } +.codicon-pinned:before { content: "\eba0" } +.codicon-github-inverted:before { content: "\eba1" } +.codicon-server-process:before { content: "\eba2" } +.codicon-server-environment:before { content: "\eba3" } +.codicon-pass:before { content: "\eba4" } +.codicon-issue-closed:before { content: "\eba4" } +.codicon-stop-circle:before { content: "\eba5" } +.codicon-play-circle:before { content: "\eba6" } +.codicon-record:before { content: "\eba7" } +.codicon-debug-alt-small:before { content: "\eba8" } +.codicon-vm-connect:before { content: "\eba9" } +.codicon-cloud:before { content: "\ebaa" } +.codicon-merge:before { content: "\ebab" } +.codicon-export:before { content: "\ebac" } +.codicon-graph-left:before { content: "\ebad" } +.codicon-magnet:before { content: "\ebae" } +.codicon-notebook:before { content: "\ebaf" } +.codicon-redo:before { content: "\ebb0" } +.codicon-check-all:before { content: "\ebb1" } +.codicon-pinned-dirty:before { content: "\ebb2" } +.codicon-pass-filled:before { content: "\ebb3" } +.codicon-circle-large-filled:before { content: "\ebb4" } +.codicon-circle-large:before { content: "\ebb5" } +.codicon-circle-large-outline:before { content: "\ebb5" } +.codicon-combine:before { content: "\ebb6" } +.codicon-gather:before { content: "\ebb6" } +.codicon-table:before { content: "\ebb7" } +.codicon-variable-group:before { content: "\ebb8" } +.codicon-type-hierarchy:before { content: "\ebb9" } +.codicon-type-hierarchy-sub:before { content: "\ebba" } +.codicon-type-hierarchy-super:before { content: "\ebbb" } +.codicon-git-pull-request-create:before { content: "\ebbc" } +.codicon-run-above:before { content: "\ebbd" } +.codicon-run-below:before { content: "\ebbe" } +.codicon-notebook-template:before { content: "\ebbf" } +.codicon-debug-rerun:before { content: "\ebc0" } +.codicon-workspace-trusted:before { content: "\ebc1" } +.codicon-workspace-untrusted:before { content: "\ebc2" } +.codicon-workspace-unknown:before { content: "\ebc3" } +.codicon-terminal-cmd:before { content: "\ebc4" } +.codicon-terminal-debian:before { content: "\ebc5" } +.codicon-terminal-linux:before { content: "\ebc6" } +.codicon-terminal-powershell:before { content: "\ebc7" } +.codicon-terminal-tmux:before { content: "\ebc8" } +.codicon-terminal-ubuntu:before { content: "\ebc9" } +.codicon-terminal-bash:before { content: "\ebca" } +.codicon-arrow-swap:before { content: "\ebcb" } +.codicon-copy:before { content: "\ebcc" } +.codicon-person-add:before { content: "\ebcd" } +.codicon-filter-filled:before { content: "\ebce" } +.codicon-wand:before { content: "\ebcf" } +.codicon-debug-line-by-line:before { content: "\ebd0" } +.codicon-inspect:before { content: "\ebd1" } +.codicon-layers:before { content: "\ebd2" } +.codicon-layers-dot:before { content: "\ebd3" } +.codicon-layers-active:before { content: "\ebd4" } +.codicon-compass:before { content: "\ebd5" } +.codicon-compass-dot:before { content: "\ebd6" } +.codicon-compass-active:before { content: "\ebd7" } +.codicon-azure:before { content: "\ebd8" } +.codicon-issue-draft:before { content: "\ebd9" } +.codicon-git-pull-request-closed:before { content: "\ebda" } +.codicon-git-pull-request-draft:before { content: "\ebdb" } +.codicon-debug-all:before { content: "\ebdc" } +.codicon-debug-coverage:before { content: "\ebdd" } +.codicon-run-errors:before { content: "\ebde" } +.codicon-folder-library:before { content: "\ebdf" } +.codicon-debug-continue-small:before { content: "\ebe0" } +.codicon-beaker-stop:before { content: "\ebe1" } +.codicon-graph-line:before { content: "\ebe2" } +.codicon-graph-scatter:before { content: "\ebe3" } +.codicon-pie-chart:before { content: "\ebe4" } +.codicon-bracket:before { content: "\eb0f" } +.codicon-bracket-dot:before { content: "\ebe5" } +.codicon-bracket-error:before { content: "\ebe6" } +.codicon-lock-small:before { content: "\ebe7" } +.codicon-azure-devops:before { content: "\ebe8" } +.codicon-verified-filled:before { content: "\ebe9" } +.codicon-newline:before { content: "\ebea" } +.codicon-layout:before { content: "\ebeb" } +.codicon-layout-activitybar-left:before { content: "\ebec" } +.codicon-layout-activitybar-right:before { content: "\ebed" } +.codicon-layout-panel-left:before { content: "\ebee" } +.codicon-layout-panel-center:before { content: "\ebef" } +.codicon-layout-panel-justify:before { content: "\ebf0" } +.codicon-layout-panel-right:before { content: "\ebf1" } +.codicon-layout-panel:before { content: "\ebf2" } +.codicon-layout-sidebar-left:before { content: "\ebf3" } +.codicon-layout-sidebar-right:before { content: "\ebf4" } +.codicon-layout-statusbar:before { content: "\ebf5" } +.codicon-layout-menubar:before { content: "\ebf6" } +.codicon-layout-centered:before { content: "\ebf7" } +.codicon-target:before { content: "\ebf8" } +.codicon-indent:before { content: "\ebf9" } +.codicon-record-small:before { content: "\ebfa" } +.codicon-error-small:before { content: "\ebfb" } +.codicon-terminal-decoration-error:before { content: "\ebfb" } +.codicon-arrow-circle-down:before { content: "\ebfc" } +.codicon-arrow-circle-left:before { content: "\ebfd" } +.codicon-arrow-circle-right:before { content: "\ebfe" } +.codicon-arrow-circle-up:before { content: "\ebff" } +.codicon-layout-sidebar-right-off:before { content: "\ec00" } +.codicon-layout-panel-off:before { content: "\ec01" } +.codicon-layout-sidebar-left-off:before { content: "\ec02" } +.codicon-blank:before { content: "\ec03" } +.codicon-heart-filled:before { content: "\ec04" } +.codicon-map:before { content: "\ec05" } +.codicon-map-horizontal:before { content: "\ec05" } +.codicon-fold-horizontal:before { content: "\ec05" } +.codicon-map-filled:before { content: "\ec06" } +.codicon-map-horizontal-filled:before { content: "\ec06" } +.codicon-fold-horizontal-filled:before { content: "\ec06" } +.codicon-circle-small:before { content: "\ec07" } +.codicon-bell-slash:before { content: "\ec08" } +.codicon-bell-slash-dot:before { content: "\ec09" } +.codicon-comment-unresolved:before { content: "\ec0a" } +.codicon-git-pull-request-go-to-changes:before { content: "\ec0b" } +.codicon-git-pull-request-new-changes:before { content: "\ec0c" } +.codicon-search-fuzzy:before { content: "\ec0d" } +.codicon-comment-draft:before { content: "\ec0e" } +.codicon-send:before { content: "\ec0f" } +.codicon-sparkle:before { content: "\ec10" } +.codicon-insert:before { content: "\ec11" } +.codicon-mic:before { content: "\ec12" } +.codicon-thumbsdown-filled:before { content: "\ec13" } +.codicon-thumbsup-filled:before { content: "\ec14" } +.codicon-coffee:before { content: "\ec15" } +.codicon-snake:before { content: "\ec16" } +.codicon-game:before { content: "\ec17" } +.codicon-vr:before { content: "\ec18" } +.codicon-chip:before { content: "\ec19" } +.codicon-piano:before { content: "\ec1a" } +.codicon-music:before { content: "\ec1b" } +.codicon-mic-filled:before { content: "\ec1c" } +.codicon-repo-fetch:before { content: "\ec1d" } +.codicon-copilot:before { content: "\ec1e" } +.codicon-lightbulb-sparkle:before { content: "\ec1f" } +.codicon-robot:before { content: "\ec20" } +.codicon-sparkle-filled:before { content: "\ec21" } +.codicon-diff-single:before { content: "\ec22" } +.codicon-diff-multiple:before { content: "\ec23" } +.codicon-surround-with:before { content: "\ec24" } +.codicon-share:before { content: "\ec25" } +.codicon-git-stash:before { content: "\ec26" } +.codicon-git-stash-apply:before { content: "\ec27" } +.codicon-git-stash-pop:before { content: "\ec28" } +.codicon-vscode:before { content: "\ec29" } +.codicon-vscode-insiders:before { content: "\ec2a" } +.codicon-code-oss:before { content: "\ec2b" } +.codicon-run-coverage:before { content: "\ec2c" } +.codicon-run-all-coverage:before { content: "\ec2d" } +.codicon-coverage:before { content: "\ec2e" } +.codicon-github-project:before { content: "\ec2f" } +.codicon-map-vertical:before { content: "\ec30" } +.codicon-fold-vertical:before { content: "\ec30" } +.codicon-map-vertical-filled:before { content: "\ec31" } +.codicon-fold-vertical-filled:before { content: "\ec31" } +.codicon-go-to-search:before { content: "\ec32" } +.codicon-percentage:before { content: "\ec33" } +.codicon-sort-percentage:before { content: "\ec33" } +.codicon-git-fetch:before { content: "\f101" } diff --git a/webui/scripts/codicon.ttf b/webui/scripts/codicon.ttf new file mode 100644 index 0000000000000000000000000000000000000000..807c949a277cad7db9d0a9c0834a5289da2c3155 GIT binary patch literal 80188 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 kKk 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 F{sY@i.angleDeg?e*t:e,enableTrace:!1,pointerEventsEnabled:!0,autoDrawEnabled:!0,hitOnDragEnabled:!1,capturePointerEventsEnabled:!1,_mouseListenClick:!1,_touchListenClick:!1,_pointerListenClick:!1,_mouseInDblClickWindow:!1,_touchInDblClickWindow:!1,_pointerInDblClickWindow:!1,_mouseDblClickPointerId:null,_touchDblClickPointerId:null,_pointerDblClickPointerId:null,_fixTextRendering:!1,pixelRatio:"undefined"!=typeof window&&window.devicePixelRatio||1,dragDistance:3,angleDeg:!0,showWarnings:!0,dragButtons:[0,1],isDragging:()=>i.DD.isDragging,isTransforming(){var t;return null===(t=i.Transformer)||void 0===t?void 0:t.isTransforming()},isDragReady:()=>!!i.DD.node,releaseCanvasOnDestroy:!0,document:e.document,_injectGlobal(t){e.Konva=t}},n=t=>{i[t.prototype.getClassName()]=t};i._injectGlobal(i);class s{constructor(t=[1,0,0,1,0,0]){this.dirty=!1,this.m=t&&t.slice()||[1,0,0,1,0,0]}reset(){this.m[0]=1,this.m[1]=0,this.m[2]=0,this.m[3]=1,this.m[4]=0,this.m[5]=0}copy(){return new s(this.m)}copyInto(t){t.m[0]=this.m[0],t.m[1]=this.m[1],t.m[2]=this.m[2],t.m[3]=this.m[3],t.m[4]=this.m[4],t.m[5]=this.m[5]}point(t){const e=this.m;return{x:e[0]*t.x+e[2]*t.y+e[4],y:e[1]*t.x+e[3]*t.y+e[5]}}translate(t,e){return this.m[4]+=this.m[0]*t+this.m[2]*e,this.m[5]+=this.m[1]*t+this.m[3]*e,this}scale(t,e){return this.m[0]*=t,this.m[1]*=t,this.m[2]*=e,this.m[3]*=e,this}rotate(t){const e=Math.cos(t),i=Math.sin(t),n=this.m[0]*e+this.m[2]*i,s=this.m[1]*e+this.m[3]*i,r=this.m[0]*-i+this.m[2]*e,a=this.m[1]*-i+this.m[3]*e;return this.m[0]=n,this.m[1]=s,this.m[2]=r,this.m[3]=a,this}getTranslation(){return{x:this.m[4],y:this.m[5]}}skew(t,e){const i=this.m[0]+this.m[2]*e,n=this.m[1]+this.m[3]*e,s=this.m[2]+this.m[0]*t,r=this.m[3]+this.m[1]*t;return this.m[0]=i,this.m[1]=n,this.m[2]=s,this.m[3]=r,this}multiply(t){const e=this.m[0]*t.m[0]+this.m[2]*t.m[1],i=this.m[1]*t.m[0]+this.m[3]*t.m[1],n=this.m[0]*t.m[2]+this.m[2]*t.m[3],s=this.m[1]*t.m[2]+this.m[3]*t.m[3],r=this.m[0]*t.m[4]+this.m[2]*t.m[5]+this.m[4],a=this.m[1]*t.m[4]+this.m[3]*t.m[5]+this.m[5];return this.m[0]=e,this.m[1]=i,this.m[2]=n,this.m[3]=s,this.m[4]=r,this.m[5]=a,this}invert(){const t=1/(this.m[0]*this.m[3]-this.m[1]*this.m[2]),e=this.m[3]*t,i=-this.m[1]*t,n=-this.m[2]*t,s=this.m[0]*t,r=t*(this.m[2]*this.m[5]-this.m[3]*this.m[4]),a=t*(this.m[1]*this.m[4]-this.m[0]*this.m[5]);return this.m[0]=e,this.m[1]=i,this.m[2]=n,this.m[3]=s,this.m[4]=r,this.m[5]=a,this}getMatrix(){return this.m}decompose(){const t=this.m[0],e=this.m[1],i=this.m[2],n=this.m[3],s=t*n-e*i,r={x:this.m[4],y:this.m[5],rotation:0,scaleX:0,scaleY:0,skewX:0,skewY:0};if(0!=t||0!=e){const a=Math.sqrt(t*t+e*e);r.rotation=e>0?Math.acos(t/a):-Math.acos(t/a),r.scaleX=a,r.scaleY=s/a,r.skewX=(t*i+e*n)/s,r.skewY=0}else if(0!=i||0!=n){const a=Math.sqrt(i*i+n*n);r.rotation=Math.PI/2-(n>0?Math.acos(-i/a):-Math.acos(i/a)),r.scaleX=s/a,r.scaleY=a,r.skewX=0,r.skewY=(t*i+e*n)/s}return r.rotation=g._getRotation(r.rotation),r}}const r=Math.PI/180,a=180/Math.PI,o="Konva error: ",h={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,132,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,255,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,203],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[119,128,144],slategrey:[119,128,144],snow:[255,255,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],transparent:[255,255,255,0],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,5]},l=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/;let d=[];const c="undefined"!=typeof requestAnimationFrame&&requestAnimationFrame||function(t){setTimeout(t,60)},g={_isElement:t=>!(!t||1!=t.nodeType),_isFunction:t=>!!(t&&t.constructor&&t.call&&t.apply),_isPlainObject:t=>!!t&&t.constructor===Object,_isArray:t=>"[object Array]"===Object.prototype.toString.call(t),_isNumber:t=>"[object Number]"===Object.prototype.toString.call(t)&&!isNaN(t)&&isFinite(t),_isString:t=>"[object String]"===Object.prototype.toString.call(t),_isBoolean:t=>"[object Boolean]"===Object.prototype.toString.call(t),isObject:t=>t instanceof Object,isValidSelector(t){if("string"!=typeof t)return!1;const e=t[0];return"#"===e||"."===e||e===e.toUpperCase()},_sign:t=>0===t||t>0?1:-1,requestAnimFrame(t){d.push(t),1===d.length&&c((function(){const t=d;d=[],t.forEach((function(t){t()}))}))},createCanvasElement(){const t=document.createElement("canvas");try{t.style=t.style||{}}catch(t){}return t},createImageElement:()=>document.createElement("img"),_isInDocument(t){for(;t=t.parentNode;)if(t==document)return!0;return!1},_urlToImage(t,e){const i=g.createImageElement();i.onload=function(){e(i)},i.src=t},_rgbToHex:(t,e,i)=>((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1),_hexToRgb(t){t=t.replace("#","");const e=parseInt(t,16);return{r:e>>16&255,g:e>>8&255,b:255&e}},getRandomColor(){let t=(16777215*Math.random()|0).toString(16);for(;t.length<6;)t="0"+t;return"#"+t},getRGB(t){let e;return t in h?(e=h[t],{r:e[0],g:e[1],b:e[2]}):"#"===t[0]?this._hexToRgb(t.substring(1)):"rgb("===t.substr(0,4)?(e=l.exec(t.replace(/ /g,"")),{r:parseInt(e[1],10),g:parseInt(e[2],10),b:parseInt(e[3],10)}):{r:0,g:0,b:0}},colorToRGBA:t=>(t=t||"black",g._namedColorToRBA(t)||g._hex3ColorToRGBA(t)||g._hex4ColorToRGBA(t)||g._hex6ColorToRGBA(t)||g._hex8ColorToRGBA(t)||g._rgbColorToRGBA(t)||g._rgbaColorToRGBA(t)||g._hslColorToRGBA(t)),_namedColorToRBA(t){const e=h[t.toLowerCase()];return e?{r:e[0],g:e[1],b:e[2],a:1}:null},_rgbColorToRGBA(t){if(0===t.indexOf("rgb(")){const e=(t=t.match(/rgb\(([^)]+)\)/)[1]).split(/ *, */).map(Number);return{r:e[0],g:e[1],b:e[2],a:1}}},_rgbaColorToRGBA(t){if(0===t.indexOf("rgba(")){const e=(t=t.match(/rgba\(([^)]+)\)/)[1]).split(/ *, */).map(((t,e)=>"%"===t.slice(-1)?3===e?parseInt(t)/100:parseInt(t)/100*255:Number(t)));return{r:e[0],g:e[1],b:e[2],a:e[3]}}},_hex8ColorToRGBA(t){if("#"===t[0]&&9===t.length)return{r:parseInt(t.slice(1,3),16),g:parseInt(t.slice(3,5),16),b:parseInt(t.slice(5,7),16),a:parseInt(t.slice(7,9),16)/255}},_hex6ColorToRGBA(t){if("#"===t[0]&&7===t.length)return{r:parseInt(t.slice(1,3),16),g:parseInt(t.slice(3,5),16),b:parseInt(t.slice(5,7),16),a:1}},_hex4ColorToRGBA(t){if("#"===t[0]&&5===t.length)return{r:parseInt(t[1]+t[1],16),g:parseInt(t[2]+t[2],16),b:parseInt(t[3]+t[3],16),a:parseInt(t[4]+t[4],16)/255}},_hex3ColorToRGBA(t){if("#"===t[0]&&4===t.length)return{r:parseInt(t[1]+t[1],16),g:parseInt(t[2]+t[2],16),b:parseInt(t[3]+t[3],16),a:1}},_hslColorToRGBA(t){if(/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.test(t)){const[e,...i]=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(t),n=Number(i[0])/360,s=Number(i[1])/100,r=Number(i[2])/100;let a,o,h;if(0===s)return h=255*r,{r:Math.round(h),g:Math.round(h),b:Math.round(h),a:1};a=r<.5?r*(1+s):r+s-r*s;const l=2*r-a,d=[0,0,0];for(let t=0;t<3;t++)o=n+1/3*-(t-1),o<0&&o++,o>1&&o--,h=6*o<1?l+6*(a-l)*o:2*o<1?a:3*o<2?l+(a-l)*(2/3-o)*6:l,d[t]=255*h;return{r:Math.round(d[0]),g:Math.round(d[1]),b:Math.round(d[2]),a:1}}},haveIntersection:(t,e)=>!(e.x>t.x+t.width||e.x+e.widtht.y+t.height||e.y+e.heightt.slice(0),degToRad:t=>t*r,radToDeg:t=>t*a,_degToRad:t=>(g.warn("Util._degToRad is removed. Please use public Util.degToRad instead."),g.degToRad(t)),_radToDeg:t=>(g.warn("Util._radToDeg is removed. Please use public Util.radToDeg instead."),g.radToDeg(t)),_getRotation:t=>i.angleDeg?g.radToDeg(t):t,_capitalize:t=>t.charAt(0).toUpperCase()+t.slice(1),throw(t){throw new Error(o+t)},error(t){console.error(o+t)},warn(t){i.showWarnings&&console.warn("Konva warning: "+t)},each(t,e){for(const i in t)e(i,t[i])},_inRange:(t,e,i)=>e<=t&&t1?(a=i,o=n,h=(i-s)*(i-s)+(n-r)*(n-r)):(a=t+d*(i-t),o=e+d*(n-e),h=(a-s)*(a-s)+(o-r)*(o-r))}return[a,o,h]},_getProjectionToLine(t,e,i){const n=g.cloneObject(t);let s=Number.MAX_VALUE;return e.forEach((function(r,a){if(!i&&a===e.length-1)return;const o=e[(a+1)%e.length],h=g._getProjectionToSegment(r.x,r.y,o.x,o.y,t.x,t.y),l=h[0],d=h[1],c=h[2];ce.length){const i=e;e=t,t=i}for(let e=0;et.touches?t.changedTouches[0].identifier:t.pointerId||999,releaseCanvas(...t){i.releaseCanvasOnDestroy&&t.forEach((t=>{t.width=0,t.height=0}))},drawRoundedRectPath(t,e,i,n){let s=0,r=0,a=0,o=0;"number"==typeof n?s=r=a=o=Math.min(n,e/2,i/2):(s=Math.min(n[0]||0,e/2,i/2),r=Math.min(n[1]||0,e/2,i/2),o=Math.min(n[2]||0,e/2,i/2),a=Math.min(n[3]||0,e/2,i/2)),t.moveTo(s,0),t.lineTo(e-r,0),t.arc(e-r,r,r,3*Math.PI/2,0,!1),t.lineTo(e,i-o),t.arc(e-o,i-o,o,0,Math.PI/2,!1),t.lineTo(a,i),t.arc(a,i-a,a,Math.PI/2,Math.PI,!1),t.lineTo(0,s),t.arc(s,s,s,Math.PI,3*Math.PI/2,!1)}};function u(t){return g._isString(t)?'"'+t+'"':"[object Number]"===Object.prototype.toString.call(t)||g._isBoolean(t)?t:Object.prototype.toString.call(t)}function f(t){return t>255?255:t<0?0:Math.round(t)}function p(){if(i.isUnminified)return function(t,e){return g._isNumber(t)||g.warn(u(t)+' is a not valid value for "'+e+'" attribute. The value should be a number.'),t}}function m(t){if(i.isUnminified)return function(e,i){let n=g._isNumber(e),s=g._isArray(e)&&e.length==t;return n||s||g.warn(u(e)+' is a not valid value for "'+i+'" attribute. The value should be a number or Array('+t+")"),e}}function _(){if(i.isUnminified)return function(t,e){return g._isNumber(t)||"auto"===t||g.warn(u(t)+' is a not valid value for "'+e+'" attribute. The value should be a number or "auto".'),t}}function y(){if(i.isUnminified)return function(t,e){return g._isString(t)||g.warn(u(t)+' is a not valid value for "'+e+'" attribute. The value should be a string.'),t}}function v(){if(i.isUnminified)return function(t,e){const i=g._isString(t),n="[object CanvasGradient]"===Object.prototype.toString.call(t)||t&&t.addColorStop;return i||n||g.warn(u(t)+' is a not valid value for "'+e+'" attribute. The value should be a string or a native gradient.'),t}}function x(){if(i.isUnminified)return function(t,e){return!0===t||!1===t||g.warn(u(t)+' is a not valid value for "'+e+'" attribute. The value should be a boolean.'),t}}const b="get",S="set",w={addGetterSetter(t,e,i,n,s){w.addGetter(t,e,i),w.addSetter(t,e,n,s),w.addOverloadedGetterSetter(t,e)},addGetter(t,e,i){var n=b+g._capitalize(e);t.prototype[n]=t.prototype[n]||function(){const t=this.attrs[e];return void 0===t?i:t}},addSetter(t,e,i,n){var s=S+g._capitalize(e);t.prototype[s]||w.overWriteSetter(t,e,i,n)},overWriteSetter(t,e,i,n){var s=S+g._capitalize(e);t.prototype[s]=function(t){return i&&null!=t&&(t=i.call(this,t,e)),this._setAttr(e,t),n&&n.call(this),this}},addComponentsGetterSetter(t,e,n,s,r){const a=n.length,o=g._capitalize,h=b+o(e),l=S+o(e);t.prototype[h]=function(){const t={};for(let i=0;i{this._setAttr(e+o(t),void 0)})),this._fireChangeEvent(e,i,t),r&&r.call(this),this},w.addOverloadedGetterSetter(t,e)},addOverloadedGetterSetter(t,e){var i=g._capitalize(e),n=S+i,s=b+i;t.prototype[e]=function(){return arguments.length?(this[n](arguments[0]),this):this[s]()}},addDeprecatedGetterSetter(t,e,i,n){g.error("Adding deprecated "+e);const s=b+g._capitalize(e),r=e+" property is deprecated and will be removed soon. Look at Konva change log for more information.";t.prototype[s]=function(){g.error(r);const t=this.attrs[e];return void 0===t?i:t},w.addSetter(t,e,n,(function(){g.error(r)})),w.addOverloadedGetterSetter(t,e)},backCompat(t,e){g.each(e,(function(e,i){const n=t.prototype[i],s=b+g._capitalize(e),r=S+g._capitalize(e);function a(){n.apply(this,arguments),g.error('"'+e+'" method is deprecated and will be removed soon. Use ""'+i+'" instead.')}t.prototype[e]=a,t.prototype[s]=a,t.prototype[r]=a}))},afterSetFilter(){this._filterUpToDate=!1}};const C=["arc","arcTo","beginPath","bezierCurveTo","clearRect","clip","closePath","createLinearGradient","createPattern","createRadialGradient","drawImage","ellipse","fill","fillText","getImageData","createImageData","lineTo","moveTo","putImageData","quadraticCurveTo","rect","roundRect","restore","rotate","save","scale","setLineDash","setTransform","stroke","strokeText","transform","translate"];class P{constructor(t){this.canvas=t,i.enableTrace&&(this.traceArr=[],this._enableTrace())}fillShape(t){t.fillEnabled()&&this._fill(t)}_fill(t){}strokeShape(t){t.hasStroke()&&this._stroke(t)}_stroke(t){}fillStrokeShape(t){t.attrs.fillAfterStrokeEnabled?(this.strokeShape(t),this.fillShape(t)):(this.fillShape(t),this.strokeShape(t))}getTrace(t,e){let i,n,s,r,a=this.traceArr,o=a.length,h="";for(i=0;i"number"==typeof t?Math.floor(t):t))),h+="("+r.join(",")+")")):(h+=n.property,t||(h+="="+n.val)),h+=";";return h}clearTrace(){this.traceArr=[]}_trace(t){let e,i=this.traceArr;i.push(t),e=i.length,e>=100&&i.shift()}reset(){const t=this.getCanvas().getPixelRatio();this.setTransform(1*t,0,0,1*t,0,0)}getCanvas(){return this.canvas}clear(t){const e=this.getCanvas();t?this.clearRect(t.x||0,t.y||0,t.width||0,t.height||0):this.clearRect(0,0,e.getWidth()/e.pixelRatio,e.getHeight()/e.pixelRatio)}_applyLineCap(t){const e=t.attrs.lineCap;e&&this.setAttr("lineCap",e)}_applyOpacity(t){const e=t.getAbsoluteOpacity();1!==e&&this.setAttr("globalAlpha",e)}_applyLineJoin(t){const e=t.attrs.lineJoin;e&&this.setAttr("lineJoin",e)}setAttr(t,e){this._context[t]=e}arc(t,e,i,n,s,r){this._context.arc(t,e,i,n,s,r)}arcTo(t,e,i,n,s){this._context.arcTo(t,e,i,n,s)}beginPath(){this._context.beginPath()}bezierCurveTo(t,e,i,n,s,r){this._context.bezierCurveTo(t,e,i,n,s,r)}clearRect(t,e,i,n){this._context.clearRect(t,e,i,n)}clip(...t){this._context.clip.apply(this._context,t)}closePath(){this._context.closePath()}createImageData(t,e){const i=arguments;return 2===i.length?this._context.createImageData(t,e):1===i.length?this._context.createImageData(t):void 0}createLinearGradient(t,e,i,n){return this._context.createLinearGradient(t,e,i,n)}createPattern(t,e){return this._context.createPattern(t,e)}createRadialGradient(t,e,i,n,s,r){return this._context.createRadialGradient(t,e,i,n,s,r)}drawImage(t,e,i,n,s,r,a,o,h){const l=arguments,d=this._context;3===l.length?d.drawImage(t,e,i):5===l.length?d.drawImage(t,e,i,n,s):9===l.length&&d.drawImage(t,e,i,n,s,r,a,o,h)}ellipse(t,e,i,n,s,r,a,o){this._context.ellipse(t,e,i,n,s,r,a,o)}isPointInPath(t,e,i,n){return i?this._context.isPointInPath(i,t,e,n):this._context.isPointInPath(t,e,n)}fill(...t){this._context.fill.apply(this._context,t)}fillRect(t,e,i,n){this._context.fillRect(t,e,i,n)}strokeRect(t,e,i,n){this._context.strokeRect(t,e,i,n)}fillText(t,e,i,n){n?this._context.fillText(t,e,i,n):this._context.fillText(t,e,i)}measureText(t){return this._context.measureText(t)}getImageData(t,e,i,n){return this._context.getImageData(t,e,i,n)}lineTo(t,e){this._context.lineTo(t,e)}moveTo(t,e){this._context.moveTo(t,e)}rect(t,e,i,n){this._context.rect(t,e,i,n)}roundRect(t,e,i,n,s){this._context.roundRect(t,e,i,n,s)}putImageData(t,e,i){this._context.putImageData(t,e,i)}quadraticCurveTo(t,e,i,n){this._context.quadraticCurveTo(t,e,i,n)}restore(){this._context.restore()}rotate(t){this._context.rotate(t)}save(){this._context.save()}scale(t,e){this._context.scale(t,e)}setLineDash(t){this._context.setLineDash?this._context.setLineDash(t):"mozDash"in this._context?this._context.mozDash=t:"webkitLineDash"in this._context&&(this._context.webkitLineDash=t)}getLineDash(){return this._context.getLineDash()}setTransform(t,e,i,n,s,r){this._context.setTransform(t,e,i,n,s,r)}stroke(t){t?this._context.stroke(t):this._context.stroke()}strokeText(t,e,i,n){this._context.strokeText(t,e,i,n)}transform(t,e,i,n,s,r){this._context.transform(t,e,i,n,s,r)}translate(t,e){this._context.translate(t,e)}_enableTrace(){let t,e,i=this,n=C.length,s=this.setAttr;const r=function(t){let n,s=i[t];i[t]=function(){return e=function(t){const e=[],i=t.length,n=g;for(let s=0;s{"dragging"===e.dragStatus&&(t=!0)})),t},justDragged:!1,get node(){let t;return E._dragElements.forEach((e=>{t=e.node})),t},_dragElements:new Map,_drag(t){const e=[];E._dragElements.forEach(((i,n)=>{const{node:s}=i,r=s.getStage();r.setPointersPositions(t),void 0===i.pointerId&&(i.pointerId=g._getFirstPointerId(t));const a=r._changedPointerPositions.find((t=>t.id===i.pointerId));if(a){if("dragging"!==i.dragStatus){const e=s.dragDistance();if(Math.max(Math.abs(a.x-i.startPointerPos.x),Math.abs(a.y-i.startPointerPos.y)){e.fire("dragmove",{type:"dragmove",target:e,evt:t},!0)}))},_endDragBefore(t){const e=[];E._dragElements.forEach((n=>{const{node:s}=n,r=s.getStage();t&&r.setPointersPositions(t);if(!r._changedPointerPositions.find((t=>t.id===n.pointerId)))return;"dragging"!==n.dragStatus&&"stopped"!==n.dragStatus||(E.justDragged=!0,i._mouseListenClick=!1,i._touchListenClick=!1,i._pointerListenClick=!1,n.dragStatus="stopped");const a=n.node.getLayer()||n.node instanceof i.Stage&&n.node;a&&-1===e.indexOf(a)&&e.push(a)})),e.forEach((t=>{t.draw()}))},_endDragAfter(t){E._dragElements.forEach(((e,i)=>{"stopped"===e.dragStatus&&e.node.fire("dragend",{type:"dragend",target:e.node,evt:t},!0),"dragging"!==e.dragStatus&&E._dragElements.delete(i)}))}};i.isBrowser&&(window.addEventListener("mouseup",E._endDragBefore,!0),window.addEventListener("touchend",E._endDragBefore,!0),window.addEventListener("touchcancel",E._endDragBefore,!0),window.addEventListener("mousemove",E._drag),window.addEventListener("touchmove",E._drag),window.addEventListener("mouseup",E._endDragAfter,!1),window.addEventListener("touchend",E._endDragAfter,!1),window.addEventListener("touchcancel",E._endDragAfter,!1));const D="absoluteOpacity",L="allEventListeners",I="absoluteTransform",O="absoluteScale",F="canvas",B="listening",N="mouseenter",H="mouseleave",z="Shape",W=" ",Y="stage",X="transform",j="visible",q=["xChange.konva","yChange.konva","scaleXChange.konva","scaleYChange.konva","skewXChange.konva","skewYChange.konva","rotationChange.konva","offsetXChange.konva","offsetYChange.konva","transformsEnabledChange.konva"].join(W);let U=1;class V{constructor(t){this._id=U++,this.eventListeners={},this.attrs={},this.index=0,this._allEventListeners=null,this.parent=null,this._cache=new Map,this._attachedDepsListeners=new Map,this._lastPos=null,this._batchingTransformChange=!1,this._needClearTransformCache=!1,this._filterUpToDate=!1,this._isUnderCache=!1,this._dragEventId=null,this._shouldFireChangeEvents=!1,this.setAttrs(t),this._shouldFireChangeEvents=!0}hasChildren(){return!1}_clearCache(t){t!==X&&t!==I||!this._cache.get(t)?t?this._cache.delete(t):this._cache.clear():this._cache.get(t).dirty=!0}_getCache(t,e){let i=this._cache.get(t);return(void 0===i||(t===X||t===I)&&!0===i.dirty)&&(i=e.call(this),this._cache.set(t,i)),i}_calculate(t,e,i){if(!this._attachedDepsListeners.get(t)){const i=e.map((t=>t+"Change.konva")).join(W);this.on(i,(()=>{this._clearCache(t)})),this._attachedDepsListeners.set(t,!0)}return this._getCache(t,i)}_getCanvasCache(){return this._cache.get(F)}_clearSelfAndDescendantCache(t){this._clearCache(t),t===I&&this.fire("absoluteTransformChange")}clearCache(){if(this._cache.has(F)){const{scene:t,filter:e,hit:i}=this._cache.get(F);g.releaseCanvas(t,e,i),this._cache.delete(F)}return this._clearSelfAndDescendantCache(),this._requestDraw(),this}cache(t){const e=t||{};let i={};void 0!==e.x&&void 0!==e.y&&void 0!==e.width&&void 0!==e.height||(i=this.getClientRect({skipTransform:!0,relativeTo:this.getParent()||void 0}));let n=Math.ceil(e.width||i.width),s=Math.ceil(e.height||i.height),r=e.pixelRatio,a=void 0===e.x?Math.floor(i.x):e.x,o=void 0===e.y?Math.floor(i.y):e.y,h=e.offset||0,l=e.drawBorder||!1,d=e.hitCanvasPixelRatio||1;if(!n||!s)return void g.error("Can not cache the node. Width or height of the node equals 0. Caching is skipped.");n+=2*h+(Math.abs(Math.round(i.x)-a)>.5?1:0),s+=2*h+(Math.abs(Math.round(i.y)-o)>.5?1:0),a-=h,o-=h;const c=new G({pixelRatio:r,width:n,height:s}),u=new G({pixelRatio:r,width:0,height:0,willReadFrequently:!0}),f=new R({pixelRatio:d,width:n,height:s}),p=c.getContext(),m=f.getContext();return f.isCache=!0,c.isCache=!0,this._cache.delete(F),this._filterUpToDate=!1,!1===e.imageSmoothingEnabled&&(c.getContext()._context.imageSmoothingEnabled=!1,u.getContext()._context.imageSmoothingEnabled=!1),p.save(),m.save(),p.translate(-a,-o),m.translate(-a,-o),this._isUnderCache=!0,this._clearSelfAndDescendantCache(D),this._clearSelfAndDescendantCache(O),this.drawScene(c,this),this.drawHit(f,this),this._isUnderCache=!1,p.restore(),m.restore(),l&&(p.save(),p.beginPath(),p.rect(0,0,n,s),p.closePath(),p.setAttr("strokeStyle","red"),p.setAttr("lineWidth",5),p.stroke(),p.restore()),this._cache.set(F,{scene:c,filter:u,hit:f,x:a,y:o}),this._requestDraw(),this}isCached(){return this._cache.has(F)}getClientRect(t){throw new Error('abstract "getClientRect" method call')}_transformedRect(t,e){const i=[{x:t.x,y:t.y},{x:t.x+t.width,y:t.y},{x:t.x+t.width,y:t.y+t.height},{x:t.x,y:t.y+t.height}];let n=1/0,s=1/0,r=-1/0,a=-1/0;const o=this.getAbsoluteTransform(e);return i.forEach((function(t){const e=o.point(t);void 0===n&&(n=r=e.x,s=a=e.y),n=Math.min(n,e.x),s=Math.min(s,e.y),r=Math.max(r,e.x),a=Math.max(a,e.y)})),{x:n,y:s,width:r-n,height:a-s}}_drawCachedSceneCanvas(t){t.save(),t._applyOpacity(this),t._applyGlobalCompositeOperation(this);const e=this._getCanvasCache();t.translate(e.x,e.y);const i=this._getCachedSceneCanvas(),n=i.pixelRatio;t.drawImage(i._canvas,0,0,i.width/n,i.height/n),t.restore()}_drawCachedHitCanvas(t){const e=this._getCanvasCache(),i=e.hit;t.save(),t.translate(e.x,e.y),t.drawImage(i._canvas,0,0,i.width/i.pixelRatio,i.height/i.pixelRatio),t.restore()}_getCachedSceneCanvas(){let t,e,i,n,s=this.filters(),r=this._getCanvasCache(),a=r.scene,o=r.filter,h=o.getContext();if(s){if(!this._filterUpToDate){const r=a.pixelRatio;o.setSize(a.width/a.pixelRatio,a.height/a.pixelRatio);try{for(t=s.length,h.clear(),h.drawImage(a._canvas,0,0,a.getWidth()/r,a.getHeight()/r),e=h.getImageData(0,0,o.getWidth(),o.getHeight()),i=0;i{let e,i;if(!t)return this;for(e in t)"children"!==e&&(i="set"+g._capitalize(e),g._isFunction(this[i])?this[i](t[e]):this._setAttr(e,t[e]))})),this}isListening(){return this._getCache(B,this._isListening)}_isListening(t){if(!this.listening())return!1;const e=this.getParent();return!e||e===t||this===t||e._isListening(t)}isVisible(){return this._getCache(j,this._isVisible)}_isVisible(t){if(!this.visible())return!1;const e=this.getParent();return!e||e===t||this===t||e._isVisible(t)}shouldDrawHit(t,e=!1){if(t)return this._isVisible(t)&&this._isListening(t);const n=this.getLayer();let s=!1;E._dragElements.forEach((t=>{"dragging"===t.dragStatus&&("Stage"===t.node.nodeType||t.node.getLayer()===n)&&(s=!0)}));const r=!e&&!i.hitOnDragEnabled&&(s||i.isTransforming());return this.isListening()&&this.isVisible()&&!r}show(){return this.visible(!0),this}hide(){return this.visible(!1),this}getZIndex(){return this.index||0}getAbsoluteZIndex(){let t,e,i,n,s=this.getDepth(),r=this,a=0;const o=this.getStage();return"Stage"!==r.nodeType&&o&&function o(h){for(t=[],e=h.length,i=0;i0&&t[0].getDepth()<=s&&o(t)}(o.getChildren()),a}getDepth(){let t=0,e=this.parent;for(;e;)t++,e=e.parent;return t}_batchTransformChanges(t){this._batchingTransformChange=!0,t(),this._batchingTransformChange=!1,this._needClearTransformCache&&(this._clearCache(X),this._clearSelfAndDescendantCache(I)),this._needClearTransformCache=!1}setPosition(t){return this._batchTransformChanges((()=>{this.x(t.x),this.y(t.y)})),this}getPosition(){return{x:this.x(),y:this.y()}}getRelativePointerPosition(){const t=this.getStage();if(!t)return null;const e=t.getPointerPosition();if(!e)return null;const i=this.getAbsoluteTransform().copy();return i.invert(),i.point(e)}getAbsolutePosition(t){let e=!1,i=this.parent;for(;i;){if(i.isCached()){e=!0;break}i=i.parent}e&&!t&&(t=!0);const n=this.getAbsoluteTransform(t).getMatrix(),r=new s,a=this.offset();return r.m=n.slice(),r.translate(a.x,a.y),r.getTranslation()}setAbsolutePosition(t){const{x:e,y:i,...n}=this._clearTransform();this.attrs.x=e,this.attrs.y=i,this._clearCache(X);const s=this._getAbsoluteTransform().copy();return s.invert(),s.translate(t.x,t.y),t={x:this.attrs.x+s.getTranslation().x,y:this.attrs.y+s.getTranslation().y},this._setTransform(n),this.setPosition({x:t.x,y:t.y}),this._clearCache(X),this._clearSelfAndDescendantCache(I),this}_setTransform(t){let e;for(e in t)this.attrs[e]=t[e]}_clearTransform(){const t={x:this.x(),y:this.y(),rotation:this.rotation(),scaleX:this.scaleX(),scaleY:this.scaleY(),offsetX:this.offsetX(),offsetY:this.offsetY(),skewX:this.skewX(),skewY:this.skewY()};return this.attrs.x=0,this.attrs.y=0,this.attrs.rotation=0,this.attrs.scaleX=1,this.attrs.scaleY=1,this.attrs.offsetX=0,this.attrs.offsetY=0,this.attrs.skewX=0,this.attrs.skewY=0,t}move(t){let e=t.x,i=t.y,n=this.x(),s=this.y();return void 0!==e&&(n+=e),void 0!==i&&(s+=i),this.setPosition({x:n,y:s}),this}_eachAncestorReverse(t,e){let i,n,s=[],r=this.getParent();if(!e||e._id!==this._id){for(s.unshift(this);r&&(!e||r._id!==e._id);)s.unshift(r),r=r.parent;for(i=s.length,n=0;n0&&(this.parent.children.splice(t,1),this.parent.children.splice(t-1,0,this),this.parent._setChildrenIndices(),!0)}moveToBottom(){if(!this.parent)return g.warn("Node has no parent. moveToBottom function is ignored."),!1;const t=this.index;return t>0&&(this.parent.children.splice(t,1),this.parent.children.unshift(this),this.parent._setChildrenIndices(),!0)}setZIndex(t){if(!this.parent)return g.warn("Node has no parent. zIndex parameter is ignored."),this;(t<0||t>=this.parent.children.length)&&g.warn("Unexpected value "+t+" for zIndex property. zIndex is just index of a node in children of its parent. Expected value is from 0 to "+(this.parent.children.length-1)+".");const e=this.index;return this.parent.children.splice(e,1),this.parent.children.splice(t,0,this),this.parent._setChildrenIndices(),this}getAbsoluteOpacity(){return this._getCache(D,this._getAbsoluteOpacity)}_getAbsoluteOpacity(){let t=this.opacity();const e=this.getParent();return e&&!e._isUnderCache&&(t*=e.getAbsoluteOpacity()),t}moveTo(t){return this.getParent()!==t&&(this._remove(),t.add(this)),this}toObject(){let t,e,i,n,s,r=this.getAttrs();const a={attrs:{},className:this.getClassName()};for(t in r)e=r[t],s=g.isObject(e)&&!g._isPlainObject(e)&&!g._isArray(e),s||(i="function"==typeof this[t]&&this[t],delete r[t],n=i?i.call(this):null,r[t]=e,n!==e&&(a.attrs[t]=e));return g._prepareToStringify(a)}toJSON(){return JSON.stringify(this.toObject())}getParent(){return this.parent}findAncestors(t,e,i){const n=[];e&&this._isMatch(t)&&n.push(this);let s=this.parent;for(;s;){if(s===i)return n;s._isMatch(t)&&n.push(s),s=s.parent}return n}isAncestorOf(t){return!1}findAncestor(t,e,i){return this.findAncestors(t,e,i)[0]}_isMatch(t){if(!t)return!1;if("function"==typeof t)return t(this);let e,i,n=t.replace(/ /g,"").split(","),s=n.length;for(e=0;e{try{const i=null==t?void 0:t.callback;i&&delete t.callback,g._urlToImage(this.toDataURL(t),(function(t){e(t),null==i||i(t)}))}catch(t){i(t)}}))}toBlob(t){return new Promise(((e,i)=>{try{const i=null==t?void 0:t.callback;i&&delete t.callback,this.toCanvas(t).toBlob((t=>{e(t),null==i||i(t)}),null==t?void 0:t.mimeType,null==t?void 0:t.quality)}catch(t){i(t)}}))}setSize(t){return this.width(t.width),this.height(t.height),this}getSize(){return{width:this.width(),height:this.height()}}getClassName(){return this.className||this.nodeType}getType(){return this.nodeType}getDragDistance(){return void 0!==this.attrs.dragDistance?this.attrs.dragDistance:this.parent?this.parent.getDragDistance():i.dragDistance}_off(t,e,i){let n,s,r,a=this.eventListeners[t];for(n=0;n=0))return;if(this.isDragging())return;let e=!1;E._dragElements.forEach((t=>{this.isAncestorOf(t.node)&&(e=!0)})),e||this._createDragElement(t)}))}_dragChange(){if(this.attrs.draggable)this._listenDrag();else{this._dragCleanup();if(!this.getStage())return;const t=E._dragElements.get(this._id),e=t&&"dragging"===t.dragStatus,i=t&&"ready"===t.dragStatus;e?this.stopDrag():i&&E._dragElements.delete(this._id)}}_dragCleanup(){this.off("mousedown.konva"),this.off("touchstart.konva")}isClientRectOnScreen(t={x:0,y:0}){const e=this.getStage();if(!e)return!1;const i={x:-t.x,y:-t.y,width:e.width()+2*t.x,height:e.height()+2*t.y};return g.haveIntersection(i,this.getClientRect())}static create(t,e){return g._isString(t)&&(t=JSON.parse(t)),this._createNode(t,e)}static _createNode(t,e){let n,s,r,a=V.prototype.getClassName.call(t),o=t.children;e&&(t.attrs.container=e),i[a]||(g.warn('Can not find a node with class name "'+a+'". Fallback to "Shape".'),a="Shape");if(n=new(0,i[a])(t.attrs),o)for(s=o.length,r=0;r0}removeChildren(){return this.getChildren().forEach((t=>{t.parent=null,t.index=0,t.remove()})),this.children=[],this._requestDraw(),this}destroyChildren(){return this.getChildren().forEach((t=>{t.parent=null,t.index=0,t.destroy()})),this.children=[],this._requestDraw(),this}add(...t){if(0===t.length)return this;if(t.length>1){for(let e=0;e0?e[0]:void 0}_generalFind(t,e){const i=[];return this._descendants((n=>{const s=n._isMatch(t);return s&&i.push(n),!(!s||!e)})),i}_descendants(t){let e=!1;const i=this.getChildren();for(const n of i){if(e=t(n),e)return!0;if(n.hasChildren()&&(e=n._descendants(t),e))return!0}return!1}toObject(){const t=V.prototype.toObject.call(this);return t.children=[],this.getChildren().forEach((e=>{t.children.push(e.toObject())})),t}isAncestorOf(t){let e=t.getParent();for(;e;){if(e._id===this._id)return!0;e=e.getParent()}return!1}clone(t){const e=V.prototype.clone.call(this,t);return this.getChildren().forEach((function(t){e.add(t.clone())})),e}getAllIntersections(t){const e=[];return this.find("Shape").forEach((i=>{i.isVisible()&&i.intersects(t)&&e.push(i)})),e}_clearSelfAndDescendantCache(t){var e;super._clearSelfAndDescendantCache(t),this.isCached()||null===(e=this.children)||void 0===e||e.forEach((function(e){e._clearSelfAndDescendantCache(t)}))}_setChildrenIndices(){var t;null===(t=this.children)||void 0===t||t.forEach((function(t,e){t.index=e})),this._requestDraw()}drawScene(t,e,i){const n=this.getLayer(),s=t||n&&n.getCanvas(),r=s&&s.getContext(),a=this._getCanvasCache(),o=a&&a.scene,h=s&&s.isCache;if(!this.isVisible()&&!h)return this;if(o){r.save();const t=this.getAbsoluteTransform(e).getMatrix();r.transform(t[0],t[1],t[2],t[3],t[4],t[5]),this._drawCachedSceneCanvas(r),r.restore()}else this._drawChildren("drawScene",s,e,i);return this}drawHit(t,e){if(!this.shouldDrawHit(e))return this;const i=this.getLayer(),n=t||i&&i.hitCanvas,s=n&&n.getContext(),r=this._getCanvasCache();if(r&&r.hit){s.save();const t=this.getAbsoluteTransform(e).getMatrix();s.transform(t[0],t[1],t[2],t[3],t[4],t[5]),this._drawCachedHitCanvas(s),s.restore()}else this._drawChildren("drawHit",n,e);return this}_drawChildren(t,e,i,n){var s;const r=e&&e.getContext(),a=this.clipWidth(),o=this.clipHeight(),h=this.clipFunc(),l="number"==typeof a&&"number"==typeof o||h,d=i===this;if(l){r.save();const t=this.getAbsoluteTransform(i);let e,n=t.getMatrix();if(r.transform(n[0],n[1],n[2],n[3],n[4],n[5]),r.beginPath(),h)e=h.call(this,r,this);else{const t=this.clipX(),e=this.clipY();r.rect(t||0,e||0,a,o)}r.clip.apply(r,e),n=t.copy().invert().getMatrix(),r.transform(n[0],n[1],n[2],n[3],n[4],n[5])}const c=!d&&"source-over"!==this.globalCompositeOperation()&&"drawScene"===t;c&&(r.save(),r._applyGlobalCompositeOperation(this)),null===(s=this.children)||void 0===s||s.forEach((function(s){s[t](e,i,n)})),c&&r.restore(),l&&r.restore()}getClientRect(t={}){var e;const i=t.skipTransform,n=t.relativeTo;let s,r,a,o,h={x:1/0,y:1/0,width:0,height:0};const l=this;null===(e=this.children)||void 0===e||e.forEach((function(e){if(!e.visible())return;const i=e.getClientRect({relativeTo:l,skipShadow:t.skipShadow,skipStroke:t.skipStroke});0===i.width&&0===i.height||(void 0===s?(s=i.x,r=i.y,a=i.x+i.width,o=i.y+i.height):(s=Math.min(s,i.x),r=Math.min(r,i.y),a=Math.max(a,i.x+i.width),o=Math.max(o,i.y+i.height)))}));const d=this.find("Shape");let c=!1;for(let t=0;tt.indexOf("pointer")>=0?"pointer":t.indexOf("touch")>=0?"touch":"mouse",At=t=>{const e=kt(t);return"pointer"===e?i.pointerEventsEnabled&&Pt.pointer:"touch"===e?Pt.touch:"mouse"===e?Pt.mouse:void 0};function Tt(t={}){return(t.clipFunc||t.clipWidth||t.clipHeight)&&g.warn("Stage does not support clipping. Please use clip for Layers or Groups."),t}const Mt=[];class Gt extends Q{constructor(t){super(Tt(t)),this._pointerPositions=[],this._changedPointerPositions=[],this._buildDOM(),this._bindContentEvents(),Mt.push(this),this.on("widthChange.konva heightChange.konva",this._resizeDOM),this.on("visibleChange.konva",this._checkVisibility),this.on("clipWidthChange.konva clipHeightChange.konva clipFuncChange.konva",(()=>{Tt(this.attrs)})),this._checkVisibility()}_validateAdd(t){const e="Layer"===t.getType(),i="FastLayer"===t.getType();e||i||g.throw("You may only add layers to the stage.")}_checkVisibility(){if(!this.content)return;const t=this.visible()?"":"none";this.content.style.display=t}setContainer(t){if("string"==typeof t){if("."===t.charAt(0)){const e=t.slice(1);t=document.getElementsByClassName(e)[0]}else{var e;e="#"!==t.charAt(0)?t:t.slice(1),t=document.getElementById(e)}if(!t)throw"Can not find container in document with id "+e}return this._setAttr("container",t),this.content&&(this.content.parentElement&&this.content.parentElement.removeChild(this.content),t.appendChild(this.content)),this}shouldDrawHit(){return!0}clear(){const t=this.children,e=t.length;for(let i=0;i-1&&Mt.splice(e,1),g.releaseCanvas(this.bufferCanvas._canvas,this.bufferHitCanvas._canvas),this}getPointerPosition(){const t=this._pointerPositions[0]||this._changedPointerPositions[0];return t?{x:t.x,y:t.y}:(g.warn("Pointer position is missing and not registered by the stage. Looks like it is outside of the stage container. You can set it manually from event: stage.setPointersPositions(event);"),null)}_getPointerById(t){return this._pointerPositions.find((e=>e.id===t))}getPointersPositions(){return this._pointerPositions}getStage(){return this}getContent(){return this.content}_toKonvaCanvas(t){(t=t||{}).x=t.x||0,t.y=t.y||0,t.width=t.width||this.width(),t.height=t.height||this.height();const e=new G({width:t.width,height:t.height,pixelRatio:t.pixelRatio||1}),i=e.getContext()._context,n=this.children;return(t.x||t.y)&&i.translate(-1*t.x,-1*t.y),n.forEach((function(e){if(!e.isVisible())return;const n=e._toKonvaCanvas(t);i.drawImage(n._canvas,t.x,t.y,n.getWidth()/n.getPixelRatio(),n.getHeight()/n.getPixelRatio())})),e}getIntersection(t){if(!t)return null;const e=this.children;for(let i=e.length-1;i>=0;i--){const n=e[i].getIntersection(t);if(n)return n}return null}_resizeDOM(){const t=this.width(),e=this.height();this.content&&(this.content.style.width=t+"px",this.content.style.height=e+"px"),this.bufferCanvas.setSize(t,e),this.bufferHitCanvas.setSize(t,e),this.children.forEach((i=>{i.setSize({width:t,height:e}),i.draw()}))}add(t,...e){if(arguments.length>1){for(let t=0;t5&&g.warn("The stage has "+n+" layers. Recommended maximum number of layers is 3-5. Adding more layers into the stage may drop the performance. Rethink your tree structure, you can use Konva.Group."),t.setSize({width:this.width(),height:this.height()}),t.draw(),i.isBrowser&&this.content.appendChild(t.canvas._canvas),this}getParent(){return null}getLayer(){return null}hasPointerCapture(t){return et(t,this)}setPointerCapture(t){it(t,this)}releaseCapture(t){nt(t)}getLayers(){return this.children}_bindContentEvents(){i.isBrowser&&Ct.forEach((([t,e])=>{this.content.addEventListener(t,(t=>{this[e](t)}),{passive:!1})}))}_pointerenter(t){this.setPointersPositions(t);const e=At(t.type);e&&this._fire(e.pointerenter,{evt:t,target:this,currentTarget:this})}_pointerover(t){this.setPointersPositions(t);const e=At(t.type);e&&this._fire(e.pointerover,{evt:t,target:this,currentTarget:this})}_getTargetShape(t){let e=this[t+"targetShape"];return e&&!e.getStage()&&(e=null),e}_pointerleave(t){const e=At(t.type),n=kt(t.type);if(!e)return;this.setPointersPositions(t);const s=this._getTargetShape(n),r=!(i.isDragging()||i.isTransforming())||i.hitOnDragEnabled;s&&r?(s._fireAndBubble(e.pointerout,{evt:t}),s._fireAndBubble(e.pointerleave,{evt:t}),this._fire(e.pointerleave,{evt:t,target:this,currentTarget:this}),this[n+"targetShape"]=null):r&&(this._fire(e.pointerleave,{evt:t,target:this,currentTarget:this}),this._fire(e.pointerout,{evt:t,target:this,currentTarget:this})),this.pointerPos=null,this._pointerPositions=[]}_pointerdown(t){const e=At(t.type),n=kt(t.type);if(!e)return;this.setPointersPositions(t);let s=!1;this._changedPointerPositions.forEach((r=>{const a=this.getIntersection(r);if(E.justDragged=!1,i["_"+n+"ListenClick"]=!0,!a||!a.isListening())return void(this[n+"ClickStartShape"]=void 0);i.capturePointerEventsEnabled&&a.setPointerCapture(r.id),this[n+"ClickStartShape"]=a,a._fireAndBubble(e.pointerdown,{evt:t,pointerId:r.id}),s=!0;const o=t.type.indexOf("touch")>=0;a.preventDefault()&&t.cancelable&&o&&t.preventDefault()})),s||this._fire(e.pointerdown,{evt:t,target:this,currentTarget:this,pointerId:this._pointerPositions[0].id})}_pointermove(t){const e=At(t.type),n=kt(t.type);if(!e)return;i.isDragging()&&E.node.preventDefault()&&t.cancelable&&t.preventDefault(),this.setPointersPositions(t);if(!(!(i.isDragging()||i.isTransforming())||i.hitOnDragEnabled))return;const s={};let r=!1;const a=this._getTargetShape(n);this._changedPointerPositions.forEach((i=>{const o=Z(i.id)||this.getIntersection(i),h=i.id,l={evt:t,pointerId:h},d=a!==o;if(d&&a&&(a._fireAndBubble(e.pointerout,{...l},o),a._fireAndBubble(e.pointerleave,{...l},o)),o){if(s[o._id])return;s[o._id]=!0}o&&o.isListening()?(r=!0,d&&(o._fireAndBubble(e.pointerover,{...l},a),o._fireAndBubble(e.pointerenter,{...l},a),this[n+"targetShape"]=o),o._fireAndBubble(e.pointermove,{...l})):a&&(this._fire(e.pointerover,{evt:t,target:this,currentTarget:this,pointerId:h}),this[n+"targetShape"]=null)})),r||this._fire(e.pointermove,{evt:t,target:this,currentTarget:this,pointerId:this._changedPointerPositions[0].id})}_pointerup(t){const e=At(t.type),n=kt(t.type);if(!e)return;this.setPointersPositions(t);const s=this[n+"ClickStartShape"],r=this[n+"ClickEndShape"],a={};let o=!1;this._changedPointerPositions.forEach((h=>{const l=Z(h.id)||this.getIntersection(h);if(l){if(l.releaseCapture(h.id),a[l._id])return;a[l._id]=!0}const d=h.id,c={evt:t,pointerId:d};let g=!1;i["_"+n+"InDblClickWindow"]?(g=!0,clearTimeout(this[n+"DblTimeout"])):E.justDragged||(i["_"+n+"InDblClickWindow"]=!0,clearTimeout(this[n+"DblTimeout"])),this[n+"DblTimeout"]=setTimeout((function(){i["_"+n+"InDblClickWindow"]=!1}),i.dblClickWindow),l&&l.isListening()?(o=!0,this[n+"ClickEndShape"]=l,l._fireAndBubble(e.pointerup,{...c}),i["_"+n+"ListenClick"]&&s&&s===l&&(l._fireAndBubble(e.pointerclick,{...c}),g&&r&&r===l&&l._fireAndBubble(e.pointerdblclick,{...c}))):(this[n+"ClickEndShape"]=null,i["_"+n+"ListenClick"]&&this._fire(e.pointerclick,{evt:t,target:this,currentTarget:this,pointerId:d}),g&&this._fire(e.pointerdblclick,{evt:t,target:this,currentTarget:this,pointerId:d}))})),o||this._fire(e.pointerup,{evt:t,target:this,currentTarget:this,pointerId:this._changedPointerPositions[0].id}),i["_"+n+"ListenClick"]=!1,t.cancelable&&"touch"!==n&&"pointer"!==n&&t.preventDefault()}_contextmenu(t){this.setPointersPositions(t);const e=this.getIntersection(this.getPointerPosition());e&&e.isListening()?e._fireAndBubble(yt,{evt:t}):this._fire(yt,{evt:t,target:this,currentTarget:this})}_wheel(t){this.setPointersPositions(t);const e=this.getIntersection(this.getPointerPosition());e&&e.isListening()?e._fireAndBubble(wt,{evt:t}):this._fire(wt,{evt:t,target:this,currentTarget:this})}_pointercancel(t){this.setPointersPositions(t);const e=Z(t.pointerId)||this.getIntersection(this.getPointerPosition());e&&e._fireAndBubble(gt,tt(t)),nt(t.pointerId)}_lostpointercapture(t){nt(t.pointerId)}setPointersPositions(t){const e=this._getContentPosition();let i=null,n=null;void 0!==(t=t||window.event).touches?(this._pointerPositions=[],this._changedPointerPositions=[],Array.prototype.forEach.call(t.touches,(t=>{this._pointerPositions.push({id:t.identifier,x:(t.clientX-e.left)/e.scaleX,y:(t.clientY-e.top)/e.scaleY})})),Array.prototype.forEach.call(t.changedTouches||t.touches,(t=>{this._changedPointerPositions.push({id:t.identifier,x:(t.clientX-e.left)/e.scaleX,y:(t.clientY-e.top)/e.scaleY})}))):(i=(t.clientX-e.left)/e.scaleX,n=(t.clientY-e.top)/e.scaleY,this.pointerPos={x:i,y:n},this._pointerPositions=[{x:i,y:n,id:g._getFirstPointerId(t)}],this._changedPointerPositions=[{x:i,y:n,id:g._getFirstPointerId(t)}])}_setPointerPosition(t){g.warn('Method _setPointerPosition is deprecated. Use "stage.setPointersPositions(event)" instead.'),this.setPointersPositions(t)}_getContentPosition(){if(!this.content||!this.content.getBoundingClientRect)return{top:0,left:0,scaleX:1,scaleY:1};const t=this.content.getBoundingClientRect();return{top:t.top,left:t.left,scaleX:t.width/this.content.clientWidth||1,scaleY:t.height/this.content.clientHeight||1}}_buildDOM(){if(this.bufferCanvas=new G({width:this.width(),height:this.height()}),this.bufferHitCanvas=new R({pixelRatio:1,width:this.width(),height:this.height()}),!i.isBrowser)return;const t=this.container();if(!t)throw"Stage has no container. A container is required.";t.innerHTML="",this.content=document.createElement("div"),this.content.style.position="relative",this.content.style.userSelect="none",this.content.className="konvajs-content",this.content.setAttribute("role","presentation"),t.appendChild(this.content),this._resizeDOM()}cache(){return g.warn("Cache function is not allowed for stage. You may use cache only for layers, groups and shapes."),this}clearCache(){return this}batchDraw(){return this.getChildren().forEach((function(t){t.batchDraw()})),this}}Gt.prototype.nodeType="Stage",n(Gt),w.addGetterSetter(Gt,"container"),i.isBrowser&&document.addEventListener("visibilitychange",(()=>{Mt.forEach((t=>{t.batchDraw()}))}));const Rt="hasShadow",Et="shadowRGBA",Dt="patternImage",Lt="linearGradient",It="radialGradient";let Ot;function Ft(){return Ot||(Ot=g.createCanvasElement().getContext("2d"),Ot)}const Bt={};class Nt extends V{constructor(t){let e;for(super(t);e=g.getRandomColor(),!e||e in Bt;);this.colorKey=e,Bt[e]=this}getContext(){return g.warn("shape.getContext() method is deprecated. Please do not use it."),this.getLayer().getContext()}getCanvas(){return g.warn("shape.getCanvas() method is deprecated. Please do not use it."),this.getLayer().getCanvas()}getSceneFunc(){return this.attrs.sceneFunc||this._sceneFunc}getHitFunc(){return this.attrs.hitFunc||this._hitFunc}hasShadow(){return this._getCache(Rt,this._hasShadow)}_hasShadow(){return this.shadowEnabled()&&0!==this.shadowOpacity()&&!!(this.shadowColor()||this.shadowBlur()||this.shadowOffsetX()||this.shadowOffsetY())}_getFillPattern(){return this._getCache(Dt,this.__getFillPattern)}__getFillPattern(){if(this.fillPatternImage()){const t=Ft().createPattern(this.fillPatternImage(),this.fillPatternRepeat()||"repeat");if(t&&t.setTransform){const e=new s;e.translate(this.fillPatternX(),this.fillPatternY()),e.rotate(i.getAngle(this.fillPatternRotation())),e.scale(this.fillPatternScaleX(),this.fillPatternScaleY()),e.translate(-1*this.fillPatternOffsetX(),-1*this.fillPatternOffsetY());const n=e.getMatrix(),r="undefined"==typeof DOMMatrix?{a:n[0],b:n[1],c:n[2],d:n[3],e:n[4],f:n[5]}:new DOMMatrix(n);t.setTransform(r)}return t}}_getLinearGradient(){return this._getCache(Lt,this.__getLinearGradient)}__getLinearGradient(){const t=this.fillLinearGradientColorStops();if(t){const e=Ft(),i=this.fillLinearGradientStartPoint(),n=this.fillLinearGradientEndPoint(),s=e.createLinearGradient(i.x,i.y,n.x,n.y);for(let e=0;ethis.fillEnabled()&&!!(this.fill()||this.fillPatternImage()||this.fillLinearGradientColorStops()||this.fillRadialGradientColorStops())))}hasStroke(){return this._calculate("hasStroke",["strokeEnabled","strokeWidth","stroke","strokeLinearGradientColorStops"],(()=>this.strokeEnabled()&&this.strokeWidth()&&!(!this.stroke()&&!this.strokeLinearGradientColorStops())))}hasHitStroke(){const t=this.hitStrokeWidth();return"auto"===t?this.hasStroke():this.strokeEnabled()&&!!t}intersects(t){const e=this.getStage();if(!e)return!1;const i=e.bufferHitCanvas;i.getContext().clear(),this.drawHit(i,void 0,!0);return i.context.getImageData(Math.round(t.x),Math.round(t.y),1,1).data[3]>0}destroy(){return V.prototype.destroy.call(this),delete Bt[this.colorKey],delete this.colorKey,this}_useBufferCanvas(t){var e;if(!(null===(e=this.attrs.perfectDrawEnabled)||void 0===e||e))return!1;const i=t||this.hasFill(),n=this.hasStroke(),s=1!==this.getAbsoluteOpacity();if(i&&n&&s)return!0;const r=this.hasShadow(),a=this.shadowForStrokeEnabled();return!!(i&&n&&r&&a)}setStrokeHitEnabled(t){g.warn("strokeHitEnabled property is deprecated. Please use hitStrokeWidth instead."),t?this.hitStrokeWidth("auto"):this.hitStrokeWidth(0)}getStrokeHitEnabled(){return 0!==this.hitStrokeWidth()}getSelfRect(){const t=this.size();return{x:this._centroid?-t.width/2:0,y:this._centroid?-t.height/2:0,width:t.width,height:t.height}}getClientRect(t={}){let e=!1,i=this.getParent();for(;i;){if(i.isCached()){e=!0;break}i=i.getParent()}const n=t.skipTransform,s=t.relativeTo||e&&this.getStage()||void 0,r=this.getSelfRect(),a=!t.skipStroke&&this.hasStroke()&&this.strokeWidth()||0,o=r.width+a,h=r.height+a,l=!t.skipShadow&&this.hasShadow(),d=l?this.shadowOffsetX():0,c=l?this.shadowOffsetY():0,g=o+Math.abs(d),u=h+Math.abs(c),f=l&&this.shadowBlur()||0,p={width:g+2*f,height:u+2*f,x:-(a/2+f)+Math.min(d,0)+r.x,y:-(a/2+f)+Math.min(c,0)+r.y};return n?p:this._transformedRect(p,s)}drawScene(t,e,i){const n=this.getLayer();let s,r,a=t||n.getCanvas(),o=a.getContext(),h=this._getCanvasCache(),l=this.getSceneFunc(),d=this.hasShadow();const c=a.isCache,g=e===this;if(!this.isVisible()&&!g)return this;if(h){o.save();const t=this.getAbsoluteTransform(e).getMatrix();return o.transform(t[0],t[1],t[2],t[3],t[4],t[5]),this._drawCachedSceneCanvas(o),o.restore(),this}if(!l)return this;if(o.save(),this._useBufferCanvas()&&!c){s=this.getStage();const t=i||s.bufferCanvas;r=t.getContext(),r.clear(),r.save(),r._applyLineJoin(this);var u=this.getAbsoluteTransform(e).getMatrix();r.transform(u[0],u[1],u[2],u[3],u[4],u[5]),l.call(this,r,this),r.restore();const n=t.pixelRatio;d&&o._applyShadow(this),o._applyOpacity(this),o._applyGlobalCompositeOperation(this),o.drawImage(t._canvas,0,0,t.width/n,t.height/n)}else{if(o._applyLineJoin(this),!g){u=this.getAbsoluteTransform(e).getMatrix();o.transform(u[0],u[1],u[2],u[3],u[4],u[5]),o._applyOpacity(this),o._applyGlobalCompositeOperation(this)}d&&o._applyShadow(this),l.call(this,o,this)}return o.restore(),this}drawHit(t,e,i=!1){if(!this.shouldDrawHit(e,i))return this;const n=this.getLayer(),s=t||n.hitCanvas,r=s&&s.getContext(),a=this.hitFunc()||this.sceneFunc(),o=this._getCanvasCache(),h=o&&o.hit;if(this.colorKey||g.warn("Looks like your canvas has a destroyed shape in it. Do not reuse shape after you destroyed it. If you want to reuse shape you should call remove() instead of destroy()"),h){r.save();const t=this.getAbsoluteTransform(e).getMatrix();return r.transform(t[0],t[1],t[2],t[3],t[4],t[5]),this._drawCachedHitCanvas(r),r.restore(),this}if(!a)return this;r.save(),r._applyLineJoin(this);if(!(this===e)){const t=this.getAbsoluteTransform(e).getMatrix();r.transform(t[0],t[1],t[2],t[3],t[4],t[5])}return a.call(this,r,this),r.restore(),this}drawHitFromCache(t=0){const e=this._getCanvasCache(),i=this._getCachedSceneCanvas(),n=e.hit,s=n.getContext(),r=n.getWidth(),a=n.getHeight();s.clear(),s.drawImage(i._canvas,0,0,r,a);try{const e=s.getImageData(0,0,r,a),i=e.data,n=i.length,o=g._hexToRgb(this.colorKey);for(let e=0;et?(i[e]=o.r,i[e+1]=o.g,i[e+2]=o.b,i[e+3]=255):i[e+3]=0}s.putImageData(e,0,0)}catch(t){g.error("Unable to draw hit graph from cached scene canvas. "+t.message)}return this}hasPointerCapture(t){return et(t,this)}setPointerCapture(t){it(t,this)}releaseCapture(t){nt(t)}}Nt.prototype._fillFunc=function(t){const e=this.attrs.fillRule;e?t.fill(e):t.fill()},Nt.prototype._strokeFunc=function(t){t.stroke()},Nt.prototype._fillFuncHit=function(t){const e=this.attrs.fillRule;e?t.fill(e):t.fill()},Nt.prototype._strokeFuncHit=function(t){t.stroke()},Nt.prototype._centroid=!1,Nt.prototype.nodeType="Shape",n(Nt),Nt.prototype.eventListeners={},Nt.prototype.on.call(Nt.prototype,"shadowColorChange.konva shadowBlurChange.konva shadowOffsetChange.konva shadowOpacityChange.konva shadowEnabledChange.konva",(function(){this._clearCache(Rt)})),Nt.prototype.on.call(Nt.prototype,"shadowColorChange.konva shadowOpacityChange.konva shadowEnabledChange.konva",(function(){this._clearCache(Et)})),Nt.prototype.on.call(Nt.prototype,"fillPriorityChange.konva fillPatternImageChange.konva fillPatternRepeatChange.konva fillPatternScaleXChange.konva fillPatternScaleYChange.konva fillPatternOffsetXChange.konva fillPatternOffsetYChange.konva fillPatternXChange.konva fillPatternYChange.konva fillPatternRotationChange.konva",(function(){this._clearCache(Dt)})),Nt.prototype.on.call(Nt.prototype,"fillPriorityChange.konva fillLinearGradientColorStopsChange.konva fillLinearGradientStartPointXChange.konva fillLinearGradientStartPointYChange.konva fillLinearGradientEndPointXChange.konva fillLinearGradientEndPointYChange.konva",(function(){this._clearCache(Lt)})),Nt.prototype.on.call(Nt.prototype,"fillPriorityChange.konva fillRadialGradientColorStopsChange.konva fillRadialGradientStartPointXChange.konva fillRadialGradientStartPointYChange.konva fillRadialGradientEndPointXChange.konva fillRadialGradientEndPointYChange.konva fillRadialGradientStartRadiusChange.konva fillRadialGradientEndRadiusChange.konva",(function(){this._clearCache(It)})),w.addGetterSetter(Nt,"stroke",void 0,v()),w.addGetterSetter(Nt,"strokeWidth",2,p()),w.addGetterSetter(Nt,"fillAfterStrokeEnabled",!1),w.addGetterSetter(Nt,"hitStrokeWidth","auto",_()),w.addGetterSetter(Nt,"strokeHitEnabled",!0,x()),w.addGetterSetter(Nt,"perfectDrawEnabled",!0,x()),w.addGetterSetter(Nt,"shadowForStrokeEnabled",!0,x()),w.addGetterSetter(Nt,"lineJoin"),w.addGetterSetter(Nt,"lineCap"),w.addGetterSetter(Nt,"sceneFunc"),w.addGetterSetter(Nt,"hitFunc"),w.addGetterSetter(Nt,"dash"),w.addGetterSetter(Nt,"dashOffset",0,p()),w.addGetterSetter(Nt,"shadowColor",void 0,y()),w.addGetterSetter(Nt,"shadowBlur",0,p()),w.addGetterSetter(Nt,"shadowOpacity",1,p()),w.addComponentsGetterSetter(Nt,"shadowOffset",["x","y"]),w.addGetterSetter(Nt,"shadowOffsetX",0,p()),w.addGetterSetter(Nt,"shadowOffsetY",0,p()),w.addGetterSetter(Nt,"fillPatternImage"),w.addGetterSetter(Nt,"fill",void 0,v()),w.addGetterSetter(Nt,"fillPatternX",0,p()),w.addGetterSetter(Nt,"fillPatternY",0,p()),w.addGetterSetter(Nt,"fillLinearGradientColorStops"),w.addGetterSetter(Nt,"strokeLinearGradientColorStops"),w.addGetterSetter(Nt,"fillRadialGradientStartRadius",0),w.addGetterSetter(Nt,"fillRadialGradientEndRadius",0),w.addGetterSetter(Nt,"fillRadialGradientColorStops"),w.addGetterSetter(Nt,"fillPatternRepeat","repeat"),w.addGetterSetter(Nt,"fillEnabled",!0),w.addGetterSetter(Nt,"strokeEnabled",!0),w.addGetterSetter(Nt,"shadowEnabled",!0),w.addGetterSetter(Nt,"dashEnabled",!0),w.addGetterSetter(Nt,"strokeScaleEnabled",!0),w.addGetterSetter(Nt,"fillPriority","color"),w.addComponentsGetterSetter(Nt,"fillPatternOffset",["x","y"]),w.addGetterSetter(Nt,"fillPatternOffsetX",0,p()),w.addGetterSetter(Nt,"fillPatternOffsetY",0,p()),w.addComponentsGetterSetter(Nt,"fillPatternScale",["x","y"]),w.addGetterSetter(Nt,"fillPatternScaleX",1,p()),w.addGetterSetter(Nt,"fillPatternScaleY",1,p()),w.addComponentsGetterSetter(Nt,"fillLinearGradientStartPoint",["x","y"]),w.addComponentsGetterSetter(Nt,"strokeLinearGradientStartPoint",["x","y"]),w.addGetterSetter(Nt,"fillLinearGradientStartPointX",0),w.addGetterSetter(Nt,"strokeLinearGradientStartPointX",0),w.addGetterSetter(Nt,"fillLinearGradientStartPointY",0),w.addGetterSetter(Nt,"strokeLinearGradientStartPointY",0),w.addComponentsGetterSetter(Nt,"fillLinearGradientEndPoint",["x","y"]),w.addComponentsGetterSetter(Nt,"strokeLinearGradientEndPoint",["x","y"]),w.addGetterSetter(Nt,"fillLinearGradientEndPointX",0),w.addGetterSetter(Nt,"strokeLinearGradientEndPointX",0),w.addGetterSetter(Nt,"fillLinearGradientEndPointY",0),w.addGetterSetter(Nt,"strokeLinearGradientEndPointY",0),w.addComponentsGetterSetter(Nt,"fillRadialGradientStartPoint",["x","y"]),w.addGetterSetter(Nt,"fillRadialGradientStartPointX",0),w.addGetterSetter(Nt,"fillRadialGradientStartPointY",0),w.addComponentsGetterSetter(Nt,"fillRadialGradientEndPoint",["x","y"]),w.addGetterSetter(Nt,"fillRadialGradientEndPointX",0),w.addGetterSetter(Nt,"fillRadialGradientEndPointY",0),w.addGetterSetter(Nt,"fillPatternRotation",0),w.addGetterSetter(Nt,"fillRule",void 0,y()),w.backCompat(Nt,{dashArray:"dash",getDashArray:"getDash",setDashArray:"getDash",drawFunc:"sceneFunc",getDrawFunc:"getSceneFunc",setDrawFunc:"setSceneFunc",drawHitFunc:"hitFunc",getDrawHitFunc:"getHitFunc",setDrawHitFunc:"setHitFunc"});const Ht=[{x:0,y:0},{x:-1,y:-1},{x:1,y:-1},{x:1,y:1},{x:-1,y:1}],zt=Ht.length;class Wt extends Q{constructor(t){super(t),this.canvas=new G,this.hitCanvas=new R({pixelRatio:1}),this._waitingForDraw=!1,this.on("visibleChange.konva",this._checkVisibility),this._checkVisibility(),this.on("imageSmoothingEnabledChange.konva",this._setSmoothEnabled),this._setSmoothEnabled()}createPNGStream(){return this.canvas._canvas.createPNGStream()}getCanvas(){return this.canvas}getNativeCanvasElement(){return this.canvas._canvas}getHitCanvas(){return this.hitCanvas}getContext(){return this.getCanvas().getContext()}clear(t){return this.getContext().clear(t),this.getHitCanvas().getContext().clear(t),this}setZIndex(t){super.setZIndex(t);const e=this.getStage();return e&&e.content&&(e.content.removeChild(this.getNativeCanvasElement()),t{this.draw(),this._waitingForDraw=!1}))),this}getIntersection(t){if(!this.isListening()||!this.isVisible())return null;let e=1,i=!1;for(;;){for(let n=0;n0?{antialiased:!0}:{}}drawScene(t,e){const i=this.getLayer(),n=t||i&&i.getCanvas();return this._fire("beforeDraw",{node:this}),this.clearBeforeDraw()&&n.getContext().clear(),Q.prototype.drawScene.call(this,n,e),this._fire("draw",{node:this}),this}drawHit(t,e){const i=this.getLayer(),n=t||i&&i.hitCanvas;return i&&i.clearBeforeDraw()&&i.getHitCanvas().getContext().clear(),Q.prototype.drawHit.call(this,n,e),this}enableHitGraph(){return this.hitGraphEnabled(!0),this}disableHitGraph(){return this.hitGraphEnabled(!1),this}setHitGraphEnabled(t){g.warn("hitGraphEnabled method is deprecated. Please use layer.listening() instead."),this.listening(t)}getHitGraphEnabled(t){return g.warn("hitGraphEnabled method is deprecated. Please use layer.listening() instead."),this.listening()}toggleHitCanvas(){if(!this.parent||!this.parent.content)return;const t=this.parent;!!this.hitCanvas._canvas.parentNode?t.content.removeChild(this.hitCanvas._canvas):t.content.appendChild(this.hitCanvas._canvas)}destroy(){return g.releaseCanvas(this.getNativeCanvasElement(),this.getHitCanvas()._canvas),super.destroy()}}Wt.prototype.nodeType="Layer",n(Wt),w.addGetterSetter(Wt,"imageSmoothingEnabled",!0),w.addGetterSetter(Wt,"clearBeforeDraw",!0),w.addGetterSetter(Wt,"hitGraphEnabled",!0,x());class Yt extends Wt{constructor(t){super(t),this.listening(!1),g.warn('Konva.Fast layer is deprecated. Please use "new Konva.Layer({ listening: false })" instead.')}}Yt.prototype.nodeType="FastLayer",n(Yt);class Xt extends Q{_validateAdd(t){const e=t.getType();"Group"!==e&&"Shape"!==e&&g.throw("You may only add groups and shapes to groups.")}}Xt.prototype.nodeType="Group",n(Xt);const jt=e.performance&&e.performance.now?function(){return e.performance.now()}:function(){return(new Date).getTime()};class qt{constructor(t,e){this.id=qt.animIdCounter++,this.frame={time:0,timeDiff:0,lastTime:jt(),frameRate:0},this.func=t,this.setLayers(e)}setLayers(t){let e=[];return t&&(e=Array.isArray(t)?t:[t]),this.layers=e,this}getLayers(){return this.layers}addLayer(t){const e=this.layers,i=e.length;for(let n=0;nthis.duration?this.yoyo?(this._time=this.duration,this.reverse()):this.finish():t<0?this.yoyo?(this._time=0,this.play()):this.reset():(this._time=t,this.update())}getTime(){return this._time}setPosition(t){this.prevPos=this._pos,this.propFunc(t),this._pos=t}getPosition(t){return void 0===t&&(t=this._time),this.func(t,this.begin,this._change,this.duration)}play(){this.state=2,this._startTime=this.getTimer()-this._time,this.onEnterFrame(),this.fire("onPlay")}reverse(){this.state=3,this._time=this.duration-this._time,this._startTime=this.getTimer()-this._time,this.onEnterFrame(),this.fire("onReverse")}seek(t){this.pause(),this._time=t,this.update(),this.fire("onSeek")}reset(){this.pause(),this._time=0,this.update(),this.fire("onReset")}finish(){this.pause(),this._time=this.duration,this.update(),this.fire("onFinish")}update(){this.setPosition(this.getPosition(this._time)),this.fire("onUpdate")}onEnterFrame(){const t=this.getTimer()-this._startTime;2===this.state?this.setTime(t):3===this.state&&this.setTime(this.duration-t)}pause(){this.state=1,this.fire("onPause")}getTimer(){return(new Date).getTime()}}class Jt{constructor(t){const e=this,n=t.node,s=n._id,r=t.easing||$t.Linear,a=!!t.yoyo;let o,h;o=void 0===t.duration?.3:0===t.duration?.001:t.duration,this.node=n,this._id=Kt++;const l=n.getLayer()||(n instanceof i.Stage?n.getLayers():null);for(h in l||g.error("Tween constructor have `node` that is not in a layer. Please add node into layer first."),this.anim=new qt((function(){e.tween.onEnterFrame()}),l),this.tween=new Qt(h,(function(t){e._tweenFunc(t)}),r,0,1,1e3*o,a),this._addListeners(),Jt.attrs[s]||(Jt.attrs[s]={}),Jt.attrs[s][this._id]||(Jt.attrs[s][this._id]={}),Jt.tweens[s]||(Jt.tweens[s]={}),t)void 0===Ut[h]&&this._addAttr(h,t[h]);this.reset(),this.onFinish=t.onFinish,this.onReset=t.onReset,this.onUpdate=t.onUpdate}_addAttr(t,e){const i=this.node,n=i._id;let s,r,a,o,h;const l=Jt.tweens[n][t];l&&delete Jt.attrs[n][l][t];let d=i.getAttr(t);if(g._isArray(e))if(s=[],r=Math.max(e.length,d.length),"points"===t&&e.length!==d.length&&(e.length>d.length?(o=d,d=g._prepareArrayForTween(d,e,i.closed())):(a=e,e=g._prepareArrayForTween(e,d,i.closed()))),0===t.indexOf("fill"))for(let t=0;t{this.anim.start()},this.tween.onReverse=()=>{this.anim.start()},this.tween.onPause=()=>{this.anim.stop()},this.tween.onFinish=()=>{const t=this.node,e=Jt.attrs[t._id][this._id];e.points&&e.points.trueEnd&&t.setAttr("points",e.points.trueEnd),this.onFinish&&this.onFinish.call(this)},this.tween.onReset=()=>{const t=this.node,e=Jt.attrs[t._id][this._id];e.points&&e.points.trueStart&&t.points(e.points.trueStart),this.onReset&&this.onReset()},this.tween.onUpdate=()=>{this.onUpdate&&this.onUpdate.call(this)}}play(){return this.tween.play(),this}reverse(){return this.tween.reverse(),this}reset(){return this.tween.reset(),this}seek(t){return this.tween.seek(1e3*t),this}pause(){return this.tween.pause(),this}finish(){return this.tween.finish(),this}destroy(){const t=this.node._id,e=this._id,i=Jt.tweens[t];this.pause();for(const e in i)delete Jt.tweens[t][e];delete Jt.attrs[t][e]}}Jt.attrs={},Jt.tweens={},V.prototype.to=function(t){const e=t.onFinish;t.node=this,t.onFinish=function(){this.destroy(),e&&e()};new Jt(t).play()};const $t={BackEaseIn(t,e,i,n){const s=1.70158;return i*(t/=n)*t*((s+1)*t-s)+e},BackEaseOut(t,e,i,n){const s=1.70158;return i*((t=t/n-1)*t*((s+1)*t+s)+1)+e},BackEaseInOut(t,e,i,n){let s=1.70158;return(t/=n/2)<1?i/2*(t*t*((1+(s*=1.525))*t-s))+e:i/2*((t-=2)*t*((1+(s*=1.525))*t+s)+2)+e},ElasticEaseIn(t,e,i,n,s,r){let a=0;return 0===t?e:1==(t/=n)?e+i:(r||(r=.3*n),!s||s(t/=n)<1/2.75?i*(7.5625*t*t)+e:t<2/2.75?i*(7.5625*(t-=1.5/2.75)*t+.75)+e:t<2.5/2.75?i*(7.5625*(t-=2.25/2.75)*t+.9375)+e:i*(7.5625*(t-=2.625/2.75)*t+.984375)+e,BounceEaseIn:(t,e,i,n)=>i-$t.BounceEaseOut(n-t,0,i,n)+e,BounceEaseInOut:(t,e,i,n)=>ti*(t/=n)*t+e,EaseOut:(t,e,i,n)=>-i*(t/=n)*(t-2)+e,EaseInOut:(t,e,i,n)=>(t/=n/2)<1?i/2*t*t+e:-i/2*(--t*(t-2)-1)+e,StrongEaseIn:(t,e,i,n)=>i*(t/=n)*t*t*t*t+e,StrongEaseOut:(t,e,i,n)=>i*((t=t/n-1)*t*t*t*t+1)+e,StrongEaseInOut:(t,e,i,n)=>(t/=n/2)<1?i/2*t*t*t*t*t+e:i/2*((t-=2)*t*t*t*t+2)+e,Linear:(t,e,i,n)=>i*t/n+e},Zt=g._assign(i,{Util:g,Transform:s,Node:V,Container:Q,Stage:Gt,stages:Mt,Layer:Wt,FastLayer:Yt,Group:Xt,DD:E,Shape:Nt,shapes:Bt,Animation:qt,Tween:Jt,Easings:$t,Context:P,Canvas:M});class te extends Nt{_sceneFunc(t){const e=i.getAngle(this.angle()),n=this.clockwise();t.beginPath(),t.arc(0,0,this.outerRadius(),0,e,n),t.arc(0,0,this.innerRadius(),e,0,!n),t.closePath(),t.fillStrokeShape(this)}getWidth(){return 2*this.outerRadius()}getHeight(){return 2*this.outerRadius()}setWidth(t){this.outerRadius(t/2)}setHeight(t){this.outerRadius(t/2)}getSelfRect(){const t=this.innerRadius(),e=this.outerRadius(),n=this.clockwise(),s=i.getAngle(n?360-this.angle():this.angle()),r=Math.cos(Math.min(s,Math.PI)),a=Math.sin(Math.min(Math.max(Math.PI,s),3*Math.PI/2)),o=Math.sin(Math.min(s,Math.PI/2)),h=r*(r>0?t:e),l=a*(a>0?t:e),d=o*(o>0?e:t);return{x:h,y:n?-1*d:l,width:1*e-h,height:d-l}}}function ee(t,e,i,n,s,r,a){const o=Math.sqrt(Math.pow(i-t,2)+Math.pow(n-e,2)),h=Math.sqrt(Math.pow(s-i,2)+Math.pow(r-n,2)),l=a*o/(o+h),d=a*h/(o+h);return[i-l*(s-t),n-l*(r-e),i+d*(s-t),n+d*(r-e)]}function ie(t,e){const i=t.length,n=[];for(let s=2;s4){for(e=this.getTensionPoints(),i=e.length,n=o?0:4,o||t.quadraticCurveTo(e[0],e[1],e[2],e[3]);n{let n,s;const r=i/2;n=0;for(let i=0;i<20;i++)s=r*se[20][i]+r,n+=re[20][i]*le(t,e,s);return r*n},he=(t,e,i)=>{void 0===i&&(i=1);const n=t[0]-2*t[1]+t[2],s=e[0]-2*e[1]+e[2],r=2*t[1]-2*t[0],a=2*e[1]-2*e[0],o=4*(n*n+s*s),h=4*(n*r+s*a),l=r*r+a*a;if(0===o)return i*Math.sqrt(Math.pow(t[2]-t[0],2)+Math.pow(e[2]-e[0],2));const d=h/(2*o),c=i+d,g=l/o-d*d,u=c*c+g>0?Math.sqrt(c*c+g):0,f=d*d+g>0?Math.sqrt(d*d+g):0,p=d+Math.sqrt(d*d+g)!==0?g*Math.log(Math.abs((c+u)/(d+f))):0;return Math.sqrt(o)/2*(c*u-d*f+p)};function le(t,e,i){const n=de(1,i,t),s=de(1,i,e),r=n*n+s*s;return Math.sqrt(r)}const de=(t,e,i)=>{const n=i.length-1;let s,r;if(0===n)return 0;if(0===t){r=0;for(let t=0;t<=n;t++)r+=ae[n][t]*Math.pow(1-e,n-t)*Math.pow(e,t)*i[t];return r}s=new Array(n);for(let t=0;t{let n=1,s=t/e,r=(t-i(s))/e,a=0;for(;n>.001;){const o=i(s+r),h=Math.abs(t-o)/e;if(h500)break}return s};class ge extends Nt{constructor(t){super(t),this.dataArray=[],this.pathLength=0,this._readDataAttribute(),this.on("dataChange.konva",(function(){this._readDataAttribute()}))}_readDataAttribute(){this.dataArray=ge.parsePathData(this.data()),this.pathLength=ge.getPathLength(this.dataArray)}_sceneFunc(t){const e=this.dataArray;t.beginPath();let i=!1;for(let f=0;fa?r:a,g=r>a?1:r/a,u=r>a?a/r:1;t.translate(n,s),t.rotate(l),t.scale(g,u),t.arc(0,0,c,o,o+h,1-d),t.scale(1/g,1/u),t.rotate(-l),t.translate(-n,-s);break;case"z":i=!0,t.closePath()}}i||this.hasFill()?t.fillStrokeShape(this):t.strokeShape(this)}getSelfRect(){let t=[];this.dataArray.forEach((function(e){if("A"===e.command){const i=e.points[4],n=e.points[5],s=e.points[4]+n;let r=Math.PI/180;if(Math.abs(i-s)s;n-=r){const i=ge.getPointOnEllipticalArc(e.points[0],e.points[1],e.points[2],e.points[3],n,0);t.push(i.x,i.y)}else for(let n=i+r;ne[n].pathLength;)t-=e[n].pathLength,++n;if(n===s)return i=e[n-1].points.slice(-2),{x:i[0],y:i[1]};if(t<.01)return i=e[n].points.slice(0,2),{x:i[0],y:i[1]};const r=e[n],a=r.points;switch(r.command){case"L":return ge.getPointOnLine(t,r.start.x,r.start.y,a[0],a[1]);case"C":return ge.getPointOnCubicBezier(ce(t,ge.getPathLength(e),(t=>oe([r.start.x,a[0],a[2],a[4]],[r.start.y,a[1],a[3],a[5]],t))),r.start.x,r.start.y,a[0],a[1],a[2],a[3],a[4],a[5]);case"Q":return ge.getPointOnQuadraticBezier(ce(t,ge.getPathLength(e),(t=>he([r.start.x,a[0],a[2]],[r.start.y,a[1],a[3]],t))),r.start.x,r.start.y,a[0],a[1],a[2],a[3]);case"A":var o=a[0],h=a[1],l=a[2],d=a[3],c=a[4],g=a[5],u=a[6];return c+=g*t/r.pathLength,ge.getPointOnEllipticalArc(o,h,l,d,c,u)}return null}static getPointOnLine(t,e,i,n,s,r,a){r=null!=r?r:e,a=null!=a?a:i;const o=this.getLineLength(e,i,n,s);if(o<1e-10)return{x:e,y:i};if(n===e)return{x:r,y:a+(s>i?t:-t)};const h=(s-i)/(n-e),l=Math.sqrt(t*t/(1+h*h))*(n0&&!isNaN(i[0]);){let t="",n=[];const s=o,a=h;var c,g,u,f,p,m,_,y,v,x;switch(e){case"l":o+=i.shift(),h+=i.shift(),t="L",n.push(o,h);break;case"L":o=i.shift(),h=i.shift(),n.push(o,h);break;case"m":var b=i.shift(),S=i.shift();if(o+=b,h+=S,t="M",r.length>2&&"z"===r[r.length-1].command)for(let t=r.length-2;t>=0;t--)if("M"===r[t].command){o=r[t].points[0]+b,h=r[t].points[1]+S;break}n.push(o,h),e="l";break;case"M":o=i.shift(),h=i.shift(),t="M",n.push(o,h),e="L";break;case"h":o+=i.shift(),t="L",n.push(o,h);break;case"H":o=i.shift(),t="L",n.push(o,h);break;case"v":h+=i.shift(),t="L",n.push(o,h);break;case"V":h=i.shift(),t="L",n.push(o,h);break;case"C":n.push(i.shift(),i.shift(),i.shift(),i.shift()),o=i.shift(),h=i.shift(),n.push(o,h);break;case"c":n.push(o+i.shift(),h+i.shift(),o+i.shift(),h+i.shift()),o+=i.shift(),h+=i.shift(),t="C",n.push(o,h);break;case"S":g=o,u=h,"C"===(c=r[r.length-1]).command&&(g=o+(o-c.points[2]),u=h+(h-c.points[3])),n.push(g,u,i.shift(),i.shift()),o=i.shift(),h=i.shift(),t="C",n.push(o,h);break;case"s":g=o,u=h,"C"===(c=r[r.length-1]).command&&(g=o+(o-c.points[2]),u=h+(h-c.points[3])),n.push(g,u,o+i.shift(),h+i.shift()),o+=i.shift(),h+=i.shift(),t="C",n.push(o,h);break;case"Q":n.push(i.shift(),i.shift()),o=i.shift(),h=i.shift(),n.push(o,h);break;case"q":n.push(o+i.shift(),h+i.shift()),o+=i.shift(),h+=i.shift(),t="Q",n.push(o,h);break;case"T":g=o,u=h,"Q"===(c=r[r.length-1]).command&&(g=o+(o-c.points[0]),u=h+(h-c.points[1])),o=i.shift(),h=i.shift(),t="Q",n.push(g,u,o,h);break;case"t":g=o,u=h,"Q"===(c=r[r.length-1]).command&&(g=o+(o-c.points[0]),u=h+(h-c.points[1])),o+=i.shift(),h+=i.shift(),t="Q",n.push(g,u,o,h);break;case"A":f=i.shift(),p=i.shift(),m=i.shift(),_=i.shift(),y=i.shift(),v=o,x=h,o=i.shift(),h=i.shift(),t="A",n=this.convertEndpointToCenterParameterization(v,x,o,h,_,y,f,p,m);break;case"a":f=i.shift(),p=i.shift(),m=i.shift(),_=i.shift(),y=i.shift(),v=o,x=h,o+=i.shift(),h+=i.shift(),t="A",n=this.convertEndpointToCenterParameterization(v,x,o,h,_,y,f,p,m)}r.push({command:t||e,points:n,start:{x:s,y:a},pathLength:this.calcLength(s,a,t||e,n)})}"z"!==e&&"Z"!==e||r.push({command:"z",points:[],start:void 0,pathLength:0})}return r}static calcLength(t,e,i,n){let s,r,a,o;const h=ge;switch(i){case"L":return h.getLineLength(t,e,n[0],n[1]);case"C":return oe([t,n[0],n[2],n[4]],[e,n[1],n[3],n[5]],1);case"Q":return he([t,n[0],n[2]],[e,n[1],n[3]],1);case"A":s=0;var l=n[4],d=n[5],c=n[4]+d,g=Math.PI/180;if(Math.abs(l-c)c;o-=g)a=h.getPointOnEllipticalArc(n[0],n[1],n[2],n[3],o,0),s+=h.getLineLength(r.x,r.y,a.x,a.y),r=a;else for(o=l+g;o1&&(a*=Math.sqrt(g),o*=Math.sqrt(g));let u=Math.sqrt((a*a*(o*o)-a*a*(c*c)-o*o*(d*d))/(a*a*(c*c)+o*o*(d*d)));s===r&&(u*=-1),isNaN(u)&&(u=0);const f=u*a*c/o,p=u*-o*d/a,m=(t+i)/2+Math.cos(l)*f-Math.sin(l)*p,_=(e+n)/2+Math.sin(l)*f+Math.cos(l)*p,y=function(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])},v=function(t,e){return(t[0]*e[0]+t[1]*e[1])/(y(t)*y(e))},x=function(t,e){return(t[0]*e[1]=1&&(C=0),0===r&&C>0&&(C-=2*Math.PI),1===r&&C<0&&(C+=2*Math.PI),[m,_,a,o,b,C,l,r]}}ge.prototype.className="Path",ge.prototype._attrsAffectingSize=["data"],n(ge),w.addGetterSetter(ge,"data");class ue extends ne{_sceneFunc(t){super._sceneFunc(t);const e=2*Math.PI,i=this.points();let n=i;const s=0!==this.tension()&&i.length>4;s&&(n=this.getTensionPoints());const r=this.pointerLength(),a=i.length;let o,h;if(s){const t=[n[n.length-4],n[n.length-3],n[n.length-2],n[n.length-1],i[a-2],i[a-1]],e=ge.calcLength(n[n.length-4],n[n.length-3],"C",t),s=ge.getPointOnQuadraticBezier(Math.min(1,1-r/e),t[0],t[1],t[2],t[3],t[4],t[5]);o=i[a-2]-s.x,h=i[a-1]-s.y}else o=i[a-2]-i[a-4],h=i[a-1]-i[a-3];const l=(Math.atan2(h,o)+e)%e,d=this.pointerWidth();this.pointerAtEnding()&&(t.save(),t.beginPath(),t.translate(i[a-2],i[a-1]),t.rotate(l),t.moveTo(0,0),t.lineTo(-r,d/2),t.lineTo(-r,-d/2),t.closePath(),t.restore(),this.__fillStroke(t)),this.pointerAtBeginning()&&(t.save(),t.beginPath(),t.translate(i[0],i[1]),s?(o=(n[0]+n[2])/2-i[0],h=(n[1]+n[3])/2-i[1]):(o=i[2]-i[0],h=i[3]-i[1]),t.rotate((Math.atan2(-h,-o)+e)%e),t.moveTo(0,0),t.lineTo(-r,d/2),t.lineTo(-r,-d/2),t.closePath(),t.restore(),this.__fillStroke(t))}__fillStroke(t){const e=this.dashEnabled();e&&(this.attrs.dashEnabled=!1,t.setLineDash([])),t.fillStrokeShape(this),e&&(this.attrs.dashEnabled=!0)}getSelfRect(){const t=super.getSelfRect(),e=this.pointerWidth()/2;return{x:t.x,y:t.y-e,width:t.width,height:t.height+2*e}}}ue.prototype.className="Arrow",n(ue),w.addGetterSetter(ue,"pointerLength",10,p()),w.addGetterSetter(ue,"pointerWidth",10,p()),w.addGetterSetter(ue,"pointerAtBeginning",!1),w.addGetterSetter(ue,"pointerAtEnding",!0);class fe extends Nt{_sceneFunc(t){t.beginPath(),t.arc(0,0,this.attrs.radius||0,0,2*Math.PI,!1),t.closePath(),t.fillStrokeShape(this)}getWidth(){return 2*this.radius()}getHeight(){return 2*this.radius()}setWidth(t){this.radius()!==t/2&&this.radius(t/2)}setHeight(t){this.radius()!==t/2&&this.radius(t/2)}}fe.prototype._centroid=!0,fe.prototype.className="Circle",fe.prototype._attrsAffectingSize=["radius"],n(fe),w.addGetterSetter(fe,"radius",0,p());class pe extends Nt{_sceneFunc(t){const e=this.radiusX(),i=this.radiusY();t.beginPath(),t.save(),e!==i&&t.scale(1,i/e),t.arc(0,0,e,0,2*Math.PI,!1),t.restore(),t.closePath(),t.fillStrokeShape(this)}getWidth(){return 2*this.radiusX()}getHeight(){return 2*this.radiusY()}setWidth(t){this.radiusX(t/2)}setHeight(t){this.radiusY(t/2)}}pe.prototype.className="Ellipse",pe.prototype._centroid=!0,pe.prototype._attrsAffectingSize=["radiusX","radiusY"],n(pe),w.addComponentsGetterSetter(pe,"radius",["x","y"]),w.addGetterSetter(pe,"radiusX",0,p()),w.addGetterSetter(pe,"radiusY",0,p());class me extends Nt{constructor(t){super(t),this._loadListener=()=>{this._requestDraw()},this.on("imageChange.konva",(t=>{this._removeImageLoad(t.oldVal),this._setImageLoad()})),this._setImageLoad()}_setImageLoad(){const t=this.image();t&&t.complete||t&&4===t.readyState||t&&t.addEventListener&&t.addEventListener("load",this._loadListener)}_removeImageLoad(t){t&&t.removeEventListener&&t.removeEventListener("load",this._loadListener)}destroy(){return this._removeImageLoad(this.image()),super.destroy(),this}_useBufferCanvas(){const t=!!this.cornerRadius(),e=this.hasShadow();return!(!t||!e)||super._useBufferCanvas(!0)}_sceneFunc(t){const e=this.getWidth(),i=this.getHeight(),n=this.cornerRadius(),s=this.attrs.image;let r;if(s){const t=this.attrs.cropWidth,n=this.attrs.cropHeight;r=t&&n?[s,this.cropX(),this.cropY(),t,n,0,0,e,i]:[s,0,0,e,i]}(this.hasFill()||this.hasStroke()||n)&&(t.beginPath(),n?g.drawRoundedRectPath(t,e,i,n):t.rect(0,0,e,i),t.closePath(),t.fillStrokeShape(this)),s&&(n&&t.clip(),t.drawImage.apply(t,r))}_hitFunc(t){const e=this.width(),i=this.height(),n=this.cornerRadius();t.beginPath(),n?g.drawRoundedRectPath(t,e,i,n):t.rect(0,0,e,i),t.closePath(),t.fillStrokeShape(this)}getWidth(){var t,e;return null!==(t=this.attrs.width)&&void 0!==t?t:null===(e=this.image())||void 0===e?void 0:e.width}getHeight(){var t,e;return null!==(t=this.attrs.height)&&void 0!==t?t:null===(e=this.image())||void 0===e?void 0:e.height}static fromURL(t,e,i=null){const n=g.createImageElement();n.onload=function(){const t=new me({image:n});e(t)},n.onerror=i,n.crossOrigin="Anonymous",n.src=t}}me.prototype.className="Image",n(me),w.addGetterSetter(me,"cornerRadius",0,m(4)),w.addGetterSetter(me,"image"),w.addComponentsGetterSetter(me,"crop",["x","y","width","height"]),w.addGetterSetter(me,"cropX",0,p()),w.addGetterSetter(me,"cropY",0,p()),w.addGetterSetter(me,"cropWidth",0,p()),w.addGetterSetter(me,"cropHeight",0,p());const _e=["fontFamily","fontSize","fontStyle","padding","lineHeight","text","width","height","pointerDirection","pointerWidth","pointerHeight"],ye="up",ve="right",xe="down",be="left",Se=_e.length;class we extends Xt{constructor(t){super(t),this.on("add.konva",(function(t){this._addListeners(t.child),this._sync()}))}getText(){return this.find("Text")[0]}getTag(){return this.find("Tag")[0]}_addListeners(t){let e,i=this;const n=function(){i._sync()};for(e=0;e{e=Math.min(e,t.x),i=Math.max(i,t.x),n=Math.min(n,t.y),s=Math.max(s,t.y)})),{x:e,y:n,width:i-e,height:s-n}}getWidth(){return 2*this.radius()}getHeight(){return 2*this.radius()}setWidth(t){this.radius(t/2)}setHeight(t){this.radius(t/2)}}ke.prototype.className="RegularPolygon",ke.prototype._centroid=!0,ke.prototype._attrsAffectingSize=["radius"],n(ke),w.addGetterSetter(ke,"radius",0,p()),w.addGetterSetter(ke,"sides",0,p());const Ae=2*Math.PI;class Te extends Nt{_sceneFunc(t){t.beginPath(),t.arc(0,0,this.innerRadius(),0,Ae,!1),t.moveTo(this.outerRadius(),0),t.arc(0,0,this.outerRadius(),Ae,0,!0),t.closePath(),t.fillStrokeShape(this)}getWidth(){return 2*this.outerRadius()}getHeight(){return 2*this.outerRadius()}setWidth(t){this.outerRadius(t/2)}setHeight(t){this.outerRadius(t/2)}}Te.prototype.className="Ring",Te.prototype._centroid=!0,Te.prototype._attrsAffectingSize=["innerRadius","outerRadius"],n(Te),w.addGetterSetter(Te,"innerRadius",0,p()),w.addGetterSetter(Te,"outerRadius",0,p());class Me extends Nt{constructor(t){super(t),this._updated=!0,this.anim=new qt((()=>{const t=this._updated;return this._updated=!1,t})),this.on("animationChange.konva",(function(){this.frameIndex(0)})),this.on("frameIndexChange.konva",(function(){this._updated=!0})),this.on("frameRateChange.konva",(function(){this.anim.isRunning()&&(clearInterval(this.interval),this._setInterval())}))}_sceneFunc(t){const e=this.animation(),i=this.frameIndex(),n=4*i,s=this.animations()[e],r=this.frameOffsets(),a=s[n+0],o=s[n+1],h=s[n+2],l=s[n+3],d=this.image();if((this.hasFill()||this.hasStroke())&&(t.beginPath(),t.rect(0,0,h,l),t.closePath(),t.fillStrokeShape(this)),d)if(r){const n=r[e],s=2*i;t.drawImage(d,a,o,h,l,n[s+0],n[s+1],h,l)}else t.drawImage(d,a,o,h,l,0,0,h,l)}_hitFunc(t){const e=this.animation(),i=this.frameIndex(),n=4*i,s=this.animations()[e],r=this.frameOffsets(),a=s[n+2],o=s[n+3];if(t.beginPath(),r){const n=r[e],s=2*i;t.rect(n[s+0],n[s+1],a,o)}else t.rect(0,0,a,o);t.closePath(),t.fillShape(this)}_useBufferCanvas(){return super._useBufferCanvas(!0)}_setInterval(){const t=this;this.interval=setInterval((function(){t._updateIndex()}),1e3/this.frameRate())}start(){if(this.isRunning())return;const t=this.getLayer();this.anim.setLayers(t),this._setInterval(),this.anim.start()}stop(){this.anim.stop(),clearInterval(this.interval)}isRunning(){return this.anim.isRunning()}_updateIndex(){const t=this.frameIndex(),e=this.animation();t{if(/\p{Emoji}/u.test(e)){const s=n[i+1];s&&/\p{Emoji_Modifier}|\u200D/u.test(s)?(t.push(e+s),n[i+1]=""):t.push(e)}else/\p{Regional_Indicator}{2}/u.test(e+(n[i+1]||""))?t.push(e+n[i+1]):i>0&&/\p{Mn}|\p{Me}|\p{Mc}/u.test(e)?t[t.length-1]+=e:e&&t.push(e);return t}),[])}Ge.prototype.className="Star",Ge.prototype._centroid=!0,Ge.prototype._attrsAffectingSize=["innerRadius","outerRadius"],n(Ge),w.addGetterSetter(Ge,"numPoints",5,p()),w.addGetterSetter(Ge,"innerRadius",0,p()),w.addGetterSetter(Ge,"outerRadius",0,p());const Ee="auto",De="inherit",Le="justify",Ie="left",Oe="middle",Fe="normal",Be=" ",Ne="none",He=["direction","fontFamily","fontSize","fontStyle","fontVariant","padding","align","verticalAlign","lineHeight","text","width","height","wrap","ellipsis","letterSpacing"],ze=He.length;let We;function Ye(){return We||(We=g.createCanvasElement().getContext("2d"),We)}class Xe extends Nt{constructor(t){super(function(t){return(t=t||{}).fillLinearGradientColorStops||t.fillRadialGradientColorStops||t.fillPatternImage||(t.fill=t.fill||"black"),t}(t)),this._partialTextX=0,this._partialTextY=0;for(let t=0;t1&&(y+=o)}}_hitFunc(t){const e=this.getWidth(),i=this.getHeight();t.beginPath(),t.rect(0,0,e,i),t.closePath(),t.fillStrokeShape(this)}setText(t){const e=g._isString(t)?t:null==t?"":t+"";return this._setAttr("text",e),this}getWidth(){return this.attrs.width===Ee||void 0===this.attrs.width?this.getTextWidth()+2*this.padding():this.attrs.width}getHeight(){return this.attrs.height===Ee||void 0===this.attrs.height?this.fontSize()*this.textArr.length*this.lineHeight()+2*this.padding():this.attrs.height}getTextWidth(){return this.textWidth}getTextHeight(){return g.warn("text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height."),this.textHeight}measureSize(t){var e,i,n,s,r,a,o,h,l,d,c;let g,u=Ye(),f=this.fontSize();u.save(),u.font=this._getContextFont(),g=u.measureText(t),u.restore();const p=f/100;return{actualBoundingBoxAscent:null!==(e=g.actualBoundingBoxAscent)&&void 0!==e?e:71.58203125*p,actualBoundingBoxDescent:null!==(i=g.actualBoundingBoxDescent)&&void 0!==i?i:0,actualBoundingBoxLeft:null!==(n=g.actualBoundingBoxLeft)&&void 0!==n?n:-7.421875*p,actualBoundingBoxRight:null!==(s=g.actualBoundingBoxRight)&&void 0!==s?s:75.732421875*p,alphabeticBaseline:null!==(r=g.alphabeticBaseline)&&void 0!==r?r:0,emHeightAscent:null!==(a=g.emHeightAscent)&&void 0!==a?a:100*p,emHeightDescent:null!==(o=g.emHeightDescent)&&void 0!==o?o:-20*p,fontBoundingBoxAscent:null!==(h=g.fontBoundingBoxAscent)&&void 0!==h?h:91*p,fontBoundingBoxDescent:null!==(l=g.fontBoundingBoxDescent)&&void 0!==l?l:21*p,hangingBaseline:null!==(d=g.hangingBaseline)&&void 0!==d?d:72.80000305175781*p,ideographicBaseline:null!==(c=g.ideographicBaseline)&&void 0!==c?c:-21*p,width:g.width,height:f}}_getContextFont(){return this.fontStyle()+Be+this.fontVariant()+Be+(this.fontSize()+"px ")+this.fontFamily().split(",").map((t=>{const e=(t=t.trim()).indexOf(" ")>=0,i=t.indexOf('"')>=0||t.indexOf("'")>=0;return e&&!i&&(t=`"${t}"`),t})).join(", ")}_addTextLine(t){this.align()===Le&&(t=t.trim());const e=this._getTextWidth(t);return this.textArr.push({text:t,width:e,lastInParagraph:!1})}_getTextWidth(t){const e=this.letterSpacing(),i=t.length;return Ye().measureText(t).width+e*i}_setTextData(){let t=this.text().split("\n"),e=+this.fontSize(),i=0,n=this.lineHeight()*e,s=this.attrs.width,r=this.attrs.height,a=s!==Ee&&void 0!==s,o=r!==Ee&&void 0!==r,h=this.padding(),l=s-2*h,d=r-2*h,c=0,g=this.wrap(),u="char"!==g&&g!==Ne,f=this.ellipsis();this.textArr=[],Ye().font=this._getContextFont();const p=f?this._getTextWidth("…"):0;for(let e=0,s=t.length;el)for(;r.length>0;){let t=0,e=Re(r).length,s="",a=0;for(;t>>1,h=Re(r).slice(0,i+1).join(""),g=this._getTextWidth(h);(f&&o&&c+n>d?g+p:g)<=l?(t=i+1,s=h,a=g):e=i}if(!s)break;if(u){const e=Re(r),i=Re(s),n=e[i.length];let o;if((n===Be||"-"===n)&&a<=l)o=i.length;else{const t=i.lastIndexOf(Be),e=i.lastIndexOf("-");o=Math.max(t,e)+1}o>0&&(t=o,s=e.slice(0,t).join(""),a=this._getTextWidth(s))}s=s.trimRight(),this._addTextLine(s),i=Math.max(i,a),c+=n;if(this._shouldHandleEllipsis(c)){this._tryToAddEllipsisToLastLine();break}if(r=Re(r).slice(t).join("").trimLeft(),r.length>0&&(h=this._getTextWidth(r),h<=l)){this._addTextLine(r),c+=n,i=Math.max(i,h);break}}else this._addTextLine(r),c+=n,i=Math.max(i,h),this._shouldHandleEllipsis(c)&&ed)break}this.textHeight=e,this.textWidth=i}_shouldHandleEllipsis(t){const e=+this.fontSize(),i=this.lineHeight()*e,n=this.attrs.height,s=n!==Ee&&void 0!==n,r=n-2*this.padding();return!(this.wrap()!==Ne)||s&&t+i>r}_tryToAddEllipsisToLastLine(){const t=this.attrs.width,e=t!==Ee&&void 0!==t,i=t-2*this.padding(),n=this.ellipsis(),s=this.textArr[this.textArr.length-1];if(s&&n){if(e){this._getTextWidth(s.text+"…")this.pathLength?null:ge.getPointAtLengthOfDataArray(t,this.dataArray)}_readDataAttribute(){this.dataArray=ge.parsePathData(this.attrs.data),this.pathLength=this._getTextPathLength()}_sceneFunc(t){t.setAttr("font",this._getContextFont()),t.setAttr("textBaseline",this.textBaseline()),t.setAttr("textAlign","left"),t.save();const e=this.textDecoration(),i=this.fill(),n=this.fontSize(),s=this.glyphInfo;"underline"===e&&t.beginPath();for(let i=0;i=1){const i=e[0].p0;t.moveTo(i.x,i.y)}for(let i=0;it+`.${Ke}`)).join(" "),Je="nodesRect",$e=["widthChange","heightChange","scaleXChange","scaleYChange","skewXChange","skewYChange","rotationChange","offsetXChange","offsetYChange","transformsEnabledChange","strokeWidthChange"],Ze={"top-left":-45,"top-center":0,"top-right":45,"middle-right":-90,"middle-left":90,"bottom-left":-135,"bottom-center":180,"bottom-right":135},ti="ontouchstart"in i._global;const ei=["top-left","top-center","top-right","middle-right","middle-left","bottom-left","bottom-center","bottom-right"];function ii(t,e,i){const n=i.x+(t.x-i.x)*Math.cos(e)-(t.y-i.y)*Math.sin(e),s=i.y+(t.x-i.x)*Math.sin(e)+(t.y-i.y)*Math.cos(e);return{...t,rotation:t.rotation+e,x:n,y:s}}function ni(t,e){const i=function(t){return{x:t.x+t.width/2*Math.cos(t.rotation)+t.height/2*Math.sin(-t.rotation),y:t.y+t.height/2*Math.cos(t.rotation)+t.width/2*Math.sin(t.rotation)}}(t);return ii(t,e,i)}let si=0;class ri extends Xt{constructor(t){super(t),this._movingAnchorName=null,this._transforming=!1,this._createElements(),this._handleMouseMove=this._handleMouseMove.bind(this),this._handleMouseUp=this._handleMouseUp.bind(this),this.update=this.update.bind(this),this.on(Qe,this.update),this.getNode()&&this.update()}attachTo(t){return this.setNode(t),this}setNode(t){return g.warn("tr.setNode(shape), tr.node(shape) and tr.attachTo(shape) methods are deprecated. Please use tr.nodes(nodesArray) instead."),this.setNodes([t])}getNode(){return this._nodes&&this._nodes[0]}_getEventNamespace(){return Ke+this._id}setNodes(t=[]){this._nodes&&this._nodes.length&&this.detach();const e=t.filter((t=>!t.isAncestorOf(this)||(g.error("Konva.Transformer cannot be an a child of the node you are trying to attach"),!1)));this._nodes=t=e,1===t.length&&this.useSingleNodeRotation()?this.rotation(t[0].getAbsoluteRotation()):this.rotation(0),this._nodes.forEach((t=>{const e=()=>{1===this.nodes().length&&this.useSingleNodeRotation()&&this.rotation(this.nodes()[0].getAbsoluteRotation()),this._resetTransformCache(),this._transforming||this.isDragging()||this.update()};if(t._attrsAffectingSize.length){const i=t._attrsAffectingSize.map((t=>t+"Change."+this._getEventNamespace())).join(" ");t.on(i,e)}t.on($e.map((t=>t+`.${this._getEventNamespace()}`)).join(" "),e),t.on(`absoluteTransformChange.${this._getEventNamespace()}`,e),this._proxyDrag(t)})),this._resetTransformCache();return!!this.findOne(".top-left")&&this.update(),this}_proxyDrag(t){let e;t.on(`dragstart.${this._getEventNamespace()}`,(i=>{e=t.getAbsolutePosition(),this.isDragging()||t===this.findOne(".back")||this.startDrag(i,!1)})),t.on(`dragmove.${this._getEventNamespace()}`,(i=>{if(!e)return;const n=t.getAbsolutePosition(),s=n.x-e.x,r=n.y-e.y;this.nodes().forEach((e=>{if(e===t)return;if(e.isDragging())return;const n=e.getAbsolutePosition();e.setAbsolutePosition({x:n.x+s,y:n.y+r}),e.startDrag(i)})),e=null}))}getNodes(){return this._nodes||[]}getActiveAnchor(){return this._movingAnchorName}detach(){this._nodes&&this._nodes.forEach((t=>{t.off("."+this._getEventNamespace())})),this._nodes=[],this._resetTransformCache()}_resetTransformCache(){this._clearCache(Je),this._clearCache("transform"),this._clearSelfAndDescendantCache("absoluteTransform")}_getNodeRect(){return this._getCache(Je,this.__getNodeRect)}__getNodeShape(t,e=this.rotation(),n){const s=t.getClientRect({skipTransform:!0,skipShadow:!0,skipStroke:this.ignoreStroke()}),r=t.getAbsoluteScale(n),a=t.getAbsolutePosition(n),o=s.x*r.x-t.offsetX()*r.x,h=s.y*r.y-t.offsetY()*r.y,l=(i.getAngle(t.getAbsoluteRotation())+2*Math.PI)%(2*Math.PI);return ii({x:a.x+o*Math.cos(l)+h*Math.sin(-l),y:a.y+h*Math.cos(l)+o*Math.sin(l),width:s.width*r.x,height:s.height*r.y,rotation:l},-i.getAngle(e),{x:0,y:0})}__getNodeRect(){if(!this.getNode())return{x:-1e8,y:-1e8,width:0,height:0,rotation:0};const t=[];this.nodes().map((e=>{const i=e.getClientRect({skipTransform:!0,skipShadow:!0,skipStroke:this.ignoreStroke()}),n=[{x:i.x,y:i.y},{x:i.x+i.width,y:i.y},{x:i.x+i.width,y:i.y+i.height},{x:i.x,y:i.y+i.height}],s=e.getAbsoluteTransform();n.forEach((function(e){const i=s.point(e);t.push(i)}))}));const e=new s;e.rotate(-i.getAngle(this.rotation()));let n=1/0,r=1/0,a=-1/0,o=-1/0;t.forEach((function(t){const i=e.point(t);void 0===n&&(n=a=i.x,r=o=i.y),n=Math.min(n,i.x),r=Math.min(r,i.y),a=Math.max(a,i.x),o=Math.max(o,i.y)})),e.invert();const h=e.point({x:n,y:r});return{x:h.x,y:h.y,width:a-n,height:o-r,rotation:i.getAngle(this.rotation())}}getX(){return this._getNodeRect().x}getY(){return this._getNodeRect().y}getWidth(){return this._getNodeRect().width}getHeight(){return this._getNodeRect().height}_createElements(){this._createBack(),ei.forEach((t=>{this._createAnchor(t)})),this._createAnchor("rotater")}_createAnchor(t){const e=new Pe({stroke:"rgb(0, 161, 255)",fill:"white",strokeWidth:1,name:t+" _anchor",dragDistance:0,draggable:!0,hitStrokeWidth:ti?10:"auto"}),n=this;e.on("mousedown touchstart",(function(t){n._handleMouseDown(t)})),e.on("dragstart",(t=>{e.stopDrag(),t.cancelBubble=!0})),e.on("dragend",(t=>{t.cancelBubble=!0})),e.on("mouseenter",(()=>{const n=i.getAngle(this.rotation()),s=this.rotateAnchorCursor(),r=function(t,e,i){if("rotater"===t)return i;e+=g.degToRad(Ze[t]||0);const n=(g.radToDeg(e)%360+360)%360;return g._inRange(n,337.5,360)||g._inRange(n,0,22.5)?"ns-resize":g._inRange(n,22.5,67.5)?"nesw-resize":g._inRange(n,67.5,112.5)?"ew-resize":g._inRange(n,112.5,157.5)?"nwse-resize":g._inRange(n,157.5,202.5)?"ns-resize":g._inRange(n,202.5,247.5)?"nesw-resize":g._inRange(n,247.5,292.5)?"ew-resize":g._inRange(n,292.5,337.5)?"nwse-resize":(g.error("Transformer has unknown angle for cursor detection: "+n),"pointer")}(t,n,s);e.getStage().content&&(e.getStage().content.style.cursor=r),this._cursorChange=!0})),e.on("mouseout",(()=>{e.getStage().content&&(e.getStage().content.style.cursor=""),this._cursorChange=!1})),this.add(e)}_createBack(){const t=new Nt({name:"back",width:0,height:0,draggable:!0,sceneFunc(t,e){const i=e.getParent(),n=i.padding();t.beginPath(),t.rect(-n,-n,e.width()+2*n,e.height()+2*n),t.moveTo(e.width()/2,-n),i.rotateEnabled()&&i.rotateLineVisible()&&t.lineTo(e.width()/2,-i.rotateAnchorOffset()*g._sign(e.height())-n),t.fillStrokeShape(e)},hitFunc:(t,e)=>{if(!this.shouldOverdrawWholeArea())return;const i=this.padding();t.beginPath(),t.rect(-i,-i,e.width()+2*i,e.height()+2*i),t.fillStrokeShape(e)}});this.add(t),this._proxyDrag(t),t.on("dragstart",(t=>{t.cancelBubble=!0})),t.on("dragmove",(t=>{t.cancelBubble=!0})),t.on("dragend",(t=>{t.cancelBubble=!0})),this.on("dragmove",(t=>{this.update()}))}_handleMouseDown(t){if(this._transforming)return;this._movingAnchorName=t.target.name().split(" ")[0];const e=this._getNodeRect(),i=e.width,n=e.height,s=Math.sqrt(Math.pow(i,2)+Math.pow(n,2));this.sin=Math.abs(n/s),this.cos=Math.abs(i/s),"undefined"!=typeof window&&(window.addEventListener("mousemove",this._handleMouseMove),window.addEventListener("touchmove",this._handleMouseMove),window.addEventListener("mouseup",this._handleMouseUp,!0),window.addEventListener("touchend",this._handleMouseUp,!0)),this._transforming=!0;const r=t.target.getAbsolutePosition(),a=t.target.getStage().getPointerPosition();this._anchorDragOffset={x:a.x-r.x,y:a.y-r.y},si++,this._fire("transformstart",{evt:t.evt,target:this.getNode()}),this._nodes.forEach((e=>{e._fire("transformstart",{evt:t.evt,target:e})}))}_handleMouseMove(t){let e,n,s;const r=this.findOne("."+this._movingAnchorName),a=r.getStage();a.setPointersPositions(t);const o=a.getPointerPosition();let h={x:o.x-this._anchorDragOffset.x,y:o.y-this._anchorDragOffset.y};const l=r.getAbsolutePosition();this.anchorDragBoundFunc()&&(h=this.anchorDragBoundFunc()(l,h,t)),r.setAbsolutePosition(h);const d=r.getAbsolutePosition();if(l.x===d.x&&l.y===d.y)return;if("rotater"===this._movingAnchorName){const s=this._getNodeRect();e=r.x()-s.width/2,n=-r.y()+s.height/2;let a=Math.atan2(-n,e)+Math.PI/2;s.height<0&&(a-=Math.PI);const o=i.getAngle(this.rotation())+a,h=i.getAngle(this.rotationSnapTolerance()),l=function(t,e,n){let s=e;for(let r=0;rf.x?-1:1,m=this.findOne(".top-left").y()>f.y?-1:1;e=s*this.cos*p,n=s*this.sin*m,this.findOne(".top-left").x(f.x-e),this.findOne(".top-left").y(f.y-n)}}else if("top-center"===this._movingAnchorName)this.findOne(".top-left").y(r.y());else if("top-right"===this._movingAnchorName){if(g){f=u?{x:this.width()/2,y:this.height()/2}:{x:this.findOne(".bottom-left").x(),y:this.findOne(".bottom-left").y()};s=Math.sqrt(Math.pow(r.x()-f.x,2)+Math.pow(f.y-r.y(),2));p=this.findOne(".top-right").x()f.y?-1:1;e=s*this.cos*p,n=s*this.sin*m,this.findOne(".top-right").x(f.x+e),this.findOne(".top-right").y(f.y-n)}var _=r.position();this.findOne(".top-left").y(_.y),this.findOne(".bottom-right").x(_.x)}else if("middle-left"===this._movingAnchorName)this.findOne(".top-left").x(r.x());else if("middle-right"===this._movingAnchorName)this.findOne(".bottom-right").x(r.x());else if("bottom-left"===this._movingAnchorName){if(g){f=u?{x:this.width()/2,y:this.height()/2}:{x:this.findOne(".top-right").x(),y:this.findOne(".top-right").y()};s=Math.sqrt(Math.pow(f.x-r.x(),2)+Math.pow(r.y()-f.y,2));p=f.x{var i;e._fire("transformend",{evt:t,target:e}),null===(i=e.getLayer())||void 0===i||i.batchDraw()})),this._movingAnchorName=null}}_fitNodesInto(t,e){const n=this._getNodeRect();if(g._inRange(t.width,2*-this.padding()-1,1))return void this.update();if(g._inRange(t.height,2*-this.padding()-1,1))return void this.update();const r=new s;if(r.rotate(i.getAngle(this.rotation())),this._movingAnchorName&&t.width<0&&this._movingAnchorName.indexOf("left")>=0){const e=r.point({x:2*-this.padding(),y:0});t.x+=e.x,t.y+=e.y,t.width+=2*this.padding(),this._movingAnchorName=this._movingAnchorName.replace("left","right"),this._anchorDragOffset.x-=e.x,this._anchorDragOffset.y-=e.y}else if(this._movingAnchorName&&t.width<0&&this._movingAnchorName.indexOf("right")>=0){const e=r.point({x:2*this.padding(),y:0});this._movingAnchorName=this._movingAnchorName.replace("right","left"),this._anchorDragOffset.x-=e.x,this._anchorDragOffset.y-=e.y,t.width+=2*this.padding()}if(this._movingAnchorName&&t.height<0&&this._movingAnchorName.indexOf("top")>=0){const e=r.point({x:0,y:2*-this.padding()});t.x+=e.x,t.y+=e.y,this._movingAnchorName=this._movingAnchorName.replace("top","bottom"),this._anchorDragOffset.x-=e.x,this._anchorDragOffset.y-=e.y,t.height+=2*this.padding()}else if(this._movingAnchorName&&t.height<0&&this._movingAnchorName.indexOf("bottom")>=0){const e=r.point({x:0,y:2*this.padding()});this._movingAnchorName=this._movingAnchorName.replace("bottom","top"),this._anchorDragOffset.x-=e.x,this._anchorDragOffset.y-=e.y,t.height+=2*this.padding()}if(this.boundBoxFunc()){const e=this.boundBoxFunc()(n,t);e?t=e:g.warn("boundBoxFunc returned falsy. You should return new bound rect from it!")}const a=1e7,o=new s;o.translate(n.x,n.y),o.rotate(n.rotation),o.scale(n.width/a,n.height/a);const h=new s,l=t.width/a,d=t.height/a;!1===this.flipEnabled()?(h.translate(t.x,t.y),h.rotate(t.rotation),h.translate(t.width<0?t.width:0,t.height<0?t.height:0),h.scale(Math.abs(l),Math.abs(d))):(h.translate(t.x,t.y),h.rotate(t.rotation),h.scale(l,d));const c=h.multiply(o.invert());this._nodes.forEach((t=>{var e;const i=t.getParent().getAbsoluteTransform(),n=t.getTransform().copy();n.translate(t.offsetX(),t.offsetY());const r=new s;r.multiply(i.copy().invert()).multiply(c).multiply(i).multiply(n);const a=r.decompose();t.setAttrs(a),null===(e=t.getLayer())||void 0===e||e.batchDraw()})),this.rotation(g._getRotation(t.rotation)),this._nodes.forEach((t=>{this._fire("transform",{evt:e,target:t}),t._fire("transform",{evt:e,target:t})})),this._resetTransformCache(),this.update(),this.getLayer().batchDraw()}forceUpdate(){this._resetTransformCache(),this.update()}_batchChangeChild(t,e){this.findOne(t).setAttrs(e)}update(){var t;const e=this._getNodeRect();this.rotation(g._getRotation(e.rotation));const i=e.width,n=e.height,s=this.enabledAnchors(),r=this.resizeEnabled(),a=this.padding(),o=this.anchorSize(),h=this.find("._anchor");h.forEach((t=>{t.setAttrs({width:o,height:o,offsetX:o/2,offsetY:o/2,stroke:this.anchorStroke(),strokeWidth:this.anchorStrokeWidth(),fill:this.anchorFill(),cornerRadius:this.anchorCornerRadius()})})),this._batchChangeChild(".top-left",{x:0,y:0,offsetX:o/2+a,offsetY:o/2+a,visible:r&&s.indexOf("top-left")>=0}),this._batchChangeChild(".top-center",{x:i/2,y:0,offsetY:o/2+a,visible:r&&s.indexOf("top-center")>=0}),this._batchChangeChild(".top-right",{x:i,y:0,offsetX:o/2-a,offsetY:o/2+a,visible:r&&s.indexOf("top-right")>=0}),this._batchChangeChild(".middle-left",{x:0,y:n/2,offsetX:o/2+a,visible:r&&s.indexOf("middle-left")>=0}),this._batchChangeChild(".middle-right",{x:i,y:n/2,offsetX:o/2-a,visible:r&&s.indexOf("middle-right")>=0}),this._batchChangeChild(".bottom-left",{x:0,y:n,offsetX:o/2+a,offsetY:o/2-a,visible:r&&s.indexOf("bottom-left")>=0}),this._batchChangeChild(".bottom-center",{x:i/2,y:n,offsetY:o/2-a,visible:r&&s.indexOf("bottom-center")>=0}),this._batchChangeChild(".bottom-right",{x:i,y:n,offsetX:o/2-a,offsetY:o/2-a,visible:r&&s.indexOf("bottom-right")>=0}),this._batchChangeChild(".rotater",{x:i/2,y:-this.rotateAnchorOffset()*g._sign(n)-a,visible:this.rotateEnabled()}),this._batchChangeChild(".back",{width:i,height:n,visible:this.borderEnabled(),stroke:this.borderStroke(),strokeWidth:this.borderStrokeWidth(),dash:this.borderDash(),x:0,y:0});const l=this.anchorStyleFunc();l&&h.forEach((t=>{l(t)})),null===(t=this.getLayer())||void 0===t||t.batchDraw()}isTransforming(){return this._transforming}stopTransform(){if(this._transforming){this._removeEvents();const t=this.findOne("."+this._movingAnchorName);t&&t.stopDrag()}}destroy(){return this.getStage()&&this._cursorChange&&this.getStage().content&&(this.getStage().content.style.cursor=""),Xt.prototype.destroy.call(this),this.detach(),this._removeEvents(),this}toObject(){return V.prototype.toObject.call(this)}clone(t){return V.prototype.clone.call(this,t)}getClientRect(){return this.nodes().length>0?super.getClientRect():{x:0,y:0,width:0,height:0}}}ri.isTransforming=()=>si>0,ri.prototype.className="Transformer",n(ri),w.addGetterSetter(ri,"enabledAnchors",ei,(function(t){return t instanceof Array||g.warn("enabledAnchors value should be an array"),t instanceof Array&&t.forEach((function(t){-1===ei.indexOf(t)&&g.warn("Unknown anchor name: "+t+". Available names are: "+ei.join(", "))})),t||[]})),w.addGetterSetter(ri,"flipEnabled",!0,x()),w.addGetterSetter(ri,"resizeEnabled",!0),w.addGetterSetter(ri,"anchorSize",10,p()),w.addGetterSetter(ri,"rotateEnabled",!0),w.addGetterSetter(ri,"rotateLineVisible",!0),w.addGetterSetter(ri,"rotationSnaps",[]),w.addGetterSetter(ri,"rotateAnchorOffset",50,p()),w.addGetterSetter(ri,"rotateAnchorCursor","crosshair"),w.addGetterSetter(ri,"rotationSnapTolerance",5,p()),w.addGetterSetter(ri,"borderEnabled",!0),w.addGetterSetter(ri,"anchorStroke","rgb(0, 161, 255)"),w.addGetterSetter(ri,"anchorStrokeWidth",1,p()),w.addGetterSetter(ri,"anchorFill","white"),w.addGetterSetter(ri,"anchorCornerRadius",0,p()),w.addGetterSetter(ri,"borderStroke","rgb(0, 161, 255)"),w.addGetterSetter(ri,"borderStrokeWidth",1,p()),w.addGetterSetter(ri,"borderDash"),w.addGetterSetter(ri,"keepRatio",!0),w.addGetterSetter(ri,"shiftBehavior","default"),w.addGetterSetter(ri,"centeredScaling",!1),w.addGetterSetter(ri,"ignoreStroke",!1),w.addGetterSetter(ri,"padding",0,p()),w.addGetterSetter(ri,"nodes"),w.addGetterSetter(ri,"node"),w.addGetterSetter(ri,"boundBoxFunc"),w.addGetterSetter(ri,"anchorDragBoundFunc"),w.addGetterSetter(ri,"anchorStyleFunc"),w.addGetterSetter(ri,"shouldOverdrawWholeArea",!1),w.addGetterSetter(ri,"useSingleNodeRotation",!0),w.backCompat(ri,{lineEnabled:"borderEnabled",rotateHandlerOffset:"rotateAnchorOffset",enabledHandlers:"enabledAnchors"});class ai extends Nt{_sceneFunc(t){t.beginPath(),t.arc(0,0,this.radius(),0,i.getAngle(this.angle()),this.clockwise()),t.lineTo(0,0),t.closePath(),t.fillStrokeShape(this)}getWidth(){return 2*this.radius()}getHeight(){return 2*this.radius()}setWidth(t){this.radius(t/2)}setHeight(t){this.radius(t/2)}}function oi(){this.r=0,this.g=0,this.b=0,this.a=0,this.next=null}ai.prototype.className="Wedge",ai.prototype._centroid=!0,ai.prototype._attrsAffectingSize=["radius"],n(ai),w.addGetterSetter(ai,"radius",0,p()),w.addGetterSetter(ai,"angle",0,p()),w.addGetterSetter(ai,"clockwise",!1),w.backCompat(ai,{angleDeg:"angle",getAngleDeg:"getAngle",setAngleDeg:"setAngle"});const hi=[512,512,456,512,328,456,335,512,405,328,271,456,388,335,292,512,454,405,364,328,298,271,496,456,420,388,360,335,312,292,273,512,482,454,428,405,383,364,345,328,312,298,284,271,259,496,475,456,437,420,404,388,374,360,347,335,323,312,302,292,282,273,265,512,497,482,468,454,441,428,417,405,394,383,373,364,354,345,337,328,320,312,305,298,291,284,278,271,265,259,507,496,485,475,465,456,446,437,428,420,412,404,396,388,381,374,367,360,354,347,341,335,329,323,318,312,307,302,297,292,287,282,278,273,269,265,261,512,505,497,489,482,475,468,461,454,447,441,435,428,422,417,411,405,399,394,389,383,378,373,368,364,359,354,350,345,341,337,332,328,324,320,316,312,309,305,301,298,294,291,287,284,281,278,274,271,268,265,262,259,257,507,501,496,491,485,480,475,470,465,460,456,451,446,442,437,433,428,424,420,416,412,408,404,400,396,392,388,385,381,377,374,370,367,363,360,357,354,350,347,344,341,338,335,332,329,326,323,320,318,315,312,310,307,304,302,299,297,294,292,289,287,285,282,280,278,275,273,271,269,267,265,263,261,259],li=[9,11,12,13,13,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24];w.addGetterSetter(V,"blurRadius",0,p(),w.afterSetFilter);w.addGetterSetter(V,"brightness",0,p(),w.afterSetFilter);w.addGetterSetter(V,"contrast",0,p(),w.afterSetFilter);function di(t,e,i,n,s){const r=i-e,a=s-n;if(0===r)return n+a/2;if(0===a)return n;let o=(t-e)/r;return o=a*o+n,o}w.addGetterSetter(V,"embossStrength",.5,p(),w.afterSetFilter),w.addGetterSetter(V,"embossWhiteLevel",.5,p(),w.afterSetFilter),w.addGetterSetter(V,"embossDirection","top-left",void 0,w.afterSetFilter),w.addGetterSetter(V,"embossBlend",!1,void 0,w.afterSetFilter);w.addGetterSetter(V,"enhance",0,p(),w.afterSetFilter);w.addGetterSetter(V,"hue",0,p(),w.afterSetFilter),w.addGetterSetter(V,"saturation",0,p(),w.afterSetFilter),w.addGetterSetter(V,"luminance",0,p(),w.afterSetFilter);w.addGetterSetter(V,"hue",0,p(),w.afterSetFilter),w.addGetterSetter(V,"saturation",0,p(),w.afterSetFilter),w.addGetterSetter(V,"value",0,p(),w.afterSetFilter);function ci(t,e,i){let n=4*(i*t.width+e);const s=[];return s.push(t.data[n++],t.data[n++],t.data[n++],t.data[n++]),s}function gi(t,e){return Math.sqrt(Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2)+Math.pow(t[2]-e[2],2))}w.addGetterSetter(V,"kaleidoscopePower",2,p(),w.afterSetFilter),w.addGetterSetter(V,"kaleidoscopeAngle",0,p(),w.afterSetFilter);w.addGetterSetter(V,"threshold",0,p(),w.afterSetFilter);w.addGetterSetter(V,"noise",.2,p(),w.afterSetFilter);w.addGetterSetter(V,"pixelSize",8,p(),w.afterSetFilter);w.addGetterSetter(V,"levels",.5,p(),w.afterSetFilter);w.addGetterSetter(V,"red",0,(function(t){return this._filterUpToDate=!1,t>255?255:t<0?0:Math.round(t)})),w.addGetterSetter(V,"green",0,(function(t){return this._filterUpToDate=!1,t>255?255:t<0?0:Math.round(t)})),w.addGetterSetter(V,"blue",0,f,w.afterSetFilter);w.addGetterSetter(V,"red",0,(function(t){return this._filterUpToDate=!1,t>255?255:t<0?0:Math.round(t)})),w.addGetterSetter(V,"green",0,(function(t){return this._filterUpToDate=!1,t>255?255:t<0?0:Math.round(t)})),w.addGetterSetter(V,"blue",0,f,w.afterSetFilter),w.addGetterSetter(V,"alpha",1,(function(t){return this._filterUpToDate=!1,t>1?1:t<0?0:t}));w.addGetterSetter(V,"threshold",.5,p(),w.afterSetFilter);return Zt.Util._assign(Zt,{Arc:te,Arrow:ue,Circle:fe,Ellipse:pe,Image:me,Label:we,Tag:Ce,Line:ne,Path:ge,Rect:Pe,RegularPolygon:ke,Ring:Te,Sprite:Me,Star:Ge,Text:Xe,TextPath:Ve,Transformer:ri,Wedge:ai,Filters:{Blur:function(t){const e=Math.round(this.blurRadius());e>0&&function(t,e){const i=t.data,n=t.width,s=t.height;let r,a,o,h,l,d,c,g,u,f,p,m,_,y,v,x,b,S,w,C,P,k,A,T;const M=e+e+1,G=n-1,R=s-1,E=e+1,D=E*(E+1)/2,L=new oi,I=hi[e],O=li[e];let F=null,B=L,N=null,H=null;for(o=1;o>O,0!==A?(A=255/A,i[d]=(g*I>>O)*A,i[d+1]=(u*I>>O)*A,i[d+2]=(f*I>>O)*A):i[d]=i[d+1]=i[d+2]=0,g-=m,u-=_,f-=y,p-=v,m-=N.r,_-=N.g,y-=N.b,v-=N.a,h=c+((h=r+e+1)>O,A>0?(A=255/A,i[h]=(g*I>>O)*A,i[h+1]=(u*I>>O)*A,i[h+2]=(f*I>>O)*A):i[h]=i[h+1]=i[h+2]=0,g-=m,u-=_,f-=y,p-=v,m-=N.r,_-=N.g,y-=N.b,v-=N.a,h=r+((h=a+E)255?255:s,r=r<0?0:r>255?255:r,a=a<0?0:a>255?255:a,i[t]=s,i[t+1]=r,i[t+2]=a},Emboss:function(t){const e=10*this.embossStrength(),i=255*this.embossWhiteLevel(),n=this.embossDirection(),s=this.embossBlend(),r=t.data,a=t.width,o=t.height,h=4*a;let l=0,d=0,c=o;switch(n){case"top-left":l=-1,d=-1;break;case"top":l=-1,d=0;break;case"top-right":l=-1,d=1;break;case"right":l=0,d=1;break;case"bottom-right":l=1,d=1;break;case"bottom":l=1,d=0;break;case"bottom-left":l=1,d=-1;break;case"left":l=0,d=-1;break;default:g.error("Unknown emboss direction: "+n)}do{const t=(c-1)*h;let n=l;c+n<1&&(n=0),c+n>o&&(n=0);const g=(c-1+n)*a*4;let u=a;do{const n=t+4*(u-1);let o=d;u+o<1&&(o=0),u+o>a&&(o=0);const h=g+4*(u-1+o),l=r[n]-r[h],c=r[n+1]-r[h+1],f=r[n+2]-r[h+2];let p=l;const m=p>0?p:-p;if((c>0?c:-c)>m&&(p=c),(f>0?f:-f)>m&&(p=f),p*=e,s){const t=r[n]+p,e=r[n+1]+p,i=r[n+2]+p;r[n]=t>255?255:t<0?0:t,r[n+1]=e>255?255:e<0?0:e,r[n+2]=i>255?255:i<0?0:i}else{let t=i-p;t<0?t=0:t>255&&(t=255),r[n]=r[n+1]=r[n+2]=t}}while(--u)}while(--c)},Enhance:function(t){const e=t.data,i=e.length;let n,s,r,a=e[0],o=a,h=e[1],l=h,d=e[2],c=d;const g=this.enhance();if(0===g)return;for(let t=0;to&&(o=n),s=e[t+1],sl&&(l=s),r=e[t+2],rc&&(c=r);let u,f,p,m,_,y,v,x,b;o===a&&(o=255,a=0),l===h&&(l=255,h=0),c===d&&(c=255,d=0),g>0?(f=o+g*(255-o),p=a-g*(a-0),_=l+g*(255-l),y=h-g*(h-0),x=c+g*(255-c),b=d-g*(d-0)):(u=.5*(o+a),f=o+g*(o-u),p=a+g*(a-u),m=.5*(l+h),_=l+g*(l-m),y=h+g*(h-m),v=.5*(c+d),x=c+g*(c-v),b=d+g*(d-v));for(let t=0;tl?g:l;const u=a,f=r,p=360/f*Math.PI/180;for(let t=0;te&&(b=x,S=0,w=-1),s=0;sl?g:l;const u=a,f=r;let p,m;for(d=0;d=0&&c=0&&g=0&&c=0&&g=1020?255:0}return a}(e,t.width,t.height),e=function(t,e,i){const n=[1/9,1/9,1/9,1/9,1/9,1/9,1/9,1/9,1/9],s=Math.round(Math.sqrt(n.length)),r=Math.floor(s/2),a=[];for(let o=0;o=0&&c=0&&g=_))for(i=d;i=y||(n=4*(_*i+e),s+=b[n+0],r+=b[n+1],a+=b[n+2],o+=b[n+3],p+=1);for(s/=p,r/=p,a/=p,o/=p,e=h;e=_))for(i=d;i=y||(n=4*(_*i+e),b[n+0]=s,b[n+1]=r,b[n+2]=a,b[n+3]=o)}},Posterize:function(t){const e=Math.round(254*this.levels())+1,i=t.data,n=i.length,s=255/e;for(let t=0;t127&&(n=255-n),s>127&&(s=255-s),a>127&&(a=255-a),e[i]=n,e[i+1]=s,e[i+2]=a}while(--r)}while(--s)},Threshold:function(t){const e=255*this.threshold(),i=t.data,n=i.length;for(let t=0;tnew o("string"==typeof t?t:t+"",void 0,s),n=(t,...e)=>{const i=1===t.length?t[0]:e.reduce(((e,s,i)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(s)+t[i+1]),t[0]);return new o(i,t,s)},l=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e="";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t,{is:a,defineProperty:c,getOwnPropertyDescriptor:h,getOwnPropertyNames:d,getOwnPropertySymbols:u,getPrototypeOf:p}=Object,v=globalThis,b=v.trustedTypes,f=b?b.emptyScript:"",g=v.reactiveElementPolyfillSupport,m=(t,e)=>t,x={toAttribute(t,e){switch(e){case Boolean:t=t?f:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){let s=t;switch(e){case Boolean:s=null!==t;break;case Number:s=null===t?null:Number(t);break;case Object:case Array:try{s=JSON.parse(t)}catch(t){s=null}}return s}},y=(t,e)=>!a(t,e),w={attribute:!0,type:String,converter:x,reflect:!1,hasChanged:y};Symbol.metadata??=Symbol("metadata"),v.litPropertyMetadata??=new WeakMap;class k extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,e=w){if(e.state&&(e.attribute=!1),this._$Ei(),this.elementProperties.set(t,e),!e.noAccessor){const s=Symbol(),i=this.getPropertyDescriptor(t,s,e);void 0!==i&&c(this.prototype,t,i)}}static getPropertyDescriptor(t,e,s){const{get:i,set:o}=h(this.prototype,t)??{get(){return this[e]},set(t){this[e]=t}};return{get(){return i?.call(this)},set(e){const r=i?.call(this);o.call(this,e),this.requestUpdate(t,r,s)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??w}static _$Ei(){if(this.hasOwnProperty(m("elementProperties")))return;const t=p(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(m("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(m("properties"))){const t=this.properties,e=[...d(t),...u(t)];for(const s of e)this.createProperty(s,t[s])}const t=this[Symbol.metadata];if(null!==t){const e=litPropertyMetadata.get(t);if(void 0!==e)for(const[t,s]of e)this.elementProperties.set(t,s)}this._$Eh=new Map;for(const[t,e]of this.elementProperties){const s=this._$Eu(t,e);void 0!==s&&this._$Eh.set(s,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const s=new Set(t.flat(1/0).reverse());for(const t of s)e.unshift(l(t))}else void 0!==t&&e.push(l(t));return e}static _$Eu(t,e){const s=e.attribute;return!1===s?void 0:"string"==typeof s?s:"string"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,e=this.constructor.elementProperties;for(const s of e.keys())this.hasOwnProperty(s)&&(t.set(s,this[s]),delete this[s]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const s=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return((s,i)=>{if(e)s.adoptedStyleSheets=i.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of i){const i=document.createElement("style"),o=t.litNonce;void 0!==o&&i.setAttribute("nonce",o),i.textContent=e.cssText,s.appendChild(i)}})(s,this.constructor.elementStyles),s}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,e,s){this._$AK(t,s)}_$EC(t,e){const s=this.constructor.elementProperties.get(t),i=this.constructor._$Eu(t,s);if(void 0!==i&&!0===s.reflect){const o=(void 0!==s.converter?.toAttribute?s.converter:x).toAttribute(e,s.type);this._$Em=t,null==o?this.removeAttribute(i):this.setAttribute(i,o),this._$Em=null}}_$AK(t,e){const s=this.constructor,i=s._$Eh.get(t);if(void 0!==i&&this._$Em!==i){const t=s.getPropertyOptions(i),o="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:x;this._$Em=i,this[i]=o.fromAttribute(e,t.type),this._$Em=null}}requestUpdate(t,e,s){if(void 0!==t){if(s??=this.constructor.getPropertyOptions(t),!(s.hasChanged??y)(this[t],e))return;this.P(t,e,s)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(t,e,s){this._$AL.has(t)||this._$AL.set(t,e),!0===s.reflect&&this._$Em!==t&&(this._$Ej??=new Set).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,e]of this._$Ep)this[t]=e;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[e,s]of t)!0!==s.wrapped||this._$AL.has(e)||void 0===this[e]||this.P(e,this[e],s)}let t=!1;const e=this._$AL;try{t=this.shouldUpdate(e),t?(this.willUpdate(e),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(e)):this._$EU()}catch(e){throw t=!1,this._$EU(),e}t&&this._$AE(e)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&=this._$Ej.forEach((t=>this._$EC(t,this[t]))),this._$EU()}updated(t){}firstUpdated(t){}}k.elementStyles=[],k.shadowRootOptions={mode:"open"},k[m("elementProperties")]=new Map,k[m("finalized")]=new Map,g?.({ReactiveElement:k}),(v.reactiveElementVersions??=[]).push("2.0.4");const $=globalThis,_=$.trustedTypes,C=_?_.createPolicy("lit-html",{createHTML:t=>t}):void 0,B="$lit$",S=`lit$${Math.random().toFixed(9).slice(2)}$`,z="?"+S,O=`<${z}>`,A=document,E=()=>A.createComment(""),j=t=>null===t||"object"!=typeof t&&"function"!=typeof t,I=Array.isArray,M="[ \t\n\f\r]",F=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,P=/-->/g,N=/>/g,D=RegExp(`>|${M}(?:([^\\s"'>=/]+)(${M}*=${M}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),V=/'/g,T=/"/g,R=/^(?:script|style|textarea|title)$/i,L=(t=>(e,...s)=>({_$litType$:t,strings:e,values:s}))(1),U=Symbol.for("lit-noChange"),q=Symbol.for("lit-nothing"),H=new WeakMap,K=A.createTreeWalker(A,129);function W(t,e){if(!I(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==C?C.createHTML(e):e}class G{constructor({strings:t,_$litType$:e},s){let i;this.parts=[];let o=0,r=0;const n=t.length-1,l=this.parts,[a,c]=((t,e)=>{const s=t.length-1,i=[];let o,r=2===e?"":3===e?"":"",n=F;for(let e=0;e"===a[0]?(n=o??F,c=-1):void 0===a[1]?c=-2:(c=n.lastIndex-a[2].length,l=a[1],n=void 0===a[3]?D:'"'===a[3]?T:V):n===T||n===V?n=D:n===P||n===N?n=F:(n=D,o=void 0);const d=n===D&&t[e+1].startsWith("/>")?" ":"";r+=n===F?s+O:c>=0?(i.push(l),s.slice(0,c)+B+s.slice(c)+S+d):s+S+(-2===c?e:d)}return[W(t,r+(t[s]||"")+(2===e?"":3===e?"":"")),i]})(t,e);if(this.el=G.createElement(a,s),K.currentNode=this.el.content,2===e||3===e){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(i=K.nextNode())&&l.length0){i.textContent=_?_.emptyScript:"";for(let s=0;sI(t)||"function"==typeof t?.[Symbol.iterator])(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==q&&j(this._$AH)?this._$AA.nextSibling.data=t:this.T(A.createTextNode(t)),this._$AH=t}$(t){const{values:e,_$litType$:s}=t,i="number"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=G.createElement(W(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===i)this._$AH.p(e);else{const t=new Y(i,this),s=t.u(this.options);t.p(e),this.T(s),this._$AH=t}}_$AC(t){let e=H.get(t.strings);return void 0===e&&H.set(t.strings,e=new G(t)),e}k(e){I(this._$AH)||(this._$AH=[],this._$AR());const s=this._$AH;let i,o=0;for(const r of e)o===s.length?s.push(i=new t(this.O(E()),this.O(E()),this,this.options)):i=s[o],i._$AI(r),o++;o2||""!==s[0]||""!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=q}_$AI(t,e=this,s,i){const o=this.strings;let r=!1;if(void 0===o)t=J(this,t,e,0),r=!j(t)||t!==this._$AH&&t!==U,r&&(this._$AH=t);else{const i=t;let n,l;for(t=o[0],n=0;n{const i=s?.renderBefore??e;let o=i._$litPart$;if(void 0===o){const t=s?.renderBefore??null;i._$litPart$=o=new X(e.insertBefore(E(),t),t,void 0,s??{})}return o._$AI(t),o};class nt extends k{constructor(){super(...arguments),this.renderOptions={host:this},this.o=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this.o=rt(e,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this.o?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this.o?.setConnected(!1)}render(){return U}}nt._$litElement$=!0,nt.finalized=!0,globalThis.litElementHydrateSupport?.({LitElement:nt});const lt=globalThis.litElementPolyfillSupport;lt?.({LitElement:nt}),(globalThis.litElementVersions??=[]).push("4.1.0");const at={attribute:!0,type:String,converter:x,reflect:!1,hasChanged:y},ct=(t=at,e,s)=>{const{kind:i,metadata:o}=s;let r=globalThis.litPropertyMetadata.get(o);if(void 0===r&&globalThis.litPropertyMetadata.set(o,r=new Map),r.set(s.name,t),"accessor"===i){const{name:i}=s;return{set(s){const o=e.get.call(this);e.set.call(this,s),this.requestUpdate(i,o,t)},init(e){return void 0!==e&&this.P(i,void 0,t),e}}}if("setter"===i){const{name:i}=s;return function(s){const o=this[i];e.call(this,s),this.requestUpdate(i,o,t)}}throw Error("Unsupported decorator location: "+i)};function ht(t){return(e,s)=>"object"==typeof s?ct(t,e,s):((t,e,s)=>{const i=e.hasOwnProperty(s);return e.constructor.createProperty(s,i?{...t,wrapped:!0}:t),i?Object.getOwnPropertyDescriptor(e,s):void 0})(t,e,s)}function dt(t){return ht({...t,state:!0,attribute:!1})}const ut=(t,e,s)=>(s.configurable=!0,s.enumerable=!0,s);function pt(t,e){return(s,i,o)=>{const r=e=>e.renderRoot?.querySelector(t)??null;if(e){const{get:t,set:e}="object"==typeof i?s:o??(()=>{const t=Symbol();return{get(){return this[t]},set(e){this[t]=e}}})();return ut(0,0,{get(){let s=t.call(this);return void 0===s&&(s=r(this),(null!==s||this.hasUpdated)&&e.call(this,s)),s}})}return ut(0,0,{get(){return r(this)}})}}let vt;function bt(t){return(e,s)=>{const{slot:i,selector:o}=t??{},r="slot"+(i?`[name=${i}]`:":not([name])");return ut(0,0,{get(){const e=this.renderRoot?.querySelector(r),s=e?.assignedElements(t)??[];return void 0===o?s:s.filter((t=>t.matches(o)))}})}}const ft="1.15.0",gt="__vscodeElements_disableRegistryWarning__";class mt extends nt{get version(){return ft}}const xt=t=>e=>{if(!customElements.get(t))return void customElements.define(t,e);if(gt in window)return;const s=document.createElement(t),i=s?.version;let o="";i?i!==ft?(o+="is already registered by a different version of VSCode Elements. ",o+=`This version is "${ft}", while the other one is "${i}".`):o+="is already registered by the same version of VSCode Elements. ":(console.warn(t,"is already registered by an unknown custom element handler class."),o+="is already registered by an unknown custom element handler class."),console.warn(`[VSCode Elements] ${t} ${o}\nTo suppress this warning, set window.${gt} to true`)};var yt=n` + :host([hidden]) { + display: none; + } + + :host([disabled]), + :host(:disabled) { + cursor: not-allowed; + opacity: 0.4; + pointer-events: none; + } +`;function wt(){return navigator.userAgent.indexOf("Linux")>-1?'system-ui, "Ubuntu", "Droid Sans", sans-serif':navigator.userAgent.indexOf("Mac")>-1?"-apple-system, BlinkMacSystemFont, sans-serif":navigator.userAgent.indexOf("Windows")>-1?'"Segoe WPC", "Segoe UI", sans-serif':"sans-serif"}const kt=[yt,n` + :host { + background-color: var(--vscode-badge-background, #616161); + border: 1px solid var(--vscode-contrastBorder, transparent); + border-radius: 2px; + box-sizing: border-box; + color: var(--vscode-badge-foreground, #f8f8f8); + display: inline-block; + font-family: var(--vscode-font-family, ${r(wt())}); + font-size: 11px; + font-weight: 400; + line-height: 14px; + min-width: 18px; + padding: 2px 3px; + text-align: center; + white-space: nowrap; + } + + :host([variant='counter']) { + border-radius: 11px; + line-height: 11px; + min-height: 18px; + min-width: 18px; + padding: 3px 6px; + } + + :host([variant='activity-bar-counter']) { + background-color: var(--vscode-activityBarBadge-background, #0078d4); + border-radius: 20px; + color: var(--vscode-activityBarBadge-foreground, #ffffff); + font-size: 9px; + font-weight: 600; + line-height: 16px; + padding: 0 4px; + } + + :host([variant='tab-header-counter']) { + background-color: var(--vscode-activityBarBadge-background, #0078d4); + border-radius: 10px; + color: var(--vscode-activityBarBadge-foreground, #ffffff); + line-height: 10px; + min-height: 16px; + min-width: 16px; + padding: 3px 5px; + } + `];var $t=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let _t=class extends mt{constructor(){super(...arguments),this.variant="default"}render(){return L` `}};_t.styles=kt,$t([ht({reflect:!0})],_t.prototype,"variant",void 0),_t=$t([xt("vscode-badge")],_t);const Ct=1,Bt=2,St=3,zt=t=>(...e)=>({_$litDirective$:t,values:e});class Ot{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,s){this.t=t,this._$AM=e,this.i=s}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}const At=zt(class extends Ot{constructor(t){if(super(t),t.type!==Ct||"class"!==t.name||t.strings?.length>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(t){return" "+Object.keys(t).filter((e=>t[e])).join(" ")+" "}update(t,[e]){if(void 0===this.st){this.st=new Set,void 0!==t.strings&&(this.nt=new Set(t.strings.join(" ").split(/\s/).filter((t=>""!==t))));for(const t in e)e[t]&&!this.nt?.has(t)&&this.st.add(t);return this.render(e)}const s=t.element.classList;for(const t of this.st)t in e||(s.remove(t),this.st.delete(t));for(const t in e){const i=!!e[t];i===this.st.has(t)||this.nt?.has(t)||(i?(s.add(t),this.st.add(t)):(s.remove(t),this.st.delete(t)))}return U}}),Et=t=>t??q;const jt=zt(class extends Ot{constructor(t){if(super(t),this._prevProperties={},t.type!==St||"style"!==t.name)throw new Error("The `stylePropertyMap` directive must be used in the `style` property")}update(t,[e]){return Object.entries(e).forEach((([e,s])=>{this._prevProperties[e]!==s&&(e.startsWith("--")?t.element.style.setProperty(e,s):t.element.style[e]=s,this._prevProperties[e]=s)})),U}render(t){return U}}),It=[yt,n` + :host { + color: var(--vscode-icon-foreground, #cccccc); + display: inline-block; + } + + .codicon[class*='codicon-'] { + display: block; + } + + .icon, + .button { + background-color: transparent; + display: block; + padding: 0; + } + + .button { + border-color: transparent; + border-style: solid; + border-width: 1px; + border-radius: 5px; + color: currentColor; + cursor: pointer; + padding: 2px; + } + + .button:hover { + background-color: var( + --vscode-toolbar-hoverBackground, + rgba(90, 93, 94, 0.31) + ); + } + + .button:active { + background-color: var( + --vscode-toolbar-activeBackground, + rgba(99, 102, 103, 0.31) + ); + } + + .button:focus { + outline: none; + } + + .button:focus-visible { + border-color: var(--vscode-focusBorder, #0078d4); + } + + @keyframes icon-spin { + 100% { + transform: rotate(360deg); + } + } + + .spin { + animation-name: icon-spin; + animation-timing-function: linear; + animation-iteration-count: infinite; + } + `];var Mt,Ft=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let Pt=Mt=class extends mt{constructor(){super(...arguments),this.label="",this.name="",this.size=16,this.spin=!1,this.spinDuration=1.5,this.actionIcon=!1,this._onButtonClick=t=>{this.dispatchEvent(new CustomEvent("vsc-click",{detail:{originalEvent:t}}))}}connectedCallback(){super.connectedCallback();const{href:t,nonce:e}=this._getStylesheetConfig();Mt.stylesheetHref=t,Mt.nonce=e}_getStylesheetConfig(){const t=document.getElementById("vscode-codicon-stylesheet"),e=t?.getAttribute("href")||void 0,s=t?.nonce||void 0;if(!t){let t="[VSCode Elements] To use the Icon component, the codicons.css file must be included in the page with the id `vscode-codicon-stylesheet`! ";t+="See https://vscode-elements.github.io/components/icon/ for more details.",console.warn(t)}return{nonce:s,href:e}}render(){const{stylesheetHref:t,nonce:e}=Mt,s=L``,i=this.actionIcon?L` `:L` `;return L` + + ${i} + `}};Pt.styles=It,Pt.stylesheetHref="",Pt.nonce="",Ft([ht()],Pt.prototype,"label",void 0),Ft([ht({type:String})],Pt.prototype,"name",void 0),Ft([ht({type:Number})],Pt.prototype,"size",void 0),Ft([ht({type:Boolean,reflect:!0})],Pt.prototype,"spin",void 0),Ft([ht({type:Number,attribute:"spin-duration"})],Pt.prototype,"spinDuration",void 0),Ft([ht({type:Boolean,reflect:!0,attribute:"action-icon"})],Pt.prototype,"actionIcon",void 0),Pt=Mt=Ft([xt("vscode-icon")],Pt);const Nt=[yt,n` + :host { + background-color: var(--vscode-button-background, #0078d4); + border-color: var(--vscode-button-border, transparent); + border-style: solid; + border-radius: 2px; + border-width: 1px; + color: var(--vscode-button-foreground, #ffffff); + cursor: pointer; + display: inline-block; + font-family: var(--vscode-font-family, ${r(wt())}); + font-size: var(--vscode-font-size, 13px); + font-weight: var(--vscode-font-weight, normal); + line-height: 22px; + overflow: hidden; + padding: 1px 13px; + user-select: none; + white-space: nowrap; + } + + :host([secondary]) { + color: var(--vscode-button-secondaryForeground, #cccccc); + background-color: var(--vscode-button-secondaryBackground, #313131); + border-color: var( + --vscode-button-border, + var(--vscode-button-secondaryBackground, rgba(255, 255, 255, 0.07)) + ); + } + + :host([disabled]) { + cursor: default; + opacity: 0.4; + pointer-events: none; + } + + :host(:hover) { + background-color: var(--vscode-button-hoverBackground, #026ec1); + } + + :host([disabled]:hover) { + background-color: var(--vscode-button-background, #0078d4); + } + + :host([secondary]:hover) { + background-color: var(--vscode-button-secondaryHoverBackground, #3c3c3c); + } + + :host([secondary][disabled]:hover) { + background-color: var(--vscode-button-secondaryBackground, #313131); + } + + :host(:focus), + :host(:active) { + outline: none; + } + + :host(:focus) { + background-color: var(--vscode-button-hoverBackground, #026ec1); + outline: 1px solid var(--vscode-focusBorder, #0078d4); + outline-offset: 2px; + } + + :host([disabled]:focus) { + background-color: var(--vscode-button-background, #0078d4); + outline: 0; + } + + :host([secondary]:focus) { + background-color: var(--vscode-button-secondaryHoverBackground, #3c3c3c); + } + + :host([secondary][disabled]:focus) { + background-color: var(--vscode-button-secondaryBackground, #313131); + } + + ::slotted(*) { + display: inline-block; + margin-left: 4px; + margin-right: 4px; + } + + ::slotted(*:first-child) { + margin-left: 0; + } + + ::slotted(vscode-icon) { + color: inherit; + } + + .wrapper { + align-items: center; + box-sizing: border-box; + display: flex; + justify-content: center; + position: relative; + width: 100%; + } + + slot { + align-items: center; + display: flex; + height: 100%; + } + + .icon { + color: inherit; + display: block; + margin-right: 3px; + } + + .icon-after { + color: inherit; + display: block; + margin-left: 3px; + } + `];var Dt=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let Vt=class extends mt{get form(){return this._internals.form}constructor(){super(),this.autofocus=!1,this.tabIndex=0,this.secondary=!1,this.role="button",this.disabled=!1,this.icon="",this.iconSpin=!1,this.iconAfter="",this.iconAfterSpin=!1,this.focused=!1,this.name=void 0,this.type="button",this.value="",this._prevTabindex=0,this._handleFocus=()=>{this.focused=!0},this._handleBlur=()=>{this.focused=!1},this.addEventListener("keydown",this._handleKeyDown.bind(this)),this.addEventListener("click",this._handleClick.bind(this)),this._internals=this.attachInternals()}connectedCallback(){super.connectedCallback(),this.autofocus&&(this.tabIndex<0&&(this.tabIndex=0),this.updateComplete.then((()=>{this.focus(),this.requestUpdate()}))),this.addEventListener("focus",this._handleFocus),this.addEventListener("blur",this._handleBlur)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("focus",this._handleFocus),this.removeEventListener("blur",this._handleBlur)}update(t){super.update(t),t.has("value")&&this._internals.setFormValue(this.value),t.has("disabled")&&(this.disabled?(this._prevTabindex=this.tabIndex,this.tabIndex=-1):this.tabIndex=this._prevTabindex)}_executeAction(){"submit"===this.type&&this._internals.form&&this._internals.form.requestSubmit(),"reset"===this.type&&this._internals.form&&this._internals.form.reset()}_handleKeyDown(t){if(("Enter"===t.key||" "===t.key)&&!this.hasAttribute("disabled")){this.dispatchEvent(new CustomEvent("vsc-click",{detail:{originalEvent:new MouseEvent("click")}}));const t=new MouseEvent("click",{bubbles:!0,cancelable:!0});t.synthetic=!0,this.dispatchEvent(t),this._executeAction()}}_handleClick(t){t.synthetic||this.hasAttribute("disabled")||(this.dispatchEvent(new CustomEvent("vsc-click",{detail:{originalEvent:t}})),this._executeAction())}render(){const t=""!==this.icon,e=""!==this.iconAfter,s={wrapper:!0,"has-icon-before":t,"has-icon-after":e},i=t?L``:q,o=e?L``:q;return L` + + ${i} + + ${o} + + `}};Vt.styles=Nt,Vt.formAssociated=!0,Dt([ht({type:Boolean,reflect:!0})],Vt.prototype,"autofocus",void 0),Dt([ht({type:Number,reflect:!0})],Vt.prototype,"tabIndex",void 0),Dt([ht({type:Boolean,reflect:!0})],Vt.prototype,"secondary",void 0),Dt([ht({reflect:!0})],Vt.prototype,"role",void 0),Dt([ht({type:Boolean,reflect:!0})],Vt.prototype,"disabled",void 0),Dt([ht()],Vt.prototype,"icon",void 0),Dt([ht({type:Boolean,reflect:!0,attribute:"icon-spin"})],Vt.prototype,"iconSpin",void 0),Dt([ht({type:Number,reflect:!0,attribute:"icon-spin-duration"})],Vt.prototype,"iconSpinDuration",void 0),Dt([ht({attribute:"icon-after"})],Vt.prototype,"iconAfter",void 0),Dt([ht({type:Boolean,reflect:!0,attribute:"icon-after-spin"})],Vt.prototype,"iconAfterSpin",void 0),Dt([ht({type:Number,reflect:!0,attribute:"icon-after-spin-duration"})],Vt.prototype,"iconAfterSpinDuration",void 0),Dt([ht({type:Boolean,reflect:!0})],Vt.prototype,"focused",void 0),Dt([ht({type:String,reflect:!0})],Vt.prototype,"name",void 0),Dt([ht({reflect:!0})],Vt.prototype,"type",void 0),Dt([ht()],Vt.prototype,"value",void 0),Vt=Dt([xt("vscode-button")],Vt);var Tt=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};class Rt extends mt{constructor(){super(),this.focused=!1,this._prevTabindex=0,this._handleFocus=()=>{this.focused=!0},this._handleBlur=()=>{this.focused=!1}}connectedCallback(){super.connectedCallback(),this.addEventListener("focus",this._handleFocus),this.addEventListener("blur",this._handleBlur)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("focus",this._handleFocus),this.removeEventListener("blur",this._handleBlur)}attributeChangedCallback(t,e,s){super.attributeChangedCallback(t,e,s),"disabled"===t&&this.hasAttribute("disabled")?(this._prevTabindex=this.tabIndex,this.tabIndex=-1):"disabled"!==t||this.hasAttribute("disabled")||(this.tabIndex=this._prevTabindex)}}Tt([ht({type:Boolean,reflect:!0})],Rt.prototype,"focused",void 0);var Lt=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};const Ut=t=>{class e extends t{constructor(){super(...arguments),this._label="",this._slottedText=""}set label(t){this._label=t,""===this._slottedText&&this.setAttribute("aria-label",t)}get label(){return this._label}_handleSlotChange(){this._slottedText=this.textContent?this.textContent.trim():"",""!==this._slottedText&&this.setAttribute("aria-label",this._slottedText)}_renderLabelAttribute(){return""===this._slottedText?L`${this._label}`:L`${q}`}}return Lt([ht()],e.prototype,"label",null),e};var qt=[n` + :host { + color: var(--vscode-foreground, #cccccc); + display: inline-block; + font-family: var(--vscode-font-family, sans-serif); + font-size: var(--vscode-font-size, 13px); + font-weight: var(--vscode-font-weight, normal); + line-height: 18px; + } + + :host(:focus) { + outline: none; + } + + :host([disabled]) { + opacity: 0.4; + } + + .wrapper { + cursor: pointer; + display: block; + font-size: var(--vscode-font-size, 13px); + margin-bottom: 4px; + margin-top: 4px; + min-height: 18px; + position: relative; + user-select: none; + } + + :host([disabled]) .wrapper { + cursor: default; + } + + input { + position: absolute; + height: 1px; + left: 9px; + margin: 0; + top: 17px; + width: 1px; + overflow: hidden; + clip: rect(1px, 1px, 1px, 1px); + white-space: nowrap; + } + + .icon { + align-items: center; + background-color: var(--vscode-settings-checkboxBackground, #313131); + background-size: 16px; + border: 1px solid var(--vscode-settings-checkboxBorder, #3c3c3c); + box-sizing: border-box; + color: var(--vscode-settings-checkboxForeground, #cccccc); + display: flex; + height: 18px; + justify-content: center; + left: 0; + margin-left: 0; + margin-right: 9px; + padding: 0; + pointer-events: none; + position: absolute; + top: 0; + width: 18px; + } + + .icon.before-empty-label { + margin-right: 0; + } + + .label { + cursor: pointer; + display: block; + min-height: 18px; + min-width: 18px; + } + + .label-inner { + display: block; + opacity: 0.9; + padding-left: 27px; + } + + .label-inner.empty { + padding-left: 0; + } + + :host([disabled]) .label { + cursor: default; + } + `];const Ht=[yt,qt,n` + :host(:invalid) .icon, + :host([invalid]) .icon { + background-color: var(--vscode-inputValidation-errorBackground, #5a1d1d); + border-color: var(--vscode-inputValidation-errorBorder, #be1100); + } + + .icon { + border-radius: 3px; + } + + .indeterminate-icon { + background-color: currentColor; + position: absolute; + height: 1px; + width: 12px; + } + + :host(:focus):host(:not([disabled])) .icon { + outline: 1px solid var(--vscode-focusBorder, #0078d4); + outline-offset: -1px; + } + `];var Kt=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let Wt=class extends(Ut(Rt)){set checked(t){this._checked=t,this._manageRequired(),this.requestUpdate()}get checked(){return this._checked}set required(t){this._required=t,this._manageRequired(),this.requestUpdate()}get required(){return this._required}get form(){return this._internals.form}get validity(){return this._internals.validity}get validationMessage(){return this._internals.validationMessage}get willValidate(){return this._internals.willValidate}checkValidity(){return this._internals.checkValidity()}reportValidity(){return this._internals.reportValidity()}constructor(){super(),this.autofocus=!1,this._checked=!1,this.defaultChecked=!1,this.invalid=!1,this.name=void 0,this.value="",this.disabled=!1,this.indeterminate=!1,this._required=!1,this.type="checkbox",this._handleClick=t=>{t.preventDefault(),this.disabled||this._toggleState()},this._handleKeyDown=t=>{this.disabled||"Enter"!==t.key&&" "!==t.key||(t.preventDefault()," "===t.key&&this._toggleState(),"Enter"===t.key&&this._internals.form?.requestSubmit())},this._internals=this.attachInternals()}connectedCallback(){super.connectedCallback(),this.addEventListener("keydown",this._handleKeyDown),this.updateComplete.then((()=>{this._manageRequired(),this._setActualFormValue()}))}disconnectedCallback(){this.removeEventListener("keydown",this._handleKeyDown)}update(t){super.update(t),t.has("checked")&&(this.ariaChecked=this.checked?"true":"false")}formResetCallback(){this.checked=this.defaultChecked}formStateRestoreCallback(t,e){t&&(this.checked=!0)}_setActualFormValue(){let t="";t=this.checked?this.value?this.value:"on":null,this._internals.setFormValue(t)}_toggleState(){this.checked=!this.checked,this.indeterminate=!1,this._setActualFormValue(),this._manageRequired(),this.dispatchEvent(new Event("change",{bubbles:!0})),this.dispatchEvent(new CustomEvent("vsc-change",{detail:{checked:this.checked,label:this.label,value:this.value},bubbles:!0,composed:!0}))}_manageRequired(){!this.checked&&this.required?this._internals.setValidity({valueMissing:!0},"Please check this box if you want to proceed.",this._inputEl??void 0):this._internals.setValidity({})}render(){const t=At({icon:!0,checked:this.checked,indeterminate:this.indeterminate}),e=At({"label-inner":!0}),s=L` + + `,i=this.checked&&!this.indeterminate?s:q,o=this.indeterminate?L``:q;return L` +
+ +
${o}${i}
+ +
+ `}};Wt.styles=Ht,Wt.formAssociated=!0,Wt.shadowRootOptions={...nt.shadowRootOptions,delegatesFocus:!0},Kt([ht({type:Boolean,reflect:!0})],Wt.prototype,"autofocus",void 0),Kt([ht({type:Boolean,reflect:!0})],Wt.prototype,"checked",null),Kt([ht({type:Boolean,reflect:!0,attribute:"default-checked"})],Wt.prototype,"defaultChecked",void 0),Kt([ht({type:Boolean,reflect:!0})],Wt.prototype,"invalid",void 0),Kt([ht({reflect:!0})],Wt.prototype,"name",void 0),Kt([ht()],Wt.prototype,"value",void 0),Kt([ht({type:Boolean,reflect:!0})],Wt.prototype,"disabled",void 0),Kt([ht({type:Boolean,reflect:!0})],Wt.prototype,"indeterminate",void 0),Kt([ht({type:Boolean,reflect:!0})],Wt.prototype,"required",null),Kt([ht()],Wt.prototype,"type",void 0),Kt([pt("#input")],Wt.prototype,"_inputEl",void 0),Wt=Kt([xt("vscode-checkbox")],Wt);const Gt=[yt,n` + :host { + display: block; + } + + .wrapper { + display: flex; + flex-wrap: wrap; + } + + :host([variant='vertical']) .wrapper { + display: block; + } + + ::slotted(vscode-checkbox) { + margin-right: 20px; + } + + ::slotted(vscode-checkbox:last-child) { + margin-right: 0; + } + + :host([variant='vertical']) ::slotted(vscode-checkbox) { + display: block; + margin-bottom: 15px; + } + + :host([variant='vertical']) ::slotted(vscode-checkbox:last-child) { + margin-bottom: 0; + } + `];var Jt=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let Yt=class extends mt{constructor(){super(...arguments),this.role="group",this.variant="horizontal"}render(){return L` +
+ +
+ `}};Yt.styles=Gt,Jt([ht({reflect:!0})],Yt.prototype,"role",void 0),Jt([ht({reflect:!0})],Yt.prototype,"variant",void 0),Yt=Jt([xt("vscode-checkbox-group")],Yt);const Xt=[yt,n` + .collapsible { + background-color: var(--vscode-sideBar-background, #181818); + } + + .collapsible-header { + align-items: center; + background-color: var(--vscode-sideBarSectionHeader-background, #181818); + cursor: pointer; + display: flex; + height: 22px; + line-height: 22px; + user-select: none; + } + + .collapsible-header:focus { + opacity: 1; + outline-offset: -1px; + outline-style: solid; + outline-width: 1px; + outline-color: var(--vscode-focusBorder, #0078d4); + } + + .title { + color: var(--vscode-sideBarTitle-foreground, #cccccc); + display: block; + font-family: var(--vscode-font-family, sans-serif); + font-size: 11px; + font-weight: 700; + margin: 0; + overflow: hidden; + text-overflow: ellipsis; + text-transform: uppercase; + white-space: nowrap; + } + + .title .description { + font-weight: 400; + margin-left: 10px; + text-transform: none; + opacity: 0.6; + } + + .header-icon { + color: var(--vscode-icon-foreground, #cccccc); + display: block; + flex-shrink: 0; + margin: 0 3px; + } + + .collapsible.open .header-icon { + transform: rotate(90deg); + } + + .header-slots { + align-items: center; + display: flex; + height: 22px; + margin-left: auto; + margin-right: 4px; + } + + .actions { + display: none; + } + + .collapsible.open .actions { + display: block; + } + + .header-slots slot { + display: flex; + max-height: 22px; + overflow: hidden; + } + + .header-slots slot::slotted(div) { + align-items: center; + display: flex; + } + + .collapsible-body { + display: none; + overflow: hidden; + } + + .collapsible.open .collapsible-body { + display: block; + } + `];var Zt=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let Qt=class extends mt{constructor(){super(...arguments),this.title="",this.description="",this.open=!1}_emitToggleEvent(){this.dispatchEvent(new CustomEvent("vsc-collapsible-toggle",{detail:{open:this.open}}))}_onHeaderClick(){this.open=!this.open,this._emitToggleEvent()}_onHeaderKeyDown(t){"Enter"===t.key&&(this.open=!this.open,this._emitToggleEvent())}render(){const t=At({collapsible:!0,open:this.open}),e=L` + + `,s=this.description?L`${this.description}`:q;return L` +
+
+ ${e} +

${this.title}${s}

+
+
+
+
+
+
+ +
+
+ `}};Qt.styles=Xt,Zt([ht({type:String})],Qt.prototype,"title",void 0),Zt([ht()],Qt.prototype,"description",void 0),Zt([ht({type:Boolean,reflect:!0})],Qt.prototype,"open",void 0),Qt=Zt([xt("vscode-collapsible")],Qt);const te=[yt,n` + :host { + display: block; + font-family: var(--vscode-font-family, sans-serif); + font-size: var(--vscode-font-size, 13px); + font-weight: var(--vscode-font-weight, normal); + line-height: 1.4em; + outline: none; + position: relative; + } + + .context-menu-item { + background-color: var(--vscode-menu-background, #1f1f1f); + color: var(--vscode-menu-foreground, #cccccc); + display: flex; + user-select: none; + white-space: nowrap; + } + + .ruler { + border-bottom: 1px solid var(--vscode-menu-separatorBackground, #454545); + display: block; + margin: 0 0 4px; + padding-top: 4px; + width: 100%; + } + + .context-menu-item a { + align-items: center; + border-color: transparent; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-sizing: border-box; + color: var(--vscode-menu-foreground, #cccccc); + cursor: pointer; + display: flex; + flex: 1 1 auto; + height: 2em; + margin-left: 4px; + margin-right: 4px; + outline: none; + position: relative; + text-decoration: inherit; + } + + :host([selected]) .context-menu-item a { + background-color: var(--vscode-menu-selectionBackground, #0078d4); + border-color: var(--vscode-menu-selectionBorder, transparent); + color: var(--vscode-menu-selectionForeground, #ffffff); + } + + .label { + background: none; + display: flex; + flex: 1 1 auto; + font-size: 12px; + line-height: 1; + padding: 0 22px; + text-decoration: none; + } + + .keybinding { + display: block; + flex: 2 1 auto; + line-height: 1; + padding: 0 22px; + text-align: right; + } + `];var ee=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let se=class extends mt{constructor(){super(...arguments),this.label="",this.keybinding="",this.value="",this.separator=!1,this.tabindex=0}onItemClick(){this.dispatchEvent(new CustomEvent("vsc-click",{detail:{label:this.label,keybinding:this.keybinding,value:this.value||this.label,separator:this.separator,tabindex:this.tabindex},bubbles:!0,composed:!0}))}render(){return L` + ${this.separator?L` +
+ +
+ `:L` + + `} + `}};se.styles=te,ee([ht({type:String})],se.prototype,"label",void 0),ee([ht({type:String})],se.prototype,"keybinding",void 0),ee([ht({type:String})],se.prototype,"value",void 0),ee([ht({type:Boolean,reflect:!0})],se.prototype,"separator",void 0),ee([ht({type:Number})],se.prototype,"tabindex",void 0),se=ee([xt("vscode-context-menu-item")],se);const ie=[yt,n` + :host { + display: block; + font-family: var(--vscode-font-family, sans-serif); + font-size: var(--vscode-font-size, 13px); + font-weight: var(--vscode-font-weight, normal); + line-height: 1.4em; + position: relative; + } + + .context-menu { + background-color: var(--vscode-menu-background, #1f1f1f); + border-color: var(--vscode-menu-border, #454545); + border-radius: 5px; + border-style: solid; + border-width: 1px; + box-shadow: 0 2px 8px var(--vscode-widget-shadow, rgba(0, 0, 0, 0.36)); + color: var(--vscode-menu-foreground, #cccccc); + padding: 4px 0; + white-space: nowrap; + } + + .context-menu:focus { + outline: 0; + } + `];var oe=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let re=class extends mt{set data(t){this._data=t;const e=[];t.forEach(((t,s)=>{t.separator||e.push(s)})),this._clickableItemIndexes=e}get data(){return this._data}set show(t){this._show=t,this._selectedClickableItemIndex=-1,t&&this.updateComplete.then((()=>{this._wrapperEl&&this._wrapperEl.focus(),requestAnimationFrame((()=>{document.addEventListener("click",this._onClickOutsideBound,{once:!0})}))}))}get show(){return this._show}constructor(){super(),this.preventClose=!1,this.tabIndex=0,this._selectedClickableItemIndex=-1,this._show=!1,this._data=[],this._clickableItemIndexes=[],this._onClickOutsideBound=this._onClickOutside.bind(this),this.addEventListener("keydown",this._onKeyDown)}_onClickOutside(t){t.composedPath().includes(this)||(this.show=!1)}_onKeyDown(t){const{key:e}=t;switch("ArrowUp"!==e&&"ArrowDown"!==e&&"Escape"!==e&&"Enter"!==e||t.preventDefault(),e){case"ArrowUp":this._handleArrowUp();break;case"ArrowDown":this._handleArrowDown();break;case"Escape":this._handleEscape();break;case"Enter":this._handleEnter()}}_handleArrowUp(){0===this._selectedClickableItemIndex?this._selectedClickableItemIndex=this._clickableItemIndexes.length-1:this._selectedClickableItemIndex-=1}_handleArrowDown(){this._selectedClickableItemIndex+1t===s));-1!==i&&(this._selectedClickableItemIndex=i)}_onItemMouseOut(){this._selectedClickableItemIndex=-1}render(){if(!this._show)return L`${q}`;const t=this._clickableItemIndexes[this._selectedClickableItemIndex];return L` +
+ ${this.data?this.data.map((({label:e="",keybinding:s="",value:i="",separator:o=!1,tabindex:r=0},n)=>L` + + `)):L``} +
+ `}};re.styles=ie,oe([ht({type:Array,attribute:!1})],re.prototype,"data",null),oe([ht({type:Boolean,reflect:!0,attribute:"prevent-close"})],re.prototype,"preventClose",void 0),oe([ht({type:Boolean,reflect:!0})],re.prototype,"show",null),oe([ht({type:Number,reflect:!0})],re.prototype,"tabIndex",void 0),oe([dt()],re.prototype,"_selectedClickableItemIndex",void 0),oe([dt()],re.prototype,"_show",void 0),oe([pt(".context-menu")],re.prototype,"_wrapperEl",void 0),re=oe([xt("vscode-context-menu")],re);const ne=[yt,n` + :host { + background-color: var(--vscode-foreground, #cccccc); + display: block; + height: 1px; + margin-bottom: 10px; + margin-top: 10px; + opacity: 0.4; + } + `];var le=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let ae=class extends mt{constructor(){super(...arguments),this.role="separator"}render(){return L``}};ae.styles=ne,le([ht({reflect:!0})],ae.prototype,"role",void 0),ae=le([xt("vscode-divider")],ae);const ce=[yt,n` + :host { + display: block; + max-width: 727px; + } + `];var he,de=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};!function(t){t.HORIZONTAL="horizontal",t.VERTICAL="vertical"}(he||(he={}));const ue=t=>"vscode-checkbox"===t.tagName.toLocaleLowerCase(),pe=t=>"vscode-radio"===t.tagName.toLocaleLowerCase();let ve=class extends mt{constructor(){super(...arguments),this.breakpoint=490,this._responsive=!1,this._firstUpdateComplete=!1,this._resizeObserverCallbackBound=this._resizeObserverCallback.bind(this)}set responsive(t){this._responsive=t,this._firstUpdateComplete&&(t?this._activateResponsiveLayout():this._deactivateResizeObserver())}get responsive(){return this._responsive}get data(){return this._collectFormData()}_collectFormData(){const t=["vscode-textfield","vscode-textarea","vscode-single-select","vscode-multi-select","vscode-checkbox","vscode-radio"].join(","),e=this.querySelectorAll(t),s={};return e.forEach((t=>{if(!t.hasAttribute("name"))return;const e=t.getAttribute("name");e&&(ue(t)&&t.checked?s[e]=Array.isArray(s[e])?[...s[e],t.value]:[t.value]:"vscode-multi-select"===t.tagName.toLocaleLowerCase()?s[e]=t.value:ue(t)&&!t.checked?s[e]=Array.isArray(s[e])?s[e]:[]:pe(t)&&t.checked||(t=>["vscode-textfield","vscode-textarea"].includes(t.tagName.toLocaleLowerCase()))(t)||(t=>"vscode-single-select"===t.tagName.toLocaleLowerCase())(t)?s[e]=t.value:pe(t)&&!t.checked&&(s[e]=s[e]?s[e]:""))})),s}_toggleCompactLayout(t){this._assignedFormGroups.forEach((e=>{e.dataset.originalVariant||(e.dataset.originalVariant=e.variant);const s=e.dataset.originalVariant;t===he.VERTICAL&&"horizontal"===s?e.variant="vertical":e.variant=s;e.querySelectorAll("vscode-checkbox-group, vscode-radio-group").forEach((e=>{e.dataset.originalVariant||(e.dataset.originalVariant=e.variant);const s=e.dataset.originalVariant;t===he.HORIZONTAL&&s===he.HORIZONTAL?e.variant="horizontal":e.variant="vertical"}))}))}_resizeObserverCallback(t){let e=0;for(const s of t)e=s.contentRect.width;const s=e + + + `}};ve.styles=ce,de([ht({type:Boolean,reflect:!0})],ve.prototype,"responsive",null),de([ht({type:Number})],ve.prototype,"breakpoint",void 0),de([ht({type:Object})],ve.prototype,"data",null),de([pt(".wrapper")],ve.prototype,"_wrapperElement",void 0),de([bt({selector:"vscode-form-group"})],ve.prototype,"_assignedFormGroups",void 0),ve=de([xt("vscode-form-container")],ve);const be=[yt,n` + :host { + --label-right-margin: 14px; + --label-width: 150px; + + display: block; + margin: 15px 0; + } + + :host([variant='settings-group']) { + margin: 0; + padding: 12px 14px 18px; + max-width: 727px; + } + + .wrapper { + display: flex; + flex-wrap: wrap; + } + + :host([variant='vertical']) .wrapper, + :host([variant='settings-group']) .wrapper { + display: block; + } + + :host([variant='horizontal']) ::slotted(vscode-checkbox-group), + :host([variant='horizontal']) ::slotted(vscode-radio-group) { + width: calc(100% - calc(var(--label-width) + var(--label-right-margin))); + } + + :host([variant='horizontal']) ::slotted(vscode-label) { + margin-right: var(--label-right-margin); + text-align: right; + width: var(--label-width); + } + + :host([variant='settings-group']) ::slotted(vscode-label) { + height: 18px; + line-height: 18px; + margin-bottom: 4px; + margin-right: 0; + padding: 0; + } + + ::slotted(vscode-form-helper) { + margin-left: calc(var(--label-width) + var(--label-right-margin)); + } + + :host([variant='vertical']) ::slotted(vscode-form-helper), + :host([variant='settings-group']) ::slotted(vscode-form-helper) { + display: block; + margin-left: 0; + } + + :host([variant='settings-group']) ::slotted(vscode-form-helper) { + margin-bottom: 0; + margin-top: 0; + } + + :host([variant='vertical']) ::slotted(vscode-label), + :host([variant='settings-group']) ::slotted(vscode-label) { + display: block; + margin-left: 0; + text-align: left; + } + + :host([variant='settings-group']) ::slotted(vscode-inputbox), + :host([variant='settings-group']) ::slotted(vscode-textfield), + :host([variant='settings-group']) ::slotted(vscode-textarea), + :host([variant='settings-group']) ::slotted(vscode-single-select), + :host([variant='settings-group']) ::slotted(vscode-multi-select) { + margin-top: 9px; + } + + ::slotted(vscode-button:first-child) { + margin-left: calc(var(--label-width) + var(--label-right-margin)); + } + + :host([variant='vertical']) ::slotted(vscode-button) { + margin-left: 0; + } + + ::slotted(vscode-button) { + margin-right: 4px; + } + `];var fe=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let ge=class extends mt{constructor(){super(...arguments),this.variant="horizontal"}render(){return L` +
+ +
+ `}};ge.styles=be,fe([ht({reflect:!0})],ge.prototype,"variant",void 0),ge=fe([xt("vscode-form-group")],ge);const me=[yt,n` + :host { + display: block; + line-height: 1.4em; + margin-bottom: 4px; + margin-top: 4px; + max-width: 720px; + opacity: 0.9; + } + + :host([vertical]) { + margin-left: 0; + } + `];var xe=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};const ye=new CSSStyleSheet;ye.replaceSync("\n vscode-form-helper * {\n margin: 0;\n }\n\n vscode-form-helper *:not(:last-child) {\n margin-bottom: 8px;\n }\n");let we=class extends mt{constructor(){super(),this._injectLightDOMStyles()}_injectLightDOMStyles(){const t=document.adoptedStyleSheets.find((t=>t===ye));t||document.adoptedStyleSheets.push(ye)}render(){return L``}};we.styles=me,we=xe([xt("vscode-form-helper")],we);let ke=0;const $e=(t="")=>(ke++,`${t}${ke}`),_e=[yt,n` + :host { + display: block; + } + + .wrapper { + display: flex; + flex-wrap: wrap; + } + + :host([variant='vertical']) .wrapper { + display: block; + } + + ::slotted(vscode-radio) { + margin-right: 20px; + } + + ::slotted(vscode-radio:last-child) { + margin-right: 0; + } + + :host([variant='vertical']) ::slotted(vscode-radio) { + display: block; + margin-bottom: 15px; + } + + :host([variant='vertical']) ::slotted(vscode-radio:last-child) { + margin-bottom: 0; + } + `];var Ce=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let Be=class extends mt{constructor(){super(...arguments),this.variant="horizontal",this.role="radiogroup",this._focusedRadio=-1,this._checkedRadio=-1,this._firstContentLoaded=!1,this._onKeyDownBound=this._onKeyDown.bind(this)}connectedCallback(){super.connectedCallback(),this.addEventListener("keydown",this._onKeyDownBound)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("keydown",this._onKeyDownBound)}_uncheckPreviousChecked(t,e){-1!==t&&(this._radios[t].checked=!1),-1!==e&&(this._radios[e].tabIndex=-1)}_afterCheck(){this._focusedRadio=this._checkedRadio,this._radios[this._checkedRadio].checked=!0,this._radios[this._checkedRadio].tabIndex=0,this._radios[this._checkedRadio].focus()}_checkPrev(){const t=this._radios.findIndex((t=>t.checked)),e=this._radios.findIndex((t=>t.focused)),s=-1!==e?e:t;this._uncheckPreviousChecked(t,e),this._checkedRadio=-1===s?this._radios.length-1:s-1>=0?s-1:this._radios.length-1,this._afterCheck()}_checkNext(){const t=this._radios.findIndex((t=>t.checked)),e=this._radios.findIndex((t=>t.focused)),s=-1!==e?e:t;this._uncheckPreviousChecked(t,e),-1===s?this._checkedRadio=0:s+1e===t.target));-1!==e&&(-1!==this._focusedRadio&&(this._radios[this._focusedRadio].tabIndex=-1),-1!==this._checkedRadio&&this._checkedRadio!==e&&(this._radios[this._checkedRadio].checked=!1),this._focusedRadio=e,this._checkedRadio=e,this._radios[e].tabIndex=0)}_onSlotChange(){if(!this._firstContentLoaded){const t=this._radios.findIndex((t=>t.autofocus));t>-1&&(this._focusedRadio=t),this._firstContentLoaded=!0}this._radios.forEach(((t,e)=>{this._focusedRadio>-1?t.tabIndex=e===this._focusedRadio?0:-1:t.tabIndex=0===e?0:-1}))}render(){return L` +
+ +
+ `}};Be.styles=_e,Ce([ht({reflect:!0})],Be.prototype,"variant",void 0),Ce([ht({reflect:!0})],Be.prototype,"role",void 0),Ce([bt({selector:"vscode-radio"})],Be.prototype,"_radios",void 0),Ce([dt()],Be.prototype,"_focusedRadio",void 0),Ce([dt()],Be.prototype,"_checkedRadio",void 0),Be=Ce([xt("vscode-radio-group")],Be);const Se=[yt,n` + :host { + display: inline-block; + height: 40px; + position: relative; + width: 320px; + } + + :host([cols]) { + width: auto; + } + + :host([rows]) { + height: auto; + } + + .shadow { + box-shadow: var(--vscode-scrollbar-shadow, #000000) 0 6px 6px -6px inset; + display: none; + inset: 0 0 auto 0; + height: 6px; + pointer-events: none; + position: absolute; + width: 100%; + } + + .shadow.visible { + display: block; + } + + textarea { + background-color: var(--vscode-settings-textInputBackground, #313131); + border-color: var(--vscode-settings-textInputBorder, transparent); + border-radius: 2px; + border-style: solid; + border-width: 1px; + box-sizing: border-box; + color: var(--vscode-settings-textInputForeground, #cccccc); + display: block; + font-family: var(--vscode-font-family, sans-serif); + font-size: var(--vscode-font-size, 13px); + font-weight: var(--vscode-font-weight, normal); + height: 100%; + width: 100%; + } + + :host([cols]) textarea { + width: auto; + } + + :host([rows]) textarea { + height: auto; + } + + :host([invalid]) textarea, + :host(:invalid) textarea { + background-color: var(--vscode-inputValidation-errorBackground, #5a1d1d); + border-color: var(--vscode-inputValidation-errorBorder, #be1100); + } + + textarea.monospace { + background-color: var(--vscode-editor-background, #1f1f1f); + color: var(--vscode-editor-foreground, #cccccc); + font-family: var(--vscode-editor-font-family, monospace); + font-size: var(--vscode-editor-font-size, 14px); + font-weight: var(--vscode-editor-font-weight, normal); + } + + .textarea.monospace::placeholder { + color: var( + --vscode-editor-inlineValuesForeground, + rgba(255, 255, 255, 0.5) + ); + } + + textarea.cursor-pointer { + cursor: pointer; + } + + textarea:focus { + border-color: var(--vscode-focusBorder, #0078d4); + outline: none; + } + + textarea::placeholder { + color: var(--vscode-input-placeholderForeground, #989898); + opacity: 1; + } + + textarea::-webkit-scrollbar-track { + background-color: transparent; + } + + textarea::-webkit-scrollbar { + width: 14px; + } + + textarea::-webkit-scrollbar-thumb { + background-color: transparent; + } + + textarea:hover::-webkit-scrollbar-thumb { + background-color: var( + --vscode-scrollbarSlider-background, + rgba(121, 121, 121, 0.4) + ); + } + + textarea::-webkit-scrollbar-thumb:hover { + background-color: var( + --vscode-scrollbarSlider-hoverBackground, + rgba(100, 100, 100, 0.7) + ); + } + + textarea::-webkit-scrollbar-thumb:active { + background-color: var( + --vscode-scrollbarSlider-activeBackground, + rgba(191, 191, 191, 0.4) + ); + } + + textarea::-webkit-scrollbar-corner { + background-color: transparent; + } + + textarea::-webkit-resizer { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAYAAADEUlfTAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAACJJREFUeJxjYMAOZuIQZ5j5//9/rJJESczEKYGsG6cEXgAAsEEefMxkua4AAAAASUVORK5CYII='); + background-repeat: no-repeat; + background-position: right bottom; + } + `];var ze=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let Oe=class extends mt{set value(t){this._value=t,this._internals.setFormValue(t)}get value(){return this._value}get wrappedElement(){return this._textareaEl}get form(){return this._internals.form}get type(){return"textarea"}get validity(){return this._internals.validity}get validationMessage(){return this._internals.validationMessage}get willValidate(){return this._internals.willValidate}set minlength(t){this.minLength=t}get minlength(){return this.minLength}set maxlength(t){this.maxLength=t}get maxlength(){return this.maxLength}constructor(){super(),this.autocomplete=void 0,this.autofocus=!1,this.defaultValue="",this.disabled=!1,this.invalid=!1,this.label="",this.maxLength=void 0,this.minLength=void 0,this.rows=void 0,this.cols=void 0,this.name=void 0,this.placeholder=void 0,this.readonly=!1,this.resize="none",this.required=!1,this.spellcheck=!1,this.monospace=!1,this._value="",this._textareaPointerCursor=!1,this._shadow=!1,this._internals=this.attachInternals()}connectedCallback(){super.connectedCallback(),this.updateComplete.then((()=>{this._textareaEl.checkValidity(),this._setValidityFromInput(),this._internals.setFormValue(this._textareaEl.value)}))}updated(t){const e=["maxLength","minLength","required"];for(const s of t.keys())if(e.includes(String(s))){this.updateComplete.then((()=>{this._setValidityFromInput()}));break}}formResetCallback(){this.value=this.defaultValue}formStateRestoreCallback(t,e){this.updateComplete.then((()=>{this._value=t}))}checkValidity(){return this._internals.checkValidity()}reportValidity(){return this._internals.reportValidity()}_setValidityFromInput(){this._internals.setValidity(this._textareaEl.validity,this._textareaEl.validationMessage,this._textareaEl)}_dataChanged(){this._value=this._textareaEl.value,this._internals.setFormValue(this._textareaEl.value)}_handleChange(t){this._dataChanged(),this._setValidityFromInput(),this.dispatchEvent(new Event("change")),this.dispatchEvent(new CustomEvent("vsc-change",{detail:{data:this.value,originalEvent:t}}))}_handleInput(t){this._dataChanged(),this._setValidityFromInput(),this.dispatchEvent(new CustomEvent("vsc-input",{detail:{data:t.data,originalEvent:t}}))}_handleMouseMove(t){if(this._textareaEl.clientHeight>=this._textareaEl.scrollHeight)return void(this._textareaPointerCursor=!1);const e=this._textareaEl.getBoundingClientRect(),s=t.clientX;this._textareaPointerCursor=s>=e.left+e.width-14-2}_handleScroll(){this._shadow=this._textareaEl.scrollTop>0}render(){return L` +
+ + `}};Oe.styles=Se,Oe.formAssociated=!0,Oe.shadowRootOptions={...nt.shadowRootOptions,delegatesFocus:!0},ze([ht()],Oe.prototype,"autocomplete",void 0),ze([ht({type:Boolean,reflect:!0})],Oe.prototype,"autofocus",void 0),ze([ht({attribute:"default-value"})],Oe.prototype,"defaultValue",void 0),ze([ht({type:Boolean,reflect:!0})],Oe.prototype,"disabled",void 0),ze([ht({type:Boolean,reflect:!0})],Oe.prototype,"invalid",void 0),ze([ht({attribute:!1})],Oe.prototype,"label",void 0),ze([ht({type:Number})],Oe.prototype,"maxLength",void 0),ze([ht({type:Number})],Oe.prototype,"minLength",void 0),ze([ht({type:Number})],Oe.prototype,"rows",void 0),ze([ht({type:Number})],Oe.prototype,"cols",void 0),ze([ht()],Oe.prototype,"name",void 0),ze([ht()],Oe.prototype,"placeholder",void 0),ze([ht({type:Boolean,reflect:!0})],Oe.prototype,"readonly",void 0),ze([ht()],Oe.prototype,"resize",void 0),ze([ht({type:Boolean,reflect:!0})],Oe.prototype,"required",void 0),ze([ht({type:Boolean})],Oe.prototype,"spellcheck",void 0),ze([ht({type:Boolean,reflect:!0})],Oe.prototype,"monospace",void 0),ze([ht()],Oe.prototype,"value",null),ze([pt("#textarea")],Oe.prototype,"_textareaEl",void 0),ze([dt()],Oe.prototype,"_value",void 0),ze([dt()],Oe.prototype,"_textareaPointerCursor",void 0),ze([dt()],Oe.prototype,"_shadow",void 0),Oe=ze([xt("vscode-textarea")],Oe);const Ae=r(wt()),Ee=[yt,n` + :host { + align-items: center; + background-color: var(--vscode-settings-textInputBackground, #313131); + border-color: var( + --vscode-settings-textInputBorder, + var(--vscode-settings-textInputBackground, #3c3c3c) + ); + border-radius: 2px; + border-style: solid; + border-width: 1px; + box-sizing: border-box; + color: var(--vscode-settings-textInputForeground, #cccccc); + display: inline-flex; + max-width: 100%; + position: relative; + width: 320px; + } + + :host([focused]) { + border-color: var(--vscode-focusBorder, #0078d4); + } + + :host([invalid]), + :host(:invalid) { + border-color: var(--vscode-inputValidation-errorBorder, #be1100); + } + + :host([invalid]) input, + :host(:invalid) input { + background-color: var(--vscode-inputValidation-errorBackground, #5a1d1d); + } + + ::slotted([slot='content-before']) { + display: block; + margin-left: 2px; + } + + ::slotted([slot='content-after']) { + display: block; + margin-right: 2px; + } + + slot[name='content-before'], + slot[name='content-after'] { + align-items: center; + display: flex; + } + + input { + background-color: var(--vscode-settings-textInputBackground, #313131); + border: 0; + box-sizing: border-box; + color: var(--vscode-settings-textInputForeground, #cccccc); + display: block; + font-family: var(--vscode-font-family, ${Ae}); + font-size: var(--vscode-font-size, 13px); + font-weight: var(--vscode-font-weight, 'normal'); + line-height: 18px; + outline: none; + padding-bottom: 3px; + padding-left: 4px; + padding-right: 4px; + padding-top: 3px; + width: 100%; + } + + input:read-only:not([type='file']) { + cursor: not-allowed; + } + + input::placeholder { + color: var(--vscode-input-placeholderForeground, #989898); + opacity: 1; + } + + input[type='file'] { + line-height: 24px; + padding-bottom: 0; + padding-left: 2px; + padding-top: 0; + } + + input[type='file']::file-selector-button { + background-color: var(--vscode-button-background, #0078d4); + border: 0; + border-radius: 2px; + color: var(--vscode-button-foreground, #ffffff); + cursor: pointer; + font-family: var(--vscode-font-family, ${Ae}); + font-size: var(--vscode-font-size, 13px); + font-weight: var(--vscode-font-weight, 'normal'); + line-height: 20px; + padding: 0 14px; + } + + input[type='file']::file-selector-button:hover { + background-color: var(--vscode-button-hoverBackground, #026ec1); + } + `];var je=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let Ie=class extends mt{set type(t){this._type=["color","date","datetime-local","email","file","month","number","password","search","tel","text","time","url","week"].includes(t)?t:"text"}get type(){return this._type}set value(t){"file"!==this.type&&(this._value=t,this._internals.setFormValue(t)),this.updateComplete.then((()=>{this._setValidityFromInput()}))}get value(){return this._value}set minlength(t){this.minLength=t}get minlength(){return this.minLength}set maxlength(t){this.maxLength=t}get maxlength(){return this.maxLength}get form(){return this._internals.form}get validity(){return this._internals.validity}get validationMessage(){return this._internals.validationMessage}get willValidate(){return this._internals.willValidate}checkValidity(){return this._setValidityFromInput(),this._internals.checkValidity()}reportValidity(){return this._setValidityFromInput(),this._internals.reportValidity()}get wrappedElement(){return this._inputEl}constructor(){super(),this.autocomplete=void 0,this.autofocus=!1,this.defaultValue="",this.disabled=!1,this.focused=!1,this.invalid=!1,this.label="",this.max=void 0,this.maxLength=void 0,this.min=void 0,this.minLength=void 0,this.multiple=!1,this.name=void 0,this.pattern=void 0,this.placeholder=void 0,this.readonly=!1,this.required=!1,this.step=void 0,this._value="",this._type="text",this._internals=this.attachInternals()}connectedCallback(){super.connectedCallback(),this.updateComplete.then((()=>{this._inputEl.checkValidity(),this._setValidityFromInput(),this._internals.setFormValue(this._inputEl.value)}))}attributeChangedCallback(t,e,s){super.attributeChangedCallback(t,e,s);["max","maxlength","min","minlength","pattern","required","step"].includes(t)&&this.updateComplete.then((()=>{this._setValidityFromInput()}))}formResetCallback(){this.value=this.defaultValue,this.requestUpdate()}formStateRestoreCallback(t,e){this.value=t}_dataChanged(){if(this._value=this._inputEl.value,"file"===this.type&&this._inputEl.files)for(const t of this._inputEl.files)this._internals.setFormValue(t);else this._internals.setFormValue(this._inputEl.value)}_setValidityFromInput(){this._inputEl&&this._internals.setValidity(this._inputEl.validity,this._inputEl.validationMessage,this._inputEl)}_onInput(t){this._dataChanged(),this._setValidityFromInput(),this.dispatchEvent(new CustomEvent("vsc-input",{detail:{data:t.data,originalEvent:t}}))}_onChange(t){this._dataChanged(),this._setValidityFromInput(),this.dispatchEvent(new Event("change")),this.dispatchEvent(new CustomEvent("vsc-change",{detail:{data:this.value,originalEvent:t}}))}_onFocus(){this.focused=!0}_onBlur(){this.focused=!1}_onKeyDown(t){"Enter"===t.key&&this._internals.form&&this._internals.form?.requestSubmit()}render(){return L` + + + + `}};Ie.styles=Ee,Ie.formAssociated=!0,Ie.shadowRootOptions={...nt.shadowRootOptions,delegatesFocus:!0},je([ht()],Ie.prototype,"autocomplete",void 0),je([ht({type:Boolean,reflect:!0})],Ie.prototype,"autofocus",void 0),je([ht({attribute:"default-value"})],Ie.prototype,"defaultValue",void 0),je([ht({type:Boolean,reflect:!0})],Ie.prototype,"disabled",void 0),je([ht({type:Boolean,reflect:!0})],Ie.prototype,"focused",void 0),je([ht({type:Boolean,reflect:!0})],Ie.prototype,"invalid",void 0),je([ht({attribute:!1})],Ie.prototype,"label",void 0),je([ht({type:Number})],Ie.prototype,"max",void 0),je([ht({type:Number})],Ie.prototype,"maxLength",void 0),je([ht({type:Number})],Ie.prototype,"min",void 0),je([ht({type:Number})],Ie.prototype,"minLength",void 0),je([ht({type:Boolean,reflect:!0})],Ie.prototype,"multiple",void 0),je([ht({reflect:!0})],Ie.prototype,"name",void 0),je([ht()],Ie.prototype,"pattern",void 0),je([ht()],Ie.prototype,"placeholder",void 0),je([ht({type:Boolean,reflect:!0})],Ie.prototype,"readonly",void 0),je([ht({type:Boolean,reflect:!0})],Ie.prototype,"required",void 0),je([ht({type:Number})],Ie.prototype,"step",void 0),je([ht({reflect:!0})],Ie.prototype,"type",null),je([ht()],Ie.prototype,"value",null),je([pt("#input")],Ie.prototype,"_inputEl",void 0),je([dt()],Ie.prototype,"_value",void 0),je([dt()],Ie.prototype,"_type",void 0),Ie=je([xt("vscode-textfield")],Ie);const Me=[yt,n` + :host { + color: var(--vscode-foreground, #cccccc); + font-family: var(--vscode-font-family, sans-serif); + font-size: var(--vscode-font-size, 13px); + font-weight: 600; + line-height: ${1.2307692307692308}; + cursor: default; + display: block; + padding: 5px 0; + } + + .wrapper { + display: block; + } + + .wrapper.required:after { + content: ' *'; + } + + ::slotted(.normal) { + font-weight: normal; + } + + ::slotted(.lightened) { + color: var(--vscode-foreground, #cccccc); + opacity: 0.9; + } + `];var Fe=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let Pe=class extends mt{constructor(){super(...arguments),this.required=!1,this._id="",this._htmlFor="",this._connected=!1}set htmlFor(t){this._htmlFor=t,this.setAttribute("for",t),this._connected&&this._connectWithTarget()}get htmlFor(){return this._htmlFor}set id(t){this._id=t}get id(){return this._id}attributeChangedCallback(t,e,s){super.attributeChangedCallback(t,e,s)}connectedCallback(){super.connectedCallback(),this._connected=!0,""===this._id&&(this._id=$e("vscode-label-"),this.setAttribute("id",this._id)),this._connectWithTarget()}_getTarget(){let t=null;if(this._htmlFor){const e=this.getRootNode({composed:!1});e&&(t=e.querySelector(`#${this._htmlFor}`))}return t}async _connectWithTarget(){await this.updateComplete;const t=this._getTarget();(t instanceof Be||t instanceof Yt)&&t.setAttribute("aria-labelledby",this._id);let e="";this.textContent&&(e=this.textContent.trim()),(t instanceof Ie||t instanceof Oe)&&(t.label=e)}_handleClick(){const t=this._getTarget();t&&"focus"in t&&t.focus()}render(){return L` + + `}};Pe.styles=Me,Fe([ht({reflect:!0,attribute:"for"})],Pe.prototype,"htmlFor",null),Fe([ht()],Pe.prototype,"id",null),Fe([ht({type:Boolean,reflect:!0})],Pe.prototype,"required",void 0),Pe=Fe([xt("vscode-label")],Pe);const Ne=L` + + + + + +`,{I:De}=it,Ve=()=>document.createComment(""),Te=(t,e,s)=>{const i=t._$AA.parentNode,o=void 0===e?t._$AB:e._$AA;if(void 0===s){const e=i.insertBefore(Ve(),o),r=i.insertBefore(Ve(),o);s=new De(e,r,t,t.options)}else{const e=s._$AB.nextSibling,r=s._$AM,n=r!==t;if(n){let e;s._$AQ?.(t),s._$AM=t,void 0!==s._$AP&&(e=t._$AU)!==r._$AU&&s._$AP(e)}if(e!==o||n){let t=s._$AA;for(;t!==e;){const e=t.nextSibling;i.insertBefore(t,o),t=e}}}return s},Re=(t,e,s=t)=>(t._$AI(e,s),t),Le={},Ue=t=>{t._$AP?.(!1,!0);let e=t._$AA;const s=t._$AB.nextSibling;for(;e!==s;){const t=e.nextSibling;e.remove(),e=t}},qe=(t,e,s)=>{const i=new Map;for(let o=e;o<=s;o++)i.set(t[o],o);return i},He=zt(class extends Ot{constructor(t){if(super(t),t.type!==Bt)throw Error("repeat() can only be used in text expressions")}dt(t,e,s){let i;void 0===s?s=e:void 0!==e&&(i=e);const o=[],r=[];let n=0;for(const e of t)o[n]=i?i(e,n):n,r[n]=s(e,n),n++;return{values:r,keys:o}}render(t,e,s){return this.dt(t,e,s).values}update(t,[e,s,i]){const o=(t=>t._$AH)(t),{values:r,keys:n}=this.dt(e,s,i);if(!Array.isArray(o))return this.ut=n,r;const l=this.ut??=[],a=[];let c,h,d=0,u=o.length-1,p=0,v=r.length-1;for(;d<=u&&p<=v;)if(null===o[d])d++;else if(null===o[u])u--;else if(l[d]===n[p])a[p]=Re(o[d],r[p]),d++,p++;else if(l[u]===n[v])a[v]=Re(o[u],r[v]),u--,v--;else if(l[d]===n[v])a[v]=Re(o[d],r[v]),Te(t,a[v+1],o[d]),d++,v--;else if(l[u]===n[p])a[p]=Re(o[u],r[p]),Te(t,o[d],o[u]),u--,p++;else if(void 0===c&&(c=qe(n,p,v),h=qe(l,d,u)),c.has(l[d]))if(c.has(l[u])){const e=h.get(n[p]),s=void 0!==e?o[e]:null;if(null===s){const e=Te(t,o[d]);Re(e,r[p]),a[p]=e}else a[p]=Re(s,r[p]),Te(t,o[d],s),o[e]=null;p++}else Ue(o[u]),u--;else Ue(o[d]),d++;for(;p<=v;){const e=Te(t,a[v+1]);Re(e,r[p]),a[p++]=e}for(;d<=u;){const t=o[d++];null!==t&&Ue(t)}return this.ut=n,((t,e=Le)=>{t._$AH=e})(t,a),U}});var Ke=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let We=class extends mt{constructor(){super(...arguments),this.description="",this.selected=!1,this.disabled=!1,this._initialized=!1,this._handleSlotChange=()=>{this._initialized&&this.dispatchEvent(new Event("vsc-option-state-change",{bubbles:!0}))}}connectedCallback(){super.connectedCallback(),this.updateComplete.then((()=>{this._initialized=!0}))}willUpdate(t){this._initialized&&(t.has("description")||t.has("value")||t.has("selected")||t.has("disabled"))&&this.dispatchEvent(new Event("vsc-option-state-change",{bubbles:!0}))}render(){return L``}};We.styles=yt,Ke([ht({type:String})],We.prototype,"value",void 0),Ke([ht({type:String})],We.prototype,"description",void 0),Ke([ht({type:Boolean,reflect:!0})],We.prototype,"selected",void 0),Ke([ht({type:Boolean,reflect:!0})],We.prototype,"disabled",void 0),We=Ke([xt("vscode-option")],We);const Ge=(t,e,s)=>{const i=[];return t.forEach((t=>{let o;switch(s){case"startsWithPerTerm":o=((t,e)=>{const s={match:!1,ranges:[]},i=t.toLowerCase(),o=e.toLowerCase(),r=i.split(" ");let n=0;return r.forEach(((e,i)=>{if(i>0&&(n+=r[i-1].length+1),s.match)return;const l=e.indexOf(o),a=o.length;0===l&&(s.match=!0,s.ranges.push([n+l,Math.min(n+l+a,t.length)]))})),s})(t.label,e);break;case"startsWith":o=((t,e)=>{const s={match:!1,ranges:[]};return 0===t.toLowerCase().indexOf(e.toLowerCase())&&(s.match=!0,s.ranges=[[0,e.length]]),s})(t.label,e);break;case"contains":o=((t,e)=>{const s={match:!1,ranges:[]},i=t.toLowerCase().indexOf(e.toLowerCase());return i>-1&&(s.match=!0,s.ranges=[[i,i+e.length]]),s})(t.label,e);break;default:o=((t,e)=>{const s={match:!1,ranges:[]};let i=0,o=0;const r=e.length-1,n=t.toLowerCase(),l=e.toLowerCase();for(let t=0;t<=r;t++){if(o=n.indexOf(l[t],i),-1===o)return{match:!1,ranges:[]};s.match=!0,s.ranges.push([o,o+1]),i=o+1}return s})(t.label,e)}o.match&&i.push({...t,ranges:o.ranges})})),i},Je=t=>{const e=[];return" "===t?(e.push(L` `),e):(0===t.indexOf(" ")&&e.push(L` `),e.push(L`${t.trimStart().trimEnd()}`),t.lastIndexOf(" ")===t.length-1&&e.push(L` `),e)};function Ye(t,e){let s=0;if(e<0||!t[e]||!t[e+1])return s;for(let i=e+1;i=0;i--)if(!t[i].disabled){s=i;break}return s}var Ze=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};const Qe=22;class ts extends mt{set disabled(t){this._disabled=t,this.ariaDisabled=t?"true":"false",!0===t?(this._originalTabIndex=this.tabIndex,this.tabIndex=-1):(this.tabIndex=this._originalTabIndex??0,this._originalTabIndex=void 0),this.requestUpdate()}get disabled(){return this._disabled}set filter(t){["contains","fuzzy","startsWith","startsWithPerTerm"].includes(t)?this._filter=t:(this._filter="fuzzy",console.warn(`[VSCode Webview Elements] Invalid filter: "${t}", fallback to default. Valid values are: "contains", "fuzzy", "startsWith", "startsWithPerm".`,this))}get filter(){return this._filter}set options(t){this._options=t.map(((t,e)=>({...t,index:e})))}get options(){return this._options.map((({label:t,value:e,description:s,selected:i,disabled:o})=>({label:t,value:e,description:s,selected:i,disabled:o})))}constructor(){super(),this.ariaExpanded="false",this.creatable=!1,this.combobox=!1,this.invalid=!1,this.focused=!1,this.open=!1,this.position="below",this.tabIndex=0,this._firstUpdateCompleted=!1,this._activeIndex=-1,this._currentDescription="",this._filter="fuzzy",this._filterPattern="",this._selectedIndex=-1,this._selectedIndexes=[],this._options=[],this._value="",this._values=[],this._listScrollTop=0,this._isPlaceholderOptionActive=!1,this._isBeingFiltered=!1,this._multiple=!1,this._valueOptionIndexMap={},this._isHoverForbidden=!1,this._disabled=!1,this._originalTabIndex=void 0,this._onClickOutside=t=>{const e=t.composedPath().findIndex((t=>t===this));-1===e&&(this._toggleDropdown(!1),window.removeEventListener("click",this._onClickOutside))},this._onMouseMove=()=>{this._isHoverForbidden=!1,window.removeEventListener("mousemove",this._onMouseMove)},this._onComponentKeyDown=t=>{[" ","ArrowUp","ArrowDown","Escape"].includes(t.key)&&(t.stopPropagation(),t.preventDefault()),"Enter"===t.key&&this._onEnterKeyDown(t)," "===t.key&&this._onSpaceKeyDown(),"Escape"===t.key&&this._toggleDropdown(!1),"ArrowUp"===t.key&&this._onArrowUpKeyDown(),"ArrowDown"===t.key&&this._onArrowDownKeyDown()},this._onComponentFocus=()=>{this.focused=!0},this._onComponentBlur=()=>{this.focused=!1},this.addEventListener("vsc-option-state-change",(t=>{t.stopPropagation(),this._setStateFromSlottedElements(),this.requestUpdate()}))}connectedCallback(){super.connectedCallback(),this.addEventListener("keydown",this._onComponentKeyDown),this.addEventListener("focus",this._onComponentFocus),this.addEventListener("blur",this._onComponentBlur)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("keydown",this._onComponentKeyDown),this.removeEventListener("focus",this._onComponentFocus),this.removeEventListener("blur",this._onComponentBlur)}firstUpdated(t){this._firstUpdateCompleted=!0}willUpdate(t){t.has("required")&&this._firstUpdateCompleted&&this._manageRequired()}get _filteredOptions(){return this.combobox&&""!==this._filterPattern?Ge(this._options,this._filterPattern,this._filter):this._options}get _currentOptions(){return this.combobox?this._filteredOptions:this._options}get _isSuggestedOptionVisible(){if(!this.combobox||!this.creatable)return!1;const t=void 0!==this._valueOptionIndexMap[this._filterPattern],e=this._filterPattern.length>0;return!t&&e}_manageRequired(){}_setStateFromSlottedElements(){const t=[];let e=0;const s=this._assignedOptions??[],i=[],o=[];this._valueOptionIndexMap={},s.forEach(((s,r)=>{const{innerText:n,description:l,disabled:a}=s,c="string"==typeof s.value?s.value:n.trim(),h=s.selected??!1,d={label:n.trim(),value:c,description:l,selected:h,index:e,disabled:a};e=t.push(d),h&&!this._multiple&&(this._activeIndex=r),h&&(i.push(t.length-1),o.push(c)),this._valueOptionIndexMap[d.value]=d.index})),this._options=t,i.length>0&&(this._selectedIndex=i[0],this._selectedIndexes=i,this._value=o[0],this._values=o),this._multiple||this.combobox||0!==i.length||(this._selectedIndex=this._options.length>0?0:-1)}async _toggleDropdown(t){this.open=t,this.ariaExpanded=String(t),t&&!this._multiple&&(this._activeIndex=this._selectedIndex),!t||this._multiple||this.combobox||(this._activeIndex=this._selectedIndex,this._activeIndex>9&&(await this.updateComplete,this._listElement.scrollTop=Math.floor(this._activeIndex*Qe))),t?window.addEventListener("click",this._onClickOutside):window.removeEventListener("click",this._onClickOutside)}_createSuggestedOption(){const t=this._options.length,e=document.createElement("vscode-option");return e.value=this._filterPattern,rt(this._filterPattern,e),this.appendChild(e),t}_dispatchChangeEvent(){this._multiple?this.dispatchEvent(new CustomEvent("vsc-change",{detail:{selectedIndexes:this._selectedIndexes,value:this._values}})):this.dispatchEvent(new CustomEvent("vsc-change",{detail:{selectedIndex:this._selectedIndex,value:this._value}})),this.dispatchEvent(new Event("change")),this.dispatchEvent(new Event("input"))}async _createAndSelectSuggestedOption(){}_onFaceClick(){this._toggleDropdown(!this.open),this._multiple&&(this._activeIndex=0)}_toggleComboboxDropdown(){this._filterPattern="",this._toggleDropdown(!this.open),this._multiple&&(this._activeIndex=-1)}_onComboboxButtonClick(){this._toggleComboboxDropdown()}_onComboboxButtonKeyDown(t){"Enter"===t.key&&this._toggleComboboxDropdown()}_onOptionMouseOver(t){if(this._isHoverForbidden)return;const e=t.target;e.matches(".option")&&(e.matches(".placeholder")?(this._isPlaceholderOptionActive=!0,this._activeIndex=-1):(this._isPlaceholderOptionActive=!1,this._activeIndex=Number(this.combobox?e.dataset.filteredIndex:e.dataset.index)))}_onPlaceholderOptionMouseOut(){this._isPlaceholderOptionActive=!1}_onNoOptionsClick(t){t.stopPropagation()}_onEnterKeyDown(t){this._isBeingFiltered=!1;if(!!t?.composedPath&&t.composedPath().find((t=>!!t.matches&&t.matches("vscode-button.button-accept"))))return;const e=this.combobox?this._filteredOptions:this._options,s=!this.open;this._toggleDropdown(s),this._multiple||s||this._selectedIndex===this._activeIndex||(this._selectedIndex=this._activeIndex>-1?e[this._activeIndex].index:-1,this._value=this._selectedIndex>-1?this._options[this._selectedIndex].value:"",this._dispatchChangeEvent()),this.combobox&&(this._isPlaceholderOptionActive?this._createAndSelectSuggestedOption():(this._multiple||s||(this._selectedIndex=this._activeIndex>-1?this._filteredOptions[this._activeIndex].index:-1),!this._multiple&&s&&this.updateComplete.then((()=>{this._scrollActiveElementToTop()})))),this._multiple&&s&&(this._activeIndex=0)}_onSpaceKeyDown(){if(this.open){if(this.open&&this._multiple&&this._activeIndex>-1){const t=this.combobox?this._filteredOptions:this._options,e=t[this._activeIndex],s=[];this._options[e.index].selected=!e.selected,t.forEach((({index:t})=>{const{selected:e}=this._options[t];e&&s.push(t)})),this._selectedIndexes=s}}else this._toggleDropdown(!0)}_scrollActiveElementToTop(){this._listElement.scrollTop=Math.floor(this._activeIndex*Qe)}async _adjustOptionListScrollPos(t,e){let s=this.combobox?this._filteredOptions.length:this._options.length;if(this._isSuggestedOptionVisible&&(s+=1),s<=10)return;this._isHoverForbidden=!0,window.addEventListener("mousemove",this._onMouseMove);const i=this._listElement.scrollTop,o=e*Qe,r=o>=i&&o<=i+220-Qe;"down"===t&&(r||(this._listElement.scrollTop=e*Qe-198)),"up"===t&&(r||(this._listElement.scrollTop=Math.floor(this._activeIndex*Qe)))}_onArrowUpKeyDown(){if(this.open){if(this._activeIndex<=0&&(!this.combobox||!this.creatable))return;if(this._isPlaceholderOptionActive){const t=this._currentOptions.length-1;this._activeIndex=t,this._isPlaceholderOptionActive=!1}else{const t=Xe(this.combobox?this._filteredOptions:this._options,this._activeIndex);t>-1&&(this._activeIndex=t,this._adjustOptionListScrollPos("up",t))}}}_onArrowDownKeyDown(){let t=this.combobox?this._filteredOptions.length:this._options.length;const e=this.combobox?this._filteredOptions:this._options,s=this._isSuggestedOptionVisible;if(s&&(t+=1),this.open){if(this._isPlaceholderOptionActive&&-1===this._activeIndex)return;if(s&&this._activeIndex===t-2)this._isPlaceholderOptionActive=!0,this._adjustOptionListScrollPos("down",t-1),this._activeIndex=-1;else if(this._activeIndex-1&&(this._activeIndex=t,this._adjustOptionListScrollPos("down",t))}}}_onSlotChange(){this._setStateFromSlottedElements(),this.requestUpdate()}_onComboboxInputFocus(t){t.target.select(),this._isBeingFiltered=!1,this._filterPattern=""}_onComboboxInputBlur(){this._isBeingFiltered=!1}_onComboboxInputInput(t){this._isBeingFiltered=!0,this._filterPattern=t.target.value,this._activeIndex=-1,this._toggleDropdown(!0)}_onComboboxInputClick(){this._isBeingFiltered=""!==this._filterPattern,this._toggleDropdown(!0)}_onOptionClick(t){this._isBeingFiltered=!1}_renderOptions(){const t=this.combobox?this._filteredOptions:this._options;return L` +
    + ${He(t,(t=>t.index),((t,e)=>{const s={active:e===this._activeIndex&&!t.disabled,disabled:t.disabled,option:!0,selected:t.selected},i={"checkbox-icon":!0,checked:t.selected},o=t.ranges?.length?((t,e)=>{const s=[],i=e.length;return i<1?L`${t}`:(e.forEach(((o,r)=>{const n=t.substring(o[0],o[1]);0===r&&0!==o[0]&&s.push(...Je(t.substring(0,e[0][0]))),r>0&&r${Je(n)}`),r===i-1&&o[1] + ${this._multiple?L`${o}`:o} + + `}))} + ${this._renderPlaceholderOption(t.length<1)} +
+ `}_renderPlaceholderOption(t){return this.combobox?this._valueOptionIndexMap[this._filterPattern]?q:this.creatable&&this._filterPattern.length>0?L`
  • + Add "${this._filterPattern}" +
  • `:t?L`
  • + No options +
  • `:q:q}_renderDescription(){if(!this._options[this._activeIndex])return q;const{description:t}=this._options[this._activeIndex];return t?L`
    ${t}
    `:q}_renderSelectFace(){return L`${q}`}_renderMultiSelectLabel(){switch(this._selectedIndexes.length){case 0:return L`No items selected`;case 1:return L`1 item selected`;default:return L`${this._selectedIndexes.length} items selected`}}_renderComboboxFace(){let t="";return t=this._isBeingFiltered?this._filterPattern:this._selectedIndex>-1?this._options[this._selectedIndex]?.label??"":"",L` +
    + ${this._multiple?this._renderMultiSelectLabel():q} + + +
    + `}_renderDropdownControls(){return L`${q}`}_renderDropdown(){const t=At({dropdown:!0,multiple:this._multiple});return L` +
    + ${"above"===this.position?this._renderDescription():q} + ${this._renderOptions()} ${this._renderDropdownControls()} + ${"below"===this.position?this._renderDescription():q} +
    + `}render(){return L` + + ${this.combobox?this._renderComboboxFace():this._renderSelectFace()} + ${this.open?this._renderDropdown():q} + `}}Ze([ht({type:String,reflect:!0,attribute:"aria-expanded"})],ts.prototype,"ariaExpanded",void 0),Ze([ht({type:Boolean,reflect:!0})],ts.prototype,"creatable",void 0),Ze([ht({type:Boolean,reflect:!0})],ts.prototype,"combobox",void 0),Ze([ht({type:Boolean,reflect:!0})],ts.prototype,"disabled",null),Ze([ht({type:Boolean,reflect:!0})],ts.prototype,"invalid",void 0),Ze([ht()],ts.prototype,"filter",null),Ze([ht({type:Boolean,reflect:!0})],ts.prototype,"focused",void 0),Ze([ht({type:Boolean,reflect:!0})],ts.prototype,"open",void 0),Ze([ht({type:Array})],ts.prototype,"options",null),Ze([ht({reflect:!0})],ts.prototype,"position",void 0),Ze([ht({type:Number,attribute:!0,reflect:!0})],ts.prototype,"tabIndex",void 0),Ze([bt({flatten:!0,selector:"vscode-option"})],ts.prototype,"_assignedOptions",void 0),Ze([dt()],ts.prototype,"_activeIndex",void 0),Ze([dt()],ts.prototype,"_currentDescription",void 0),Ze([dt()],ts.prototype,"_filter",void 0),Ze([dt()],ts.prototype,"_filteredOptions",null),Ze([dt()],ts.prototype,"_filterPattern",void 0),Ze([dt()],ts.prototype,"_selectedIndex",void 0),Ze([dt()],ts.prototype,"_selectedIndexes",void 0),Ze([dt()],ts.prototype,"_options",void 0),Ze([dt()],ts.prototype,"_value",void 0),Ze([dt()],ts.prototype,"_values",void 0),Ze([dt()],ts.prototype,"_listScrollTop",void 0),Ze([dt()],ts.prototype,"_isPlaceholderOptionActive",void 0),Ze([dt()],ts.prototype,"_isBeingFiltered",void 0),Ze([pt(".options")],ts.prototype,"_listElement",void 0);var es=[yt,n` + :host { + display: inline-block; + max-width: 100%; + outline: none; + position: relative; + width: 320px; + } + + .main-slot { + display: none; + } + + .select-face, + .combobox-face { + background-color: var(--vscode-settings-dropdownBackground, #313131); + border-color: var(--vscode-settings-dropdownBorder, #3c3c3c); + border-radius: 2px; + border-style: solid; + border-width: 1px; + box-sizing: border-box; + color: var(--vscode-settings-dropdownForeground, #cccccc); + font-family: var(--vscode-font-family, sans-serif); + font-size: var(--vscode-font-size, 13px); + font-weight: var(--vscode-font-weight, normal); + line-height: 18px; + position: relative; + user-select: none; + width: 100%; + } + + :host([invalid]) .select-face, + :host(:invalid) .select-face, + :host([invalid]) .combobox-face, + :host(:invalid) .combobox-face { + background-color: var(--vscode-inputValidation-errorBackground, #5a1d1d); + border-color: var(--vscode-inputValidation-errorBorder, #be1100); + } + + .select-face { + cursor: pointer; + display: block; + padding: 3px 4px; + } + + .select-face .text { + display: block; + height: 18px; + overflow: hidden; + } + + .select-face.multiselect { + padding: 0; + } + + .select-face-badge { + background-color: var(--vscode-badge-background, #616161); + border-radius: 2px; + color: var(--vscode-badge-foreground, #f8f8f8); + display: inline-block; + flex-shrink: 0; + font-size: 11px; + line-height: 16px; + margin: 2px; + padding: 2px 3px; + text-transform: uppercase; + white-space: nowrap; + } + + .select-face-badge.no-item { + background-color: transparent; + color: inherit; + } + + .combobox-face { + display: flex; + } + + :host(:focus) .select-face, + :host(:focus) .combobox-face, + :host([focused]) .select-face, + :host([focused]) .combobox-face { + border-color: var(--vscode-focusBorder, #0078d4); + outline: none; + } + + .combobox-input { + background-color: transparent; + box-sizing: border-box; + border: 0; + color: var(--vscode-foreground, #cccccc); + display: block; + font-family: var(--vscode-font-family, sans-serif); + font-size: var(--vscode-font-size, 13px); + line-height: 16px; + padding: 4px; + width: 100%; + } + + .combobox-input:focus { + outline: none; + } + + .combobox-button { + align-items: center; + background-color: transparent; + border: 0; + border-radius: 2px; + box-sizing: content-box; + color: var(--vscode-foreground, #cccccc); + cursor: pointer; + display: flex; + flex-shrink: 0; + height: 16px; + justify-content: center; + margin: 1px 1px 0 0; + padding: 3px; + width: 22px; + } + + .combobox-button:hover, + .combobox-button:focus-visible { + background-color: var( + --vscode-toolbar-hoverBackground, + rgba(90, 93, 94, 0.31) + ); + outline-style: dashed; + outline-color: var(--vscode-toolbar-hoverOutline, transparent); + } + + .combobox-button:focus-visible { + outline: none; + } + + .icon { + color: var(--vscode-foreground, #cccccc); + display: block; + height: 14px; + pointer-events: none; + width: 14px; + } + + .select-face .icon { + position: absolute; + right: 6px; + top: 5px; + } + + .icon svg { + color: var(--vscode-foreground, #cccccc); + height: 100%; + width: 100%; + } + + .dropdown { + background-color: var(--vscode-settings-dropdownBackground, #313131); + border-color: var(--vscode-settings-dropdownListBorder, #454545); + border-radius: 0 0 3px 3px; + border-style: solid; + border-width: 1px; + box-sizing: border-box; + left: 0; + padding-bottom: 2px; + position: absolute; + top: 100%; + width: 100%; + z-index: var(--dropdown-z-index, 2); + } + + :host([position='above']) .dropdown { + border-radius: 3px 3px 0 0; + bottom: 26px; + padding-bottom: 0; + padding-top: 2px; + top: auto; + } + + :host(:focus) .dropdown, + :host([focused]) .dropdown { + border-color: var(--vscode-focusBorder, #0078d4); + } + + .options { + box-sizing: border-box; + cursor: pointer; + list-style: none; + margin: 0; + max-height: 222px; + overflow: auto; + padding: 1px; + } + + .option { + align-items: center; + box-sizing: border-box; + color: var(--vscode-foreground, #cccccc); + cursor: pointer; + display: flex; + font-family: var(--vscode-font-family, sans-serif); + font-size: var(--vscode-font-size, 13px); + font-weight: var(--vscode-font-weight, normal); + height: 22px; + line-height: 18px; + min-height: calc(var(--vscode-font-size) * 1.3); + padding: 1px 3px; + user-select: none; + outline-color: transparent; + outline-offset: -1px; + outline-style: solid; + outline-width: 1px; + } + + .option b { + color: var(--vscode-list-highlightForeground, #2aaaff); + } + + .option.active b { + color: var(--vscode-list-focusHighlightForeground, #2aaaff); + } + + .option:not(.disabled):hover { + background-color: var(--vscode-list-hoverBackground, #2a2d2e); + color: var(--vscode-list-hoverForeground, #ffffff); + } + + :host-context(body[data-vscode-theme-kind='vscode-high-contrast']) + .option:hover, + :host-context(body[data-vscode-theme-kind='vscode-high-contrast-light']) + .option:hover { + outline-style: dotted; + outline-color: var(--vscode-list-focusOutline, #0078d4); + outline-width: 1px; + } + + .option.disabled { + cursor: not-allowed; + opacity: 0.4; + } + + .option.active, + .option.active:hover { + background-color: var(--vscode-list-activeSelectionBackground, #04395e); + color: var(--vscode-list-activeSelectionForeground, #ffffff); + outline-color: var(--vscode-list-activeSelectionBackground, #04395e); + outline-style: solid; + outline-width: 1px; + } + + .no-options { + align-items: center; + border-color: transparent; + border-style: solid; + border-width: 1px; + color: var(--vscode-foreground, #cccccc); + cursor: default; + display: flex; + font-family: var(--vscode-font-family, sans-serif); + font-size: var(--vscode-font-size, 13px); + font-weight: var(--vscode-font-weight, normal); + line-height: 18px; + min-height: calc(var(--vscode-font-size) * 1.3); + opacity: 0.85; + padding: 1px 3px; + user-select: none; + } + + .placeholder { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + .placeholder span { + font-weight: bold; + } + + .placeholder:not(.disabled):hover { + color: var(--vscode-list-activeSelectionForeground, #ffffff); + } + + :host-context(body[data-vscode-theme-kind='vscode-high-contrast']) + .option.active, + :host-context(body[data-vscode-theme-kind='vscode-high-contrast-light']) + .option.active:hover { + outline-color: var(--vscode-list-focusOutline, #0078d4); + outline-style: dashed; + } + + .option-label { + display: block; + pointer-events: none; + width: 100%; + } + + .dropdown.multiple .option.selected { + background-color: var(--vscode-list-hoverBackground, #2a2d2e); + outline-color: var(--vscode-list-hoverBackground, #2a2d2e); + } + + .dropdown.multiple .option.selected.active { + background-color: var(--vscode-list-activeSelectionBackground, #04395e); + color: var(--vscode-list-activeSelectionForeground, #ffffff); + outline-color: var(--vscode-list-activeSelectionBackground, #04395e); + } + + .checkbox-icon { + background-color: var(--vscode-settings-checkboxBackground, #313131); + border: 1px solid currentColor; + border-radius: 2px; + box-sizing: border-box; + height: 14px; + margin-right: 5px; + overflow: hidden; + position: relative; + width: 14px; + } + + .checkbox-icon.checked:before, + .checkbox-icon.checked:after { + content: ''; + display: block; + height: 5px; + position: absolute; + transform: rotate(-45deg); + width: 10px; + } + + .checkbox-icon.checked:before { + background-color: var(--vscode-foreground, #cccccc); + left: 1px; + top: 2.5px; + } + + .checkbox-icon.checked:after { + background-color: var(--vscode-settings-checkboxBackground, #313131); + left: 1px; + top: -0.5px; + } + + .dropdown-controls { + display: flex; + justify-content: flex-end; + padding: 4px; + } + + .dropdown-controls :not(:last-child) { + margin-right: 4px; + } + + .action-icon { + align-items: center; + background-color: transparent; + border: 0; + color: var(--vscode-foreground, #cccccc); + cursor: pointer; + display: flex; + height: 24px; + justify-content: center; + padding: 0; + width: 24px; + } + + .action-icon:focus { + outline: none; + } + + .action-icon:focus-visible { + outline: 1px solid var(--vscode-focusBorder, #0078d4); + outline-offset: -1px; + } + + .description { + border-color: var(--vscode-settings-dropdownBorder, #3c3c3c); + border-style: solid; + border-width: 1px 0 0; + color: var(--vscode-foreground, #cccccc); + font-family: var(--vscode-font-family, sans-serif); + font-size: var(--vscode-font-size, 13px); + font-weight: var(--vscode-font-weight, normal); + line-height: 1.3; + padding: 6px 4px; + word-wrap: break-word; + } + + :host([position='above']) .description { + border-width: 0 0 1px; + } + `],ss=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let is=class extends ts{set selectedIndexes(t){const e=[];t.forEach((t=>{void 0!==this._options[t]&&(e.includes(t)||(this._options[t].selected=!0,e.push(t)))})),this._selectedIndexes=e}get selectedIndexes(){return this._selectedIndexes}set value(t){const e=Array.isArray(t)?t.map((t=>String(t))):[String(t)];this._values=[],this._selectedIndexes.forEach((t=>{this._options[t].selected=!1})),this._selectedIndexes=[],e.forEach((t=>{"number"==typeof this._valueOptionIndexMap[t]&&(this._selectedIndexes.push(this._valueOptionIndexMap[t]),this._options[this._valueOptionIndexMap[t]].selected=!0,this._values.push(t))})),this._selectedIndexes.length>0?this._requestedValueToSetLater=[]:this._requestedValueToSetLater=Array.isArray(t)?t:[t],this._setFormValue(),this._manageRequired()}get value(){return this._values}get form(){return this._internals.form}get type(){return"select-multiple"}get validity(){return this._internals.validity}get validationMessage(){return this._internals.validationMessage}get willValidate(){return this._internals.willValidate}checkValidity(){return this._internals.checkValidity()}reportValidity(){return this._internals.reportValidity()}constructor(){super(),this.defaultValue=[],this.required=!1,this.name=void 0,this._requestedValueToSetLater=[],this._onOptionClick=t=>{const e=t.composedPath().find((t=>"matches"in t&&t.matches("li.option")));if(!e)return;if(e.classList.contains("placeholder"))return void this._createAndSelectSuggestedOption();const s=Number(e.dataset.index);if(this._options[s]){if(this._options[s].disabled)return;this._options[s].selected=!this._options[s].selected}this._selectedIndexes=[],this._values=[],this._options.forEach((t=>{t.selected&&(this._selectedIndexes.push(t.index),this._values.push(t.value))})),this._setFormValue(),this._manageRequired(),this._dispatchChangeEvent()},this._multiple=!0,this._internals=this.attachInternals()}connectedCallback(){super.connectedCallback(),this.updateComplete.then((()=>{this._setDefaultValue(),this._manageRequired()}))}formResetCallback(){this.updateComplete.then((()=>{this.value=this.defaultValue}))}formStateRestoreCallback(t,e){const s=Array.from(t.entries()).map((t=>String(t[1])));this.updateComplete.then((()=>{this.value=s}))}_setDefaultValue(){if(Array.isArray(this.defaultValue)&&this.defaultValue.length>0){const t=this.defaultValue.map((t=>String(t)));this.value=t}}_manageRequired(){const{value:t}=this;0===t.length&&this.required?this._internals.setValidity({valueMissing:!0},"Please select an item in the list.",this._faceElement):this._internals.setValidity({})}_setFormValue(){const t=new FormData;this._values.forEach((e=>{t.append(this.name??"",e)})),this._internals.setFormValue(t)}async _createAndSelectSuggestedOption(){super._createAndSelectSuggestedOption();const t=this._createSuggestedOption();await this.updateComplete,this.selectedIndexes=[...this.selectedIndexes,t],this._dispatchChangeEvent();const e=new CustomEvent("vsc-multi-select-create-option",{detail:{value:this._options[t]?.value??""}});this.dispatchEvent(e),this._toggleDropdown(!1),this._isPlaceholderOptionActive=!1}_onSlotChange(){super._onSlotChange(),this._requestedValueToSetLater.length>0&&this.options.forEach(((t,e)=>{this._requestedValueToSetLater.includes(t.value)&&(this._selectedIndexes.push(e),this._values.push(t.value),this._options[e].selected=!0,this._requestedValueToSetLater=this._requestedValueToSetLater.filter((e=>e!==t.value)))}))}_onMultiAcceptClick(){this._toggleDropdown(!1)}_onMultiDeselectAllClick(){this._selectedIndexes=[],this._values=[],this._options=this._options.map((t=>({...t,selected:!1}))),this._manageRequired(),this._dispatchChangeEvent()}_onMultiSelectAllClick(){this._selectedIndexes=[],this._values=[],this._options=this._options.map((t=>({...t,selected:!0}))),this._options.forEach(((t,e)=>{this._selectedIndexes.push(e),this._values.push(t.value),this._dispatchChangeEvent()})),this._setFormValue(),this._manageRequired()}_renderLabel(){switch(this._selectedIndexes.length){case 0:return L`No items selected`;case 1:return L`1 item selected`;default:return L`${this._selectedIndexes.length} items selected`}}_renderSelectFace(){return L` +
    -1?0:-1} + > + ${this._renderLabel()} ${Ne} +
    + `}_renderDropdownControls(){return this._filteredOptions.length>0?L` + + `:L`${q}`}};is.styles=es,is.shadowRootOptions={...nt.shadowRootOptions,delegatesFocus:!0},is.formAssociated=!0,ss([ht({type:Array,attribute:"default-value"})],is.prototype,"defaultValue",void 0),ss([ht({type:Boolean,reflect:!0})],is.prototype,"required",void 0),ss([ht({reflect:!0})],is.prototype,"name",void 0),ss([ht({type:Array,attribute:!1})],is.prototype,"selectedIndexes",null),ss([ht({type:Array})],is.prototype,"value",null),ss([pt(".face")],is.prototype,"_faceElement",void 0),is=ss([xt("vscode-multi-select")],is);const os=[yt,n` + :host { + align-items: center; + display: block; + height: 28px; + margin: 0; + outline: none; + width: 28px; + } + + .progress { + height: 100%; + width: 100%; + } + + .background { + fill: none; + stroke: transparent; + stroke-width: 2px; + } + + .indeterminate-indicator-1 { + fill: none; + stroke: var(--vscode-progressBar-background, #0078d4); + stroke-width: 2px; + stroke-linecap: square; + transform-origin: 50% 50%; + transform: rotate(-90deg); + transition: all 0.2s ease-in-out; + animation: spin-infinite 2s linear infinite; + } + + @keyframes spin-infinite { + 0% { + stroke-dasharray: 0.01px 43.97px; + transform: rotate(0deg); + } + 50% { + stroke-dasharray: 21.99px 21.99px; + transform: rotate(450deg); + } + 100% { + stroke-dasharray: 0.01px 43.97px; + transform: rotate(1080deg); + } + } + `];var rs=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let ns=class extends mt{constructor(){super(...arguments),this.ariaLabel="Loading",this.ariaLive="assertive",this.role="alert"}render(){return L` + + + `}};ns.styles=os,rs([ht({reflect:!0,attribute:"aria-label"})],ns.prototype,"ariaLabel",void 0),rs([ht({reflect:!0,attribute:"aria-live"})],ns.prototype,"ariaLive",void 0),rs([ht({reflect:!0})],ns.prototype,"role",void 0),ns=rs([xt("vscode-progress-ring")],ns);const ls=[yt,qt,n` + :host(:invalid) .icon, + :host([invalid]) .icon { + background-color: var(--vscode-inputValidation-errorBackground, #5a1d1d); + border-color: var(--vscode-inputValidation-errorBorder, #be1100); + } + + .icon { + border-radius: 9px; + } + + .icon.checked:before { + background-color: currentColor; + border-radius: 4px; + content: ''; + height: 8px; + left: 50%; + margin: -4px 0 0 -4px; + position: absolute; + top: 50%; + width: 8px; + } + + :host(:focus):host(:not([disabled])) .icon { + outline: 1px solid var(--vscode-focusBorder, #0078d4); + outline-offset: -1px; + } + `];var as=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let cs=class extends(Ut(Rt)){constructor(){super(),this.autofocus=!1,this.checked=!1,this.defaultChecked=!1,this.invalid=!1,this.name="",this.value="",this.disabled=!1,this.required=!1,this.role="radio",this.tabIndex=0,this._slottedText="",this.type="radio",this._handleClick=()=>{this.disabled||this.checked||(this._checkButton(),this._handleValueChange(),this._dispatchCustomEvent(),this.dispatchEvent(new Event("change",{bubbles:!0})))},this._handleKeyDown=t=>{this.disabled||"Enter"!==t.key&&" "!==t.key||(t.preventDefault()," "!==t.key||this.checked||(this.checked=!0,this._handleValueChange(),this._dispatchCustomEvent(),this.dispatchEvent(new Event("change",{bubbles:!0}))),"Enter"===t.key&&this._internals.form?.requestSubmit())},this._internals=this.attachInternals()}connectedCallback(){super.connectedCallback(),this.addEventListener("keydown",this._handleKeyDown),this.addEventListener("click",this._handleClick),this._handleValueChange()}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("keydown",this._handleKeyDown),this.removeEventListener("click",this._handleClick)}update(t){super.update(t),t.has("checked")&&this._handleValueChange(),t.has("required")&&this._handleValueChange()}get form(){return this._internals.form}get validity(){return this._internals.validity}get validationMessage(){return this._internals.validationMessage}get willValidate(){return this._internals.willValidate}checkValidity(){return this._internals.checkValidity()}reportValidity(){return this._internals.reportValidity()}formResetCallback(){this._getRadios().forEach((t=>{t.checked=t.defaultChecked})),this.updateComplete.then((()=>{this._handleValueChange()}))}formStateRestoreCallback(t,e){this.value===t&&""!==t&&(this.checked=!0)}_dispatchCustomEvent(){this.dispatchEvent(new CustomEvent("vsc-change",{detail:{checked:this.checked,label:this.label,value:this.value},bubbles:!0,composed:!0}))}_getRadios(){const t=this.getRootNode({composed:!0});if(!t)return[];const e=t.querySelectorAll(`vscode-radio[name="${this.name}"]`);return Array.from(e)}_uncheckOthers(t){t.forEach((t=>{t!==this&&(t.checked=!1)}))}_checkButton(){const t=this._getRadios();this.checked=!0,t.forEach((t=>{t!==this&&(t.checked=!1)}))}setComponentValidity(t){t?this._internals.setValidity({}):this._internals.setValidity({valueMissing:!0},"Please select one of these options.",this._inputEl)}_setGroupValidity(t,e){this.updateComplete.then((()=>{t.forEach((t=>{t.setComponentValidity(e)}))}))}_setActualFormValue(){let t="";t=this.checked?this.value?this.value:"on":null,this._internals.setFormValue(t)}_handleValueChange(){const t=this._getRadios(),e=t.some((t=>t.required));if(this._setActualFormValue(),this.checked)this._uncheckOthers(t),this._setGroupValidity(t,!0);else{const s=!!t.find((t=>t.checked)),i=e&&!s;this._setGroupValidity(t,!i)}}render(){const t=At({icon:!0,checked:this.checked}),e=At({"label-inner":!0,"is-slot-empty":""===this._slottedText});return L` +
    + +
    + +
    + `}};cs.styles=ls,cs.formAssociated=!0,cs.shadowRootOptions={...nt.shadowRootOptions,delegatesFocus:!0},as([ht({type:Boolean,reflect:!0})],cs.prototype,"autofocus",void 0),as([ht({type:Boolean,reflect:!0})],cs.prototype,"checked",void 0),as([ht({type:Boolean,reflect:!0,attribute:"default-checked"})],cs.prototype,"defaultChecked",void 0),as([ht({type:Boolean,reflect:!0})],cs.prototype,"invalid",void 0),as([ht({reflect:!0})],cs.prototype,"name",void 0),as([ht()],cs.prototype,"value",void 0),as([ht({type:Boolean,reflect:!0})],cs.prototype,"disabled",void 0),as([ht({type:Boolean,reflect:!0})],cs.prototype,"required",void 0),as([ht({reflect:!0})],cs.prototype,"role",void 0),as([ht({type:Number,reflect:!0})],cs.prototype,"tabIndex",void 0),as([dt()],cs.prototype,"_slottedText",void 0),as([pt("#input")],cs.prototype,"_inputEl",void 0),as([ht()],cs.prototype,"type",void 0),cs=as([xt("vscode-radio")],cs);var hs=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let ds=class extends ts{set selectedIndex(t){this._selectedIndex=t,this._options[t]?(this._activeIndex=t,this._value=this._options[t].value,this._internals.setFormValue(this._value),this._manageRequired()):(this._value="",this._internals.setFormValue(""),this._manageRequired())}get selectedIndex(){return this._selectedIndex}set value(t){this._options[this._selectedIndex]&&(this._options[this._selectedIndex].selected=!1),this._selectedIndex=this._options.findIndex((e=>e.value===t)),this._selectedIndex>-1?(this._options[this._selectedIndex].selected=!0,this._value=t,this._requestedValueToSetLater=""):(this._value="",this._requestedValueToSetLater=t),this._internals.setFormValue(this._value),this._manageRequired()}get value(){return this._options[this._selectedIndex]?this._options[this._selectedIndex]?.value??"":""}get validity(){return this._internals.validity}get validationMessage(){return this._internals.validationMessage}get willValidate(){return this._internals.willValidate}checkValidity(){return this._internals.checkValidity()}reportValidity(){return this._internals.reportValidity()}updateInputValue(){if(!this.combobox)return;const t=this.renderRoot.querySelector(".combobox-input");t&&(t.value=this._options[this._selectedIndex]?this._options[this._selectedIndex].label:"")}constructor(){super(),this.defaultValue="",this.role="listbox",this.name=void 0,this.required=!1,this._requestedValueToSetLater="",this._multiple=!1,this._internals=this.attachInternals()}connectedCallback(){super.connectedCallback(),this.updateComplete.then((()=>{this._manageRequired()}))}formResetCallback(){this.value=this.defaultValue}formStateRestoreCallback(t,e){this.updateComplete.then((()=>{this.value=t}))}get type(){return"select-one"}get form(){return this._internals.form}async _createAndSelectSuggestedOption(){const t=this._createSuggestedOption();await this.updateComplete,this.selectedIndex=t,this._dispatchChangeEvent();const e=new CustomEvent("vsc-single-select-create-option",{detail:{value:this._options[t]?.value??""}});this.dispatchEvent(e),this._toggleDropdown(!1),this._isPlaceholderOptionActive=!1}_onSlotChange(){if(super._onSlotChange(),this._requestedValueToSetLater){const t=this._options.findIndex((t=>t.value===this._requestedValueToSetLater));t>0&&(this._selectedIndex=t,this._requestedValueToSetLater="")}this._selectedIndex>-1&&this._options.length>0?(this._internals.setFormValue(this._options[this._selectedIndex].value),this._manageRequired()):(this._internals.setFormValue(null),this._manageRequired())}_onArrowUpKeyDown(){if(super._onArrowUpKeyDown(),this.open||this._selectedIndex<=0)return;const t=Xe(this.combobox?this._filteredOptions:this._options,this._activeIndex);this._filterPattern="",this._selectedIndex=t,this._activeIndex=t,this._value=t>-1?this._options[t].value:"",this._internals.setFormValue(this._value),this._manageRequired(),this._dispatchChangeEvent()}_onArrowDownKeyDown(){if(super._onArrowDownKeyDown(),this.open||this._selectedIndex>=this._options.length-1)return;const t=Ye(this.combobox?this._filteredOptions:this._options,this._activeIndex);this._filterPattern="",this._selectedIndex=t,this._activeIndex=t,this._value=t>-1?this._options[t].value:"",this._internals.setFormValue(this._value),this._manageRequired(),this._dispatchChangeEvent()}_onEnterKeyDown(t){super._onEnterKeyDown(t),this.updateInputValue(),this._internals.setFormValue(this._value),this._manageRequired()}_onOptionClick(t){super._onOptionClick(t);const e=t.composedPath().find((t=>{if("matches"in t)return t.matches("li.option")}));if(!e||e.matches(".disabled"))return;e.classList.contains("placeholder")?this.creatable&&this._createAndSelectSuggestedOption():(this._selectedIndex=Number(e.dataset.index),this._value=this._options[this._selectedIndex].value,this._toggleDropdown(!1),this._internals.setFormValue(this._value),this._manageRequired(),this._dispatchChangeEvent())}_manageRequired(){const{value:t}=this;""===t&&this.required?this._internals.setValidity({valueMissing:!0},"Please select an item in the list.",this._face):this._internals.setValidity({})}_renderSelectFace(){const t=this._options[this._selectedIndex]?.label??"";return L` +
    -1?0:-1} + > + ${t} ${Ne} +
    + `}};ds.styles=es,ds.shadowRootOptions={...nt.shadowRootOptions,delegatesFocus:!0},ds.formAssociated=!0,hs([ht({attribute:"default-value"})],ds.prototype,"defaultValue",void 0),hs([ht({type:String,attribute:!0,reflect:!0})],ds.prototype,"role",void 0),hs([ht({reflect:!0})],ds.prototype,"name",void 0),hs([ht({type:Number,attribute:"selected-index"})],ds.prototype,"selectedIndex",null),hs([ht({type:String})],ds.prototype,"value",null),hs([ht({type:Boolean,reflect:!0})],ds.prototype,"required",void 0),hs([pt(".face")],ds.prototype,"_face",void 0),ds=hs([xt("vscode-single-select")],ds);const us=[yt,n` + :host { + display: block; + position: relative; + } + + .scrollable-container { + height: 100%; + overflow: auto; + } + + .scrollable-container::-webkit-scrollbar { + cursor: default; + width: 0; + } + + .scrollable-container { + scrollbar-width: none; + } + + .shadow { + box-shadow: var(--vscode-scrollbar-shadow, #000000) 0 6px 6px -6px inset; + display: none; + height: 3px; + left: 0; + pointer-events: none; + position: absolute; + top: 0; + z-index: 1; + width: 100%; + } + + .shadow.visible { + display: block; + } + + .scrollbar-track { + height: 100%; + position: absolute; + right: 0; + top: 0; + width: 10px; + z-index: 100; + } + + .scrollbar-track.hidden { + display: none; + } + + .scrollbar-thumb { + background-color: transparent; + min-height: var(--min-thumb-height, 20px); + opacity: 0; + position: absolute; + right: 0; + width: 10px; + } + + .scrollbar-thumb.visible { + background-color: var( + --vscode-scrollbarSlider-background, + rgba(121, 121, 121, 0.4) + ); + opacity: 1; + transition: opacity 100ms; + } + + .scrollbar-thumb.fade { + background-color: var( + --vscode-scrollbarSlider-background, + rgba(121, 121, 121, 0.4) + ); + opacity: 0; + transition: opacity 800ms; + } + + .scrollbar-thumb.visible:hover { + background-color: var( + --vscode-scrollbarSlider-hoverBackground, + rgba(100, 100, 100, 0.7) + ); + } + + .scrollbar-thumb.visible.active, + .scrollbar-thumb.visible.active:hover { + background-color: var( + --vscode-scrollbarSlider-activeBackground, + rgba(191, 191, 191, 0.4) + ); + } + + .prevent-interaction { + bottom: 0; + left: 0; + right: 0; + top: 0; + position: absolute; + z-index: 99; + } + + .content { + overflow: hidden; + } + `];var ps=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let vs=class extends mt{constructor(){super(...arguments),this.shadow=!0,this.scrolled=!1,this._isDragging=!1,this._thumbHeight=0,this._thumbY=0,this._thumbVisible=!1,this._thumbFade=!1,this._thumbActive=!1,this._scrollThumbStartY=0,this._mouseStartY=0,this._scrollbarVisible=!0,this._scrollbarTrackZ=0,this._resizeObserverCallback=()=>{this._updateScrollbar()},this._onSlotChange=()=>{this._zIndexFix()},this._onScrollThumbMouseMoveBound=this._onScrollThumbMouseMove.bind(this),this._onScrollThumbMouseUpBound=this._onScrollThumbMouseUp.bind(this),this._onComponentMouseOverBound=this._onComponentMouseOver.bind(this),this._onComponentMouseOutBound=this._onComponentMouseOut.bind(this)}set scrollPos(t){this._scrollableContainer.scrollTop=t}get scrollPos(){return this._scrollableContainer?this._scrollableContainer.scrollTop:0}get scrollMax(){return this._scrollableContainer?this._scrollableContainer.scrollHeight:0}connectedCallback(){super.connectedCallback(),this._hostResizeObserver=new ResizeObserver(this._resizeObserverCallback),this._contentResizeObserver=new ResizeObserver(this._resizeObserverCallback),this.requestUpdate(),this.updateComplete.then((()=>{this._scrollableContainer.addEventListener("scroll",this._onScrollableContainerScroll.bind(this)),this._hostResizeObserver.observe(this),this._contentResizeObserver.observe(this._contentElement)})),this.addEventListener("mouseover",this._onComponentMouseOverBound),this.addEventListener("mouseout",this._onComponentMouseOutBound)}disconnectedCallback(){super.disconnectedCallback(),this._hostResizeObserver.unobserve(this),this._hostResizeObserver.disconnect(),this._contentResizeObserver.unobserve(this._contentElement),this._contentResizeObserver.disconnect(),this.removeEventListener("mouseover",this._onComponentMouseOverBound),this.removeEventListener("mouseout",this._onComponentMouseOutBound)}_updateScrollbar(){const t=this.getBoundingClientRect(),e=this._contentElement.getBoundingClientRect();t.height>=e.height?this._scrollbarVisible=!1:(this._scrollbarVisible=!0,this._thumbHeight=t.height*(t.height/e.height)),this.requestUpdate()}_zIndexFix(){let t=0;this._assignedElements.forEach((e=>{if("style"in e){const s=window.getComputedStyle(e).zIndex;/([0-9-])+/g.test(s)&&(t=Number(s)>t?Number(s):t)}})),this._scrollbarTrackZ=t+1,this.requestUpdate()}_onScrollThumbMouseDown(t){const e=this.getBoundingClientRect(),s=this._scrollThumbElement.getBoundingClientRect();this._mouseStartY=t.screenY,this._scrollThumbStartY=s.top-e.top,this._isDragging=!0,this._thumbActive=!0,document.addEventListener("mousemove",this._onScrollThumbMouseMoveBound),document.addEventListener("mouseup",this._onScrollThumbMouseUpBound)}_onScrollThumbMouseMove(t){const e=this._scrollThumbStartY+(t.screenY-this._mouseStartY);let s=0;const i=this.getBoundingClientRect().height,o=this._scrollThumbElement.getBoundingClientRect().height,r=this._contentElement.getBoundingClientRect().height;s=e<0?0:e>i-o?i-o:e,this._thumbY=s,this._scrollableContainer.scrollTop=s/(i-o)*(r-i)}_onScrollThumbMouseUp(t){this._isDragging=!1,this._thumbActive=!1;const e=this.getBoundingClientRect(),{x:s,y:i,width:o,height:r}=e,{pageX:n,pageY:l}=t;(n>s+o||ni+r||l0;const e=this.getBoundingClientRect().height,s=this._scrollThumbElement.getBoundingClientRect().height,i=t/(this._contentElement.getBoundingClientRect().height-e);this._thumbY=i*(e-s)}_onComponentMouseOver(){this._thumbVisible=!0,this._thumbFade=!1}_onComponentMouseOut(){this._thumbActive||(this._thumbVisible=!1,this._thumbFade=!0)}render(){return L` +
    +
    + ${this._isDragging?L`
    `:q} +
    +
    +
    +
    + +
    +
    + `}};vs.styles=us,ps([ht({type:Boolean,reflect:!0})],vs.prototype,"shadow",void 0),ps([ht({type:Boolean,reflect:!0})],vs.prototype,"scrolled",void 0),ps([ht({type:Number,attribute:"scroll-pos"})],vs.prototype,"scrollPos",null),ps([ht({type:Number,attribute:"scroll-max"})],vs.prototype,"scrollMax",null),ps([dt()],vs.prototype,"_isDragging",void 0),ps([dt()],vs.prototype,"_thumbHeight",void 0),ps([dt()],vs.prototype,"_thumbY",void 0),ps([dt()],vs.prototype,"_thumbVisible",void 0),ps([dt()],vs.prototype,"_thumbFade",void 0),ps([dt()],vs.prototype,"_thumbActive",void 0),ps([pt(".content")],vs.prototype,"_contentElement",void 0),ps([pt(".scrollbar-thumb",!0)],vs.prototype,"_scrollThumbElement",void 0),ps([pt(".scrollable-container")],vs.prototype,"_scrollableContainer",void 0),ps([bt()],vs.prototype,"_assignedElements",void 0),vs=ps([xt("vscode-scrollable")],vs);const bs=[yt,n` + :host { + --separator-border: var(--vscode-editorWidget-border, transparent); + + border: 1px solid var(--vscode-editorWidget-border); + display: block; + overflow: hidden; + position: relative; + } + + ::slotted(*) { + height: 100%; + width: 100%; + } + + ::slotted(vscode-split-layout) { + border: 0; + } + + .wrapper { + display: flex; + height: 100%; + width: 100%; + } + + .wrapper.horizontal { + flex-direction: column; + } + + .start { + box-sizing: border-box; + flex: 1; + min-height: 0; + min-width: 0; + } + + :host([split='vertical']) .start { + border-right: 1px solid var(--separator-border); + } + + :host([split='horizontal']) .start { + border-bottom: 1px solid var(--separator-border); + } + + .end { + flex: 1; + min-height: 0; + min-width: 0; + } + + :host([split='vertical']) .start, + :host([split='vertical']) .end { + height: 100%; + } + + :host([split='horizontal']) .start, + :host([split='horizontal']) .end { + width: 100%; + } + + .handle-overlay { + display: none; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; + z-index: 1; + } + + .handle-overlay.active { + display: block; + } + + .handle-overlay.split-vertical { + cursor: ew-resize; + } + + .handle-overlay.split-horizontal { + cursor: ns-resize; + } + + .handle { + background-color: transparent; + position: absolute; + z-index: 2; + } + + .handle.hover { + transition: background-color 0.1s ease-out 0.3s; + background-color: var(--vscode-sash-hoverBorder); + } + + .handle.hide { + background-color: transparent; + transition: background-color 0.1s ease-out; + } + + .handle.split-vertical { + cursor: ew-resize; + height: 100%; + } + + .handle.split-horizontal { + cursor: ns-resize; + width: 100%; + } + `];var fs,gs=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};const ms=t=>{if(!t)return{value:0,unit:"pixel"};let e,s;t.endsWith("%")?(e="percent",s=+t.substring(0,t.length-1)):t.endsWith("px")?(e="pixel",s=+t.substring(0,t.length-2)):(e="pixel",s=+t);return{unit:e,value:isNaN(s)?0:s}},xs=(t,e)=>0===e?0:Math.min(100,t/e*100),ys=(t,e)=>e*(t/100);let ws=fs=class extends mt{set split(t){this._split!==t&&(this._split=t,this.resetHandlePosition())}get split(){return this._split}set handlePosition(t){this._rawHandlePosition=t,this._handlePositionPropChanged()}get handlePosition(){return this._rawHandlePosition}set fixedPane(t){this._fixedPane=t,this._fixedPanePropChanged()}get fixedPane(){return this._fixedPane}constructor(){super(),this._split="vertical",this.resetOnDblClick=!1,this.handleSize=4,this.initialHandlePosition="50%",this._fixedPane="none",this._handlePosition=0,this._isDragActive=!1,this._hover=!1,this._hide=!1,this._boundRect=new DOMRect,this._handleOffset=0,this._wrapperObserved=!1,this._fixedPaneSize=0,this._handleResize=t=>{const e=t[0].contentRect,{width:s,height:i}=e;this._boundRect=e;const o="vertical"===this.split?s:i;"start"===this.fixedPane&&(this._handlePosition=this._fixedPaneSize),"end"===this.fixedPane&&(this._handlePosition=o-this._fixedPaneSize)},this._handleMouseUp=t=>{this._isDragActive=!1,t.target!==this&&(this._hover=!1,this._hide=!0),window.removeEventListener("mouseup",this._handleMouseUp),window.removeEventListener("mousemove",this._handleMouseMove);const{width:e,height:s}=this._boundRect,i="vertical"===this.split?e:s,o=xs(this._handlePosition,i);this.dispatchEvent(new CustomEvent("vsc-split-layout-change",{detail:{position:this._handlePosition,positionInPercentage:o},composed:!0}))},this._handleMouseMove=t=>{const{clientX:e,clientY:s}=t,{left:i,top:o,height:r,width:n}=this._boundRect,l="vertical"===this.split,a=l?n:r,c=l?e-i:s-o;this._handlePosition=Math.max(0,Math.min(c-this._handleOffset+this.handleSize/2,a)),"start"===this.fixedPane&&(this._fixedPaneSize=this._handlePosition),"end"===this.fixedPane&&(this._fixedPaneSize=a-this._handlePosition)},this._resizeObserver=new ResizeObserver(this._handleResize)}resetHandlePosition(){if(!this._wrapperEl)return void(this._handlePosition=0);const{width:t,height:e}=this._wrapperEl.getBoundingClientRect(),s="vertical"===this.split?t:e,{value:i,unit:o}=ms(this.initialHandlePosition??"50%");this._handlePosition="percent"===o?ys(i,s):i}connectedCallback(){super.connectedCallback()}firstUpdated(t){"none"!==this.fixedPane&&(this._resizeObserver.observe(this._wrapperEl),this._wrapperObserved=!0),this._boundRect=this._wrapperEl.getBoundingClientRect();const{value:e,unit:s}=this.handlePosition?ms(this.handlePosition):ms(this.initialHandlePosition);this._setPosition(e,s),this._initFixedPane()}_handlePositionPropChanged(){if(this.handlePosition&&this._wrapperEl){this._boundRect=this._wrapperEl.getBoundingClientRect();const{value:t,unit:e}=ms(this.handlePosition);this._setPosition(t,e)}}_fixedPanePropChanged(){this._wrapperEl&&this._initFixedPane()}_initFixedPane(){if("none"===this.fixedPane)this._wrapperObserved&&(this._resizeObserver.unobserve(this._wrapperEl),this._wrapperObserved=!1);else{const{width:t,height:e}=this._boundRect,s="vertical"===this.split?t:e;this._fixedPaneSize="start"===this.fixedPane?this._handlePosition:s-this._handlePosition,this._wrapperObserved||(this._resizeObserver.observe(this._wrapperEl),this._wrapperObserved=!0)}}_setPosition(t,e){const{width:s,height:i}=this._boundRect,o="vertical"===this.split?s:i;this._handlePosition="percent"===e?ys(t,o):t}_handleMouseOver(){this._hover=!0,this._hide=!1}_handleMouseOut(t){1!==t.buttons&&(this._hover=!1,this._hide=!0)}_handleMouseDown(t){t.stopPropagation(),t.preventDefault(),this._boundRect=this._wrapperEl.getBoundingClientRect();const{left:e,top:s}=this._boundRect,{left:i,top:o}=this._handleEl.getBoundingClientRect(),r=t.clientX-e,n=t.clientY-s;"vertical"===this.split&&(this._handleOffset=r-(i-e)),"horizontal"===this.split&&(this._handleOffset=n-(o-s)),this._isDragActive=!0,window.addEventListener("mouseup",this._handleMouseUp),window.addEventListener("mousemove",this._handleMouseMove)}_handleDblClick(){this.resetOnDblClick&&this.resetHandlePosition()}_handleSlotChange(){[...this._nestedLayoutsAtStart,...this._nestedLayoutsAtEnd].forEach((t=>{t instanceof fs&&t.resetHandlePosition()}))}render(){const{width:t,height:e}=this._boundRect,s="vertical"===this.split?t:e,i="none"!==this.fixedPane?`${this._handlePosition}px`:`${xs(this._handlePosition,s)}%`;let o="";o="start"===this.fixedPane?`0 0 ${this._fixedPaneSize}px`:`1 1 ${xs(this._handlePosition,s)}%`;let r="";r="end"===this.fixedPane?`0 0 ${this._fixedPaneSize}px`:`1 1 ${xs(s-this._handlePosition,s)}%`;const n={left:"vertical"===this.split?i:"0",top:"vertical"===this.split?"0":i},l=this.handleSize??4;"vertical"===this.split&&(n.marginLeft=0-l/2+"px",n.width=`${l}px`),"horizontal"===this.split&&(n.height=`${l}px`,n.marginTop=0-l/2+"px");const a=At({"handle-overlay":!0,active:this._isDragActive,"split-vertical":"vertical"===this.split,"split-horizontal":"horizontal"===this.split}),c=At({handle:!0,hover:this._hover,hide:this._hide,"split-vertical":"vertical"===this.split,"split-horizontal":"horizontal"===this.split}),h={wrapper:!0,horizontal:"horizontal"===this.split};return L` +
    +
    + +
    +
    + +
    +
    +
    +
    + `}};ws.styles=bs,gs([ht({reflect:!0})],ws.prototype,"split",null),gs([ht({type:Boolean,reflect:!0,attribute:"reset-on-dbl-click"})],ws.prototype,"resetOnDblClick",void 0),gs([ht({type:Number,reflect:!0,attribute:"handle-size"})],ws.prototype,"handleSize",void 0),gs([ht({reflect:!0,attribute:"initial-handle-position"})],ws.prototype,"initialHandlePosition",void 0),gs([ht({attribute:"handle-position"})],ws.prototype,"handlePosition",null),gs([ht({attribute:"fixed-pane"})],ws.prototype,"fixedPane",null),gs([dt()],ws.prototype,"_handlePosition",void 0),gs([dt()],ws.prototype,"_isDragActive",void 0),gs([dt()],ws.prototype,"_hover",void 0),gs([dt()],ws.prototype,"_hide",void 0),gs([pt(".wrapper")],ws.prototype,"_wrapperEl",void 0),gs([pt(".handle")],ws.prototype,"_handleEl",void 0),gs([bt({slot:"start",selector:"vscode-split-layout"})],ws.prototype,"_nestedLayoutsAtStart",void 0),gs([bt({slot:"end",selector:"vscode-split-layout"})],ws.prototype,"_nestedLayoutsAtEnd",void 0),ws=fs=gs([xt("vscode-split-layout")],ws);const ks=[yt,n` + :host { + border-bottom: 1px solid transparent; + cursor: pointer; + display: block; + margin-bottom: -1px; + overflow: hidden; + padding: 7px 8px; + text-overflow: ellipsis; + user-select: none; + white-space: nowrap; + } + + :host([active]) { + border-bottom-color: var(--vscode-panelTitle-activeForeground); + color: var(--vscode-panelTitle-activeForeground); + } + + :host([panel]) { + border-bottom: 0; + margin-bottom: 0; + padding: 0; + } + + :host(:focus-visible) { + outline: none; + } + + .wrapper { + align-items: center; + color: var(--vscode-foreground); + display: flex; + min-height: 20px; + overflow: inherit; + text-overflow: inherit; + position: relative; + } + + .wrapper.panel { + color: var(--vscode-panelTitle-inactiveForeground); + } + + .wrapper.panel.active, + .wrapper.panel:hover { + color: var(--vscode-panelTitle-activeForeground); + } + + :host([panel]) .wrapper { + display: flex; + font-size: 11px; + height: 31px; + padding: 2px 10px; + text-transform: uppercase; + } + + .main { + overflow: inherit; + text-overflow: inherit; + } + + .active-indicator { + display: none; + } + + .active-indicator.panel.active { + border-top: 1px solid var(--vscode-panelTitle-activeBorder); + bottom: 4px; + display: block; + left: 8px; + pointer-events: none; + position: absolute; + right: 8px; + } + + :host(:focus-visible) .wrapper { + outline-color: var(--vscode-focusBorder); + outline-offset: 3px; + outline-style: solid; + outline-width: 1px; + } + + :host(:focus-visible) .wrapper.panel { + outline-offset: -2px; + } + + slot[name='content-before']::slotted(vscode-badge) { + margin-right: 8px; + } + + slot[name='content-after']::slotted(vscode-badge) { + margin-left: 8px; + } + `];var $s=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let _s=class extends mt{constructor(){super(...arguments),this.active=!1,this.ariaControls="",this.panel=!1,this.role="tab",this.tabId=-1}attributeChangedCallback(t,e,s){if(super.attributeChangedCallback(t,e,s),"active"===t){const t=null!==s;this.ariaSelected=t?"true":"false",this.tabIndex=t?0:-1}}render(){return L` +
    +
    +
    +
    + +
    + `}};_s.styles=ks,$s([ht({type:Boolean,reflect:!0})],_s.prototype,"active",void 0),$s([ht({reflect:!0,attribute:"aria-controls"})],_s.prototype,"ariaControls",void 0),$s([ht({type:Boolean,reflect:!0})],_s.prototype,"panel",void 0),$s([ht({reflect:!0})],_s.prototype,"role",void 0),$s([ht({type:Number,reflect:!0,attribute:"tab-id"})],_s.prototype,"tabId",void 0),_s=$s([xt("vscode-tab-header")],_s);const Cs=[yt,n` + :host { + display: block; + overflow: hidden; + } + + :host(:focus-visible) { + outline-color: var(--vscode-focusBorder); + outline-offset: 3px; + outline-style: solid; + outline-width: 1px; + } + + :host([panel]) { + background-color: var(--vscode-panel-background); + } + `];var Bs=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let Ss=class extends mt{constructor(){super(...arguments),this.hidden=!1,this.ariaLabelledby="",this.panel=!1,this.role="tabpanel",this.tabIndex=0}render(){return L` `}};Ss.styles=Cs,Bs([ht({type:Boolean,reflect:!0})],Ss.prototype,"hidden",void 0),Bs([ht({reflect:!0,attribute:"aria-labelledby"})],Ss.prototype,"ariaLabelledby",void 0),Bs([ht({type:Boolean,reflect:!0})],Ss.prototype,"panel",void 0),Bs([ht({reflect:!0})],Ss.prototype,"role",void 0),Bs([ht({type:Number,reflect:!0})],Ss.prototype,"tabIndex",void 0),Ss=Bs([xt("vscode-tab-panel")],Ss);const zs=[yt,n` + :host { + display: table; + table-layout: fixed; + width: 100%; + } + + ::slotted(vscode-table-row:nth-child(even)) { + background-color: var(--vsc-row-even-background); + } + + ::slotted(vscode-table-row:nth-child(odd)) { + background-color: var(--vsc-row-odd-background); + } + `];var Os=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let As=class extends mt{constructor(){super(...arguments),this.role="rowgroup"}render(){return L` `}};As.styles=zs,Os([ht({reflect:!0})],As.prototype,"role",void 0),As=Os([xt("vscode-table-body")],As);const Es=[yt,n` + :host { + border-bottom-color: var(--vscode-editorGroup-border); + border-bottom-style: solid; + border-bottom-width: var(--vsc-row-border-bottom-width); + box-sizing: border-box; + color: var(--vscode-foreground); + display: table-cell; + font-family: var(--vscode-font-family); + font-size: var(--vscode-font-size); + height: 24px; + overflow: hidden; + padding-left: 10px; + text-overflow: ellipsis; + vertical-align: middle; + white-space: nowrap; + } + + :host([compact]) { + display: block; + height: auto; + padding-bottom: 5px; + width: 100% !important; + } + + :host([compact]:first-child) { + padding-top: 10px; + } + + :host([compact]:last-child) { + padding-bottom: 10px; + } + + .wrapper { + overflow: inherit; + text-overflow: inherit; + white-space: inherit; + width: 100%; + } + + .column-label { + font-weight: bold; + } + `];var js=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let Is=class extends mt{constructor(){super(...arguments),this.role="cell",this.columnLabel="",this.compact=!1}render(){const t=this.columnLabel?L``:q;return L` +
    + ${t} + +
    + `}};Is.styles=Es,js([ht({reflect:!0})],Is.prototype,"role",void 0),js([ht({attribute:"column-label"})],Is.prototype,"columnLabel",void 0),js([ht({type:Boolean,reflect:!0})],Is.prototype,"compact",void 0),Is=js([xt("vscode-table-cell")],Is);const Ms=[yt,n` + :host { + background-color: var(--vscode-keybindingTable-headerBackground); + display: table; + table-layout: fixed; + width: 100%; + } + `];var Fs=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let Ps=class extends mt{constructor(){super(...arguments),this.role="rowgroup"}render(){return L` `}};Ps.styles=Ms,Fs([ht({reflect:!0})],Ps.prototype,"role",void 0),Ps=Fs([xt("vscode-table-header")],Ps);const Ns=[yt,n` + :host { + box-sizing: border-box; + color: var(--vscode-foreground); + display: table-cell; + font-family: var(--vscode-font-family); + font-size: var(--vscode-font-size); + font-weight: bold; + line-height: 20px; + overflow: hidden; + padding-bottom: 5px; + padding-left: 10px; + padding-right: 0; + padding-top: 5px; + text-overflow: ellipsis; + white-space: nowrap; + } + + .wrapper { + box-sizing: inherit; + overflow: inherit; + text-overflow: inherit; + white-space: inherit; + width: 100%; + } + `];var Ds=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let Vs=class extends mt{constructor(){super(...arguments),this.role="columnheader"}render(){return L` +
    + +
    + `}};Vs.styles=Ns,Ds([ht({reflect:!0})],Vs.prototype,"role",void 0),Vs=Ds([xt("vscode-table-header-cell")],Vs);const Ts=[yt,n` + :host { + border-top-color: var(--vscode-editorGroup-border); + border-top-style: solid; + border-top-width: var(--vsc-row-border-top-width); + display: var(--vsc-row-display); + width: 100%; + } + `];var Rs=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let Ls=class extends mt{constructor(){super(...arguments),this.role="row"}render(){return L` `}};Ls.styles=Ts,Rs([ht({reflect:!0})],Ls.prototype,"role",void 0),Ls=Rs([xt("vscode-table-row")],Ls);const Us=(t,e)=>{if("number"!=typeof t||Number.isNaN(t)){if("string"==typeof t&&/^[0-9.]+$/.test(t)){return Number(t)/e*100}if("string"==typeof t&&/^[0-9.]+%$/.test(t))return Number(t.substring(0,t.length-1));if("string"==typeof t&&/^[0-9.]+px$/.test(t)){return Number(t.substring(0,t.length-2))/e*100}return null}return t/e*100},qs=[yt,n` + :host { + display: block; + --vsc-row-even-background: transparent; + --vsc-row-odd-background: transparent; + --vsc-row-border-bottom-width: 0; + --vsc-row-border-top-width: 0; + --vsc-row-display: table-row; + } + + :host([bordered]), + :host([bordered-rows]) { + --vsc-row-border-bottom-width: 1px; + } + + :host([compact]) { + --vsc-row-display: block; + } + + :host([bordered][compact]), + :host([bordered-rows][compact]) { + --vsc-row-border-bottom-width: 0; + --vsc-row-border-top-width: 1px; + } + + :host([zebra]) { + --vsc-row-even-background: var(--vscode-keybindingTable-rowsBackground); + } + + :host([zebra-odd]) { + --vsc-row-odd-background: var(--vscode-keybindingTable-rowsBackground); + } + + ::slotted(vscode-table-row) { + width: 100%; + } + + .wrapper { + height: 100%; + max-width: 100%; + overflow: hidden; + position: relative; + width: 100%; + } + + .wrapper.select-disabled { + user-select: none; + } + + .wrapper.resize-cursor { + cursor: ew-resize; + } + + .wrapper.compact-view .header-slot-wrapper { + height: 0; + overflow: hidden; + } + + .scrollable { + height: 100%; + } + + .scrollable:before { + background-color: transparent; + content: ''; + display: block; + height: 1px; + position: absolute; + width: 100%; + } + + .wrapper:not(.compact-view) .scrollable:not([scrolled]):before { + background-color: var(--vscode-editorGroup-border); + } + + .sash { + visibility: hidden; + } + + :host([bordered-columns]) .sash, + :host([bordered]) .sash { + visibility: visible; + } + + :host([resizable]) .wrapper:hover .sash { + visibility: visible; + } + + .sash { + height: 100%; + position: absolute; + top: 0; + width: 1px; + } + + .wrapper.compact-view .sash { + display: none; + } + + .sash.resizable { + cursor: ew-resize; + } + + .sash-visible { + background-color: var(--vscode-editorGroup-border); + height: 100%; + position: absolute; + top: 30px; + width: 1px; + } + + .sash.hover .sash-visible { + background-color: var(--vscode-sash-hoverBorder); + transition: background-color 50ms linear 300ms; + } + + .sash .sash-clickable { + background-color: transparent; + height: 100%; + left: -2px; + position: absolute; + width: 5px; + } + `];var Hs=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let Ks=class extends mt{constructor(){super(...arguments),this.role="table",this.resizable=!1,this.responsive=!1,this.bordered=!1,this.borderedColumns=!1,this.borderedRows=!1,this.breakpoint=300,this.minColumnWidth="50px",this.delayedResizing=!1,this.compact=!1,this.zebra=!1,this.zebraOdd=!1,this._sashPositions=[],this._isDragging=!1,this._sashHovers=[],this._columns=[],this._activeSashElementIndex=-1,this._activeSashCursorOffset=0,this._componentX=0,this._componentH=0,this._componentW=0,this._headerCells=[],this._cellsOfFirstRow=[],this._prevHeaderHeight=0,this._prevComponentHeight=0,this._componentResizeObserverCallback=()=>{this._memoizeComponentDimensions(),this._updateResizeHandlersSize(),this.responsive&&this._toggleCompactView(),this._resizeTableBody()},this._headerResizeObserverCallback=()=>{this._updateResizeHandlersSize()},this._bodyResizeObserverCallback=()=>{this._resizeTableBody()},this._onResizingMouseMove=t=>{t.stopPropagation(),this._updateActiveSashPosition(t.pageX),this.delayedResizing?this._resizeColumns(!1):this._resizeColumns(!0)},this._onResizingMouseUp=t=>{this._resizeColumns(!0),this._updateActiveSashPosition(t.pageX),this._sashHovers[this._activeSashElementIndex]=!1,this._isDragging=!1,this._activeSashElementIndex=-1,document.removeEventListener("mousemove",this._onResizingMouseMove),document.removeEventListener("mouseup",this._onResizingMouseUp)}}set columns(t){this._columns=t,this.isConnected&&this._initDefaultColumnSizes()}get columns(){return this._columns}connectedCallback(){super.connectedCallback(),this._memoizeComponentDimensions(),this._initDefaultColumnSizes()}disconnectedCallback(){super.disconnectedCallback(),this._componentResizeObserver?.unobserve(this),this._componentResizeObserver?.disconnect(),this._bodyResizeObserver?.disconnect()}_px2Percent(t){return t/this._componentW*100}_percent2Px(t){return this._componentW*t/100}_memoizeComponentDimensions(){const t=this.getBoundingClientRect();this._componentH=t.height,this._componentW=t.width,this._componentX=t.x}_queryHeaderCells(){const t=this._assignedHeaderElements;return t&&t[0]?Array.from(t[0].querySelectorAll("vscode-table-header-cell")):[]}_getHeaderCells(){return this._headerCells.length||(this._headerCells=this._queryHeaderCells()),this._headerCells}_queryCellsOfFirstRow(){const t=this._assignedBodyElements;return t&&t[0]?Array.from(t[0].querySelectorAll("vscode-table-row:first-child vscode-table-cell")):[]}_getCellsOfFirstRow(){return this._cellsOfFirstRow.length||(this._cellsOfFirstRow=this._queryCellsOfFirstRow()),this._cellsOfFirstRow}_resizeTableBody(){let t=0,e=0;const s=this.getBoundingClientRect().height;this._assignedHeaderElements&&this._assignedHeaderElements.length&&(t=this._assignedHeaderElements[0].getBoundingClientRect().height),this._assignedBodyElements&&this._assignedBodyElements.length&&(e=this._assignedBodyElements[0].getBoundingClientRect().height);const i=e-t-s;this._scrollableElement.style.height=i>0?s-t+"px":"auto"}_initResizeObserver(){this._componentResizeObserver=new ResizeObserver(this._componentResizeObserverCallback),this._componentResizeObserver.observe(this),this._headerResizeObserver=new ResizeObserver(this._headerResizeObserverCallback),this._headerResizeObserver.observe(this._headerElement)}_calcColWidthPercentages(){const t=this._getHeaderCells().length;let e=this.columns.slice(0,t);const s=e.filter((t=>"auto"===t)).length+t-e.length;let i=100;if(e=e.map((t=>{const e=Us(t,this._componentW);return null===e?"auto":(i-=e,e)})),e.length"auto"===t?i/s:t)),e}_initHeaderCellSizes(t){this._getHeaderCells().forEach(((e,s)=>{e.style.width=`${t[s]}%`}))}_initBodyColumnSizes(t){this._getCellsOfFirstRow().forEach(((e,s)=>{e.style.width=`${t[s]}%`}))}_initSashes(t){const e=t.length;let s=0;this._sashPositions=[],t.forEach(((t,i)=>{if(i{s.style.height=`${e}px`,s.style.top=`${t.height}px`}))}_applyCompactViewColumnLabels(){const t=this._getHeaderCells().map((t=>t.innerText));this.querySelectorAll("vscode-table-row").forEach((e=>{e.querySelectorAll("vscode-table-cell").forEach(((e,s)=>{e.columnLabel=t[s],e.compact=!0}))}))}_clearCompactViewColumnLabels(){this.querySelectorAll("vscode-table-cell").forEach((t=>{t.columnLabel="",t.compact=!1}))}_toggleCompactView(){const t=this.getBoundingClientRect().width{"vscode-table-header"!==t.tagName.toLowerCase()?"vscode-table-body"!==t.tagName.toLowerCase()||(t.slot="body"):t.slot="header"}))}_onHeaderSlotChange(){this._headerCells=this._queryHeaderCells()}_onBodySlotChange(){if(this._initDefaultColumnSizes(),this._initResizeObserver(),this._updateResizeHandlersSize(),!this._bodyResizeObserver){const t=this._assignedBodyElements[0]??null;t&&(this._bodyResizeObserver=new ResizeObserver(this._bodyResizeObserverCallback),this._bodyResizeObserver.observe(t))}}_onSashMouseOver(t){if(this._isDragging)return;const e=t.currentTarget,s=Number(e.dataset.index);this._sashHovers[s]=!0,this.requestUpdate()}_onSashMouseOut(t){if(t.stopPropagation(),this._isDragging)return;const e=t.currentTarget,s=Number(e.dataset.index);this._sashHovers[s]=!1,this.requestUpdate()}_onSashMouseDown(t){t.stopPropagation();const{pageX:e,currentTarget:s}=t,i=s,o=Number(i.dataset.index),r=i.getBoundingClientRect().x;this._isDragging=!0,this._activeSashElementIndex=o,this._sashHovers[this._activeSashElementIndex]=!0,this._activeSashCursorOffset=this._px2Percent(e-r);const n=this._getHeaderCells();this._headerCellsToResize=[],this._headerCellsToResize.push(n[o]),n[o+1]&&(this._headerCellsToResize[1]=n[o+1]);const l=this._bodySlot.assignedElements()[0].querySelectorAll("vscode-table-row:first-child > vscode-table-cell");this._cellsToResize=[],this._cellsToResize.push(l[o]),l[o+1]&&this._cellsToResize.push(l[o+1]),document.addEventListener("mousemove",this._onResizingMouseMove),document.addEventListener("mouseup",this._onResizingMouseUp)}_updateActiveSashPosition(t){const{prevSashPos:e,nextSashPos:s}=this._getSashPositions();let i=Us(this.minColumnWidth,this._componentW);null===i&&(i=0);const o=e?e+i:i,r=s?s-i:100-i;let n=this._px2Percent(t-this._componentX-this._percent2Px(this._activeSashCursorOffset));n=Math.max(n,o),n=Math.min(n,r),this._sashPositions[this._activeSashElementIndex]=n,this.requestUpdate()}_getSashPositions(){return{sashPos:this._sashPositions[this._activeSashElementIndex],prevSashPos:this._sashPositions[this._activeSashElementIndex-1]||0,nextSashPos:this._sashPositions[this._activeSashElementIndex+1]||100}}_resizeColumns(t=!0){const{sashPos:e,prevSashPos:s,nextSashPos:i}=this._getSashPositions(),o=`${e-s}%`,r=`${i-e}%`;this._headerCellsToResize[0].style.width=o,this._headerCellsToResize[1]&&(this._headerCellsToResize[1].style.width=r),t&&(this._cellsToResize[0].style.width=o,this._cellsToResize[1]&&(this._cellsToResize[1].style.width=r))}render(){const t=this._sashPositions.map(((t,e)=>{const s=At({sash:!0,hover:this._sashHovers[e],resizable:this.resizable}),i=`${t}%`;return this.resizable?L` +
    +
    +
    +
    + `:L`
    +
    +
    `})),e=At({wrapper:!0,"select-disabled":this._isDragging,"resize-cursor":this._isDragging,"compact-view":this.compact});return L` +
    +
    + +
    + +
    +
    + +
    + +
    +
    + ${t} + +
    + `}};Ks.styles=qs,Hs([ht({reflect:!0})],Ks.prototype,"role",void 0),Hs([ht({type:Boolean,reflect:!0})],Ks.prototype,"resizable",void 0),Hs([ht({type:Boolean,reflect:!0})],Ks.prototype,"responsive",void 0),Hs([ht({type:Boolean,reflect:!0})],Ks.prototype,"bordered",void 0),Hs([ht({type:Boolean,reflect:!0,attribute:"bordered-columns"})],Ks.prototype,"borderedColumns",void 0),Hs([ht({type:Boolean,reflect:!0,attribute:"bordered-rows"})],Ks.prototype,"borderedRows",void 0),Hs([ht({type:Number})],Ks.prototype,"breakpoint",void 0),Hs([ht({type:Array})],Ks.prototype,"columns",null),Hs([ht({attribute:"min-column-width"})],Ks.prototype,"minColumnWidth",void 0),Hs([ht({type:Boolean,reflect:!0,attribute:"delayed-resizing"})],Ks.prototype,"delayedResizing",void 0),Hs([ht({type:Boolean,reflect:!0})],Ks.prototype,"compact",void 0),Hs([ht({type:Boolean,reflect:!0})],Ks.prototype,"zebra",void 0),Hs([ht({type:Boolean,reflect:!0,attribute:"zebra-odd"})],Ks.prototype,"zebraOdd",void 0),Hs([pt('slot[name="body"]')],Ks.prototype,"_bodySlot",void 0),Hs([pt(".header")],Ks.prototype,"_headerElement",void 0),Hs([pt(".scrollable")],Ks.prototype,"_scrollableElement",void 0),Hs([function(t){return(e,s)=>ut(0,0,{get(){return(this.renderRoot??(vt??=document.createDocumentFragment())).querySelectorAll(t)}})}(".sash-visible")],Ks.prototype,"_sashVisibleElements",void 0),Hs([bt({flatten:!0,selector:"vscode-table-header, vscode-table-body"})],Ks.prototype,"_assignedElements",void 0),Hs([bt({slot:"header",flatten:!0,selector:"vscode-table-header"})],Ks.prototype,"_assignedHeaderElements",void 0),Hs([bt({slot:"body",flatten:!0,selector:"vscode-table-body"})],Ks.prototype,"_assignedBodyElements",void 0),Hs([dt()],Ks.prototype,"_sashPositions",void 0),Hs([dt()],Ks.prototype,"_isDragging",void 0),Ks=Hs([xt("vscode-table")],Ks);const Ws=[yt,n` + :host { + display: block; + } + + .header { + align-items: center; + display: flex; + font-family: var(--vscode-font-family); + font-size: var(--vscode-font-size); + font-weight: var(--vscode-font-weight); + width: 100%; + } + + .header { + border-bottom-color: var(--vscode-settings-headerBorder); + border-bottom-style: solid; + border-bottom-width: 1px; + } + + .header.panel { + background-color: var(--vscode-panel-background); + border-bottom-width: 0; + box-sizing: border-box; + padding-left: 8px; + padding-right: 8px; + } + + slot[name='addons'] { + display: block; + margin-left: auto; + } + `];var Gs=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let Js=class extends mt{constructor(){super(),this.panel=!1,this.role="tablist",this.selectedIndex=0,this._tabHeaders=[],this._tabPanels=[],this._componentId="",this._tabFocus=0,this._componentId=$e()}attributeChangedCallback(t,e,s){super.attributeChangedCallback(t,e,s),"selected-index"===t&&this._setActiveTab(),"panel"===t&&(this._tabHeaders.forEach((t=>t.panel=null!==s)),this._tabPanels.forEach((t=>t.panel=null!==s)))}_dispatchSelectEvent(){this.dispatchEvent(new CustomEvent("vsc-select",{detail:{selectedIndex:this.selectedIndex},composed:!0})),this.dispatchEvent(new CustomEvent("vsc-tabs-select",{detail:{selectedIndex:this.selectedIndex},composed:!0}))}_setActiveTab(){this._tabFocus=this.selectedIndex,this._tabPanels.forEach(((t,e)=>{t.hidden=e!==this.selectedIndex})),this._tabHeaders.forEach(((t,e)=>{t.active=e===this.selectedIndex}))}_focusPrevTab(){0===this._tabFocus?this._tabFocus=this._tabHeaders.length-1:this._tabFocus-=1}_focusNextTab(){this._tabFocus===this._tabHeaders.length-1?this._tabFocus=0:this._tabFocus+=1}_onHeaderKeyDown(t){"ArrowLeft"!==t.key&&"ArrowRight"!==t.key||(t.preventDefault(),this._tabHeaders[this._tabFocus].setAttribute("tabindex","-1"),"ArrowLeft"===t.key?this._focusPrevTab():"ArrowRight"===t.key&&this._focusNextTab(),this._tabHeaders[this._tabFocus].setAttribute("tabindex","0"),this._tabHeaders[this._tabFocus].focus()),"Enter"===t.key&&(t.preventDefault(),this.selectedIndex=this._tabFocus,this._dispatchSelectEvent())}_moveHeadersToHeaderSlot(){const t=this._mainSlotElements.filter((t=>t instanceof _s));t.length>0&&t.forEach((t=>t.setAttribute("slot","header")))}_onMainSlotChange(){this._moveHeadersToHeaderSlot(),this._tabPanels=this._mainSlotElements.filter((t=>t instanceof Ss)),this._tabPanels.forEach(((t,e)=>{t.ariaLabelledby=`t${this._componentId}-h${e}`,t.id=`t${this._componentId}-p${e}`,t.panel=this.panel})),this._setActiveTab()}_onHeaderSlotChange(){this._tabHeaders=this._headerSlotElements.filter((t=>t instanceof _s)),this._tabHeaders.forEach(((t,e)=>{t.tabId=e,t.id=`t${this._componentId}-h${e}`,t.ariaControls=`t${this._componentId}-p${e}`,t.panel=this.panel,t.active=e===this.selectedIndex}))}_onHeaderClick(t){const e=t.composedPath().find((t=>t instanceof _s));e&&(this.selectedIndex=e.tabId,this._setActiveTab(),this._dispatchSelectEvent())}render(){return L` +
    + + +
    + + `}};Js.styles=Ws,Gs([ht({type:Boolean,reflect:!0})],Js.prototype,"panel",void 0),Gs([ht({reflect:!0})],Js.prototype,"role",void 0),Gs([ht({type:Number,reflect:!0,attribute:"selected-index"})],Js.prototype,"selectedIndex",void 0),Gs([bt({slot:"header"})],Js.prototype,"_headerSlotElements",void 0),Gs([bt()],Js.prototype,"_mainSlotElements",void 0),Js=Gs([xt("vscode-tabs")],Js);const Ys=[yt,n` + :host { + display: inline-flex; + } + + button { + align-items: center; + background-color: transparent; + border: 0; + border-radius: 5px; + color: var(--vscode-foreground, #cccccc); + cursor: pointer; + display: flex; + outline-offset: -1px; + outline-width: 1px; + padding: 0; + user-select: none; + } + + button:focus-visible { + outline-color: var(--vscode-focusBorder, #0078d4); + outline-style: solid; + } + + button:hover { + background-color: var( + --vscode-toolbar-hoverBackground, + rgba(90, 93, 94, 0.31) + ); + outline-style: dashed; + outline-color: var(--vscode-toolbar-hoverOutline, transparent); + } + + button:active { + background-color: var( + --vscode-toolbar-activeBackground, + rgba(99, 102, 103, 0.31) + ); + } + + button.checked { + background-color: var( + --vscode-inputOption-activeBackground, + rgba(36, 137, 219, 0.51) + ); + outline-color: var(--vscode-inputOption-activeBorder, #2488db); + outline-style: solid; + color: var(--vscode-inputOption-activeForeground, #ffffff); + } + + button.checked vscode-icon { + color: var(--vscode-inputOption-activeForeground, #ffffff); + } + + vscode-icon { + display: block; + padding: 3px; + } + + slot:not(.empty) { + align-items: center; + display: flex; + height: 22px; + padding: 0 5px 0 2px; + } + + slot.textOnly:not(.empty) { + padding: 0 5px; + } + `];var Xs=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let Zs=class extends mt{constructor(){super(...arguments),this.icon="",this.label=void 0,this.toggleable=!1,this.checked=!1,this._isSlotEmpty=!0}_handleSlotChange(){this._isSlotEmpty=!((this._assignedNodes?.length??0)>0)}_handleButtonClick(){this.toggleable&&(this.checked=!this.checked,this.dispatchEvent(new Event("change")))}render(){const t=this.checked?"true":"false";return L` + + `}};Zs.styles=Ys,Xs([ht({reflect:!0})],Zs.prototype,"icon",void 0),Xs([ht()],Zs.prototype,"label",void 0),Xs([ht({type:Boolean,reflect:!0})],Zs.prototype,"toggleable",void 0),Xs([ht({type:Boolean,reflect:!0})],Zs.prototype,"checked",void 0),Xs([dt()],Zs.prototype,"_isSlotEmpty",void 0),Xs([function(t){return(e,s)=>{const{slot:i}={},o="slot"+(i?`[name=${i}]`:":not([name])");return ut(0,0,{get(){const e=this.renderRoot?.querySelector(o);return e?.assignedNodes(t)??[]}})}}()],Zs.prototype,"_assignedNodes",void 0),Zs=Xs([xt("vscode-toolbar-button")],Zs);const Qs=[yt,n` + :host { + gap: 4px; + display: flex; + align-items: center; + } + `];var ti=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};let ei=class extends mt{render(){return L` `}};ei.styles=Qs,ei=ti([xt("vscode-toolbar-container")],ei);const si=[yt,n` + :host { + --hover-outline-color: transparent; + --hover-outline-style: solid; + --hover-outline-width: 0; + --selected-outline-color: transparent; + --selected-outline-style: solid; + --selected-outline-width: 0; + + display: block; + outline: none; + user-select: none; + } + + .wrapper { + height: 100%; + } + + li { + list-style: none; + } + + ul, + li { + margin: 0; + padding: 0; + } + + ul { + position: relative; + } + + :host([indent-guides]) ul ul:before { + content: ''; + display: block; + height: 100%; + position: absolute; + bottom: 0; + left: var(--indent-guide-pos); + top: 0; + pointer-events: none; + width: 1px; + z-index: 1; + } + + .contents { + align-items: center; + display: flex; + font-family: var(--vscode-font-family); + font-size: var(--vscode-font-size); + font-weight: var(--vscode-font-weight); + outline-offset: -1px; + padding-right: 12px; + } + + .multi .contents { + align-items: flex-start; + } + + .contents:hover { + cursor: pointer; + } + + .arrow-container { + align-items: center; + display: flex; + height: 22px; + justify-content: center; + padding-left: 8px; + padding-right: 6px; + width: 16px; + } + + .icon-arrow { + color: currentColor; + display: block; + } + + .theme-icon { + display: block; + flex-shrink: 0; + margin-right: 6px; + } + + .image-icon { + background-repeat: no-repeat; + background-position: 0 center; + background-size: 16px; + display: block; + flex-shrink: 0; + margin-right: 6px; + height: 22px; + width: 16px; + } + + .multi .contents .theme-icon { + margin-top: 3px; + } + + .text-content { + display: flex; + line-height: 22px; + } + + .single .text-content { + display: block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + width: 100%; + } + + .description { + font-size: 0.9em; + line-height: 22px; + margin-left: 0.5em; + opacity: 0.95; + white-space: pre; + } + + .actions { + display: none; + } + + .contents.selected > .actions, + .contents.focused > .actions, + .contents:hover > .actions { + display: flex; + } + + .decorations { + align-items: center; + display: flex; + height: 22px; + margin-left: 5px; + } + + .filled-circle { + margin-right: 3px; + opacity: 0.4; + } + + .decoration-text { + font-size: 90%; + font-weight: 600; + margin-right: 3px; + opacity: 0.75; + } + + .filled-circle, + .decoration-text { + color: var(--color, currentColor); + } + + .contents:hover .filled-circle, + .contents:hover .decoration-text { + color: var(--hover-color, var(--color)); + } + + .contents.focused .filled-circle, + .contents.focused .decoration-text { + color: var(--focused-color, var(--color)); + } + + .contents.selected .filled-circle, + .contents.selected .decoration-text { + color: var(--selected-color, var(--color)); + } + + /* Theme colors */ + :host(:focus) .wrapper.has-not-focused-item { + outline: 1px solid var(--vscode-focusBorder); + } + + :host(:focus) .contents.selected, + :host(:focus) .contents.focused.selected { + color: var(--vscode-list-activeSelectionForeground); + background-color: var(--vscode-list-activeSelectionBackground); + } + + :host(:focus) .contents.selected .icon-arrow, + :host(:focus) .contents.selected.focused .icon-arrow, + :host(:focus) .contents.selected .theme-icon, + :host(:focus) .contents.selected.focused .theme-icon, + :host(:focus) .contents.selected .action-icon, + :host(:focus) .contents.selected.focused .action-icon { + color: var(--vscode-list-activeSelectionIconForeground); + } + + :host(:focus) .contents.focused { + color: var(--vscode-list-focusForeground); + background-color: var(--vscode-list-focusBackground); + } + + :host(:focus) .contents.selected.focused { + outline-color: var( + --vscode-list-focusAndSelectionOutline, + var(--vscode-list-focusOutline) + ); + } + + .contents:hover { + background-color: var(--vscode-list-hoverBackground); + color: var(--vscode-list-hoverForeground); + } + + .contents:hover, + .contents.selected:hover { + outline-color: var(--hover-outline-color); + outline-style: var(--hover-outline-style); + outline-width: var(--hover-outline-width); + } + + .contents.selected, + .contents.selected.focused { + background-color: var(--vscode-list-inactiveSelectionBackground); + color: var(--vscode-list-inactiveSelectionForeground); + } + + .contents.selected, + .contents.selected.focused { + outline-color: var(--selected-outline-color); + outline-style: var(--selected-outline-style); + outline-width: var(--selected-outline-width); + } + + .contents.selected .theme-icon { + color: var(--vscode-list-inactiveSelectionIconForeground); + } + + .contents.focused { + background-color: var(--vscode-list-inactiveFocusBackground); + outline: 1px dotted var(--vscode-list-inactiveFocusOutline); + } + + :host(:focus) .contents.focused { + outline: 1px solid var(--vscode-list-focusOutline); + } + + :host([indent-guides]) ul ul:before { + background-color: var(--vscode-tree-inactiveIndentGuidesStroke); + } + + :host([indent-guides]) ul ul.has-active-item:before { + background-color: var(--vscode-tree-indentGuidesStroke); + } + `];var ii=function(t,e,s,i){for(var o,r=arguments.length,n=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i,l=t.length-1;l>=0;l--)(o=t[l])&&(n=(r<3?o(n):r>3?o(e,s,n):o(e,s))||n);return r>3&&n&&Object.defineProperty(e,s,n),n};const oi=(t,e=[])=>{const s=[];return t.forEach(((t,i)=>{const o=[...e,i],r={...t,path:o};t.subItems&&(r.subItems=oi(t.subItems,o)),s.push(r)})),s},ri=t=>!!(t.subItems&&Array.isArray(t.subItems)&&t?.subItems?.length>0);let ni=class extends mt{constructor(){super(...arguments),this.indent=8,this.arrows=!1,this.multiline=!1,this.tabindex=0,this.indentGuides=!1,this._data=[],this._selectedItem=null,this._focusedItem=null,this._selectedBranch=null,this._focusedBranch=null,this._handleComponentKeyDownBound=this._handleComponentKeyDown.bind(this)}set data(t){const e=this._data;this._data=oi(t),this.requestUpdate("data",e)}get data(){return this._data}closeAll(){this._closeSubTreeRecursively(this.data),this.requestUpdate()}deselectAll(){this._deselectItemsRecursively(this.data),this.requestUpdate()}getItemByPath(t){return this._getItemByPath(t)}connectedCallback(){super.connectedCallback(),this.addEventListener("keydown",this._handleComponentKeyDownBound)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("keydown",this._handleComponentKeyDownBound)}_getItemByPath(t){let e=this._data,s=null;return t.forEach(((i,o)=>{o===t.length-1?s=e[i]:e=e[i].subItems})),s}_handleActionClick(t){t.stopPropagation();const e=t.target,s=e.dataset.itemPath,i=e.dataset.index;let o=null,r="",n="";if(s){const t=s.split("/").map((t=>Number(t)));if(o=this._getItemByPath(t),o?.actions){const t=Number(i);o.actions[t]&&(r=o.actions[t].actionId)}o?.value&&(n=o.value)}this.dispatchEvent(new CustomEvent("vsc-run-action",{detail:{actionId:r,item:o,value:n}})),this.dispatchEvent(new CustomEvent("vsc-tree-action",{detail:{actionId:r,item:o,value:n}}))}_renderIconVariant(t){const{type:e,value:s}=t;return"themeicon"===e?L``:L``}_renderIcon(t){const e={branch:{value:"folder",type:"themeicon"},open:{value:"folder-opened",type:"themeicon"},leaf:{value:"file",type:"themeicon"}};if(t.iconUrls)t.iconUrls.branch&&(e.branch={value:t.iconUrls.branch,type:"image"}),t.iconUrls.leaf&&(e.leaf={value:t.iconUrls.leaf,type:"image"}),t.iconUrls.open&&(e.open={value:t.iconUrls.open,type:"image"});else if("object"==typeof t.icons)t.icons.branch&&(e.branch={value:t.icons.branch,type:"themeicon"}),t.icons.leaf&&(e.leaf={value:t.icons.leaf,type:"themeicon"}),t.icons.open&&(e.open={value:t.icons.open,type:"themeicon"});else if(!t.icons)return L`${q}`;return ri(t)?t.open?this._renderIconVariant(e.open):this._renderIconVariant(e.branch):this._renderIconVariant(e.leaf)}_renderArrow(t){if(!this.arrows||!ri(t))return L`${q}`;const{open:e=!1}=t;return L` +
    + +
    + `}_renderActions(t){const e=[];return t.actions&&Array.isArray(t.actions)&&t.actions.forEach(((s,i)=>{if(s.icon){const o=L``;e.push(o)}})),e.length>0?L`
    ${e}
    `:L`${q}`}_renderDecorations(t){const e=[];return t.decorations&&Array.isArray(t.decorations)&&t.decorations.forEach((t=>{const{appearance:s="text",visibleWhen:i="always",content:o="",color:r="",focusedColor:n="",hoverColor:l="",selectedColor:a=""}=t,c=`visible-when-${i}`,h={};switch(r&&(h["--color"]=r),n&&(h["--focused-color"]=n),l&&(h["--hover-color"]=l),a&&(h["--selected-color"]=a),s){case"counter-badge":e.push(L`${o}`);break;case"filled-circle":e.push(L``);break;case"text":e.push(L`
    + ${o} +
    `)}})),e.length>0?L`
    + ${e} +
    `:L`${q}`}_renderTreeItem(t,e){const{open:s=!1,label:i,description:o="",tooltip:r,selected:n=!1,focused:l=!1,subItems:a=[]}=t,{path:c,itemType:h,hasFocusedItem:d=!1,hasSelectedItem:u=!1}=e,p=["contents"],v=s?["open"]:[],b=(c.length-1)*this.indent,f=this.arrows&&"leaf"===h?30+b:b,g=this._renderArrow(t),m=this._renderIcon(t),x=this.arrows?b+16:b+3,y=s&&"branch"===h?L`
      + ${this._renderTree(a,c)} +
    `:q,w=o?L`${o}`:q,k=this._renderActions(t),$=this._renderDecorations(t);return v.push(h),n&&p.push("selected"),l&&p.push("focused"),L` +
  • +
    + ${g}${m}${i}${w} + ${k} ${$} +
    + ${y} +
  • + `}_renderTree(t,e=[]){const s=[];return t?(t.forEach(((t,i)=>{const o=[...e,i],r=ri(t)?"branch":"leaf",{selected:n=!1,focused:l=!1,hasFocusedItem:a=!1,hasSelectedItem:c=!1}=t;n&&(this._selectedItem=t),l&&(this._focusedItem=t),s.push(this._renderTreeItem(t,{path:o,itemType:r,hasFocusedItem:a,hasSelectedItem:c}))})),s):q}_selectItem(t){this._selectedItem&&(this._selectedItem.selected=!1),this._focusedItem&&(this._focusedItem.focused=!1),this._selectedItem=t,t.selected=!0,this._focusedItem=t,t.focused=!0,this._selectedBranch&&(this._selectedBranch.hasSelectedItem=!1);let e=null;if(t.path?.length&&t.path.length>1&&(e=this._getItemByPath(t.path.slice(0,-1))),ri(t))this._selectedBranch=t,t.hasSelectedItem=!0,t.open=!t.open,t.open?(this._selectedBranch=t,t.hasSelectedItem=!0):e&&(this._selectedBranch=e,e.hasSelectedItem=!0);else if(t.path?.length&&t.path.length>1){const e=this._getItemByPath(t.path.slice(0,-1));e&&(this._selectedBranch=e,e.hasSelectedItem=!0)}else this._selectedBranch=t,t.hasSelectedItem=!0;this._emitSelectEvent(this._selectedItem,this._selectedItem.path.join("/")),this.requestUpdate()}_focusItem(t){this._focusedItem&&(this._focusedItem.focused=!1),this._focusedItem=t,t.focused=!0;const e=!!t?.subItems?.length;this._focusedBranch&&(this._focusedBranch.hasFocusedItem=!1);let s=null;t.path?.length&&t.path.length>1&&(s=this._getItemByPath(t.path.slice(0,-1))),e?t.open?(this._focusedBranch=t,t.hasFocusedItem=!0):!t.open&&s&&(this._focusedBranch=s,s.hasFocusedItem=!0):s&&(this._focusedBranch=s,s.hasFocusedItem=!0)}_closeSubTreeRecursively(t){t.forEach((t=>{t.open=!1,t.subItems&&t.subItems.length>0&&this._closeSubTreeRecursively(t.subItems)}))}_deselectItemsRecursively(t){t.forEach((t=>{t.selected&&(t.selected=!1),t.subItems&&t.subItems.length>0&&this._deselectItemsRecursively(t.subItems)}))}_emitSelectEvent(t,e){const{icons:s,label:i,open:o,value:r}=t,n={icons:s,itemType:ri(t)?"branch":"leaf",label:i,open:o||!1,value:r||i,path:e};this.dispatchEvent(new CustomEvent("vsc-select",{bubbles:!0,composed:!0,detail:n})),this.dispatchEvent(new CustomEvent("vsc-tree-select",{detail:n}))}_focusPrevItem(){if(!this._focusedItem)return void this._focusItem(this._data[0]);const{path:t}=this._focusedItem;if(t&&t?.length>0){const e=t[t.length-1],s=t.length>1;if(e>0){const s=[...t];s[s.length-1]=e-1;const i=this._getItemByPath(s);let o=i;if(i?.open&&i.subItems?.length){const{subItems:t}=i;o=t[t.length-1]}this._focusItem(o)}else if(s){const e=[...t];e.pop(),this._focusItem(this._getItemByPath(e))}}else this._focusItem(this._data[0])}_focusNextItem(){if(!this._focusedItem)return void this._focusItem(this._data[0]);const{path:t,open:e}=this._focusedItem;if(e&&Array.isArray(this._focusedItem.subItems)&&this._focusedItem.subItems.length>0)return void this._focusItem(this._focusedItem.subItems[0]);const s=[...t];s[s.length-1]+=1;let i=this._getItemByPath(s);i?this._focusItem(i):(s.pop(),s.length>0&&(s[s.length-1]+=1,i=this._getItemByPath(s),i&&this._focusItem(i)))}_handleClick(t){const e=t.composedPath().find((t=>t.tagName&&"LI"===t.tagName.toUpperCase()));if(e){const t=(e.dataset.path||"").split("/").map((t=>Number(t))),s=this._getItemByPath(t);this._selectItem(s)}else this._focusedItem&&(this._focusedItem.focused=!1),this._focusedItem=null}_handleComponentKeyDown(t){const e=t.key;[" ","ArrowDown","ArrowUp","Enter","Escape"].includes(t.key)&&(t.stopPropagation(),t.preventDefault()),"Escape"===e&&(this._focusedItem=null),"ArrowUp"===e&&this._focusPrevItem(),"ArrowDown"===e&&this._focusNextItem(),"Enter"!==e&&" "!==e||this._focusedItem&&this._selectItem(this._focusedItem)}render(){const t=At({multi:this.multiline,single:!this.multiline,wrapper:!0,"has-not-focused-item":!this._focusedItem,"selection-none":!this._selectedItem,"selection-single":null!==this._selectedItem});return L` +
    +
      + ${this._renderTree(this._data)} +
    +
    + `}};ni.styles=si,ii([ht({type:Array,reflect:!1})],ni.prototype,"data",null),ii([ht({type:Number})],ni.prototype,"indent",void 0),ii([ht({type:Boolean,reflect:!0})],ni.prototype,"arrows",void 0),ii([ht({type:Boolean,reflect:!0})],ni.prototype,"multiline",void 0),ii([ht({type:Number,reflect:!0})],ni.prototype,"tabindex",void 0),ii([ht({type:Boolean,reflect:!0,attribute:"indent-guides"})],ni.prototype,"indentGuides",void 0),ii([dt()],ni.prototype,"_selectedItem",void 0),ii([dt()],ni.prototype,"_focusedItem",void 0),ii([dt()],ni.prototype,"_selectedBranch",void 0),ii([dt()],ni.prototype,"_focusedBranch",void 0),ni=ii([xt("vscode-tree")],ni);export{_t as VscodeBadge,Vt as VscodeButton,Wt as VscodeCheckbox,Yt as VscodeCheckboxGroup,Qt as VscodeCollapsible,re as VscodeContextMenu,se as VscodeContextMenuItem,ae as VscodeDivider,ve as VscodeFormContainer,ge as VscodeFormGroup,we as VscodeFormHelper,Pt as VscodeIcon,Pe as VscodeLabel,is as VscodeMultiSelect,We as VscodeOption,ns as VscodeProgressRing,cs as VscodeRadio,Be as VscodeRadioGroup,vs as VscodeScrollable,ds as VscodeSingleSelect,ws as VscodeSplitLayout,_s as VscodeTabHeader,Ss as VscodeTabPanel,Ks as VscodeTable,As as VscodeTableBody,Is as VscodeTableCell,Ps as VscodeTableHeader,Vs as VscodeTableHeaderCell,Ls as VscodeTableRow,Js as VscodeTabs,Oe as VscodeTextarea,Ie as VscodeTextfield,Zs as VscodeToolbarButton,ei as VscodeToolbarContainer,ni as VscodeTree}; diff --git a/webui/styles.css b/webui/styles.css new file mode 100644 index 0000000..e69de29